
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
@magic/types
Advanced tools
typechecking utilities
npm install @magic/types
// single function import
import { isArray } from '@magic/types'
isArray([]) // true
import is from '@magic/types'
is.array([]) // true
// comparisons
// test a value for multiple types
is(ele, ...types)
// alias is.eq, isEq, test
// test if a value is not of a type
not(ele, ...types)
// alias is.neq, isNeq, isNot
isSameType('string', 'string')
// alias isSame, is.same, is.sameType
// type comparisons:
isArray([]) // true
// alias isArr, is.array, is.arr
isBoolean(true) // true
// alias isBool, is.boolean, is.bool
isDefined(undefined) //false
// alias isDef, is.defined, is.def
isUndefined(undefined) //false
// alias isUndef, is.undefined, is.undef
isFunction(() => {}) // true
// alias isFunc, isFn, is.function, is.func, is.fn
isAsyncFunction(async () => {}) // true
// alias isAsyncFunc, isAsyncFn, is.asyncFunction, is.asyncFunc, is.asyncFn
isGeneratorFunction(* () => {}) // true
// alias isGeneratorFunc, isGeneratorFunc, is.generatorFunction, is.generatorFunc, is.generatorFn
isNumber(1) // true
// alias isNum, is.number, is.num
isInteger(1) // true
// alias isInt, is.integer, is.int
isFloat(1.1) // true
// alias is.float
isObject({}) // true
// alias isObj, is.object, is.obj
isString('') // true
// alias isStr, is.string, is.str
isRGBAObject({ r: 1, g: 1, b: 1, a: 1 }) // true
// alias isRGBA, is.rgbaObject, is.rgba
isRGBObject
// alias isRGB, is.rgbObject, is.rgb
isHexColor('#333') // true
// alias isHex, is.hex, is.hexColor
isHexAlphaColor('#3333') // true
// alias isHexa, is.hexa, is.hexAlphaColor
isColor('#444') // true
// alias isCol, is.color, is.col
isDate(new Date()) // true
// alias isTime, is.date, is.time
isRegExp(/regexp/) // true
// alias isRegex, is.regexp, is.regExp, is.regex
isTruthy('true') // true
// alias is.truthy
isFalsy(0) // true
// alias is.falsy
isEmpty('') // true
// alias is.empty
isError(new Error('')) // true
// alias isErr, is.error, is.err
isIterable([]) // true
// alias is.iterable
isEmail('a@b.c') // true
// alias isMail, is.email, is.mail
isNull(null) // true
// alias isNil, is.nil, is.null
isUndefinedOrNull(undefined || null) // true
// alias is.undefinedOrNull, is.undefinedOrNil, is.undefOrNull, is.undefOrNil
isBuffer(new Buffer('test')) // true
// alias isBuff, is.buffer, is.buff
isPromise(new Promise()) // true
// alias is.promise, isThenable, isThen, is.thenable, is.then
// removed (for now?)!
isArguments(() => return arguments) // true
// alias isArgs, is.arguments, is.args
isUUID(uuid) // true
// alias is.uuid
testType(42, 'number') // true
// alias is.type
test(42, ['string', 'object']) // false
// alias is.types
isEq(42, 'number') // true
// alias is.eq
isNot = isNeq = is.not(42, 'number') // true
// alias is.neq
isDeepEqual([1, 2, 3], [1, 2, 3]) // true
// alias is.deep.eq, is.deep.equal
isDeepDifferent([1, 2, 3], [1, 2, 3]) // false
// alias is.deep.diff, is.deep.different
isDeepEqual([1, 2, 3], [3, 2, 1]) // true
isDeepEqual([1, 2, 3], [3, 2, 1], { strict: true }) // false
isDeepEqual({a: 1, b: 2, c: 3 }, { c: 3, b: 2, a: 1 }) // true
isDeepEqual({a: 1, b: 2, c: 3 }, { c: 3, b: 2, a: 1 }, { strict: true }) // false
isEvery([1, 2, 3], 'number') // true
isEvery([1, 2, 3], is.number) // true
// alias is.every, is.all
isSome([1, 'str', {}], 'number') // true
isSome([1, 'str', {}], is.number) // true
// alias is.some
isNone([1, 2, 3], 'string') // true
isNone([1, 2, 3], is.number) // false
// alias is.none
isInstanceOf(new Date(), Date) // true
// alias is.instance, is.instanceof, is.instanceOf
isCase('UPPERCASE', 'up') // true
isCase('lowercase', 'low') // true
// alias is.case
isUpperCase('UPPERCASE') // true
// alias is.case.upper, is.isCase.upper
isLowerCase('lowercase') // true
// alias is.case.lower, is.isCase.lower
isMergeableObject({}) // true
// alias is.mergeable, is.mergeableObject, isMergeable
const mod = await import('path/to/file')
isModule(mod) // true
// alias is.module
isOwnProp({ test: undefined }, 'test') // true
// alias isOwnProperty, is.ownProperty, is.ownProp, is.prop
added Map, WeakMap, Set and WeakSet
use es6 modules
FIX: add module field to package.json
FIX: is.number no longer errors on node es6 modules and other weird objects
use @magic/deep for is.deep.equal and is.deep.different
is.deep uses @magic/deep now.
this means that is.deep.equal(null, undefined) is returning a function now, because it expects currying.
minimum node version is 13.5.0
remove @magic/deep dependency
fix erroneous '@magic/types' import in src/deep/equal.mjs
add
add is.instanceOf
add isCase, isUpperCase, isLowerCase
add isObjectNative
bump required node version to 14.2.0
deep.equal now does return true for objects that have undefined property values
update dependencies
update dependencies
...
FAQs
typechecking library
The npm package @magic/types receives a total of 918 weekly downloads. As such, @magic/types popularity was classified as not popular.
We found that @magic/types demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.