123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- export { has, pick, merge, isEqual, isEmpty, isObject, isPlainObject, clone, cloneDeep, defaults, defaultsDeep, } from 'lodash-es';
- export * from './mixins';
- export * from './inherit';
- export function ensure(value, defaultValue) {
- return value != null ? value : defaultValue;
- }
- export function getValue(obj, key, defaultValue) {
- const value = obj != null ? obj[key] : null;
- return defaultValue !== undefined ? ensure(value, defaultValue) : value;
- }
- export function getNumber(obj, key, defaultValue) {
- let value = obj != null ? obj[key] : null;
- if (value == null) {
- return defaultValue;
- }
- value = +value;
- if (Number.isNaN(value) || !Number.isFinite(value)) {
- return defaultValue;
- }
- return value;
- }
- export function getBoolean(obj, key, defaultValue) {
- const value = obj != null ? obj[key] : null;
- if (value == null) {
- return defaultValue;
- }
- return !!value;
- }
- export function isMaliciousProp(prop) {
- return prop === '__proto__';
- }
- export function getByPath(obj, path, delimiter = '/') {
- let ret;
- const keys = Array.isArray(path) ? path : path.split(delimiter);
- if (keys.length) {
- ret = obj;
- while (keys.length) {
- const key = keys.shift();
- if (Object(ret) === ret && key && key in ret) {
- ret = ret[key];
- }
- else {
- return undefined;
- }
- }
- }
- return ret;
- }
- export function setByPath(obj, path, value, delimiter = '/') {
- const keys = Array.isArray(path) ? path : path.split(delimiter);
- const lastKey = keys.pop();
- if (lastKey && !isMaliciousProp(lastKey)) {
- let diver = obj;
- keys.forEach((key) => {
- if (!isMaliciousProp(key)) {
- if (diver[key] == null) {
- diver[key] = {};
- }
- diver = diver[key];
- }
- });
- diver[lastKey] = value;
- }
- return obj;
- }
- export function unsetByPath(obj, path, delimiter = '/') {
- const keys = Array.isArray(path) ? path.slice() : path.split(delimiter);
- const propertyToRemove = keys.pop();
- if (propertyToRemove) {
- if (keys.length > 0) {
- const parent = getByPath(obj, keys);
- if (parent) {
- delete parent[propertyToRemove];
- }
- }
- else {
- delete obj[propertyToRemove];
- }
- }
- return obj;
- }
- // eslint-disable-next-line default-param-last
- export function flatten(obj, delim = '/', stop) {
- const ret = {};
- Object.keys(obj).forEach((key) => {
- const val = obj[key];
- let deep = typeof val === 'object' || Array.isArray(val);
- if (deep && stop && stop(val)) {
- deep = false;
- }
- if (deep) {
- const flatObject = flatten(val, delim, stop);
- Object.keys(flatObject).forEach((flatKey) => {
- ret[key + delim + flatKey] = flatObject[flatKey];
- });
- }
- else {
- ret[key] = val;
- }
- });
- // eslint-disable-next-line no-restricted-syntax
- for (const key in obj) {
- if (!Object.prototype.hasOwnProperty.call(obj, key)) {
- continue;
- }
- }
- return ret;
- }
- //# sourceMappingURL=object.js.map
|