Socket
Socket
Sign inDemoInstall

is-what

Package Overview
Dependencies
0
Maintainers
1
Versions
71
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 4.1.16 to 5.0.0

dist/getType.d.ts

421

dist/index.d.ts

@@ -1,380 +0,41 @@

/**
* Returns the object type of the given payload
*
* @param {any} payload
* @returns {string}
*/
declare function getType(payload: any): string;
type PlainObject = Record<string | number | symbol, any>;
/**
* Returns whether the payload is a plain JavaScript object (excluding special classes or objects
* with other prototypes)
*
* @param {any} payload
* @returns {payload is PlainObject}
*/
declare function isPlainObject(payload: any): payload is PlainObject;
/**
* Returns whether the payload is an any kind of object (including special classes or objects with
* different prototypes)
*
* @param {any} payload
* @returns {payload is PlainObject}
*/
declare function isAnyObject(payload: any): payload is PlainObject;
/**
* Returns whether the payload is an array
*
* @param {any} payload
* @returns {payload is any[]}
*/
declare function isArray(payload: any): payload is any[];
/**
* Returns whether the payload is a Blob
*
* @param {any} payload
* @returns {payload is Blob}
*/
declare function isBlob(payload: any): payload is Blob;
/**
* Returns whether the payload is a boolean
*
* @param {any} payload
* @returns {payload is boolean}
*/
declare function isBoolean(payload: any): payload is boolean;
/**
* Returns whether the payload is a Date, and that the date is valid
*
* @param {any} payload
* @returns {payload is Date}
*/
declare function isDate(payload: any): payload is Date;
/**
* Returns whether the payload is a an empty array
*
* @param {any} payload
* @returns {payload is []}
*/
declare function isEmptyArray(payload: any): payload is [];
/**
* Returns whether the payload is a an empty object (excluding special classes or objects with other
* prototypes)
*
* @param {any} payload
* @returns {payload is { [K in any]: never }}
*/
declare function isEmptyObject(payload: any): payload is {
[K in any]: never;
};
/**
* Returns whether the payload is ''
*
* @param {any} payload
* @returns {payload is string}
*/
declare function isEmptyString(payload: any): payload is string;
/**
* Returns whether the payload is an Error
*
* @param {any} payload
* @returns {payload is Error}
*/
declare function isError(payload: any): payload is Error;
/**
* Returns whether the payload is a File
*
* @param {any} payload
* @returns {payload is File}
*/
declare function isFile(payload: any): payload is File;
/**
* Returns whether the payload is a an array with at least 1 item
*
* @param {any} payload
* @returns {payload is any[]}
*/
declare function isFullArray(payload: any): payload is any[];
/**
* Returns whether the payload is a an empty object (excluding special classes or objects with other
* prototypes)
*
* @param {any} payload
* @returns {payload is PlainObject}
*/
declare function isFullObject(payload: any): payload is PlainObject;
/**
* Returns whether the payload is a string, BUT returns false for ''
*
* @param {any} payload
* @returns {payload is string}
*/
declare function isFullString(payload: any): payload is string;
type AnyFunction = (...args: any[]) => any;
/**
* Returns whether the payload is a function (regular or async)
*
* @param {any} payload
* @returns {payload is AnyFunction}
*/
declare function isFunction(payload: any): payload is AnyFunction;
type AnyClass = new (...args: any[]) => any;
/**
* Does a generic check to check that the given payload is of a given type. In cases like Number, it
* will return true for NaN as NaN is a Number (thanks javascript!); It will, however, differentiate
* between object and null
*
* @template T
* @param {any} payload
* @param {T} type
* @returns {payload is T}
* @throws {TypeError} Will throw type error if type is an invalid type
*/
declare function isType<T extends AnyFunction | AnyClass>(payload: any, type: T): payload is T;
type GlobalClassName = {
[K in keyof typeof globalThis]: (typeof globalThis)[K] extends AnyClass ? K : never;
}[keyof typeof globalThis];
/**
* Checks if a value is an instance of a class or a class name. Useful when you want to check if a
* value is an instance of a class that may not be defined in the current scope. For example, if you
* want to check if a value is an `OffscreenCanvas` instance, you might not want to do the song and
* dance of using `typeof OffscreenCanvas !== 'undefined'` and then shimming `OffscreenCanvas` if
* the types aren't around.
*
* @example
* if (isInstanceOf(value, 'OffscreenCanvas')) {
* // value is an OffscreenCanvas
* }
*
* @param value The value to recursively check
* @param class_ A string or class that the value should be an instance of
*/
declare function isInstanceOf<T extends AnyClass>(value: unknown, class_: T): value is T;
declare function isInstanceOf<K extends GlobalClassName>(value: unknown, className: K): value is (typeof globalThis)[K];
declare function isInstanceOf(value: unknown, className: string): value is object;
/**
* Returns whether the payload is a Map
*
* @param {any} payload
* @returns {payload is Map<any, any>}
*/
declare function isMap(payload: any): payload is Map<any, any>;
/**
* Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)
*
* @param {any} payload
* @returns {payload is typeof NaN}
*/
declare function isNaNValue(payload: any): payload is typeof NaN;
/**
* Returns whether the payload is a negative number (but not 0)
*
* @param {any} payload
* @returns {payload is number}
*/
declare function isNegativeNumber(payload: any): payload is number;
/**
* Returns whether the payload is null
*
* @param {any} payload
* @returns {payload is null}
*/
declare function isNull(payload: any): payload is null;
/**
* Returns true whether the payload is null or undefined
*
* @param {any} payload
* @returns {(payload is null | undefined)}
*/
declare const isNullOrUndefined: (payload: any) => payload is null | undefined;
/**
* Returns whether the payload is a number (but not NaN)
*
* This will return `false` for `NaN`!!
*
* @param {any} payload
* @returns {payload is number}
*/
declare function isNumber(payload: any): payload is number;
/**
* Returns whether the payload is a plain JavaScript object (excluding special classes or objects
* with other prototypes)
*
* @param {any} payload
* @returns {payload is PlainObject}
*/
declare function isObject(payload: any): payload is PlainObject;
/**
* Returns whether the payload is an object like a type passed in < >
*
* Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.
*
* @template T This must be passed in < >
* @param {any} payload
* @returns {payload is T}
*/
declare function isObjectLike<T extends PlainObject>(payload: any): payload is T;
type TypeGuard<A, B extends A> = (payload: A) => payload is B;
/**
* A factory function that creates a function to check if the payload is one of the given types.
*
* @example
* import { isOneOf, isNull, isUndefined } from 'is-what'
*
* const isNullOrUndefined = isOneOf(isNull, isUndefined)
*
* isNullOrUndefined(null) // true
* isNullOrUndefined(undefined) // true
* isNullOrUndefined(123) // false
*/
declare function isOneOf<A, B extends A, C extends A>(a: TypeGuard<A, B>, b: TypeGuard<A, C>): TypeGuard<A, B | C>;
/**
* A factory function that creates a function to check if the payload is one of the given types.
*
* @example
* import { isOneOf, isNull, isUndefined } from 'is-what'
*
* const isNullOrUndefined = isOneOf(isNull, isUndefined)
*
* isNullOrUndefined(null) // true
* isNullOrUndefined(undefined) // true
* isNullOrUndefined(123) // false
*/
declare 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>;
/**
* A factory function that creates a function to check if the payload is one of the given types.
*
* @example
* import { isOneOf, isNull, isUndefined } from 'is-what'
*
* const isNullOrUndefined = isOneOf(isNull, isUndefined)
*
* isNullOrUndefined(null) // true
* isNullOrUndefined(undefined) // true
* isNullOrUndefined(123) // false
*/
declare 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>;
/**
* A factory function that creates a function to check if the payload is one of the given types.
*
* @example
* import { isOneOf, isNull, isUndefined } from 'is-what'
*
* const isNullOrUndefined = isOneOf(isNull, isUndefined)
*
* isNullOrUndefined(null) // true
* isNullOrUndefined(undefined) // true
* isNullOrUndefined(123) // false
*/
declare 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>;
/**
* Returns whether the payload is a positive number (but not 0)
*
* @param {any} payload
* @returns {payload is number}
*/
declare function isPositiveNumber(payload: any): payload is number;
/**
* Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String
* | Symbol)
*
* @param {any} payload
* @returns {(payload is boolean | null | undefined | number | string | symbol)}
*/
declare function isPrimitive(payload: any): payload is boolean | null | undefined | number | string | symbol;
/**
* Returns whether the payload is a Promise
*
* @param {any} payload
* @returns {payload is Promise<any>}
*/
declare function isPromise(payload: any): payload is Promise<any>;
/**
* Returns whether the payload is a regular expression (RegExp)
*
* @param {any} payload
* @returns {payload is RegExp}
*/
declare function isRegExp(payload: any): payload is RegExp;
/**
* Returns whether the payload is a Set
*
* @param {any} payload
* @returns {payload is Set<any>}
*/
declare function isSet(payload: any): payload is Set<any>;
/**
* Returns whether the payload is a string
*
* @param {any} payload
* @returns {payload is string}
*/
declare function isString(payload: any): payload is string;
/**
* Returns whether the payload is a Symbol
*
* @param {any} payload
* @returns {payload is symbol}
*/
declare function isSymbol(payload: any): payload is symbol;
/**
* Returns whether the payload is undefined
*
* @param {any} payload
* @returns {payload is undefined}
*/
declare function isUndefined(payload: any): payload is undefined;
/**
* Returns whether the payload is a WeakMap
*
* @param {any} payload
* @returns {payload is WeakMap<any, any>}
*/
declare function isWeakMap(payload: any): payload is WeakMap<any, any>;
/**
* Returns whether the payload is a WeakSet
*
* @param {any} payload
* @returns {payload is WeakSet<any>}
*/
declare function isWeakSet(payload: any): payload is WeakSet<any>;
type AnyAsyncFunction = (...args: any[]) => Promise<any>;
export { AnyAsyncFunction, AnyClass, AnyFunction, PlainObject, getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isInstanceOf, isMap, isNaNValue, isNegativeNumber, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPositiveNumber, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };
export type AnyAsyncFunction = (...args: unknown[]) => Promise<unknown>;
export { getType } from './getType.js';
export { isAnyObject } from './isAnyObject.js';
export { isArray } from './isArray.js';
export { isBlob } from './isBlob.js';
export { isBoolean } from './isBoolean.js';
export { isDate } from './isDate.js';
export { isEmptyArray } from './isEmptyArray.js';
export { isEmptyObject } from './isEmptyObject.js';
export { isEmptyString } from './isEmptyString.js';
export { isError } from './isError.js';
export { isFile } from './isFile.js';
export { isFullArray } from './isFullArray.js';
export { isFullObject } from './isFullObject.js';
export { isFullString } from './isFullString.js';
export { isFunction } from './isFunction.js';
export type { AnyFunction } from './isFunction.js';
export { isInstanceOf } from './isInstanceOf.js';
export { isMap } from './isMap.js';
export { isNaNValue } from './isNaNValue.js';
export { isNegativeNumber } from './isNegativeNumber.js';
export { isNull } from './isNull.js';
export { isNullOrUndefined } from './isNullOrUndefined.js';
export { isNumber } from './isNumber.js';
export { isObject } from './isObject.js';
export { isObjectLike } from './isObjectLike.js';
export { isOneOf } from './isOneOf.js';
export { isPlainObject } from './isPlainObject.js';
export type { PlainObject } from './isPlainObject.js';
export { isPositiveNumber } from './isPositiveNumber.js';
export { isPrimitive } from './isPrimitive.js';
export { isPromise } from './isPromise.js';
export { isRegExp } from './isRegExp.js';
export { isSet } from './isSet.js';
export { isString } from './isString.js';
export { isSymbol } from './isSymbol.js';
export { isType } from './isType.js';
export type { AnyClass } from './isType.js';
export { isUndefined } from './isUndefined.js';
export { isWeakMap } from './isWeakMap.js';
export { isWeakSet } from './isWeakSet.js';

