backendless-consul-config-provider
Version:
Consul Configs provider for Backendless' JS Servers
50 lines (37 loc) • 1.05 kB
JavaScript
function ensureObject(value) {
return (typeof value === 'object' && value !== null)
? value
: {}
}
function isObject(value) {
return typeof value === 'object' && value !== null
}
function mergeObjects(target, source) {
const result = {}
const keys = Object.keys(target).concat(Object.keys(source)).reduce((memo, key) => {
if (!memo.includes(key)) {
memo.push(key)
}
return memo
}, [])
keys.forEach(key => {
const isTargetValueObject = isObject(target[key])
const isSourceValueObject = isObject(source[key])
if (isTargetValueObject && isSourceValueObject) {
result[key] = mergeObjects(target[key], source[key])
} else if (source[key] !== undefined) {
result[key] = source[key]
} else {
result[key] = target[key]
}
})
return result
}
function wait(timeout) {
return new Promise(resolve => setTimeout(resolve, timeout))
}
exports.wait = wait
exports.ensureObject = ensureObject
exports.mergeObjects = mergeObjects
exports.isObject = isObject