uno-api
Version:
simplify express router
121 lines (113 loc) • 2.56 kB
JavaScript
function isPureObject(val) {
if (val === undefined || val === null || Array.isArray(val)) { return false;}
const exc = ['function', 'string']
return ( (!exc.includes(typeof val)) || (typeof val === 'object') );
}
//ex: [[a, b], [c, d]] or [a,b]
function useMultiArray(data, cb, cbObj) {
if(data) {
if(Array.isArray(data)) {
if(data.length === 0) {
throw new Error('Array cannot be empty !')
}
else if(Array.isArray(data[0])) { //cek data isi data dalam array ex: [[a,b], [c,d]] -> [a,b]
for(let i = 0; i < data.length; i++) {
cb(data[i])
}
}
else {
cb(data)
}
} else {
throw new Error('Method With Param require Array !')
}
}
}
//ex: [[a, 'b], {a, b}] or [a,b] or {a, b}
function useMultiArrayAndObject(data, cbArray, cbObj) {
if(data) {
if(Array.isArray(data)) {
if(data.length === 0) {
throw new Error('Array cannot be empty !')
}
else if(Array.isArray(data[0]) || isPureObject(data[0])) { //cek data isi data dalam array ex: [[a,b], [c,d]] -> [a,b]
for (let i = 0; i < data.length; i++) {
let arrayOrObj = data[i]
if (isPureObject(arrayOrObj)) {
cbObj(arrayOrObj)
} else if (Array.isArray(arrayOrObj)) {
cbArray(arrayOrObj)
}
}
}
else {
cbArray(data)
}
}
} else if(isPureObject(data)) {
cbObj(data)
}
// else {
// throw new Error(`required array or object ! ${data}`)
// }
}
//ex: a or [a] or [a, b, c]
function useSingleArray(data, cb, forceDataToArray = false) {
if(data) {
if(Array.isArray(data)) {
for(let i = 0; i < data.length; i++) {
cb(data[i])
}
} else {
cb(forceDataToArray ? [data] : data)
}
} else if(forceDataToArray) {
cb([])
}
}
//ex: a or [a] or [a, b, c]
function getSingleArray(data, forceDataToArray = false) {
if(data) {
if(Array.isArray(data)) {
return data
} else {
return forceDataToArray ? [data] : data
}
} else if(forceDataToArray) {
return []
}
}
//ex: a or {a}
function useObject(data, cb, cbObject) {
if(data) {
if(isPureObject(data)) {
cbObject(data)
} else {
cb(data)
}
}
}
//ex: a or {a} or [a]
function useSingleArrayAndObject(data, cb, cbObject, forceDataToArray = false) {
if(data) {
if(isPureObject(data)) {
cbObject(data)
} else {
data = forceDataToArray ? [data] : data
if(Array.isArray(data)) {
for(let i = 0; i < data.length; i++) {
cb(data[i])
}
} else {
cb(data)
}
}
}
}
module.exports = {
useMultiArray,
useObject,
useSingleArray,
getSingleArray,
useMultiArrayAndObject
}