repomix
Version:
A tool to pack repository contents to single file for AI consumption
22 lines (21 loc) • 816 B
JavaScript
import path from 'node:path';
export const sortPaths = (filePaths) => {
const decorated = filePaths.map((p) => ({ original: p, parts: p.split(path.sep) }));
decorated.sort((a, b) => {
const partsA = a.parts;
const partsB = b.parts;
for (let i = 0; i < Math.min(partsA.length, partsB.length); i++) {
if (partsA[i] !== partsB[i]) {
const isLastA = i === partsA.length - 1;
const isLastB = i === partsB.length - 1;
if (!isLastA && isLastB)
return -1;
if (isLastA && !isLastB)
return 1;
return partsA[i].localeCompare(partsB[i]);
}
}
return partsA.length - partsB.length;
});
return decorated.map((d) => d.original);
};