in packages/@aws-c2a/web-app/src/selectors/diff-stringifier.ts [44:71]
private buildDiffString(
current: any,
currentIndentation: number,
path: (string | number)[],
activeHighlights: Highlights<T>,
): DiffStringOutput<T> {
const content = typeof current.toJSON === 'function' ? current.toJSON() : current;
const additionalStructuresInPath =
this.additionalStructures?.filter(s => arraysEqual(s.path.slice(0,-1), path)) ?? [];
if(Array.isArray(content)) {
const entries = [
...additionalStructuresInPath?.flatMap(({path: m_path, structure: {content: obj, highlights}}) =>
({obj, path: m_path, highlights})),
...content.flatMap((obj, i) => ({path: [...path, i], obj})),
];
return this.buildArray(entries, activeHighlights, currentIndentation, path);
} else if(typeof content === 'object' && content !== null){
const entries = [
...additionalStructuresInPath?.flatMap(({path: m_path, structure: {content: obj, highlights}}) =>
({obj, path: m_path, highlights})),
...Object.entries(content).flatMap(([k, obj]) => ({path: [...path, k], obj})),
];
return this.buildObject(entries, activeHighlights, currentIndentation, path);
} else if(typeof content === 'string') {
return [{str: `"${content.split('"').join('\\"')}"`, highlights: activeHighlights, path}];
} else {
return [{str: `${content}`, highlights: activeHighlights, path}];
}