private buildDiffString()

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}];
    }