27 lines
590 B
JavaScript
27 lines
590 B
JavaScript
'use strict'
|
|
|
|
const { func } = require('./symbols')
|
|
|
|
const objectPredicates = {
|
|
plain: (value) => {
|
|
if (typeof value !== 'object') return false
|
|
|
|
const proto = Object.getPrototypeOf(value)
|
|
return proto === null || proto === Object.getPrototypeOf({})
|
|
},
|
|
empty: (value) => Object.keys(value).length === 0,
|
|
nonEmpty: (value) => Object.keys(value).length > 0,
|
|
|
|
[func]: {
|
|
is: (fn) => fn,
|
|
instanceOf: (v) => (value) => (value instanceof v)
|
|
}
|
|
}
|
|
|
|
module.exports = {
|
|
predicates: objectPredicates,
|
|
validator: (value) => {
|
|
return typeof value === 'object'
|
|
}
|
|
}
|