146 lines
5.8 KiB
JavaScript
146 lines
5.8 KiB
JavaScript
"use strict";
|
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
}
|
|
Object.defineProperty(o, k2, desc);
|
|
}) : (function(o, m, k, k2) {
|
|
if (k2 === undefined) k2 = k;
|
|
o[k2] = m[k];
|
|
}));
|
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
};
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.flatten = exports.unsetByPath = exports.setByPath = exports.getByPath = exports.isMaliciousProp = exports.getBoolean = exports.getNumber = exports.getValue = exports.ensure = exports.defaultsDeep = exports.defaults = exports.cloneDeep = exports.clone = exports.isPlainObject = exports.isObject = exports.isEmpty = exports.isEqual = exports.merge = exports.pick = exports.has = void 0;
|
|
var lodash_es_1 = require("lodash-es");
|
|
Object.defineProperty(exports, "has", { enumerable: true, get: function () { return lodash_es_1.has; } });
|
|
Object.defineProperty(exports, "pick", { enumerable: true, get: function () { return lodash_es_1.pick; } });
|
|
Object.defineProperty(exports, "merge", { enumerable: true, get: function () { return lodash_es_1.merge; } });
|
|
Object.defineProperty(exports, "isEqual", { enumerable: true, get: function () { return lodash_es_1.isEqual; } });
|
|
Object.defineProperty(exports, "isEmpty", { enumerable: true, get: function () { return lodash_es_1.isEmpty; } });
|
|
Object.defineProperty(exports, "isObject", { enumerable: true, get: function () { return lodash_es_1.isObject; } });
|
|
Object.defineProperty(exports, "isPlainObject", { enumerable: true, get: function () { return lodash_es_1.isPlainObject; } });
|
|
Object.defineProperty(exports, "clone", { enumerable: true, get: function () { return lodash_es_1.clone; } });
|
|
Object.defineProperty(exports, "cloneDeep", { enumerable: true, get: function () { return lodash_es_1.cloneDeep; } });
|
|
Object.defineProperty(exports, "defaults", { enumerable: true, get: function () { return lodash_es_1.defaults; } });
|
|
Object.defineProperty(exports, "defaultsDeep", { enumerable: true, get: function () { return lodash_es_1.defaultsDeep; } });
|
|
__exportStar(require("./mixins"), exports);
|
|
__exportStar(require("./inherit"), exports);
|
|
function ensure(value, defaultValue) {
|
|
return value != null ? value : defaultValue;
|
|
}
|
|
exports.ensure = ensure;
|
|
function getValue(obj, key, defaultValue) {
|
|
const value = obj != null ? obj[key] : null;
|
|
return defaultValue !== undefined ? ensure(value, defaultValue) : value;
|
|
}
|
|
exports.getValue = getValue;
|
|
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;
|
|
}
|
|
exports.getNumber = getNumber;
|
|
function getBoolean(obj, key, defaultValue) {
|
|
const value = obj != null ? obj[key] : null;
|
|
if (value == null) {
|
|
return defaultValue;
|
|
}
|
|
return !!value;
|
|
}
|
|
exports.getBoolean = getBoolean;
|
|
function isMaliciousProp(prop) {
|
|
return prop === '__proto__';
|
|
}
|
|
exports.isMaliciousProp = isMaliciousProp;
|
|
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;
|
|
}
|
|
exports.getByPath = getByPath;
|
|
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;
|
|
}
|
|
exports.setByPath = setByPath;
|
|
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;
|
|
}
|
|
exports.unsetByPath = unsetByPath;
|
|
// eslint-disable-next-line default-param-last
|
|
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;
|
|
}
|
|
exports.flatten = flatten;
|
|
//# sourceMappingURL=object.js.map
|