https://github.com/kumavis/scuttleboat
:boat: Scuttlebucket with a manifest for dynamic records
https://github.com/kumavis/scuttleboat
Last synced: 7 months ago
JSON representation
:boat: Scuttlebucket with a manifest for dynamic records
- Host: GitHub
- URL: https://github.com/kumavis/scuttleboat
- Owner: kumavis
- Created: 2014-12-08T10:30:05.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2017-09-08T05:41:46.000Z (over 8 years ago)
- Last Synced: 2025-03-11T01:41:37.688Z (9 months ago)
- Language: JavaScript
- Homepage:
- Size: 5.86 KB
- Stars: 8
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-peer-to-peer - scuttleboat
- awesome-peer-to-peer - scuttleboat
README

### Sail the high seas with ScuttleBoat
Like [Scuttlebucket](https://github.com/dominictarr/scuttlebucket), but allows for dynamically adding records later
```js
var ScuttleBoat = require('scuttleboat')
var Model = require('scuttlebutt/model')
// Define sub-document constructor types
opts = {
constructors: {
Model: Model,
},
}
// Setup ScuttleBoats
A = new ScuttleBoat(opts)
B = new ScuttleBoat(opts)
var as = A.createStream()
var bs = B.createStream()
as.pipe(bs).pipe(as)
// Dynamically add sub-documents
aMeta = A.add('meta', 'Model')
aMeta.set('a',9)
// Subdocuments are created and synced
setTimeout(function(){
console.log( B.get('meta').get('a') ) // => 9
}, 200)
```
### API
Add a sub-document to the boat.
The sub-document instance will be created automatically.
Provide:
* the key (string)
* the type from the list of constructors (string)
* an (optional) argument to instantiate the instance with.
Argument must be serializable.
Cannot provide more than one initialization argument.
```js
boat.add(key, type, opts) //=> subdoc
```
Query a subdoc
```js
boat.get(key) //=> subdoc
```
Get a list of all subdocs
```js
boat.list() //=> {key1: subdoc1, key2: subdoc2, ...}
```
Clone a scuttleboat instance
```js
boat.clone()
```
Listen for new subdocs
```js
boat.on('create', function(key, subdoc){ /* ... */ })
```
This class inherits from [Scuttlebucket](https://github.com/dominictarr/scuttlebucket), see the documentation there for more info.