diff --git a/dist/cjs/index.cjs b/dist/cjs/index.cjs deleted file mode 100644 index cb52cef..0000000 --- a/dist/cjs/index.cjs +++ /dev/null @@ -1,173 +0,0 @@ -'use strict'; - -function getType(payload) { - return Object.prototype.toString.call(payload).slice(8, -1); -} -function isUndefined(payload) { - return getType(payload) === "Undefined"; -} -function isNull(payload) { - return getType(payload) === "Null"; -} -function isPlainObject(payload) { - if (getType(payload) !== "Object") - return false; - const prototype = Object.getPrototypeOf(payload); - return !!prototype && prototype.constructor === Object && prototype === Object.prototype; -} -function isObject(payload) { - return isPlainObject(payload); -} -function isEmptyObject(payload) { - return isPlainObject(payload) && Object.keys(payload).length === 0; -} -function isFullObject(payload) { - return isPlainObject(payload) && Object.keys(payload).length > 0; -} -function isAnyObject(payload) { - return getType(payload) === "Object"; -} -function isObjectLike(payload) { - return isAnyObject(payload); -} -function isFunction(payload) { - return typeof payload === "function"; -} -function isArray(payload) { - return getType(payload) === "Array"; -} -function isFullArray(payload) { - return isArray(payload) && payload.length > 0; -} -function isEmptyArray(payload) { - return isArray(payload) && payload.length === 0; -} -function isString(payload) { - return getType(payload) === "String"; -} -function isFullString(payload) { - return isString(payload) && payload !== ""; -} -function isEmptyString(payload) { - return payload === ""; -} -function isNumber(payload) { - return getType(payload) === "Number" && !isNaN(payload); -} -function isPositiveNumber(payload) { - return isNumber(payload) && payload > 0; -} -function isNegativeNumber(payload) { - return isNumber(payload) && payload < 0; -} -function isBoolean(payload) { - return getType(payload) === "Boolean"; -} -function isRegExp(payload) { - return getType(payload) === "RegExp"; -} -function isMap(payload) { - return getType(payload) === "Map"; -} -function isWeakMap(payload) { - return getType(payload) === "WeakMap"; -} -function isSet(payload) { - return getType(payload) === "Set"; -} -function isWeakSet(payload) { - return getType(payload) === "WeakSet"; -} -function isSymbol(payload) { - return getType(payload) === "Symbol"; -} -function isDate(payload) { - return getType(payload) === "Date" && !isNaN(payload); -} -function isBlob(payload) { - return getType(payload) === "Blob"; -} -function isFile(payload) { - return getType(payload) === "File"; -} -function isPromise(payload) { - return getType(payload) === "Promise"; -} -function isError(payload) { - return getType(payload) === "Error"; -} -function isNaNValue(payload) { - return getType(payload) === "Number" && isNaN(payload); -} -function isPrimitive(payload) { - return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload); -} -const isNullOrUndefined = isOneOf(isNull, isUndefined); -function isOneOf(a, b, c, d, e) { - return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value); -} -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; - } -} - -exports.getType = getType; -exports.isAnyObject = isAnyObject; -exports.isArray = isArray; -exports.isBlob = isBlob; -exports.isBoolean = isBoolean; -exports.isDate = isDate; -exports.isEmptyArray = isEmptyArray; -exports.isEmptyObject = isEmptyObject; -exports.isEmptyString = isEmptyString; -exports.isError = isError; -exports.isFile = isFile; -exports.isFullArray = isFullArray; -exports.isFullObject = isFullObject; -exports.isFullString = isFullString; -exports.isFunction = isFunction; -exports.isInstanceOf = isInstanceOf; -exports.isMap = isMap; -exports.isNaNValue = isNaNValue; -exports.isNegativeNumber = isNegativeNumber; -exports.isNull = isNull; -exports.isNullOrUndefined = isNullOrUndefined; -exports.isNumber = isNumber; -exports.isObject = isObject; -exports.isObjectLike = isObjectLike; -exports.isOneOf = isOneOf; -exports.isPlainObject = isPlainObject; -exports.isPositiveNumber = isPositiveNumber; -exports.isPrimitive = isPrimitive; -exports.isPromise = isPromise; -exports.isRegExp = isRegExp; -exports.isSet = isSet; -exports.isString = isString; -exports.isSymbol = isSymbol; -exports.isType = isType; -exports.isUndefined = isUndefined; -exports.isWeakMap = isWeakMap; -exports.isWeakSet = isWeakSet; diff --git a/dist/cjs/index.d.cts b/dist/cjs/index.d.cts deleted file mode 100644 index f63e49d..0000000 --- a/dist/cjs/index.d.cts +++ /dev/null @@ -1,334 +0,0 @@ -type AnyFunction = (...args: any[]) => any; -type AnyAsyncFunction = (...args: any[]) => Promise; -type AnyClass = new (...args: any[]) => any; -type PlainObject = Record; -type TypeGuard = (payload: A) => payload is B; -/** - * Returns the object type of the given payload - * - * @param {*} payload - * @returns {string} - */ -declare function getType(payload: any): string; -/** - * Returns whether the payload is undefined - * - * @param {*} payload - * @returns {payload is undefined} - */ -declare function isUndefined(payload: any): payload is undefined; -/** - * Returns whether the payload is null - * - * @param {*} payload - * @returns {payload is null} - */ -declare function isNull(payload: any): payload is null; -/** - * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isPlainObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is { [K in any]: never }} - */ -declare function isEmptyObject(payload: any): payload is { - [K in any]: never; -}; -/** - * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isFullObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isAnyObject(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 {*} payload - * @returns {payload is T} - */ -declare function isObjectLike(payload: any): payload is T; -/** - * Returns whether the payload is a function (regular or async) - * - * @param {*} payload - * @returns {payload is AnyFunction} - */ -declare function isFunction(payload: any): payload is AnyFunction; -/** - * 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 an array with at least 1 item - * - * @param {*} payload - * @returns {payload is any[]} - */ -declare function isFullArray(payload: any): payload is any[]; -/** - * Returns whether the payload is a an empty array - * - * @param {*} payload - * @returns {payload is []} - */ -declare function isEmptyArray(payload: any): payload is []; -/** - * Returns whether the payload is a string - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isString(payload: any): payload is string; -/** - * Returns whether the payload is a string, BUT returns false for '' - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isFullString(payload: any): payload is string; -/** - * Returns whether the payload is '' - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isEmptyString(payload: any): payload is string; -/** - * Returns whether the payload is a number (but not NaN) - * - * This will return `false` for `NaN`!! - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isNumber(payload: any): payload is number; -/** - * Returns whether the payload is a positive number (but not 0) - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isPositiveNumber(payload: any): payload is number; -/** - * Returns whether the payload is a negative number (but not 0) - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isNegativeNumber(payload: any): payload is number; -/** - * Returns whether the payload is a boolean - * - * @param {*} payload - * @returns {payload is boolean} - */ -declare function isBoolean(payload: any): payload is boolean; -/** - * Returns whether the payload is a regular expression (RegExp) - * - * @param {*} payload - * @returns {payload is RegExp} - */ -declare function isRegExp(payload: any): payload is RegExp; -/** - * Returns whether the payload is a Map - * - * @param {*} payload - * @returns {payload is Map} - */ -declare function isMap(payload: any): payload is Map; -/** - * Returns whether the payload is a WeakMap - * - * @param {*} payload - * @returns {payload is WeakMap} - */ -declare function isWeakMap(payload: any): payload is WeakMap; -/** - * Returns whether the payload is a Set - * - * @param {*} payload - * @returns {payload is Set} - */ -declare function isSet(payload: any): payload is Set; -/** - * Returns whether the payload is a WeakSet - * - * @param {*} payload - * @returns {payload is WeakSet} - */ -declare function isWeakSet(payload: any): payload is WeakSet; -/** - * Returns whether the payload is a Symbol - * - * @param {*} payload - * @returns {payload is symbol} - */ -declare function isSymbol(payload: any): payload is symbol; -/** - * Returns whether the payload is a Date, and that the date is valid - * - * @param {*} payload - * @returns {payload is Date} - */ -declare function isDate(payload: any): payload is Date; -/** - * Returns whether the payload is a Blob - * - * @param {*} payload - * @returns {payload is Blob} - */ -declare function isBlob(payload: any): payload is Blob; -/** - * Returns whether the payload is a File - * - * @param {*} payload - * @returns {payload is File} - */ -declare function isFile(payload: any): payload is File; -/** - * Returns whether the payload is a Promise - * - * @param {*} payload - * @returns {payload is Promise} - */ -declare function isPromise(payload: any): payload is Promise; -/** - * Returns whether the payload is an Error - * - * @param {*} payload - * @returns {payload is Error} - */ -declare function isError(payload: any): payload is Error; -/** - * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`) - * - * @param {*} payload - * @returns {payload is typeof NaN} - */ -declare function isNaNValue(payload: any): payload is typeof NaN; -/** - * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol) - * - * @param {*} payload - * @returns {(payload is boolean | null | undefined | number | string | symbol)} - */ -declare function isPrimitive(payload: any): payload is boolean | null | undefined | number | string | symbol; -/** - * Returns true whether the payload is null or undefined - * - * @param {*} payload - * @returns {(payload is null | undefined)} - */ -declare const isNullOrUndefined: TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard, d: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard, d: TypeGuard, e: TypeGuard): TypeGuard; -/** - * 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 {*} payload - * @param {T} type - * @throws {TypeError} Will throw type error if type is an invalid type - * @returns {payload is T} - */ -declare function isType(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(value: unknown, class_: T): value is T; -declare function isInstanceOf(value: unknown, className: K): value is (typeof globalThis)[K]; -declare function isInstanceOf(value: unknown, className: string): value is object; - -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 }; diff --git a/dist/index.d.ts b/dist/index.d.ts deleted file mode 100644 index f63e49d..0000000 --- a/dist/index.d.ts +++ /dev/null @@ -1,334 +0,0 @@ -type AnyFunction = (...args: any[]) => any; -type AnyAsyncFunction = (...args: any[]) => Promise; -type AnyClass = new (...args: any[]) => any; -type PlainObject = Record; -type TypeGuard = (payload: A) => payload is B; -/** - * Returns the object type of the given payload - * - * @param {*} payload - * @returns {string} - */ -declare function getType(payload: any): string; -/** - * Returns whether the payload is undefined - * - * @param {*} payload - * @returns {payload is undefined} - */ -declare function isUndefined(payload: any): payload is undefined; -/** - * Returns whether the payload is null - * - * @param {*} payload - * @returns {payload is null} - */ -declare function isNull(payload: any): payload is null; -/** - * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isPlainObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is { [K in any]: never }} - */ -declare function isEmptyObject(payload: any): payload is { - [K in any]: never; -}; -/** - * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isFullObject(payload: any): payload is PlainObject; -/** - * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes) - * - * @param {*} payload - * @returns {payload is PlainObject} - */ -declare function isAnyObject(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 {*} payload - * @returns {payload is T} - */ -declare function isObjectLike(payload: any): payload is T; -/** - * Returns whether the payload is a function (regular or async) - * - * @param {*} payload - * @returns {payload is AnyFunction} - */ -declare function isFunction(payload: any): payload is AnyFunction; -/** - * 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 an array with at least 1 item - * - * @param {*} payload - * @returns {payload is any[]} - */ -declare function isFullArray(payload: any): payload is any[]; -/** - * Returns whether the payload is a an empty array - * - * @param {*} payload - * @returns {payload is []} - */ -declare function isEmptyArray(payload: any): payload is []; -/** - * Returns whether the payload is a string - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isString(payload: any): payload is string; -/** - * Returns whether the payload is a string, BUT returns false for '' - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isFullString(payload: any): payload is string; -/** - * Returns whether the payload is '' - * - * @param {*} payload - * @returns {payload is string} - */ -declare function isEmptyString(payload: any): payload is string; -/** - * Returns whether the payload is a number (but not NaN) - * - * This will return `false` for `NaN`!! - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isNumber(payload: any): payload is number; -/** - * Returns whether the payload is a positive number (but not 0) - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isPositiveNumber(payload: any): payload is number; -/** - * Returns whether the payload is a negative number (but not 0) - * - * @param {*} payload - * @returns {payload is number} - */ -declare function isNegativeNumber(payload: any): payload is number; -/** - * Returns whether the payload is a boolean - * - * @param {*} payload - * @returns {payload is boolean} - */ -declare function isBoolean(payload: any): payload is boolean; -/** - * Returns whether the payload is a regular expression (RegExp) - * - * @param {*} payload - * @returns {payload is RegExp} - */ -declare function isRegExp(payload: any): payload is RegExp; -/** - * Returns whether the payload is a Map - * - * @param {*} payload - * @returns {payload is Map} - */ -declare function isMap(payload: any): payload is Map; -/** - * Returns whether the payload is a WeakMap - * - * @param {*} payload - * @returns {payload is WeakMap} - */ -declare function isWeakMap(payload: any): payload is WeakMap; -/** - * Returns whether the payload is a Set - * - * @param {*} payload - * @returns {payload is Set} - */ -declare function isSet(payload: any): payload is Set; -/** - * Returns whether the payload is a WeakSet - * - * @param {*} payload - * @returns {payload is WeakSet} - */ -declare function isWeakSet(payload: any): payload is WeakSet; -/** - * Returns whether the payload is a Symbol - * - * @param {*} payload - * @returns {payload is symbol} - */ -declare function isSymbol(payload: any): payload is symbol; -/** - * Returns whether the payload is a Date, and that the date is valid - * - * @param {*} payload - * @returns {payload is Date} - */ -declare function isDate(payload: any): payload is Date; -/** - * Returns whether the payload is a Blob - * - * @param {*} payload - * @returns {payload is Blob} - */ -declare function isBlob(payload: any): payload is Blob; -/** - * Returns whether the payload is a File - * - * @param {*} payload - * @returns {payload is File} - */ -declare function isFile(payload: any): payload is File; -/** - * Returns whether the payload is a Promise - * - * @param {*} payload - * @returns {payload is Promise} - */ -declare function isPromise(payload: any): payload is Promise; -/** - * Returns whether the payload is an Error - * - * @param {*} payload - * @returns {payload is Error} - */ -declare function isError(payload: any): payload is Error; -/** - * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`) - * - * @param {*} payload - * @returns {payload is typeof NaN} - */ -declare function isNaNValue(payload: any): payload is typeof NaN; -/** - * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol) - * - * @param {*} payload - * @returns {(payload is boolean | null | undefined | number | string | symbol)} - */ -declare function isPrimitive(payload: any): payload is boolean | null | undefined | number | string | symbol; -/** - * Returns true whether the payload is null or undefined - * - * @param {*} payload - * @returns {(payload is null | undefined)} - */ -declare const isNullOrUndefined: TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard, d: TypeGuard): TypeGuard; -/** - * 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: TypeGuard, b: TypeGuard, c: TypeGuard, d: TypeGuard, e: TypeGuard): TypeGuard; -/** - * 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 {*} payload - * @param {T} type - * @throws {TypeError} Will throw type error if type is an invalid type - * @returns {payload is T} - */ -declare function isType(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(value: unknown, class_: T): value is T; -declare function isInstanceOf(value: unknown, className: K): value is (typeof globalThis)[K]; -declare function isInstanceOf(value: unknown, className: string): value is object; - -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 }; diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index fff9275..0000000 --- a/dist/index.js +++ /dev/null @@ -1,135 +0,0 @@ -function getType(payload) { - return Object.prototype.toString.call(payload).slice(8, -1); -} -function isUndefined(payload) { - return getType(payload) === "Undefined"; -} -function isNull(payload) { - return getType(payload) === "Null"; -} -function isPlainObject(payload) { - if (getType(payload) !== "Object") - return false; - const prototype = Object.getPrototypeOf(payload); - return !!prototype && prototype.constructor === Object && prototype === Object.prototype; -} -function isObject(payload) { - return isPlainObject(payload); -} -function isEmptyObject(payload) { - return isPlainObject(payload) && Object.keys(payload).length === 0; -} -function isFullObject(payload) { - return isPlainObject(payload) && Object.keys(payload).length > 0; -} -function isAnyObject(payload) { - return getType(payload) === "Object"; -} -function isObjectLike(payload) { - return isAnyObject(payload); -} -function isFunction(payload) { - return typeof payload === "function"; -} -function isArray(payload) { - return getType(payload) === "Array"; -} -function isFullArray(payload) { - return isArray(payload) && payload.length > 0; -} -function isEmptyArray(payload) { - return isArray(payload) && payload.length === 0; -} -function isString(payload) { - return getType(payload) === "String"; -} -function isFullString(payload) { - return isString(payload) && payload !== ""; -} -function isEmptyString(payload) { - return payload === ""; -} -function isNumber(payload) { - return getType(payload) === "Number" && !isNaN(payload); -} -function isPositiveNumber(payload) { - return isNumber(payload) && payload > 0; -} -function isNegativeNumber(payload) { - return isNumber(payload) && payload < 0; -} -function isBoolean(payload) { - return getType(payload) === "Boolean"; -} -function isRegExp(payload) { - return getType(payload) === "RegExp"; -} -function isMap(payload) { - return getType(payload) === "Map"; -} -function isWeakMap(payload) { - return getType(payload) === "WeakMap"; -} -function isSet(payload) { - return getType(payload) === "Set"; -} -function isWeakSet(payload) { - return getType(payload) === "WeakSet"; -} -function isSymbol(payload) { - return getType(payload) === "Symbol"; -} -function isDate(payload) { - return getType(payload) === "Date" && !isNaN(payload); -} -function isBlob(payload) { - return getType(payload) === "Blob"; -} -function isFile(payload) { - return getType(payload) === "File"; -} -function isPromise(payload) { - return getType(payload) === "Promise"; -} -function isError(payload) { - return getType(payload) === "Error"; -} -function isNaNValue(payload) { - return getType(payload) === "Number" && isNaN(payload); -} -function isPrimitive(payload) { - return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload); -} -const isNullOrUndefined = isOneOf(isNull, isUndefined); -function isOneOf(a, b, c, d, e) { - return (value) => a(value) || b(value) || !!c && c(value) || !!d && d(value) || !!e && e(value); -} -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; - } -} - -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 };