A minimal, extensible and promise based filesystem layer for modern browsers.
Simple-fs provides two storage backend. It's possible to write your own stoage backend using Storage API
- IndexedDB (default)
import { IndexedDbStorage } from '@forlagshuset/simple-fs'
- Memory (experimental and used for testing)
import { MemoryStorage } from '@forlagshuset/simple-fs'
npm:
npm install --save @forlagshuset/simple-fs
browser (umd):
<script src='https://unpkg.com/@forlagshuset/simple-fs@latest/dist/SimpleFS.js' async></script>
<script>
// by default SimpleFS uses IndexedDB
const fs = new SimpleFS.FileSystem()
// do stuff
await fs.mkdir('/myproject')
// create a file under root folder
const content = new Blob(['This is my cool project'], {type: 'plain/text'})
await fs.writeFile('/myproject/test.txt', content)
// get content as blob
let blob = await fs.readFile('/myproject/test.txt')
</script>
browser (modules)
import SimpleFS from '@forlagshuset/simple-fs'
// OR es6 modules from unpkg
import SimpleFS from "//unpkg.com/@forlagshuset/simple-fs?module"
const fs = new SimpleFS.FileSystem()
// first create root folder
await fs.mkdir('/myproject')
// create a file under root folder
const content = new Blob(['This is my cool project'], {type: 'plain/text'})
await fs.writeFile('/myproject/test.txt', content)
// get content as blob
let blob = await fs.readFile('/myproject/test.txt')
FileSystem
constructor({storage: storageObj = new IndexedDbStorage('my-storage-name')})
mkdir(path: string)
mkdirParents(path: string) // wraps mkdir -p
rmdir(path: string)
rmdirRecursive(path: string) // removes dirs recursively
readFile(path: string, options={}) // returns Blob
writeFile(path: string, data: Blob, options={}) // data should be Blob type
outputFile(path: string, data: Blob, options={}) // Wraps writeFile and recursively creates path if not exists
bulkOutputFiles([{path: string, blob: Blob, options:{}]) // Output files in one transaction, speeds up in chrome
unlink(path: string)
exists(path: string)
stats(path: string)
- Chrome
- IE Edge
- Firefox
- Safari