Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
notion-desktop / usr / lib / notion-desktop / resources / app / shared / cleanObjectForSerialization.js
Size: Mime:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const _ = require("lodash");
const nonEnumerableProperties = [
    "name",
    "message",
    "stack",
    "reason",
    "data",
    "info",
];
function cleanObjectForSerialization(object, depth = 10, cycles = new Set()) {
    if (depth <= 0) {
        return;
    }
    if (_.isString(object) || _.isNumber(object) || _.isBoolean(object)) {
        return object;
    }
    if (_.isArray(object)) {
        if (cycles.has(object)) {
            return;
        }
        cycles.add(object);
        return object.map(item => cleanObjectForSerialization(item, depth - 1, cycles));
    }
    if (_.isError(object) || _.isObjectLike(object)) {
        if (cycles.has(object)) {
            return;
        }
        cycles.add(object);
        const serialized = {};
        for (const key of Object.keys(object)) {
            if (serialized[key]) {
                continue;
            }
            if (typeof key === "string" && key.length > 0 && key[0] === "_") {
                serialized[key] = "[omitted]";
                continue;
            }
            const value = object[key];
            serialized[key] = cleanObjectForSerialization(value, depth - 1, cycles);
        }
        for (const key of nonEnumerableProperties) {
            if (serialized[key]) {
                continue;
            }
            const value = object[key];
            if (value) {
                serialized[key] = cleanObjectForSerialization(value, depth - 1, cycles);
            }
        }
        return serialized;
    }
}
exports.cleanObjectForSerialization = cleanObjectForSerialization;
//# sourceMappingURL=cleanObjectForSerialization.js.map