fs-un
v0.3.2
Published
Universal utils to manage files and directories inside a directory on different platforms
Downloads
41
Maintainers
Readme
fs-un
Unified util to manage files and directories inside a directory on different platforms
In progress, breaking changes expected between patch versions!!
Usage
Support Platforms
Node
Nodejs fs
module
import { NodeFS, walk } from 'fs-un'
const ifs = new NodeFS('/path/to/dir')
walk(ifs.root)
Web
import { getOpfsRoot, getUserRoot, isSupportOpfsRoot, isSupportUserRoot, walk, WebFS } from 'fs-un/web'
let root
if (isSupportUserRoot()) {
root = await getUserRoot()
} else if (isSupportOpfsRoot()) {
root = await getOpfsRoot()
} else {
throw new Error('not support')
}
const ifs = new WebFS(root)
walk(ifs.root)
Types
See more in types.ts
export interface IReadonlyFS {
/**
* Check file or directory
*/
exists: (path: string) => Promise<PathType>
/**
* Get file attributes
*/
fileAttr: (path: string) => Promise<FileAttr | undefined>
/**
* List directory
* @throws no such dir
*/
list: (path: string) => AsyncIterable<ListState>
/**
* Read file data as Buffer or Uint8Array
*/
readByte: (path: string) => Promise<Uint8Array | undefined>
/**
* Read file data as string
*/
readText: (path: string) => Promise<string | undefined>
}
export interface IStreamFs {
/**
* Streamly read file content
*
* If received data is undefined, the stream is ended
*/
readStream: (path: string, listener: ReadStreamEvent, options?: ReadStreamOptions) => Promise<void>
}
export interface IFS extends IReadonlyFS, IStreamFs {
/**
* Ensure directory exists, auto create parent directory
*/
mkdir: (path: string) => Promise<void>
/**
* Write data to file
*/
writeFile: (path: string, data: string | ArrayBuffer | ArrayBufferView, options?: OverwriteOptions) => Promise<void>
/**
* Move or rename file or dir, in default, throw error when overwrite by default
*/
move: (from: string, to: string, options?: MoveOptions) => Promise<void>
/**
* Copy file or dir, throw error when overwrite by default
*/
copy: (from: string, to: string, options?: OverwriteOptions) => Promise<void>
/**
* Remove directory and file recursively
*/
remove: (path: string) => Promise<void>
}