export interface FS { /** check if a file exists asynchronously */ exists: (filepath: string) => Promise; /** check if a file exists synchronously */ existsSync: (filepath: string) => boolean; /** read a file asynchronously */ readFile: (filepath: string) => Promise; /** read a file synchronously */ readFileSync: (filepath: string) => string; /** resolve a file against directory, for given `ext` option */ resolve: (dir: string, file: string, ext: string) => string; /** check if file is contained in `root`, always return `true` by default. Warning: not setting this could expose path traversal vulnerabilities. */ contains?: (root: string, file: string) => boolean; /** defaults to "/" */ sep?: string; /** required for relative path resolving */ dirname?: (file: string) => string; /** fallback file for lookup failure */ fallback?: (file: string) => string | undefined; }