typechecking utilities
npminstall @magic/types// single function importimport{isArray}from'@magic/types'isArray([])// trueimportisfrom'@magic/types'is.array([])// true// comparisons// test a value for multiple typesis(ele, ...types)// alias is.eq, isEq, test// test if a value is not of a typenot(ele, ...types)// alias is.neq, isNeq, isNotisSameType('string','string')// alias isSame, is.same, is.sameType// type comparisons:isArray([])// true// alias isArr, is.array, is.arrisBoolean(true)// true// alias isBool, is.boolean, is.boolisDefined(undefined)//false// alias isDef, is.defined, is.defisUndefined(undefined)//false// alias isUndef, is.undefined, is.undefisFunction(()=>{})// true// alias isFunc, isFn, is.function, is.func, is.fnisAsyncFunction(async()=>{})// true// alias isAsyncFunc, isAsyncFn, is.asyncFunction, is.asyncFunc, is.asyncFnisGeneratorFunction(*()=>{})// true// alias isGeneratorFunc, isGeneratorFunc, is.generatorFunction, is.generatorFunc, is.generatorFnisNumber(1)// true// alias isNum, is.number, is.numisInteger(1)// true// alias isInt, is.integer, is.intisFloat(1.1)// true// alias is.floatisObject({})// true// alias isObj, is.object, is.objisString('')// true// alias isStr, is.string, is.strisRGBAObject({r: 1,g: 1,b: 1,a: 1})// true// alias isRGBA, is.rgbaObject, is.rgbaisRGBObject// alias isRGB, is.rgbObject, is.rgbisHexColor('#333')// true// alias isHex, is.hex, is.hexColorisHexAlphaColor('#3333')// true// alias isHexa, is.hexa, is.hexAlphaColorisColor('#444')// true// alias isCol, is.color, is.colisDate(newDate())// true// alias isTime, is.date, is.timeisRegExp(/regexp/)// true// alias isRegex, is.regexp, is.regExp, is.regexisTruthy('true')// true// alias is.truthyisFalsy(0)// true// alias is.falsyisEmpty('')// true// alias is.emptyisError(newError(''))// true// alias isErr, is.error, is.errisIterable([])// true// alias is.iterableisEmail('a@b.c')// true// alias isMail, is.email, is.mailisIp('192.168.1.1')// trueisIp('::1')// true// alias ip, is.ip, ipV4, ipV6, isIPv4, isIPv6isNull(null)// true// alias isNil, is.nil, is.nullisUndefinedOrNull(undefined||null)// true// alias is.undefinedOrNull, is.undefinedOrNil, is.undefOrNull, is.undefOrNilisBuffer(newBuffer('test'))// true// alias isBuff, is.buffer, is.buffisPromise(newPromise())// true// alias is.promise, isThenable, isThen, is.thenable, is.then// removed (for now?)!isArguments(()=>returnarguments)// true// alias isArgs, is.arguments, is.argsisUUID(uuid)// true// alias is.uuidtestType(42,'number')// true// alias is.typetest(42,['string','object'])// false// alias is.typesisEq(42,'number')// true// alias is.eqisNot=isNeq=is.not(42,'number')// true// alias is.neqisDeepEqual([1,2,3],[1,2,3])// true// alias is.deep.eq, is.deep.equalisDeepDifferent([1,2,3],[1,2,3])// false// alias is.deep.diff, is.deep.differentisDeepEqual([1,2,3],[3,2,1])// trueisDeepEqual([1,2,3],[3,2,1],{strict: true})// falseisDeepEqual({a: 1,b: 2,c: 3},{c: 3,b: 2,a: 1})// trueisDeepEqual({a: 1,b: 2,c: 3},{c: 3,b: 2,a: 1},{strict: true})// falseisEvery([1,2,3],'number')// trueisEvery([1,2,3],is.number)// true// alias is.every, is.allisSome([1,'str',{}],'number')// trueisSome([1,'str',{}],is.number)// true// alias is.someisSymbol(Symbol('testing)) // true
// alias is.symbol, is.symisNone([1,2,3],'string')// trueisNone([1,2,3],is.number)// false// alias is.noneisInstanceOf(newDate(),Date)// true// alias is.instance, is.instanceof, is.instanceOfisCase('UPPERCASE','up')// trueisCase('lowercase','low')// true// alias is.caseisUpperCase('UPPERCASE')// true// alias is.case.upper, is.isCase.upperisLowerCase('lowercase')// true// alias is.case.lower, is.isCase.lowerisMergeableObject({})// true// alias is.mergeable, is.mergeableObject, isMergeableconstmod=awaitimport('path/to/file')isModule(mod)// true// alias is.moduleisOwnProp({test: undefined},'test')// true// alias isOwnProperty, is.ownProperty, is.ownProp, is.propadded 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
- is.every
- is.some
- is.none
add is.instanceOf
add isCase, isUpperCase, isLowerCase
add isObjectNative
bump required node version to 14.2.0
- add isAsyncFunction
- add isGeneratorFunction
- bump required node version to 14.15.4
- update dependencies
deep.equal now does return true for objects that have undefined property values
- remove circular dependencies
- add isSameType, isSame, same, sameType
- update dev dependencies
- add isModule and isOwnProperty
- update dependencies
update dependencies
update dependencies
- isBuffer uses Buffer.isBuffer.
- update dependencies
- getLength does not use .length or .size property for unknown types. instead we test for is.array, is.string, is.map etc.
- update getLength to correctly return the length of buffers (regressed in 0.1.21).
- add a test case for buffer length
- update dev dependencies
- update docs
- update dependencies
- add typescript types
- coverage is 100%
- update dependencies
- fix typescript d.ts files
- @types/node is a dependency, not devDependency
- update dependencies
- options.strict makes the tests include sort order of objects and array, [1, 2] is [2, 1] if options.strict = true
- update dependencies
- change types of is.ln, is.len, is.length and is.count to reflect their type as function with subfunctions
- fix deep.equal and deep.different implementations and tests
- update dependencies
- update dependencies
- add is.symbol, is.sym and isSymbol functions
- is.instance now typeguards
- update dependencies
- add gt, gte, lt, lte and all other numerical value comparators into root, is.gt, is.lt etc.
- update dependencies
- update types for 0.1.34
- update dependencies
- update @magic/test
- remove recursive dependencies
- update dependencies
- add isIp and variants to allow ip v4 and v6 checks
- update dependencies
...