Holster 0.3.0

I'm still in the process of converting an app from GunDB to Holster, and haven't hit too many hurdles so far. Enough changes are required to Holster for another release though, so I'm publishing version 0.3.0 as there's a small API change.

The main change required at this point is fixing user queries, I previously added holster.user(public-key) as a way to query other accounts, but it overwrites the context of a logged in user so I think I've fixed that.

I also updated the per-query options object that allows you to wait longer for data to be returned if required. It was available in the wire spec API but wasn't exposed to the Holster API, so get() and next() now both have an optional fourth parameter after the callback.

The last change is to support projects using webpack, which didn't like some Node imports in Holster. They should be ignored anyway so adding /*webpackIgnore: true*/ to the imports seems to work for that.

Peers and a first release

The Holster options config now support some more options from GunDB, including providing a peer as a string, or as an array, or as {peers: ["url", "etc"]} along with other options in an object. This also meant updating Holster's wire.js to support multiple WebSocket clients. I also added the server and port options from GunDB, all of which are required for real applications.

As I started converting existing code over to Holster I realised that set() would be nice to have. I decided to add it via put() rather than adding a new function, by using an extra parameter that converts the data you want to put to {"random-key": data}. That makes it a pretty simple change, since all updates are added to the set.

There is no map() in Holster to fetch the values in the set, but I'm finding that to be ok. More on how to convert code from GunDB to Holster later.

I've also added publishing new releases from github to npm, which required releasing the first version of Holster so v0.2.0 is now available!