import * as path from "path" // @ts-ignore import * as _sanitizeFileName from "sanitize-filename" export function sanitizeFileName(s: string, normalizeNfd = false): string { const sanitized = _sanitizeFileName(s) return normalizeNfd ? sanitized.normalize("NFD") : sanitized } // Get the filetype from a filename. Returns a string of one or more file extensions, // e.g. .zip, .dmg, .tar.gz, .tar.bz2, .exe.blockmap. We'd normally use `path.extname()`, // but it doesn't support multiple extensions, e.g. Foo-1.0.0.dmg.blockmap should be // .dmg.blockmap, not .blockmap. export function getCompleteExtname(filename: string): string { let extname = path.extname(filename) switch (extname) { // Append leading extension for blockmap filetype case ".blockmap": { extname = path.extname(filename.replace(extname, "")) + extname break } // Append leading extension for known compressed tar formats case ".bz2": case ".gz": case ".lz": case ".xz": case ".7z": { const ext = path.extname(filename.replace(extname, "")) if (ext === ".tar") { extname = ext + extname } break } } return extname }