safe-fs-blob-store

fs-blob-store with atomic writes and deals with windows fs edge cases

Usage no npm install needed!

<script type="module">
  import safeFsBlobStore from 'https://cdn.skypack.dev/safe-fs-blob-store';
</script>

README

safe-fs-blob-store

blob-store-compatible

filesystem blob store with atomic writes and high file limits on Windows

This module exposes the same API as fs-blob-store, but with two additional features:

  1. File writes are atomic. This is done by maintaining a "staging" area in the blob store that files are written to, and then renamed (using an atomic syscall) to the destination filename upon completion.
  2. Window's NTFS file system has a limit of ~4 billion files in a directory. FAT32 has a limit of ~65,000. This module transparently manages subdirectories from the prefixes of given keys to avoid hitting this limit as quickly.
  3. Adds a list() method which lists the key names of all the files in the media store.

Usage

var fs = require('safe-fs-blob-store')
var blobs = fs('some-directory')

var ws = blobs.createWriteStream({
  key: 'some/path/file.txt'
})

ws.end('hello world\n')

ws.on('finish', function () {
  var rs = blobs.createReadStream({
    key: 'some/path/file.txt'
  })

  rs.pipe(process.stdout)
})

API

See https://github.com/maxogden/abstract-blob-store and in addition:

store.list(cb)

Calls cb with err, keys, where keys is an array of string key names of the files in the store.

License

ISC