| { | ||
| "editor.formatOnSave": true, | ||
| "editor.defaultFormatter": "esbenp.prettier-vscode", | ||
| "editor.tabSize": 2, // make sure this is the same as .prettierrc | ||
| "editor.insertSpaces": true, | ||
| "files.insertFinalNewline": true, | ||
| "files.trimFinalNewlines": true, | ||
| "files.trimTrailingWhitespace": true | ||
| } |
@@ -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 @@ /** |
+5
-3
| { | ||
| "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", |
+1
-0
@@ -127,2 +127,3 @@ # is What? 🙉 | ||
| } | ||
| return 0 | ||
| } | ||
@@ -129,0 +130,0 @@ ``` |
+79
-43
| 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') |
+4
-5
@@ -5,9 +5,8 @@ { | ||
| "strict": true, | ||
| "isolatedModules": true, | ||
| "esModuleInterop": true, | ||
| "declaration": true, | ||
| "declarationDir": "./types/" | ||
| }, | ||
| "include": [ | ||
| "src/**/*", | ||
| "test/**/*" | ||
| ] | ||
| } | ||
| "include": ["src/**/*", "test/**/*"] | ||
| } |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
61138
1.34%17
6.25%1720
2.87%192
0.52%21
10.53%