Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hackergrrl/p2p-file-store
Filesystem-based blob store that syncs to other fs-based blob stores.
https://github.com/hackergrrl/p2p-file-store
Last synced: 24 days ago
JSON representation
Filesystem-based blob store that syncs to other fs-based blob stores.
- Host: GitHub
- URL: https://github.com/hackergrrl/p2p-file-store
- Owner: hackergrrl
- Created: 2017-05-17T16:43:17.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-09-27T21:44:13.000Z (about 7 years ago)
- Last Synced: 2024-10-14T08:45:36.815Z (about 1 month ago)
- Language: JavaScript
- Homepage:
- Size: 18.6 KB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# p2p-file-store
> Filesystem-based blob store that syncs to other fs-based blob stores.
## DEPRECATION NOTICE
This module has been broken apart into
[safe-fs-blob-store](https://github.com/noffle/safe-fs-blob-store) and
[blob-store-replication-stream](https://github.com/noffle/blob-store-replication-stream).## Usage
```js
var MediaStore = require('p2p-file-store')
var fs = require('fs')var store1 = MediaStore('/tmp/media-one')
var store2 = MediaStore('/tmp/media-two')var pending = 2
var ws1 = store1.createWriteStream('foo_bar.png', doneWriting)
ws1.end('hello')var ws2 = store2.createWriteStream('baz_bax.png', doneWriting)
ws2.end('greetings')function doneWriting () {
if (--pending === 0) {
replicate()
}
}function replicate () {
store1.replicateStore(store2, function (err) {
store2.createReadStream('foo_bar.png').pipe(process.stdout)
})
}
```outputs
```
hello
```## API
```js
var MediaStore = require('p2p-file-store')
```### var store = new MediaStore(dir)
Creates a new file store at the given directory path `dir`. This directory and
any needed subdirectories will be created automatically as needed.### var rs = store.createReadStream(name)
Create a Readable stream of the contents of the file named `name`.
### var ws = store.createWriteStream(name[, cb])
Create a Writable stream that will store the file named `name`. The callback
`cb` is called when all filesystem operations are completed, or there was an
error, with the signature `function (err) { ... }`.### store.replicateStore(otherStore[, opts][, cb])
Replicate this store with another store. All files in `store` that is not in
`otherStore` will be transferred to `otherStore`, and vice-versa.`opts` is an object that may have the following properties:
- `opts.progressFn` (function) - a function to call with periodic progress
events, with signature `function (percent) {...}`The callback `cb` is called on completion or error, with the signature `function
(err) { ... }`.### store.replicateStream([opts])
Returns a `Duplex` stream that can perform file store replication with another
file store duplex stream:```js
var r1 = store1.replicateStream()
var r2 = store2.replicateStream()r1.pipe(r2).pipe(r1)
var pending = 2
r1.on('end', done)
r2.on('end', done)function done () {
if (--pending === 0) {
console.log('finished replicating')
}
}
````opts` is an object that may have the following properties:
- `opts.progressFn` (function) - a function to call with periodic progress
events, with signature `function (percent) {...}`## Install
With [npm](https://npmjs.org/) installed, run
```
$ npm install p2p-file-store
```## License
ISC