Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
@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
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
...
FAQs
typechecking library
The npm package @magic/types receives a total of 343 weekly downloads. As such, @magic/types popularity was classified as not popular.
We found that @magic/types demonstrated a not healthy version release cadence and project activity because the last version was released 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.