import config from "config"; import {nanoid} from "nanoid"; import {ServerError} from "swaf/HttpError"; import FileModel from "./models/FileModel.js"; export default async function generateSlug(tries: number): Promise { let i = 0; do { const slug = nanoid(config.get('newlyGeneratedSlugSize')); if (!await FileModel.getBySlug(slug)) { return slug; } i++; } while (i < tries); throw new ServerError('Failed to generate slug; newly generated slug size should be increased by 1.'); }