Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hackergrrl/safe-fs-blob-store

Filesystem blob store with atomic writes and high file limits on Windows
https://github.com/hackergrrl/safe-fs-blob-store

Last synced: 1 day ago
JSON representation

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

Awesome Lists containing this project

README

        

# safe-fs-blob-store

[![blob-store-compatible](https://raw.githubusercontent.com/maxogden/abstract-blob-store/master/badge.png)](https://github.com/maxogden/abstract-blob-store)

> filesystem [blob store](https://github.com/maxogden/abstract-blob-store) with atomic writes and high file limits on Windows

This module exposes the same API as
[fs-blob-store](https://github.com/mafintosh/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

``` js
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