@lifaon/rx-js-light
Version:
Blazing fast Observables
53 lines (52 loc) • 2.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setObjectPropertyPathValue = exports.getOptionalObjectPropertyPathValue = exports.getObjectPropertyPathValue = exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_FALSE = exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_UNDEFINED = exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_THROW = void 0;
var is_nullish_1 = require("../is-type/is-nullish.cjs");
var OBJECT_PROPERTY_PATH_ON_INCOMPLETE_THROW = function () {
throw new Error("Invalid property path");
};
exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_THROW = OBJECT_PROPERTY_PATH_ON_INCOMPLETE_THROW;
var OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_UNDEFINED = function () {
return void 0;
};
exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_UNDEFINED = OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_UNDEFINED;
var OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_FALSE = function () {
return false;
};
exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_FALSE = OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_FALSE;
function getObjectPropertyPathValue(data, path, onIncompletePath) {
if (onIncompletePath === void 0) {
onIncompletePath = exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_THROW;
}
for (var i = 0, l = path.length; i < l; i++) {
var propertyKey = path[i];
data = data[propertyKey];
if ((0, is_nullish_1.isNullish)(data)) {
return onIncompletePath();
}
}
return data;
}
exports.getObjectPropertyPathValue = getObjectPropertyPathValue;
function getOptionalObjectPropertyPathValue(data, path) {
return getObjectPropertyPathValue(data, path, exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_UNDEFINED);
}
exports.getOptionalObjectPropertyPathValue = getOptionalObjectPropertyPathValue;
function setObjectPropertyPathValue(data, path, value, onIncompletePath) {
if (onIncompletePath === void 0) {
onIncompletePath = exports.OBJECT_PROPERTY_PATH_ON_INCOMPLETE_RETURN_FALSE;
}
var lengthMinusOne = path.length - 1;
for (var i = 0; i < lengthMinusOne; i++) {
var propertyKey = path[i];
data = data[propertyKey];
if ((0, is_nullish_1.isNullish)(data)) {
return onIncompletePath();
}
}
data[path[lengthMinusOne]] = value;
return true;
}
exports.setObjectPropertyPathValue = setObjectPropertyPathValue;