feat(utils): add uniqueFilename helper with -2 collision suffix
This commit is contained in:
21
src/utils/uniqueFilename.ts
Normal file
21
src/utils/uniqueFilename.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
export const uniqueFilename = ({
|
||||
basename,
|
||||
extension,
|
||||
existingPaths,
|
||||
directory
|
||||
}: {
|
||||
basename: string
|
||||
extension: string
|
||||
existingPaths: string[]
|
||||
directory: string
|
||||
}): string => {
|
||||
const prefix = directory ? `${directory}/` : ""
|
||||
const candidate = (n: number) =>
|
||||
n === 1 ? `${basename}${extension}` : `${basename}-${n}${extension}`
|
||||
const taken = new Set(existingPaths)
|
||||
let n = 1
|
||||
while (taken.has(`${prefix}${candidate(n)}`)) {
|
||||
n = n === 1 ? 2 : n + 1
|
||||
}
|
||||
return candidate(n)
|
||||
}
|
||||
Reference in New Issue
Block a user