code: function comparePaths(path1, path2) {
          var entryName1, entryName2,
              pathParts1 = path1.split("/"),
              pathParts2 = path2.split("/"),
              length     = Math.min(pathParts1.length, pathParts2.length),
              folders1   = pathParts1.length - 1,
              folders2   = pathParts2.length - 1,
              index      = 0;
  
          while (index < length) {
              entryName1 = pathParts1[index];
              entryName2 = pathParts2[index];
  
              if (entryName1 !== entryName2) {
                  if (index < folders1 && index < folders2) {
                      return entryName1.toLocaleLowerCase().localeCompare(entryName2.toLocaleLowerCase());
                  } else if (index >= folders1 && index >= folders2) {
                      return compareFilenames(entryName1, entryName2);
                  }
                  return (index >= folders1 && index < folders2) ? -1 : 1;
              }
              index++;
          }
          return 0;
      }
docs: Compares two paths segment-by-segment, used for sorting. When two files share a path prefix,
  the less deeply nested one is sorted earlier in the list. Sorts files within the same parent
  folder based on `compareFilenames()`.
  @param {string} path1
  @param {string} path2
  @return {number} -1, 0, or 1 depending on whether path1 is less than, equal to, or greater than
  path2 according to this ordering.