UNPKG

@leapond/utilities

Version:

A set of JavaScript utilities for on-demand using.

60 lines 2.34 kB
// Short Links export const version = '0.0.1' export const toStr = Object.prototype.toString export const sUnd = 'undefined' export const sObject = 'object' export const ssObject = '[object Object]' export const ssArray = '[object Array]' export const ssSet = '[object Set]' export const ssMap = '[object Map]' export const ssWeakSet = '[object WeakSet]' export const ssWeakMap = '[object WeakMap]' export const ssSymbol = '[object Symbol]' export const u = undefined export const w = typeof window !== sUnd ? window : global export const d = w.document export const f = d && d.createDocumentFragment() export const noop = () => u const typesCanBeMerge = { [ssObject]: 1, [ssArray]: 2, [ssSet]: 3, [ssMap]: 4 } // Defines // Loggers const sLogPrefix = '[LP.U]', aLogNFs = ['log', 'warn', 'error', 'info'] if (typeof console === sUnd) { const console = {} aLogNFs.forEach(s => console[s] = noop) } export const log = console.log.bind(console, sLogPrefix) export const warn = console.warn.bind(console, sLogPrefix) export const error = console.error.bind(console, sLogPrefix) export const info = console.info.bind(console, sLogPrefix) // Functions export const isObject = o => typeof o === sObject export const isArray = o => Array.isArray(o) export const isSet = o => toStr.call(o) === ssSet export const isMap = o => toStr.call(o) === ssMap export const isWeakSet = o => toStr.call(o) === ssWeakSet export const isWeakMap = o => toStr.call(o) === ssWeakMap export const isPlainObject = o => toStr.call(o) === ssObject export const isEmptyPlainObject = o => isPlainObject(o) && !Object.keys(o).length export const isEmptyPlainObjectStrict = o => { if (!isPlainObject(o)) return false for (let k in o) return false return true } export const isEmptyArray = o => Array.isArray(o) && o.length === 0 export const isEmptyPlain = o => o === null || o === u || Number.isNaN(o) || o === '' export const isEmptyObject = (o, t) => isEmptyPlainObjectStrict(o) || ( (t = toStr.call(o)) && ( (t === ssArray && o.length === 0) || ([ssSet, ssMap, ssWeakSet, ssWeakMap].includes(t) && o.size === 0) ) ) export const isEmpty = o => isEmptyPlain(o) || isEmptyObject(o) export const getMergeType = o => typeof o === sObject && typesCanBeMerge[toStr.call(o)] || 0 export const jsParser = s => (new Function(`return ${s};`))()