Small breaking change to .val(cb)
:
Previously .val(cb)
would ONLY be called when data exists, like .on(cb)
.
However, due to popular demand, people wanted .val(cb)
to also get called for .not(cb)
rather than (before) it would "wait" until data arrived.
NOTE: For dynamic paths, .val(cb)
will still wait, like:
gun.get('users').map().val(cb)
because the behavior of the map()
is simply to not fire anything down the chain unless items are found.
Introduced experimental features, chaining .val()
(no callback) and .map(cb)
behaving as a map/reduce function.
It also upgraded the socket adapters and did end-to-end load testing and correctness testing.
GUN 0.3 -> 0.4 -> 0.5 Migration Guide:
gun.back
-> gun.back()
;
gun.get(key, cb)
-> cb(err, data) -> cb(at) at.err, at.put;
gun.map(cb)
-> gun.map().on(cb)
;
gun.init
-> deprecated;
gun.put(data, cb)
-> cb(err, ok) -> cb(ack) ack.err, ack.ok;
gun.get(key)
global/absolute -> gun.back(-1).get(key)
;
gun.key(key)
-> temporarily broken;
- Catch localStorage errors.
- Fixed S3 typo.
- Fixed server push.
- Breaking Change!
list.set(item)
returns the item's chain now, not the list chain. - Client and Server GUN servers are now more up to spec, trimmed excess HTTP/REST header data.
- Gun.is.lex added.
- You can now link nodes natively,
gun.get('mark').path('owner').put(gun.get('cat'))
! - Sets (or tables, collections, lists) are now easily done with
gun.get('users').set(gun.get('person/mark'))
.
Bug fixes.
Bug fixes.
Migration Guide! Migrate by changing .attach(
to .wsp(
on your server if you have one with gun. Remove .set()
(delete it), and change .set($DATA)
(where you call set with something) to .path('I' + Date.now() + 'R' + Gun.text.random(5)).put($DATA)
. If you have NodeJS style callbacks in your .get
(which documentation previously recommended that you shouldn't) they previous took err, graph
and now they take err, node
(which means now using callback style is fine to use). Inside of .not()
no longer use return
or this
, instead (probably) use gun
and no return
. If you are a module developer, use opt.wire
now instead of opt.hooks
and message Mark since he needs to talk to you since the wire protocol has changed.
- Server side default
.wsp()
renamed from.attach()
. .set()
deprecated because it did a bunch of random inconsistent things. Its useful behavior has now become implicit (see below) or can be done explicitly..not()
it was previously common toreturn
the chain inside of .not, beware that if you have code likegun.get(key).not(function(){ return this.put({}).key(key) }).val()
cause.val()
to be triggered twice (this is intentional, because it funnels two separate chains together) which previously didn't happen. To fix this, just don't return the chain..put()
and.path()
do implicit.init()
by default, turn on explicit behavior withGun({init: true})
..get(soul, cb)
cb is called back witherr, node
rather thanerr, graph
.- Options
opt.wire
renamed fromopt.hooks
. .val()
when called empty automatically cleanly logs for convenience purposes..init()
added.Gun.is.val
renamed fromGun.is.value
.Gun.is.rel
renamed fromGun.is.soul
.Gun.is.node.soul
renamed fromGun.is.soul.on
.Gun.union.ify
renamed fromGun.union.pseudo
.Gun.union.HAM
renamed fromGun.HAM
.Gun.HAM
is now the actual HAM function for conflict resolution.Gun._.state
renamed fromGun._.HAM
.- Maximum Callstack Exceeded is less problematic now, unless you intentionally choke the thread. #95
- Putting a regex or Date or NaN is actually detected and causes an error now while before it was silent. #122 #123
.on()
gets called when a key is later newly made while before it did not. #116.val()
should not ever get called with a relation alone (internals should resolve it), this is fixed. #132