@@ -1,171 +0,37 @@

function getType(payload) {
return Object.prototype.toString.call(payload).slice(8, -1);
}
function isAnyObject(payload) {
return getType(payload) === "Object";
}
function isArray(payload) {
return getType(payload) === "Array";
}
function isBlob(payload) {
return getType(payload) === "Blob";
}
function isBoolean(payload) {
return getType(payload) === "Boolean";
}
function isDate(payload) {
return getType(payload) === "Date" && !isNaN(payload);
}
function isEmptyArray(payload) {
return isArray(payload) && payload.length === 0;
}
function isPlainObject(payload) {
if (getType(payload) !== "Object")
return false;
const prototype = Object.getPrototypeOf(payload);
return !!prototype && prototype.constructor === Object && prototype === Object.prototype;
}
function isEmptyObject(payload) {
return isPlainObject(payload) && Object.keys(payload).length === 0;
}
function isEmptyString(payload) {
return payload === "";
}
function isError(payload) {
return getType(payload) === "Error" || payload instanceof Error;
}
function isFile(payload) {
return getType(payload) === "File";
}
function isFullArray(payload) {
return isArray(payload) && payload.length > 0;
}
function isFullObject(payload) {
return isPlainObject(payload) && Object.keys(payload).length > 0;
}
function isString(payload) {
return getType(payload) === "String";
}
function isFullString(payload) {
return isString(payload) && payload !== "";
}
function isFunction(payload) {
return typeof payload === "function";
}
function isType(payload, type) {
if (!(type instanceof Function)) {
throw new TypeError("Type must be a function");
}
if (!Object.prototype.hasOwnProperty.call(type, "prototype")) {
throw new TypeError("Type is not a class");
}
const name = type.name;
return getType(payload) === name || Boolean(payload && payload.constructor === type);
}
function isInstanceOf(value, classOrClassName) {
if (typeof classOrClassName === "function") {
for (let p = value; p; p = Object.getPrototypeOf(p)) {
if (isType(p, classOrClassName)) {
return true;
}
}
return false;
} else {
for (let p = value; p; p = Object.getPrototypeOf(p)) {
if (getType(p) === classOrClassName) {
return true;
}
}
return false;
}
}
function isMap(payload) {
return getType(payload) === "Map";
}
function isNaNValue(payload) {
return getType(payload) === "Number" && isNaN(payload);
}
function isNumber(payload) {
return getType(payload) === "Number" && !isNaN(payload);
}
function isNegativeNumber(payload) {
return isNumber(payload) && payload < 0;
}
function isNull(payload) {
return getType(payload) === "Null";
}
function isOneOf(a, b, c, d, e) {
return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value);
}
function isUndefined(payload) {
return getType(payload) === "Undefined";
}
const isNullOrUndefined = isOneOf(isNull, isUndefined);
function isObject(payload) {
return isPlainObject(payload);
}
function isObjectLike(payload) {
return isAnyObject(payload);
}
function isPositiveNumber(payload) {
return isNumber(payload) && payload > 0;
}
function isSymbol(payload) {
return getType(payload) === "Symbol";
}
function isPrimitive(payload) {
return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload);
}
function isPromise(payload) {
return getType(payload) === "Promise";
}
function isRegExp(payload) {
return getType(payload) === "RegExp";
}
function isSet(payload) {
return getType(payload) === "Set";
}
function isWeakMap(payload) {
return getType(payload) === "WeakMap";
}
function isWeakSet(payload) {
return getType(payload) === "WeakSet";
}
export { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isInstanceOf, isMap, isNaNValue, isNegativeNumber, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPositiveNumber, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };
export { getType } from './getType.js';
export { isAnyObject } from './isAnyObject.js';
export { isArray } from './isArray.js';
export { isBlob } from './isBlob.js';
export { isBoolean } from './isBoolean.js';
export { isDate } from './isDate.js';
export { isEmptyArray } from './isEmptyArray.js';
export { isEmptyObject } from './isEmptyObject.js';
export { isEmptyString } from './isEmptyString.js';
export { isError } from './isError.js';
export { isFile } from './isFile.js';
export { isFullArray } from './isFullArray.js';
export { isFullObject } from './isFullObject.js';
export { isFullString } from './isFullString.js';
export { isFunction } from './isFunction.js';
export { isInstanceOf } from './isInstanceOf.js';
export { isMap } from './isMap.js';
export { isNaNValue } from './isNaNValue.js';
export { isNegativeNumber } from './isNegativeNumber.js';
export { isNull } from './isNull.js';
export { isNullOrUndefined } from './isNullOrUndefined.js';
export { isNumber } from './isNumber.js';
export { isObject } from './isObject.js';
export { isObjectLike } from './isObjectLike.js';
export { isOneOf } from './isOneOf.js';
export { isPlainObject } from './isPlainObject.js';
export { isPositiveNumber } from './isPositiveNumber.js';
export { isPrimitive } from './isPrimitive.js';
export { isPromise } from './isPromise.js';
export { isRegExp } from './isRegExp.js';
export { isSet } from './isSet.js';
export { isString } from './isString.js';
export { isSymbol } from './isSymbol.js';
export { isType } from './isType.js';
export { isUndefined } from './isUndefined.js';
export { isWeakMap } from './isWeakMap.js';
export { isWeakSet } from './isWeakSet.js';
{
"name": "is-what",
"version": "4.1.16",
"version": "5.0.0",
"description": "JS type check (TypeScript supported) functions like `isPlainObject() isArray()` etc. A simple & small integration.",
"type": "module",
"sideEffects": false,
"types": "./dist/index.d.ts",
"module": "./dist/index.js",
"main": "./dist/index.js",
"exports": {
".": {
"require": {
"types": "./dist/cjs/index.d.cts",
"default": "./dist/cjs/index.cjs"
},
"import": {
"types": "./dist/index.d.ts",
"default": "./dist/index.js"
}
}
".": "./dist/index.js",
"./*": "./dist/*"
},

@@ -26,10 +15,10 @@ "files": [

"engines": {
"node": ">=12.13"
"node": ">=18"
},
"scripts": {
"test": "vitest run",
"lint": "tsc --noEmit && eslint ./src --ext .ts",
"build": "rollup -c ./rollup.config.js",
"lint": "tsc --noEmit && eslint ./src",
"build": "del-cli dist && tsc",
"build:docs": "typedoc",
"release": "npm run lint && del dist && npm run build && np"
"release": "npm run lint && npm run build && np"
},

@@ -64,22 +53,10 @@ "repository": {

"license": "MIT",
"bugs": {
"url": "https://github.com/mesqueeb/is-what/issues"
},
"homepage": "https://github.com/mesqueeb/is-what#readme",
"devDependencies": {
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"@cycraft/eslint": "^0.0.2",
"@cycraft/tsconfig": "^0.1.2",
"del-cli": "^5.1.0",
"eslint-config-prettier": "^8.10.0",
"eslint-plugin-tree-shaking": "^1.10.1",
"eslint": "^8.52.0",
"np": "^8.0.4",
"prettier-plugin-jsdoc": "^0.4.2",
"prettier": "^2.8.8",
"rollup-plugin-dts": "^5.3.1",
"rollup-plugin-esbuild": "^5.0.0",
"rollup": "^3.29.4",
"typedoc": "^0.25.2",
"typescript": "^5.2.2",
"vitest": "^0.34.6"
"np": "^10.0.5",
"typedoc": "^0.25.13",
"vitest": "^1.6.0"
},

@@ -90,42 +67,3 @@ "np": {

"yarn": false
},
"eslintConfig": {
"ignorePatterns": [
"node_modules",
"dist",
"scripts",
"test"
],
"root": true,
"parser": "@typescript-eslint/parser",
"plugins": [
"@typescript-eslint",
"tree-shaking"
],
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/eslint-recommended",
"plugin:@typescript-eslint/recommended",
"prettier"
],
"rules": {
"@typescript-eslint/no-empty-function": "off",
"@typescript-eslint/no-explicit-any": "off",
"@typescript-eslint/ban-ts-ignore": "off",
"tree-shaking/no-side-effects-in-initialization": "error",
"@typescript-eslint/ban-ts-comment": "off"
}
},
"prettier": {
"printWidth": 100,
"tabWidth": 2,
"singleQuote": true,
"trailingComma": "es5",
"semi": false,
"bracketSpacing": true,
"quoteProps": "consistent",
"plugins": [
"prettier-plugin-jsdoc"
]
}
}

@@ -200,3 +200,3 @@ # is What? 🙉

```ts
function isNumber(payload: any): payload is number {
function isNumber(payload: unknown): payload is number {
// return boolean

@@ -219,5 +219,5 @@ }

```ts
function isPlainObject(payload: any): payload is { [key: string]: any }
function isAnyObject(payload: any): payload is { [key: string]: any }
// The reason to return `{[key: string]: any}` is to be able to do
function isPlainObject(payload: unknown): payload is { [key: string]: unknown }
function isAnyObject(payload: unknown): payload is { [key: string]: unknown }
// The reason to return `{[key: string]: unknown}` is to be able to do
if (isPlainObject(payload) && payload.id) return payload.id

@@ -240,3 +240,3 @@ // if isPlainObject() would return `payload is object` then it would give an error at `payload.id`

if (isAnyObject(payload)) {
// in here `payload` is casted to: `Record<string | number | symbol, any>`
// in here `payload` is casted to: `Record<string | number | symbol, unknown>`
// WE LOOSE THE TYPE!

@@ -257,3 +257,3 @@ }

```ts
function isObjectLike<T extends object>(payload: any): payload is T {
function isObjectLike<T extends object>(payload: unknown): payload is T {
return isAnyObject(payload)

@@ -260,0 +260,0 @@ }

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc