[FIX] devtools: don't evaluate getters at object stringification

This commit prevents the serializer to evaluate object getters when
it is trying to display an object in a reduced form. This would cause
issues when a getter was returning an error instead of a value.
This commit is contained in:
Julien Carion (juca)
2024-11-13 14:23:04 +01:00
committed by Géry Debongnie
parent fcda17c8e9
commit c2daecc07b
@@ -116,12 +116,17 @@
} else if (obj instanceof Number) { } else if (obj instanceof Number) {
result[0] = obj.toString(); result[0] = obj.toString();
} else { } else {
for (const [key, value] of Object.entries(obj)) { for (const key of Reflect.ownKeys(obj)) {
if (length > 25) { if (length > 25) {
result.push("..."); result.push("...");
break; break;
} }
const element = key + ": " + this.serializeItem(value); let element;
if (Object.getOwnPropertyDescriptor(obj, key).hasOwnProperty("get")) {
element = key.toString() + ": (...)";
} else {
element = key.toString() + ": " + this.serializeItem(obj[key]);
}
length += element.length; length += element.length;
result.push(element); result.push(element);
} }