import curry from "../function/curry"; import reduceWhile from "../list/reduceWhile"; import _getPathArray from "../internals/_getPathArray"; /** * Returns the value at the given path or a default value if the path doesn't exist. * The path can be specified as a dot-separated string or a list of strings. * * @param {any} defaultValue * @param {string|string[]} path * @param {object} object * @returns {object} */ const pathOr = (defaultValue, path, object) => { const pathArray = _getPathArray(path); const value = reduceWhile( (acc) => typeof acc !== "undefined", (acc, key) => acc[key], object, pathArray ); return typeof value === "undefined" ? defaultValue : value; }; export default curry(pathOr);