Comparing version 3.13.0 to 3.14.0
@@ -89,3 +89,3 @@ 'use strict'; | ||
function isFunction(payload) { | ||
return typeof payload === "function"; | ||
return typeof payload === 'function'; | ||
} | ||
@@ -296,3 +296,5 @@ /** | ||
function isOneOf(a, b, c, d, e) { | ||
return function (value) { return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)); }; | ||
return function (value) { | ||
return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)); | ||
}; | ||
} | ||
@@ -299,0 +301,0 @@ /** |
@@ -85,3 +85,3 @@ /** | ||
function isFunction(payload) { | ||
return typeof payload === "function"; | ||
return typeof payload === 'function'; | ||
} | ||
@@ -292,3 +292,5 @@ /** | ||
function isOneOf(a, b, c, d, e) { | ||
return function (value) { return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)); }; | ||
return function (value) { | ||
return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)); | ||
}; | ||
} | ||
@@ -295,0 +297,0 @@ /** |
{ | ||
"name": "is-what", | ||
"sideEffects": false, | ||
"version": "3.13.0", | ||
"version": "3.14.0", | ||
"description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.", | ||
@@ -13,5 +13,5 @@ "main": "dist/index.cjs.js", | ||
"jest-w": "jest --watchAll", | ||
"lint": "eslint . --ext .js,.jsx,.ts,.tsx", | ||
"lint": "tsc --noEmit src/index.ts && eslint . --ext .js,.jsx,.ts,.tsx", | ||
"rollup": "rollup -c ./build.js", | ||
"build": "rm -rf types && rm -rf dist && npm run lint && npm run rollup && npm run test && npm run jest" | ||
"build": "rimraf types && rimraf dist && npm run lint && npm run rollup && npm run test && npm run jest" | ||
}, | ||
@@ -63,3 +63,5 @@ "repository": { | ||
"jest": "^26.6.3", | ||
"prettier": "^2.2.1", | ||
"regenerator-runtime": "^0.13.7", | ||
"rimraf": "^3.0.2", | ||
"rollup": "^2.39.0", | ||
@@ -66,0 +68,0 @@ "rollup-plugin-typescript2": "^0.30.0", |
@@ -127,2 +127,3 @@ # is What? 🙉 | ||
} | ||
return 0 | ||
} | ||
@@ -129,0 +130,0 @@ ``` |
122
src/index.ts
export type AnyFunction = (...args: any[]) => any | ||
export type AnyAsyncFunction = (...args: any[]) => Promise<any> | ||
export type AnyClass = new (...args: any[]) => any | ||
export type PlainObject = Record<string | number | symbol, any> | ||
type TypeGuard<A, B extends A> = (payload: A) => payload is B; | ||
type TypeGuard<A, B extends A> = (payload: A) => payload is B | ||
@@ -13,3 +14,3 @@ /** | ||
*/ | ||
export function getType (payload: any): string { | ||
export function getType(payload: any): string { | ||
return Object.prototype.toString.call(payload).slice(8, -1) | ||
@@ -24,3 +25,3 @@ } | ||
*/ | ||
export function isUndefined (payload: any): payload is undefined { | ||
export function isUndefined(payload: any): payload is undefined { | ||
return getType(payload) === 'Undefined' | ||
@@ -35,3 +36,3 @@ } | ||
*/ | ||
export function isNull (payload: any): payload is null { | ||
export function isNull(payload: any): payload is null { | ||
return getType(payload) === 'Null' | ||
@@ -44,5 +45,5 @@ } | ||
* @param {*} payload | ||
* @returns {payload is Record<string, any>} | ||
* @returns {payload is PlainObject} | ||
*/ | ||
export function isPlainObject (payload: any): payload is Record<string, any> { | ||
export function isPlainObject(payload: any): payload is PlainObject { | ||
if (getType(payload) !== 'Object') return false | ||
@@ -56,5 +57,5 @@ return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype | ||
* @param {*} payload | ||
* @returns {payload is Record<string, any>} | ||
* @returns {payload is PlainObject} | ||
*/ | ||
export function isObject (payload: any): payload is Record<string, any> { | ||
export function isObject(payload: any): payload is PlainObject { | ||
return isPlainObject(payload) | ||
@@ -69,3 +70,3 @@ } | ||
*/ | ||
export function isEmptyObject (payload: any): payload is { [K in any]: never } { | ||
export function isEmptyObject(payload: any): payload is { [K in any]: never } { | ||
return isPlainObject(payload) && Object.keys(payload).length === 0 | ||
@@ -75,8 +76,18 @@ } | ||
/** | ||
* Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) | ||
* | ||
* @param {*} payload | ||
* @returns {payload is PlainObject} | ||
*/ | ||
export function isFullObject(payload: any): payload is PlainObject { | ||
return isPlainObject(payload) && Object.keys(payload).length > 0 | ||
} | ||
/** | ||
* Returns whether the payload is an any kind of object (including special classes or objects with different prototypes) | ||
* | ||
* @param {*} payload | ||
* @returns {payload is Record<string, any>} | ||
* @returns {payload is PlainObject} | ||
*/ | ||
export function isAnyObject (payload: any): payload is Record<string, any> { | ||
export function isAnyObject(payload: any): payload is PlainObject { | ||
return getType(payload) === 'Object' | ||
@@ -94,3 +105,3 @@ } | ||
*/ | ||
export function isObjectLike<T extends Record<string, any>> (payload: any): payload is T { | ||
export function isObjectLike<T extends PlainObject>(payload: any): payload is T { | ||
return isAnyObject(payload) | ||
@@ -105,4 +116,4 @@ } | ||
*/ | ||
export function isFunction (payload: any): payload is AnyFunction { | ||
return typeof payload === "function" | ||
export function isFunction(payload: any): payload is AnyFunction { | ||
return typeof payload === 'function' | ||
} | ||
@@ -116,3 +127,3 @@ | ||
*/ | ||
export function isArray (payload: any): payload is any[] { | ||
export function isArray(payload: any): payload is any[] { | ||
return getType(payload) === 'Array' | ||
@@ -127,3 +138,3 @@ } | ||
*/ | ||
export function isFullArray (payload: any): payload is any[] { | ||
export function isFullArray(payload: any): payload is any[] { | ||
return isArray(payload) && payload.length > 0 | ||
@@ -138,3 +149,3 @@ } | ||
*/ | ||
export function isEmptyArray (payload: any): payload is [] { | ||
export function isEmptyArray(payload: any): payload is [] { | ||
return isArray(payload) && payload.length === 0 | ||
@@ -149,3 +160,3 @@ } | ||
*/ | ||
export function isString (payload: any): payload is string { | ||
export function isString(payload: any): payload is string { | ||
return getType(payload) === 'String' | ||
@@ -160,3 +171,3 @@ } | ||
*/ | ||
export function isFullString (payload: any): payload is string { | ||
export function isFullString(payload: any): payload is string { | ||
return isString(payload) && payload !== '' | ||
@@ -171,3 +182,3 @@ } | ||
*/ | ||
export function isEmptyString (payload: any): payload is string { | ||
export function isEmptyString(payload: any): payload is string { | ||
return payload === '' | ||
@@ -184,3 +195,3 @@ } | ||
*/ | ||
export function isNumber (payload: any): payload is number { | ||
export function isNumber(payload: any): payload is number { | ||
return getType(payload) === 'Number' && !isNaN(payload) | ||
@@ -195,3 +206,3 @@ } | ||
*/ | ||
export function isBoolean (payload: any): payload is boolean { | ||
export function isBoolean(payload: any): payload is boolean { | ||
return getType(payload) === 'Boolean' | ||
@@ -206,3 +217,3 @@ } | ||
*/ | ||
export function isRegExp (payload: any): payload is RegExp { | ||
export function isRegExp(payload: any): payload is RegExp { | ||
return getType(payload) === 'RegExp' | ||
@@ -217,3 +228,3 @@ } | ||
*/ | ||
export function isMap (payload: any): payload is Map<any, any> { | ||
export function isMap(payload: any): payload is Map<any, any> { | ||
return getType(payload) === 'Map' | ||
@@ -228,3 +239,3 @@ } | ||
*/ | ||
export function isWeakMap (payload: any): payload is WeakMap<any, any> { | ||
export function isWeakMap(payload: any): payload is WeakMap<any, any> { | ||
return getType(payload) === 'WeakMap' | ||
@@ -239,3 +250,3 @@ } | ||
*/ | ||
export function isSet (payload: any): payload is Set<any> { | ||
export function isSet(payload: any): payload is Set<any> { | ||
return getType(payload) === 'Set' | ||
@@ -250,3 +261,3 @@ } | ||
*/ | ||
export function isWeakSet (payload: any): payload is WeakSet<any> { | ||
export function isWeakSet(payload: any): payload is WeakSet<any> { | ||
return getType(payload) === 'WeakSet' | ||
@@ -261,3 +272,3 @@ } | ||
*/ | ||
export function isSymbol (payload: any): payload is symbol { | ||
export function isSymbol(payload: any): payload is symbol { | ||
return getType(payload) === 'Symbol' | ||
@@ -272,3 +283,3 @@ } | ||
*/ | ||
export function isDate (payload: any): payload is Date { | ||
export function isDate(payload: any): payload is Date { | ||
return getType(payload) === 'Date' && !isNaN(payload) | ||
@@ -283,3 +294,3 @@ } | ||
*/ | ||
export function isBlob (payload: any): payload is Blob { | ||
export function isBlob(payload: any): payload is Blob { | ||
return getType(payload) === 'Blob' | ||
@@ -294,3 +305,3 @@ } | ||
*/ | ||
export function isFile (payload: any): payload is File { | ||
export function isFile(payload: any): payload is File { | ||
return getType(payload) === 'File' | ||
@@ -305,3 +316,3 @@ } | ||
*/ | ||
export function isPromise (payload: any): payload is Promise<any> { | ||
export function isPromise(payload: any): payload is Promise<any> { | ||
return getType(payload) === 'Promise' | ||
@@ -316,3 +327,3 @@ } | ||
*/ | ||
export function isError (payload: any): payload is Error { | ||
export function isError(payload: any): payload is Error { | ||
return getType(payload) === 'Error' | ||
@@ -327,3 +338,3 @@ } | ||
*/ | ||
export function isNaNValue (payload: any): payload is typeof NaN { | ||
export function isNaNValue(payload: any): payload is typeof NaN { | ||
return getType(payload) === 'Number' && isNaN(payload) | ||
@@ -338,3 +349,3 @@ } | ||
*/ | ||
export function isPrimitive ( | ||
export function isPrimitive( | ||
payload: any | ||
@@ -358,10 +369,35 @@ ): payload is boolean | null | undefined | number | string | symbol { | ||
*/ | ||
export const isNullOrUndefined = isOneOf(isNull, isUndefined); | ||
export const isNullOrUndefined = isOneOf(isNull, isUndefined) | ||
export function isOneOf<A, B extends A, C extends A>(a: TypeGuard<A, B>, b: TypeGuard<A, C>): TypeGuard<A, B | C>; | ||
export function isOneOf<A, B extends A, C extends A, D extends A>(a: TypeGuard<A, B>, b: TypeGuard<A, C>, c: TypeGuard<A, D>): TypeGuard<A, B | C | D>; | ||
export function isOneOf<A, B extends A, C extends A, D extends A, E extends A>(a: TypeGuard<A, B>, b: TypeGuard<A, C>, c: TypeGuard<A, D>, d: TypeGuard<A, E>): TypeGuard<A, B | C | D | E>; | ||
export function isOneOf<A, B extends A, C extends A, D extends A, E extends A, F extends A>(a: TypeGuard<A, B>, b: TypeGuard<A, C>, c: TypeGuard<A, D>, d: TypeGuard<A, E>, e: TypeGuard<A, F>): TypeGuard<A, B | C | D | E | F>; | ||
export function isOneOf(a: AnyFunction, b: AnyFunction, c?: AnyFunction, d?: AnyFunction, e?: AnyFunction): (value: unknown) => boolean { | ||
return (value) => a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)); | ||
export function isOneOf<A, B extends A, C extends A>( | ||
a: TypeGuard<A, B>, | ||
b: TypeGuard<A, C> | ||
): TypeGuard<A, B | C> | ||
export function isOneOf<A, B extends A, C extends A, D extends A>( | ||
a: TypeGuard<A, B>, | ||
b: TypeGuard<A, C>, | ||
c: TypeGuard<A, D> | ||
): TypeGuard<A, B | C | D> | ||
export function isOneOf<A, B extends A, C extends A, D extends A, E extends A>( | ||
a: TypeGuard<A, B>, | ||
b: TypeGuard<A, C>, | ||
c: TypeGuard<A, D>, | ||
d: TypeGuard<A, E> | ||
): TypeGuard<A, B | C | D | E> | ||
export function isOneOf<A, B extends A, C extends A, D extends A, E extends A, F extends A>( | ||
a: TypeGuard<A, B>, | ||
b: TypeGuard<A, C>, | ||
c: TypeGuard<A, D>, | ||
d: TypeGuard<A, E>, | ||
e: TypeGuard<A, F> | ||
): TypeGuard<A, B | C | D | E | F> | ||
export function isOneOf( | ||
a: AnyFunction, | ||
b: AnyFunction, | ||
c?: AnyFunction, | ||
d?: AnyFunction, | ||
e?: AnyFunction | ||
): (value: unknown) => boolean { | ||
return (value) => | ||
a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value)) | ||
} | ||
@@ -380,3 +416,3 @@ | ||
*/ | ||
export function isType<T extends AnyFunction | AnyClass> (payload: any, type: T): payload is T { | ||
export function isType<T extends AnyFunction | AnyClass>(payload: any, type: T): payload is T { | ||
if (!(type instanceof Function)) { | ||
@@ -383,0 +419,0 @@ throw new TypeError('Type must be a function') |
@@ -5,9 +5,8 @@ { | ||
"strict": true, | ||
"isolatedModules": true, | ||
"esModuleInterop": true, | ||
"declaration": true, | ||
"declarationDir": "./types/" | ||
}, | ||
"include": [ | ||
"src/**/*", | ||
"test/**/*" | ||
] | ||
} | ||
"include": ["src/**/*", "test/**/*"] | ||
} |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
61138
17
1720
192
21