fix(core): Do not mark duplicates as circular references in jsonStringify (#5789)

* fix(core): jsonStringify should not mark duplicates as circular references

* not mark duplicates as circular references in the code node as well
This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™
2023-03-27 16:22:59 +02:00
committed by GitHub
parent f15f4bdcf2
commit 18efaf397a
3 changed files with 22 additions and 19 deletions

View File

@@ -12,9 +12,7 @@ function isTraversable(maybe: unknown): maybe is IDataObject {
* Stringify any non-standard JS objects (e.g. `Date`, `RegExp`) inside output items at any depth.
*/
export function standardizeOutput(output: IDataObject) {
const knownObjects = new WeakSet();
function standardizeOutputRecursive(obj: IDataObject): IDataObject {
function standardizeOutputRecursive(obj: IDataObject, knownObjects = new WeakSet()): IDataObject {
for (const [key, value] of Object.entries(obj)) {
if (!isTraversable(value)) continue;
@@ -29,7 +27,7 @@ export function standardizeOutput(output: IDataObject) {
obj[key] =
value.constructor.name !== 'Object'
? JSON.stringify(value) // Date, RegExp, etc.
: standardizeOutputRecursive(value);
: standardizeOutputRecursive(value, knownObjects);
}
return obj;
}