Repository URL to install this package:
Version:
2.0.11-8 ▾
|
notion-desktop
/
usr
/
lib
/
notion-desktop
/
resources
/
app
/
shared
/
cleanObjectForSerialization.js
|
---|
"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