Comparing version 0.7.1 to 0.8.0
@@ -1,65 +0,49 @@ | ||
declare type Class<T = unknown> = new (...args: any[]) => T; | ||
declare type PlainFunction = () => unknown; | ||
declare type PlainObject = Record<string, unknown>; | ||
declare const enum Types { | ||
array = "Array", | ||
asyncFunction = "AsyncFunction", | ||
bigint = "bigint", | ||
boolean = "boolean", | ||
date = "Date", | ||
error = "Error", | ||
function = "Function", | ||
generator = "Generator", | ||
generatorFunction = "GeneratorFunction", | ||
iterable = "Iterable", | ||
map = "Map", | ||
null = "null", | ||
number = "number", | ||
object = "Object", | ||
promise = "Promise", | ||
regExp = "RegExp", | ||
set = "Set", | ||
string = "string", | ||
symbol = "symbol", | ||
undefined = "undefined", | ||
weakMap = "WeakMap", | ||
weakSet = "WeakSet" | ||
import { Class, Primitive } from './types'; | ||
declare const objectTypes: readonly ["Array", "ArrayBuffer", "AsyncFunction", "AsyncGenerator", "AsyncGeneratorFunction", "Date", "Error", "Function", "Generator", "GeneratorFunction", "HTMLElement", "Map", "Object", "Promise", "RegExp", "Set", "WeakMap", "WeakSet"]; | ||
declare const primitiveTypes: readonly ["bigint", "boolean", "null", "number", "string", "symbol", "undefined"]; | ||
export declare type ObjectTypes = typeof objectTypes[number]; | ||
export declare type PrimitiveTypes = typeof primitiveTypes[number]; | ||
export declare type TypeName = ObjectTypes | PrimitiveTypes; | ||
export declare function getObjectType(value: unknown): ObjectTypes | undefined; | ||
declare function is(value: unknown): TypeName; | ||
declare namespace is { | ||
export var array: <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; | ||
export var arrayOf: (target: unknown[], predicate: (v: unknown) => boolean) => boolean; | ||
export var asyncGeneratorFunction: (value: unknown) => value is (...args: any[]) => Promise<unknown>; | ||
export var asyncFunction: (value: unknown) => value is Function; | ||
export var bigint: (value: unknown) => value is bigint; | ||
export var boolean: (value: unknown) => value is boolean; | ||
export var date: (value: unknown) => value is Date; | ||
export var defined: (value: unknown) => boolean; | ||
export var domElement: (value: unknown) => value is HTMLElement; | ||
export var empty: (value: unknown) => boolean; | ||
export var error: (value: unknown) => value is Error; | ||
var _a: (value: unknown) => value is Function; | ||
export var generator: (value: unknown) => value is Generator<unknown, any, unknown>; | ||
export var generatorFunction: (value: unknown) => value is GeneratorFunction; | ||
export var instanceOf: <T>(instance: unknown, class_: Class<T>) => instance is T; | ||
export var iterable: (value: unknown) => value is IterableIterator<unknown>; | ||
export var map: (value: unknown) => value is Map<unknown, unknown>; | ||
export var nan: (value: unknown) => boolean; | ||
var _b: (value: unknown) => value is null; | ||
export var nullOrUndefined: (value: unknown) => value is null | undefined; | ||
export var number: (value: unknown) => value is number; | ||
export var numericString: (value: unknown) => value is string; | ||
export var object: (value: unknown) => value is object; | ||
export var oneOf: (target: unknown[], value: any) => boolean; | ||
export var plainFunction: (value: unknown) => value is Function; | ||
export var plainObject: (value: unknown) => value is Record<string | number | symbol, unknown>; | ||
export var primitive: (value: unknown) => value is Primitive; | ||
export var promise: (value: unknown) => value is Promise<unknown>; | ||
export var propertyOf: (target: Record<string | number | symbol, unknown>, key: string, predicate?: ((v: unknown) => boolean) | undefined) => boolean; | ||
export var regexp: (value: unknown) => value is RegExp; | ||
export var set: (value: unknown) => value is Set<Record<string | number | symbol, unknown>>; | ||
export var string: (value: unknown) => value is string; | ||
export var symbol: (value: unknown) => value is symbol; | ||
export var undefined: (value: unknown) => value is undefined; | ||
export var weakMap: (value: unknown) => value is WeakMap<Record<string | number | symbol, unknown>, unknown>; | ||
export var weakSet: (value: unknown) => value is WeakSet<Record<string | number | symbol, unknown>>; | ||
export { _a as function, _b as null }; | ||
} | ||
export declare const getObjectType: (value: unknown) => string; | ||
declare const is: { | ||
(value: unknown): Types; | ||
array: <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; | ||
arrayOf(target: unknown[], predicate: (v: unknown) => boolean): boolean; | ||
asyncFunction: (value: unknown) => value is PlainFunction; | ||
boolean(value: unknown): value is boolean; | ||
date: (value: unknown) => value is Date; | ||
defined(value: unknown): boolean; | ||
domElement(value: unknown): value is Element; | ||
empty(value: unknown): boolean; | ||
error: (value: unknown) => value is Error; | ||
function: (value: unknown) => value is PlainFunction; | ||
generator(value: unknown): value is Generator<unknown, any, unknown>; | ||
generatorFunction: (value: unknown) => value is GeneratorFunction; | ||
instanceOf<T_1>(instance: unknown, class_: Class<T_1>): instance is T_1; | ||
iterable(value: unknown): value is IterableIterator<unknown>; | ||
map: (value: unknown) => value is Map<unknown, unknown>; | ||
nan(value: unknown): boolean; | ||
null(value: unknown): value is null; | ||
nullOrUndefined(value: unknown): value is null | undefined; | ||
number(value: unknown): value is number; | ||
numericString(value: unknown): value is string; | ||
object(value: unknown): value is Record<string, unknown>; | ||
oneOf(target: unknown[], value: any): boolean; | ||
plainFunction: (value: unknown) => value is PlainFunction; | ||
plainObject(value: unknown): value is Record<string, unknown>; | ||
promise: (value: unknown) => value is Promise<unknown>; | ||
propertyOf(target: PlainObject, key: string, predicate?: ((v: unknown) => boolean) | undefined): boolean; | ||
regexp: (value: unknown) => value is RegExp; | ||
set: (value: unknown) => value is Set<Record<string, unknown>>; | ||
string: (value: unknown) => value is string; | ||
symbol: (value: unknown) => value is symbol; | ||
undefined: (value: unknown) => value is undefined; | ||
weakMap: (value: unknown) => value is WeakMap<Record<string, unknown>, unknown>; | ||
weakSet: (value: unknown) => value is WeakSet<Record<string, unknown>>; | ||
}; | ||
export * from './types'; | ||
export default is; |
152
esm/index.js
@@ -1,35 +0,84 @@ | ||
export var getObjectType = function (value) { | ||
return Object.prototype.toString.call(value).slice(8, -1); | ||
}; | ||
var isObjectOfType = function (type) { return function (value) { | ||
return getObjectType(value) === type; | ||
}; }; | ||
var isOfType = function (type) { return function (value) { return typeof value === type; }; }; | ||
var is = function (value) { | ||
switch (value) { | ||
case null: | ||
return "null" /* null */; | ||
case true: | ||
case false: | ||
return "boolean" /* boolean */; | ||
default: | ||
var DOM_PROPERTIES_TO_CHECK = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
var objectTypes = [ | ||
'Array', | ||
'ArrayBuffer', | ||
'AsyncFunction', | ||
'AsyncGenerator', | ||
'AsyncGeneratorFunction', | ||
'Date', | ||
'Error', | ||
'Function', | ||
'Generator', | ||
'GeneratorFunction', | ||
'HTMLElement', | ||
'Map', | ||
'Object', | ||
'Promise', | ||
'RegExp', | ||
'Set', | ||
'WeakMap', | ||
'WeakSet', | ||
]; | ||
var primitiveTypes = [ | ||
'bigint', | ||
'boolean', | ||
'null', | ||
'number', | ||
'string', | ||
'symbol', | ||
'undefined', | ||
]; | ||
export function getObjectType(value) { | ||
var objectTypeName = Object.prototype.toString.call(value).slice(8, -1); | ||
if (/HTML\w+Element/.test(objectTypeName)) { | ||
return 'HTMLElement'; | ||
} | ||
if (isObjectType(objectTypeName)) { | ||
return objectTypeName; | ||
} | ||
return undefined; | ||
} | ||
function isObjectOfType(type) { | ||
return function (value) { return getObjectType(value) === type; }; | ||
} | ||
function isObjectType(name) { | ||
return objectTypes.includes(name); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
function isOfType(type) { | ||
return function (value) { return typeof value === type; }; | ||
} | ||
function isPrimitiveType(name) { | ||
return primitiveTypes.includes(name); | ||
} | ||
function is(value) { | ||
if (value === null) { | ||
return 'null'; | ||
} | ||
switch (typeof value) { | ||
case 'undefined': | ||
return "undefined" /* undefined */; | ||
case 'bigint': | ||
return 'bigint'; | ||
case 'boolean': | ||
return 'boolean'; | ||
case 'number': | ||
return 'number'; | ||
case 'string': | ||
return "string" /* string */; | ||
case 'number': | ||
return "number" /* number */; | ||
case 'bigint': | ||
return "bigint" /* bigint */; | ||
return 'string'; | ||
case 'symbol': | ||
return "symbol" /* symbol */; | ||
return 'symbol'; | ||
case 'undefined': | ||
return 'undefined'; | ||
default: | ||
} | ||
if (is.array(value)) { | ||
return "Array" /* array */; | ||
return 'Array'; | ||
} | ||
if (is.plainFunction(value)) { | ||
return "Function" /* function */; | ||
return 'Function'; | ||
} | ||
@@ -42,4 +91,4 @@ var tagType = getObjectType(value); | ||
/* istanbul ignore next */ | ||
return "Object" /* object */; | ||
}; | ||
return 'Object'; | ||
} | ||
is.array = Array.isArray; | ||
@@ -52,16 +101,14 @@ is.arrayOf = function (target, predicate) { | ||
}; | ||
is.asyncFunction = isObjectOfType("AsyncFunction" /* asyncFunction */); | ||
is.asyncGeneratorFunction = function (value) { | ||
return getObjectType(value) === 'AsyncGeneratorFunction'; | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.asyncFunction = isObjectOfType('AsyncFunction'); | ||
is.bigint = isOfType('bigint'); | ||
is.boolean = function (value) { | ||
return value === true || value === false; | ||
}; | ||
is.date = isObjectOfType("Date" /* date */); | ||
is.date = isObjectOfType('Date'); | ||
is.defined = function (value) { return !is.undefined(value); }; | ||
is.domElement = function (value) { | ||
var DOM_PROPERTIES_TO_CHECK = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
return (is.object(value) && | ||
@@ -80,3 +127,4 @@ !is.plainObject(value) && | ||
}; | ||
is.error = isObjectOfType("Error" /* error */); | ||
is.error = isObjectOfType('Error'); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.function = isOfType('function'); | ||
@@ -88,3 +136,3 @@ is.generator = function (value) { | ||
}; | ||
is.generatorFunction = isObjectOfType("GeneratorFunction" /* generatorFunction */); | ||
is.generatorFunction = isObjectOfType('GeneratorFunction'); | ||
is.instanceOf = function (instance, class_) { | ||
@@ -99,3 +147,3 @@ if (!instance || !class_) { | ||
}; | ||
is.map = isObjectOfType("Map" /* map */); | ||
is.map = isObjectOfType('Map'); | ||
is.nan = function (value) { | ||
@@ -111,3 +159,3 @@ return Number.isNaN(value); | ||
is.number = function (value) { | ||
return isOfType("number" /* number */)(value) && !is.nan(value); | ||
return isOfType('number')(value) && !is.nan(value); | ||
}; | ||
@@ -117,2 +165,3 @@ is.numericString = function (value) { | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.object = function (value) { | ||
@@ -127,3 +176,4 @@ return !is.nullOrUndefined(value) && (is.function(value) || typeof value === 'object'); | ||
}; | ||
is.plainFunction = isObjectOfType("Function" /* function */); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.plainFunction = isObjectOfType('Function'); | ||
is.plainObject = function (value) { | ||
@@ -136,3 +186,6 @@ if (getObjectType(value) !== 'Object') { | ||
}; | ||
is.promise = isObjectOfType("Promise" /* promise */); | ||
is.primitive = function (value) { | ||
return is.null(value) || isPrimitiveType(typeof value); | ||
}; | ||
is.promise = isObjectOfType('Promise'); | ||
is.propertyOf = function (target, key, predicate) { | ||
@@ -148,10 +201,11 @@ if (!is.object(target) || !key) { | ||
}; | ||
is.regexp = isObjectOfType("RegExp" /* regExp */); | ||
is.set = isObjectOfType("Set" /* set */); | ||
is.string = isOfType("string" /* string */); | ||
is.symbol = isOfType("symbol" /* symbol */); | ||
is.undefined = isOfType("undefined" /* undefined */); | ||
is.weakMap = isObjectOfType("WeakMap" /* weakMap */); | ||
is.weakSet = isObjectOfType("WeakSet" /* weakSet */); | ||
is.regexp = isObjectOfType('RegExp'); | ||
is.set = isObjectOfType('Set'); | ||
is.string = isOfType('string'); | ||
is.symbol = isOfType('symbol'); | ||
is.undefined = isOfType('undefined'); | ||
is.weakMap = isObjectOfType('WeakMap'); | ||
is.weakSet = isObjectOfType('WeakSet'); | ||
export * from './types'; | ||
export default is; | ||
//# sourceMappingURL=index.js.map |
@@ -1,65 +0,49 @@ | ||
declare type Class<T = unknown> = new (...args: any[]) => T; | ||
declare type PlainFunction = () => unknown; | ||
declare type PlainObject = Record<string, unknown>; | ||
declare const enum Types { | ||
array = "Array", | ||
asyncFunction = "AsyncFunction", | ||
bigint = "bigint", | ||
boolean = "boolean", | ||
date = "Date", | ||
error = "Error", | ||
function = "Function", | ||
generator = "Generator", | ||
generatorFunction = "GeneratorFunction", | ||
iterable = "Iterable", | ||
map = "Map", | ||
null = "null", | ||
number = "number", | ||
object = "Object", | ||
promise = "Promise", | ||
regExp = "RegExp", | ||
set = "Set", | ||
string = "string", | ||
symbol = "symbol", | ||
undefined = "undefined", | ||
weakMap = "WeakMap", | ||
weakSet = "WeakSet" | ||
import { Class, Primitive } from './types'; | ||
declare const objectTypes: readonly ["Array", "ArrayBuffer", "AsyncFunction", "AsyncGenerator", "AsyncGeneratorFunction", "Date", "Error", "Function", "Generator", "GeneratorFunction", "HTMLElement", "Map", "Object", "Promise", "RegExp", "Set", "WeakMap", "WeakSet"]; | ||
declare const primitiveTypes: readonly ["bigint", "boolean", "null", "number", "string", "symbol", "undefined"]; | ||
export declare type ObjectTypes = typeof objectTypes[number]; | ||
export declare type PrimitiveTypes = typeof primitiveTypes[number]; | ||
export declare type TypeName = ObjectTypes | PrimitiveTypes; | ||
export declare function getObjectType(value: unknown): ObjectTypes | undefined; | ||
declare function is(value: unknown): TypeName; | ||
declare namespace is { | ||
export var array: <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; | ||
export var arrayOf: (target: unknown[], predicate: (v: unknown) => boolean) => boolean; | ||
export var asyncGeneratorFunction: (value: unknown) => value is (...args: any[]) => Promise<unknown>; | ||
export var asyncFunction: (value: unknown) => value is Function; | ||
export var bigint: (value: unknown) => value is bigint; | ||
export var boolean: (value: unknown) => value is boolean; | ||
export var date: (value: unknown) => value is Date; | ||
export var defined: (value: unknown) => boolean; | ||
export var domElement: (value: unknown) => value is HTMLElement; | ||
export var empty: (value: unknown) => boolean; | ||
export var error: (value: unknown) => value is Error; | ||
var _a: (value: unknown) => value is Function; | ||
export var generator: (value: unknown) => value is Generator<unknown, any, unknown>; | ||
export var generatorFunction: (value: unknown) => value is GeneratorFunction; | ||
export var instanceOf: <T>(instance: unknown, class_: Class<T>) => instance is T; | ||
export var iterable: (value: unknown) => value is IterableIterator<unknown>; | ||
export var map: (value: unknown) => value is Map<unknown, unknown>; | ||
export var nan: (value: unknown) => boolean; | ||
var _b: (value: unknown) => value is null; | ||
export var nullOrUndefined: (value: unknown) => value is null | undefined; | ||
export var number: (value: unknown) => value is number; | ||
export var numericString: (value: unknown) => value is string; | ||
export var object: (value: unknown) => value is object; | ||
export var oneOf: (target: unknown[], value: any) => boolean; | ||
export var plainFunction: (value: unknown) => value is Function; | ||
export var plainObject: (value: unknown) => value is Record<string | number | symbol, unknown>; | ||
export var primitive: (value: unknown) => value is Primitive; | ||
export var promise: (value: unknown) => value is Promise<unknown>; | ||
export var propertyOf: (target: Record<string | number | symbol, unknown>, key: string, predicate?: ((v: unknown) => boolean) | undefined) => boolean; | ||
export var regexp: (value: unknown) => value is RegExp; | ||
export var set: (value: unknown) => value is Set<Record<string | number | symbol, unknown>>; | ||
export var string: (value: unknown) => value is string; | ||
export var symbol: (value: unknown) => value is symbol; | ||
export var undefined: (value: unknown) => value is undefined; | ||
export var weakMap: (value: unknown) => value is WeakMap<Record<string | number | symbol, unknown>, unknown>; | ||
export var weakSet: (value: unknown) => value is WeakSet<Record<string | number | symbol, unknown>>; | ||
export { _a as function, _b as null }; | ||
} | ||
export declare const getObjectType: (value: unknown) => string; | ||
declare const is: { | ||
(value: unknown): Types; | ||
array: <T>(arg: {} | T) => arg is T extends readonly any[] ? unknown extends T ? never : readonly any[] : any[]; | ||
arrayOf(target: unknown[], predicate: (v: unknown) => boolean): boolean; | ||
asyncFunction: (value: unknown) => value is PlainFunction; | ||
boolean(value: unknown): value is boolean; | ||
date: (value: unknown) => value is Date; | ||
defined(value: unknown): boolean; | ||
domElement(value: unknown): value is Element; | ||
empty(value: unknown): boolean; | ||
error: (value: unknown) => value is Error; | ||
function: (value: unknown) => value is PlainFunction; | ||
generator(value: unknown): value is Generator<unknown, any, unknown>; | ||
generatorFunction: (value: unknown) => value is GeneratorFunction; | ||
instanceOf<T_1>(instance: unknown, class_: Class<T_1>): instance is T_1; | ||
iterable(value: unknown): value is IterableIterator<unknown>; | ||
map: (value: unknown) => value is Map<unknown, unknown>; | ||
nan(value: unknown): boolean; | ||
null(value: unknown): value is null; | ||
nullOrUndefined(value: unknown): value is null | undefined; | ||
number(value: unknown): value is number; | ||
numericString(value: unknown): value is string; | ||
object(value: unknown): value is Record<string, unknown>; | ||
oneOf(target: unknown[], value: any): boolean; | ||
plainFunction: (value: unknown) => value is PlainFunction; | ||
plainObject(value: unknown): value is Record<string, unknown>; | ||
promise: (value: unknown) => value is Promise<unknown>; | ||
propertyOf(target: PlainObject, key: string, predicate?: ((v: unknown) => boolean) | undefined): boolean; | ||
regexp: (value: unknown) => value is RegExp; | ||
set: (value: unknown) => value is Set<Record<string, unknown>>; | ||
string: (value: unknown) => value is string; | ||
symbol: (value: unknown) => value is symbol; | ||
undefined: (value: unknown) => value is undefined; | ||
weakMap: (value: unknown) => value is WeakMap<Record<string, unknown>, unknown>; | ||
weakSet: (value: unknown) => value is WeakSet<Record<string, unknown>>; | ||
}; | ||
export * from './types'; | ||
export default is; |
166
lib/index.js
"use strict"; | ||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); | ||
}) : (function(o, m, k, k2) { | ||
if (k2 === undefined) k2 = k; | ||
o[k2] = m[k]; | ||
})); | ||
var __exportStar = (this && this.__exportStar) || function(m, exports) { | ||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.getObjectType = void 0; | ||
var getObjectType = function (value) { | ||
return Object.prototype.toString.call(value).slice(8, -1); | ||
}; | ||
var DOM_PROPERTIES_TO_CHECK = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
var objectTypes = [ | ||
'Array', | ||
'ArrayBuffer', | ||
'AsyncFunction', | ||
'AsyncGenerator', | ||
'AsyncGeneratorFunction', | ||
'Date', | ||
'Error', | ||
'Function', | ||
'Generator', | ||
'GeneratorFunction', | ||
'HTMLElement', | ||
'Map', | ||
'Object', | ||
'Promise', | ||
'RegExp', | ||
'Set', | ||
'WeakMap', | ||
'WeakSet', | ||
]; | ||
var primitiveTypes = [ | ||
'bigint', | ||
'boolean', | ||
'null', | ||
'number', | ||
'string', | ||
'symbol', | ||
'undefined', | ||
]; | ||
function getObjectType(value) { | ||
var objectTypeName = Object.prototype.toString.call(value).slice(8, -1); | ||
if (/HTML\w+Element/.test(objectTypeName)) { | ||
return 'HTMLElement'; | ||
} | ||
if (isObjectType(objectTypeName)) { | ||
return objectTypeName; | ||
} | ||
return undefined; | ||
} | ||
exports.getObjectType = getObjectType; | ||
var isObjectOfType = function (type) { return function (value) { | ||
return exports.getObjectType(value) === type; | ||
}; }; | ||
var isOfType = function (type) { return function (value) { return typeof value === type; }; }; | ||
var is = function (value) { | ||
switch (value) { | ||
case null: | ||
return "null" /* null */; | ||
case true: | ||
case false: | ||
return "boolean" /* boolean */; | ||
default: | ||
function isObjectOfType(type) { | ||
return function (value) { return getObjectType(value) === type; }; | ||
} | ||
function isObjectType(name) { | ||
return objectTypes.includes(name); | ||
} | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
function isOfType(type) { | ||
return function (value) { return typeof value === type; }; | ||
} | ||
function isPrimitiveType(name) { | ||
return primitiveTypes.includes(name); | ||
} | ||
function is(value) { | ||
if (value === null) { | ||
return 'null'; | ||
} | ||
switch (typeof value) { | ||
case 'undefined': | ||
return "undefined" /* undefined */; | ||
case 'bigint': | ||
return 'bigint'; | ||
case 'boolean': | ||
return 'boolean'; | ||
case 'number': | ||
return 'number'; | ||
case 'string': | ||
return "string" /* string */; | ||
case 'number': | ||
return "number" /* number */; | ||
case 'bigint': | ||
return "bigint" /* bigint */; | ||
return 'string'; | ||
case 'symbol': | ||
return "symbol" /* symbol */; | ||
return 'symbol'; | ||
case 'undefined': | ||
return 'undefined'; | ||
default: | ||
} | ||
if (is.array(value)) { | ||
return "Array" /* array */; | ||
return 'Array'; | ||
} | ||
if (is.plainFunction(value)) { | ||
return "Function" /* function */; | ||
return 'Function'; | ||
} | ||
var tagType = exports.getObjectType(value); | ||
var tagType = getObjectType(value); | ||
/* istanbul ignore else */ | ||
@@ -46,4 +105,4 @@ if (tagType) { | ||
/* istanbul ignore next */ | ||
return "Object" /* object */; | ||
}; | ||
return 'Object'; | ||
} | ||
is.array = Array.isArray; | ||
@@ -56,16 +115,14 @@ is.arrayOf = function (target, predicate) { | ||
}; | ||
is.asyncFunction = isObjectOfType("AsyncFunction" /* asyncFunction */); | ||
is.asyncGeneratorFunction = function (value) { | ||
return getObjectType(value) === 'AsyncGeneratorFunction'; | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.asyncFunction = isObjectOfType('AsyncFunction'); | ||
is.bigint = isOfType('bigint'); | ||
is.boolean = function (value) { | ||
return value === true || value === false; | ||
}; | ||
is.date = isObjectOfType("Date" /* date */); | ||
is.date = isObjectOfType('Date'); | ||
is.defined = function (value) { return !is.undefined(value); }; | ||
is.domElement = function (value) { | ||
var DOM_PROPERTIES_TO_CHECK = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
return (is.object(value) && | ||
@@ -84,3 +141,4 @@ !is.plainObject(value) && | ||
}; | ||
is.error = isObjectOfType("Error" /* error */); | ||
is.error = isObjectOfType('Error'); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.function = isOfType('function'); | ||
@@ -92,3 +150,3 @@ is.generator = function (value) { | ||
}; | ||
is.generatorFunction = isObjectOfType("GeneratorFunction" /* generatorFunction */); | ||
is.generatorFunction = isObjectOfType('GeneratorFunction'); | ||
is.instanceOf = function (instance, class_) { | ||
@@ -103,3 +161,3 @@ if (!instance || !class_) { | ||
}; | ||
is.map = isObjectOfType("Map" /* map */); | ||
is.map = isObjectOfType('Map'); | ||
is.nan = function (value) { | ||
@@ -115,3 +173,3 @@ return Number.isNaN(value); | ||
is.number = function (value) { | ||
return isOfType("number" /* number */)(value) && !is.nan(value); | ||
return isOfType('number')(value) && !is.nan(value); | ||
}; | ||
@@ -121,2 +179,3 @@ is.numericString = function (value) { | ||
}; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.object = function (value) { | ||
@@ -131,5 +190,6 @@ return !is.nullOrUndefined(value) && (is.function(value) || typeof value === 'object'); | ||
}; | ||
is.plainFunction = isObjectOfType("Function" /* function */); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.plainFunction = isObjectOfType('Function'); | ||
is.plainObject = function (value) { | ||
if (exports.getObjectType(value) !== 'Object') { | ||
if (getObjectType(value) !== 'Object') { | ||
return false; | ||
@@ -140,3 +200,6 @@ } | ||
}; | ||
is.promise = isObjectOfType("Promise" /* promise */); | ||
is.primitive = function (value) { | ||
return is.null(value) || isPrimitiveType(typeof value); | ||
}; | ||
is.promise = isObjectOfType('Promise'); | ||
is.propertyOf = function (target, key, predicate) { | ||
@@ -152,10 +215,11 @@ if (!is.object(target) || !key) { | ||
}; | ||
is.regexp = isObjectOfType("RegExp" /* regExp */); | ||
is.set = isObjectOfType("Set" /* set */); | ||
is.string = isOfType("string" /* string */); | ||
is.symbol = isOfType("symbol" /* symbol */); | ||
is.undefined = isOfType("undefined" /* undefined */); | ||
is.weakMap = isObjectOfType("WeakMap" /* weakMap */); | ||
is.weakSet = isObjectOfType("WeakSet" /* weakSet */); | ||
is.regexp = isObjectOfType('RegExp'); | ||
is.set = isObjectOfType('Set'); | ||
is.string = isOfType('string'); | ||
is.symbol = isOfType('symbol'); | ||
is.undefined = isOfType('undefined'); | ||
is.weakMap = isObjectOfType('WeakMap'); | ||
is.weakSet = isObjectOfType('WeakSet'); | ||
__exportStar(require("./types"), exports); | ||
exports.default = is; | ||
//# sourceMappingURL=index.js.map |
{ | ||
"name": "is-lite", | ||
"version": "0.7.1", | ||
"version": "0.8.0", | ||
"description": "A tiny javascript type testing tool", | ||
@@ -40,4 +40,4 @@ "author": "Gil Barbara <gilbarbara@gmail.com>", | ||
"@types/node": "^14.14.10", | ||
"@typescript-eslint/eslint-plugin": "^4.9.0", | ||
"@typescript-eslint/parser": "^4.9.0", | ||
"@typescript-eslint/eslint-plugin": "^4.9.1", | ||
"@typescript-eslint/parser": "^4.9.1", | ||
"eslint": "^7.15.0", | ||
@@ -49,3 +49,3 @@ "eslint-config-airbnb-base": "^14.2.1", | ||
"eslint-plugin-prettier": "^3.2.0", | ||
"husky": "^4.3.4", | ||
"husky": "^4.3.5", | ||
"jest": "^26.6.3", | ||
@@ -57,3 +57,3 @@ "prettier": "^2.2.1", | ||
"ts-jest": "^26.4.4", | ||
"ts-node": "^9.1.0", | ||
"ts-node": "^9.1.1", | ||
"typescript": "^4.1.2" | ||
@@ -87,7 +87,7 @@ }, | ||
"path": "./lib/index.js", | ||
"limit": "1 kB" | ||
"limit": "1.1 kB" | ||
}, | ||
{ | ||
"path": "./esm/index.js", | ||
"limit": "1 kB" | ||
"limit": "1.1 kB" | ||
} | ||
@@ -94,0 +94,0 @@ ], |
@@ -51,3 +51,6 @@ # is-lite | ||
``` | ||
**is.asyncGeneratorFunction(value)** | ||
**is.bigint(value)** | ||
**is.boolean(value)** | ||
@@ -119,2 +122,4 @@ | ||
**is.primitive(value)** | ||
**is.object(value)** | ||
@@ -121,0 +126,0 @@ Remember that functions and arrays are objects too. |
206
src/index.ts
@@ -1,59 +0,97 @@ | ||
type Class<T = unknown> = new (...args: any[]) => T; | ||
type PlainFunction = () => unknown; | ||
type PlainObject = Record<string, unknown>; | ||
import { Class, PlainObject, Primitive } from './types'; | ||
const enum Types { | ||
array = 'Array', | ||
asyncFunction = 'AsyncFunction', | ||
bigint = 'bigint', | ||
boolean = 'boolean', | ||
date = 'Date', | ||
error = 'Error', | ||
function = 'Function', | ||
generator = 'Generator', | ||
generatorFunction = 'GeneratorFunction', | ||
iterable = 'Iterable', | ||
map = 'Map', | ||
null = 'null', | ||
number = 'number', | ||
object = 'Object', | ||
promise = 'Promise', | ||
regExp = 'RegExp', | ||
set = 'Set', | ||
string = 'string', | ||
symbol = 'symbol', | ||
undefined = 'undefined', | ||
weakMap = 'WeakMap', | ||
weakSet = 'WeakSet', | ||
const DOM_PROPERTIES_TO_CHECK: Array<keyof HTMLElement> = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
const objectTypes = [ | ||
'Array', | ||
'ArrayBuffer', | ||
'AsyncFunction', | ||
'AsyncGenerator', | ||
'AsyncGeneratorFunction', | ||
'Date', | ||
'Error', | ||
'Function', | ||
'Generator', | ||
'GeneratorFunction', | ||
'HTMLElement', | ||
'Map', | ||
'Object', | ||
'Promise', | ||
'RegExp', | ||
'Set', | ||
'WeakMap', | ||
'WeakSet', | ||
] as const; | ||
const primitiveTypes = [ | ||
'bigint', | ||
'boolean', | ||
'null', | ||
'number', | ||
'string', | ||
'symbol', | ||
'undefined', | ||
] as const; | ||
export type ObjectTypes = typeof objectTypes[number]; | ||
export type PrimitiveTypes = typeof primitiveTypes[number]; | ||
export type TypeName = ObjectTypes | PrimitiveTypes; | ||
export function getObjectType(value: unknown): ObjectTypes | undefined { | ||
const objectTypeName = Object.prototype.toString.call(value).slice(8, -1); | ||
if (/HTML\w+Element/.test(objectTypeName)) { | ||
return 'HTMLElement'; | ||
} | ||
if (isObjectType(objectTypeName)) { | ||
return objectTypeName; | ||
} | ||
return undefined; | ||
} | ||
export const getObjectType = (value: unknown): string => | ||
Object.prototype.toString.call(value).slice(8, -1); | ||
function isObjectOfType<T>(type: string) { | ||
return (value: unknown): value is T => getObjectType(value) === type; | ||
} | ||
const isObjectOfType = <T>(type: string) => (value: unknown): value is T => | ||
getObjectType(value) === type; | ||
function isObjectType(name: unknown): name is ObjectTypes { | ||
return objectTypes.includes(name as ObjectTypes); | ||
} | ||
const isOfType = <T>(type: string) => (value: unknown): value is T => typeof value === type; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
function isOfType<T extends Primitive | Function>(type: string) { | ||
return (value: unknown): value is T => typeof value === type; | ||
} | ||
const is = (value: unknown): Types => { | ||
switch (value) { | ||
case null: | ||
return Types.null; | ||
case true: | ||
case false: | ||
return Types.boolean; | ||
default: | ||
function isPrimitiveType(name: unknown): name is PrimitiveTypes { | ||
return primitiveTypes.includes(name as PrimitiveTypes); | ||
} | ||
function is(value: unknown): TypeName { | ||
if (value === null) { | ||
return 'null'; | ||
} | ||
switch (typeof value) { | ||
case 'undefined': | ||
return Types.undefined; | ||
case 'bigint': | ||
return 'bigint'; | ||
case 'boolean': | ||
return 'boolean'; | ||
case 'number': | ||
return 'number'; | ||
case 'string': | ||
return Types.string; | ||
case 'number': | ||
return Types.number; | ||
case 'bigint': | ||
return Types.bigint; | ||
return 'string'; | ||
case 'symbol': | ||
return Types.symbol; | ||
return 'symbol'; | ||
case 'undefined': | ||
return 'undefined'; | ||
default: | ||
@@ -63,7 +101,7 @@ } | ||
if (is.array(value)) { | ||
return Types.array; | ||
return 'Array'; | ||
} | ||
if (is.plainFunction(value)) { | ||
return Types.function; | ||
return 'Function'; | ||
} | ||
@@ -74,8 +112,8 @@ | ||
if (tagType) { | ||
return tagType as Types; | ||
return tagType; | ||
} | ||
/* istanbul ignore next */ | ||
return Types.object; | ||
}; | ||
return 'Object'; | ||
} | ||
@@ -92,4 +130,10 @@ is.array = Array.isArray; | ||
is.asyncFunction = isObjectOfType<PlainFunction>(Types.asyncFunction); | ||
is.asyncGeneratorFunction = (value: unknown): value is (...args: any[]) => Promise<unknown> => | ||
getObjectType(value) === 'AsyncGeneratorFunction'; | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.asyncFunction = isObjectOfType<Function>('AsyncFunction'); | ||
is.bigint = isOfType<bigint>('bigint'); | ||
is.boolean = (value: unknown): value is boolean => { | ||
@@ -99,21 +143,13 @@ return value === true || value === false; | ||
is.date = isObjectOfType<Date>(Types.date); | ||
is.date = isObjectOfType<Date>('Date'); | ||
is.defined = (value: unknown): boolean => !is.undefined(value); | ||
is.domElement = (value: unknown): value is Element => { | ||
const DOM_PROPERTIES_TO_CHECK = [ | ||
'innerHTML', | ||
'ownerDocument', | ||
'style', | ||
'attributes', | ||
'nodeValue', | ||
]; | ||
is.domElement = (value: unknown): value is HTMLElement => { | ||
return ( | ||
is.object(value) && | ||
!is.plainObject(value) && | ||
(value as Element).nodeType === 1 && | ||
is.string((value as Element).nodeName) && | ||
DOM_PROPERTIES_TO_CHECK.every(property => property in (value as Element)) | ||
(value as HTMLElement).nodeType === 1 && | ||
is.string((value as HTMLElement).nodeName) && | ||
DOM_PROPERTIES_TO_CHECK.every(property => property in (value as HTMLElement)) | ||
); | ||
@@ -132,5 +168,6 @@ }; | ||
is.error = isObjectOfType<Error>(Types.error); | ||
is.error = isObjectOfType<Error>('Error'); | ||
is.function = isOfType<PlainFunction>('function'); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.function = isOfType<Function>('function'); | ||
@@ -145,3 +182,3 @@ is.generator = (value: unknown): value is Generator => { | ||
is.generatorFunction = isObjectOfType<GeneratorFunction>(Types.generatorFunction); | ||
is.generatorFunction = isObjectOfType<GeneratorFunction>('GeneratorFunction'); | ||
@@ -162,3 +199,3 @@ is.instanceOf = <T>(instance: unknown, class_: Class<T>): instance is T => { | ||
is.map = isObjectOfType<Map<unknown, unknown>>(Types.map); | ||
is.map = isObjectOfType<Map<unknown, unknown>>('Map'); | ||
@@ -178,3 +215,3 @@ is.nan = (value: unknown): boolean => { | ||
is.number = (value: unknown): value is number => { | ||
return isOfType<number>(Types.number)(value) && !is.nan(value); | ||
return isOfType<number>('number')(value) && !is.nan(value); | ||
}; | ||
@@ -186,3 +223,4 @@ | ||
is.object = (value: unknown): value is PlainObject => { | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.object = (value: unknown): value is object => { | ||
return !is.nullOrUndefined(value) && (is.function(value) || typeof value === 'object'); | ||
@@ -199,3 +237,4 @@ }; | ||
is.plainFunction = isObjectOfType<PlainFunction>(Types.function); | ||
// eslint-disable-next-line @typescript-eslint/ban-types | ||
is.plainFunction = isObjectOfType<Function>('Function'); | ||
@@ -212,4 +251,7 @@ is.plainObject = (value: unknown): value is PlainObject => { | ||
is.promise = isObjectOfType<Promise<unknown>>(Types.promise); | ||
is.primitive = (value: unknown): value is Primitive => | ||
is.null(value) || isPrimitiveType(typeof value); | ||
is.promise = isObjectOfType<Promise<unknown>>('Promise'); | ||
is.propertyOf = ( | ||
@@ -233,16 +275,18 @@ target: PlainObject, | ||
is.regexp = isObjectOfType<RegExp>(Types.regExp); | ||
is.regexp = isObjectOfType<RegExp>('RegExp'); | ||
is.set = isObjectOfType<Set<PlainObject>>(Types.set); | ||
is.set = isObjectOfType<Set<PlainObject>>('Set'); | ||
is.string = isOfType<string>(Types.string); | ||
is.string = isOfType<string>('string'); | ||
is.symbol = isOfType<symbol>(Types.symbol); | ||
is.symbol = isOfType<symbol>('symbol'); | ||
is.undefined = isOfType<undefined>(Types.undefined); | ||
is.undefined = isOfType<undefined>('undefined'); | ||
is.weakMap = isObjectOfType<WeakMap<PlainObject, unknown>>(Types.weakMap); | ||
is.weakMap = isObjectOfType<WeakMap<PlainObject, unknown>>('WeakMap'); | ||
is.weakSet = isObjectOfType<WeakSet<PlainObject>>(Types.weakSet); | ||
is.weakSet = isObjectOfType<WeakSet<PlainObject>>('WeakSet'); | ||
export * from './types'; | ||
export default is; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
48916
17
738
188
1