UNPKG

firesage

Version:

🔥 Extremely High Precision Typescript Wrapper for Firestore Web, Providing Unparalleled Type Safe and Dev Experience

30 lines (29 loc) • 1.43 kB
"use strict"; 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;