frontend/app/common/Fileinfo.ts (35 lines of code) (raw):

interface FileInfo { filename: string; filepath: string; } function extractFileInfo (fullpath:string):FileInfo { const parts = fullpath.split("/"); const len = parts.length; if(len===0){ return { filename: parts[0], filepath: "" } } return { filename: parts[len-1], filepath: parts.slice(0,len-1).join("/") } } const baseNameXtractor = /\/([^\/]+)$/; const baseName = (str:string|undefined) => { if(str && str.length>0) { const result = baseNameXtractor.exec(str); if(result) { return result[1]; } else if(!str.includes("/")) { return str; } else { throw `baseName extraction failed on ${str}, please fix`; } } else { return undefined } } export type {FileInfo}; export {extractFileInfo, baseName};