firesage
Version:
🔥 Extremely High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience
30 lines (29 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.removeFieldValueInhomogeneousProps = void 0;
var arrayFieldValue = "Firelord.ArrayFieldValue";
// remove the property that make field value type inhomogeneous
// also remove the data props if the array field value is empty(if not runtime error)
var removeFieldValueInhomogeneousProps = function (data) {
var replace = function (object) {
for (var prop in object) {
var isArrayFieldValueExist = object[prop][arrayFieldValue];
if (isArrayFieldValueExist) {
delete object[prop][arrayFieldValue];
}
var isZero = (isArrayFieldValueExist === null || isArrayFieldValueExist === void 0 ? void 0 : isArrayFieldValueExist.length) === 0;
if (isZero) {
delete object[prop]; // remove the whole props if array is empty
}
else if (typeof object[prop] === 'object' &&
object[prop] !== null &&
// https://stackoverflow.com/questions/1173549/how-to-determine-if-an-object-is-an-object-literal-in-javascript
Object.getPrototypeOf(object[prop]) === Object.prototype) {
replace(object[prop]);
}
}
};
replace(data);
return data;
};
exports.removeFieldValueInhomogeneousProps = removeFieldValueInhomogeneousProps;