dependency-cruiser
Version:
Validate and visualize dependencies. With your rules. JavaScript, TypeScript, CoffeeScript. ES6, CommonJS, AMD.
40 lines (33 loc) • 913 B
JavaScript
/* eslint-disable security/detect-object-injection */
export function get(pObject, pPath, pDefault) {
if (!pObject || !pPath) {
return pDefault;
}
const lPathArray = pPath.match(/([^[.\]])+/g);
const lReturnValue = lPathArray.reduce((pPreviousObject, pKey) => {
return pPreviousObject && pPreviousObject[pKey];
}, pObject);
if (!lReturnValue) {
return pDefault;
}
return lReturnValue;
}
export function set(pObject, pPath, pValue) {
const lPathArray = pPath.match(/([^[.\]])+/g);
lPathArray.reduce((pPreviousObject, pKey, pIndex) => {
if (pIndex === lPathArray.length - 1) {
pPreviousObject[pKey] = pValue;
} else if (!pPreviousObject[pKey]) {
pPreviousObject[pKey] = {};
}
return pPreviousObject[pKey];
}, pObject);
}
/**
* @param {any} pObject
* @param {string} pPath
* @returns {boolean}
*/
export function has(pObject, pPath) {
return Boolean(get(pObject, pPath));
}