UNPKG

gun

Version:

A realtime, decentralized, offline-first, graph data synchronization engine.

1,961 lines (1,919 loc) 60.9 kB
;(function(){ // Performance Testing Stress Development // Performance Testing Style Development // Performance Testing Speed Development // Performance Testing Superior Development // Performance Testing Snippet Development // Performance Testing Skilled Development // Performance Testing Steady Development // Performance Testing Stepwise Development // Performance Testing Strong Development // Performance Testing Specified Development // Performance Testing Stipulated Development // Performance Testing Systematic Development /* ******* START AT THE BOTTOM AND READ UP ******* */ window.i = 1; if(!this.stool){ return } setTimeout(function(){ stool.run(); },1); stool.setup(window.setup = function(){ var list = [1,2,3]; var add = function(a,b){ return a + b }; var addprop = function(a,b){ return a.num + b.num }; //var i = 1; var pos = {lat: Math.random(), lng: Math.random(), i: i}; var f1 = function(a){ return a }; var f2 = function(a,b){ return b }; var f3 = function(a,b){ return a + b }; var f4 = function(a,b){ return b + a }; var f5 = function(a,b,c){ return a + b + c }; //window.localStorage.clear(); var g = window.g = window.g || Gun(); //gun.get('users').path(1).path('where').put(pos); //var got = gun.get('hewo'); //got.put({hello: 'world'}); var on = Gun.on; on('data', function(o){ o.a = false; }); on('data', function(o){ o.b++; }); on('data', function(o){ o.c = 'Hi!'; }); on('data', function(o){ //console.log('last', o); }); var obj = {a: true, b: 1, c: 'Hello world!'}; var data = {users: {1: {where: {lat: Math.random(), lng: Math.random(), i: 1}}}}; var any = function(err, node){ //console.log('any', err, node); } var ok = function(node, field){ //$('#log').append(field + ' ' + Gun.text.ify(node)); //console.log('ok', field, node); } var err = function(err){ console.log(err); } function fn(){}; function Thing(){ this._ = {}; } Thing.prototype.get = function(lex){ var gun = this, at = gun._; return gun; } Thing.prototype.on = function(cb){ var gun = this, at = gun._; if(at.cache){ } return gun; } var thing = new Thing(); function CHAIN(){} CHAIN.chain = CHAIN.prototype; CHAIN.chain.get = function(){ return this }; CHAIN.chain.path = function(){ return this }; CHAIN.chain.put = function(){ return this }; var chain = new CHAIN(); function CHAIN2(){} CHAIN2.chain = CHAIN2.prototype; CHAIN2.chain.get = function(soul, cb, opt){ return this }; CHAIN2.chain.path = function(field, cb, opt){ return this }; CHAIN2.chain.put = function(data, cb, opt){ return this }; var chain2 = new CHAIN2(); function CHAIN3(){} CHAIN3.chain = CHAIN3.prototype; CHAIN3.chain.get = function(soul, cb, opt){ this._ = {soul: soul}; return this; }; CHAIN3.chain.path = function(field, cb, opt){ this._ = {field: field}; return this; }; CHAIN3.chain.put = function(data, cb, opt){ this._ = {put: data}; return this; }; var chain3 = new CHAIN3(); var u; function CHAIN4(){ this._ = { soul: u, field: u }; } CHAIN4.chain = CHAIN4.prototype; CHAIN4.chain.get = function(soul, cb, opt){ this._.soul = soul; return this; }; CHAIN4.chain.path = function(field, cb, opt){ this._.field = field; return this; }; CHAIN4.chain.put = function(data, cb, opt){ this._.put = data; return this; }; var chain4 = new CHAIN4(); var u; function noop(){}; function CHAIN5(){ this._ = { soul: u, field: u }; //this.back = this; // compare against CHAIN6! } CHAIN5.constructor = CHAIN5; CHAIN5.chain = CHAIN5.prototype; CHAIN5.chain.chain = function(){ var chain = new CHAIN5(); chain.back = this; return chain; } CHAIN5.chain.get = function(soul, cb, opt){ var chain = this.chain(); chain._.soul = soul; return chain; }; CHAIN5.chain.path = function(field, cb, opt){ var chain = this.chain(); chain._.field = field; return chain; }; CHAIN5.chain.put = function(data, cb, opt){ this._.put = data; return this; }; var chain5 = new CHAIN5(); var u; function noop(){}; function CHAIN6(){ this._ = { soul: u, field: u }; this.back = this; // compare against CHAIN5! } CHAIN6.constructor = CHAIN6; CHAIN6.chain = CHAIN6.prototype; CHAIN6.chain.chain = function(){ var chain = new CHAIN6(); chain.back = this; return chain; } CHAIN6.chain.get = function(soul, cb, opt){ var chain = this.chain(); chain._.soul = soul; return chain; }; CHAIN6.chain.path = function(field, cb, opt){ var chain = this.chain(); chain._.field = field; return chain; }; CHAIN6.chain.put = function(data, cb, opt){ this._.put = data; return this; }; var chain6 = new CHAIN6(); var u; function noop(){}; function CHAIN7(){ this._ = { soul: u, field: u }; } CHAIN7.constructor = CHAIN7; CHAIN7.chain = CHAIN7.prototype; CHAIN7.chain.chain = function(){ var chain = new CHAIN7(); chain.back = this; return chain; } CHAIN7.chain.get = function(soul, cb, opt){ var chain = this.chain(); chain._.soul = soul; return chain; }; CHAIN7.chain.path = function(field, cb, opt){ var chain = this.chain(); if(!field){ if(0 != field){ return chain; } } chain._.field = field = ''+field; return chain; }; CHAIN7.chain.put = function(data, cb, opt){ this._.put = data; return this; }; var chain7 = new CHAIN7(); var u; function noop(){}; function CHAIN8(){ this._ = { soul: u, field: u, put: { data: u, state: u } }; } CHAIN8.state = Date.now || function(){ return new Date().getTime() } CHAIN8.constructor = CHAIN8; CHAIN8.chain = CHAIN8.prototype; CHAIN8.chain.chain = function(){ var chain = new CHAIN8(); chain.back = this; return chain; } CHAIN8.chain.get = function(soul, cb, opt){ var chain = this.chain(); chain._.soul = soul; return chain; }; CHAIN8.chain.path = function(field, cb, opt){ var chain = this.chain(); if(!field){ if(0 != field){ return chain; } } chain._.field = field = ''+field; return chain; }; CHAIN8.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAIN8.state(); return chain; }; var chain8 = new CHAIN8(); var u; function noop(){}; function CHAIN9(){ this._ = { soul: u, field: u }; } CHAIN9.state = Date.now || function(){ return new Date().getTime() } CHAIN9.constructor = CHAIN9; CHAIN9.chain = CHAIN9.prototype; CHAIN9.chain.chain = function(){ var chain = new CHAIN9(); chain.back = this; return chain; } CHAIN9.chain.get = function(soul, cb, opt){ var chain = this.chain(); chain._.soul = soul; return chain; }; CHAIN9.chain.path = function(field, cb, opt){ var chain = this.chain(); if(!field){ if(0 != field){ return chain; } } chain._.field = field = ''+field; return chain; }; function PUT(){ this.data = u; this.state = u; } CHAIN9.chain.put = function(data, cb, opt){ var chain = this, put = this._.put = new PUT(); put.data = data; put.state = CHAIN9.state(); return chain; }; var chain9 = new CHAIN9(); var u; function noop(){}; function CHAINA1(){ this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; } CHAINA1.state = Date.now || function(){ return new Date().getTime() } CHAINA1.constructor = CHAINA1; CHAINA1.chain = CHAINA1.prototype; CHAINA1.chain.chain = function(){ var chain = new CHAINA1(); chain.back = this; return chain; } CHAINA1.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; } return chain; }; CHAINA1.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; return chain; }; CHAINA1.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA1.state(); return chain; }; var chaina1 = new CHAINA1(); var u; function noop(){}; function CHAINA2(){ this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; } CHAINA2.state = Date.now || function(){ return new Date().getTime() } CHAINA2.constructor = CHAINA2; CHAINA2.chain = CHAINA2.prototype; CHAINA2.chain.chain = function(){ var chain = new CHAINA2(); chain.back = this; return chain; } CHAINA2.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; } return chain; }; CHAINA2.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA2.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA2.state(); return chain; }; var chaina2 = new CHAINA2(); var u; function noop(){}; function CHAINA3(){ this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; } CHAINA3.get = function(lex, cb){ } CHAINA3.state = Date.now || function(){ return new Date().getTime() } CHAINA3.constructor = CHAINA3; CHAINA3.chain = CHAINA3.prototype; CHAINA3.chain.chain = function(){ var chain = new CHAINA3(); chain.__ = this.__ = this.__ || this._; chain.back = this; return chain; } CHAINA3.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; /*CHAINA3.get(lex, function(){ });*/ } return chain; }; CHAINA3.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA3.chain.put = function(data, cb, opt){ var chain = this, put = this._.put;; put.data = data; put.state = CHAINA3.state(); return chain; }; var chaina3 = new CHAINA3(); var u; function noop(){}; function CHAINA3A(){ if(!(this instanceof CHAINA3A)){ return new CHAINA3A() } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; } CHAINA3A.is = function(chain){ return chain instanceof CHAINA3A } CHAINA3A.get = function(lex, cb){ } CHAINA3A.state = Date.now || function(){ return new Date().getTime() } CHAINA3A.constructor = CHAINA3A; CHAINA3A.chain = CHAINA3A.prototype; CHAINA3A.chain.chain = function(){ var chain = new CHAINA3A(); chain.__ = this.__ = this.__ || this._; chain.back = this; return chain; } CHAINA3A.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; /*CHAINA3A.get(lex, function(){ });*/ } return chain; }; CHAINA3A.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA3A.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA3A.state(); return chain; }; var chaina3a = CHAINA3A(); var u; function noop(){}; function CHAINA3B(){ if(!CHAINA3B.is(this)){ return new CHAINA3B() } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; } CHAINA3B.is = function(chain){ return chain instanceof CHAINA3B } CHAINA3B.get = function(lex, cb){ } CHAINA3B.state = Date.now || function(){ return new Date().getTime() } CHAINA3B.constructor = CHAINA3B; CHAINA3B.chain = CHAINA3B.prototype; CHAINA3B.chain.chain = function(){ var chain = new CHAINA3B(); chain.__ = this.__ = this.__ || this._; chain.back = this; return chain; } CHAINA3B.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; /*CHAINA3B.get(lex, function(){ });*/ } return chain; }; CHAINA3B.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA3B.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA3B.state(); return chain; }; var chaina3b = CHAINA3B(); var u; function noop(){}; function CHAINA3C(o){ if(!(this instanceof CHAINA3C)){ return new CHAINA3C(o) } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; //if(o instanceof CHAINA3C){ return this } } CHAINA3C.is = function(chain){ return chain instanceof CHAINA3C } CHAINA3C.get = function(lex, cb){ } CHAINA3C.state = Date.now || function(){ return new Date().getTime() } CHAINA3C.constructor = CHAINA3C; CHAINA3C.chain = CHAINA3C.prototype; CHAINA3C.chain.opt = function(){ var chain = this; return chain; } CHAINA3C.chain.chain = function(){ var chain = new CHAINA3C(this); chain.__ = this.__ = this.__ || this._; chain.back = this; return chain; } CHAINA3C.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; /*CHAINA3C.get(lex, function(){ });*/ } return chain; }; CHAINA3C.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA3C.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA3C.state(); return chain; }; var chaina3c = CHAINA3C(); var u; function noop(){}; function CHAINA3D(o){ if(!(this instanceof CHAINA3D)){ return new CHAINA3D(o) } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u } }; if(!(o instanceof CHAINA3D)){ this.opt(o) } } CHAINA3D.is = function(chain){ return chain instanceof CHAINA3D } CHAINA3D.get = function(lex, cb){ } CHAINA3D.state = Date.now || function(){ return new Date().getTime() } CHAINA3D.constructor = CHAINA3D; CHAINA3D.chain = CHAINA3D.prototype; CHAINA3D.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; } CHAINA3D.chain.chain = function(){ var chain = new CHAINA3D(this); chain.__ = this.__; chain.back = this; return chain; } CHAINA3D.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; /*CHAINA3D.get(lex, function(){ });*/ } return chain; }; CHAINA3D.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex, flex = this._.lex; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; if(!flex.field){ lex.soul = flex.soul; } return chain; }; CHAINA3D.chain.put = function(data, cb, opt){ var chain = this, put = this._.put; put.data = data; put.state = CHAINA3D.state(); return chain; }; var chaina3d = CHAINA3D(); var u; function noop(){}; function CHAINA3E(o){ if(!(this instanceof CHAINA3E)){ return new CHAINA3E(o) } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u }, err: u, node: u, count: 0 }; if(!(o instanceof CHAINA3E)){ this.opt(o) } } CHAINA3E.is = function(chain){ return chain instanceof CHAINA3E } CHAINA3E.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb(null, node); } return cb(null, node); } CHAINA3E.state = Date.now || function(){ return new Date().getTime() } CHAINA3E.constructor = CHAINA3E; CHAINA3E.chain = CHAINA3E.prototype; CHAINA3E.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; } CHAINA3E.chain.chain = function(){ var chain = new CHAINA3E(this); chain.__ = this.__; chain.back = this; return chain; } CHAINA3E.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; CHAINA3E.get(chain, lex, function(err, node){ }); } return chain; }; CHAINA3E.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } back.next = chain; chain.on = function(cat){ } if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA3E.get(chain, lex, function(err, node){ }); } return chain; }; CHAINA3E.chain.put = function(data, cb, opt){ var chain = this, at = this._, put = at.put, back = this, from = this._; put.data = data; put.state = CHAINA3E.state(); chain.on = function(cat){ }; if(at.count){ chain.on(at) } return chain; }; var chaina3e = CHAINA3E(); var u; function noop(){}; function CHAINA3F(o){ if(!(this instanceof CHAINA3F)){ return new CHAINA3F(o) } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u }, err: u, node: u, count: 0 }; if(!(o instanceof CHAINA3F)){ this.opt(o) } } CHAINA3F.is = function(chain){ return chain instanceof CHAINA3F } CHAINA3F.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb(null, node); } return cb(null, node); } CHAINA3F.state = Date.now || function(){ return new Date().getTime() } CHAINA3F.constructor = CHAINA3F; CHAINA3F.chain = CHAINA3F.prototype; CHAINA3F.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; } CHAINA3F.chain.chain = function(){ var chain = new CHAINA3F(this); chain.__ = this.__; chain.back = this; return chain; } CHAINA3F.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; if(cb){ at.ok = cb; CHAINA3F.get(chain, lex, function(err, node){ at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } }); } return chain; }; CHAINA3F.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } back.next = chain; chain.on = function(cat){ var node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } if(chain.next){ chain.next.on(at) } } if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA3F.get(chain, lex, function(err, node){ at.err = err; at.node = node; chain.on(at); }); } return chain; }; CHAINA3F.chain.put = function(data, cb, opt){ var chain = this, at = this._, put = at.put, back = this, from = this._; put.data = data; put.state = CHAINA3F.state(); chain.on = function(cat){ cat.node; }; if(at.count){ chain.on(at) } return chain; }; var chaina3f = CHAINA3F(); var u; function noop(){}; function CHAINA4(o){ if(!(this instanceof CHAINA4)){ return new CHAINA4(o) } this._ = { lex: { soul: u, field: u, value: u, state: u }, put: { data: u, state: u }, opt: u, err: u, node: u, count: 0 }; if(!(o instanceof CHAINA4)){ this.opt(o) } }; CHAINA4.is = function(chain){ return chain instanceof CHAINA4 } CHAINA4.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } return cb.call(chain, null, node); }; CHAINA4.state = Date.now || function(){ return new Date().getTime() } CHAINA4.constructor = CHAINA4; CHAINA4.chain = CHAINA4.prototype; CHAINA4.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA4.chain.chain = function(){ var chain = new CHAINA4(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA4.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA4.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } if(chain.next){ chain.next.on(at) } } CHAINA4.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA4.get(chain, lex, get); } return chain; }; }()); ;(function(){ function on(cat){ cat.node; } CHAINA4.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA4.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina4 = CHAINA4(); var u; function noop(){}; function CHAINA5(o){ if(!(this instanceof CHAINA5)){ return new CHAINA5(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINA5)){ this.opt(o) } }; CHAINA5.is = function(chain){ return chain instanceof CHAINA5 } CHAINA5.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } return cb.call(chain, null, node); }; CHAINA5.state = Date.now || function(){ return new Date().getTime() } CHAINA5.constructor = CHAINA5; CHAINA5.chain = CHAINA5.prototype; CHAINA5.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA5.chain.chain = function(){ var chain = new CHAINA5(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA5.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA5.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } if(chain.next){ chain.next.on(at) } } CHAINA5.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA5.get(chain, lex, get); } return chain; }; }()); ;(function(){ function on(cat){ cat.node; } CHAINA5.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA5.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina5 = CHAINA5(); var u; function noop(){}; function CHAINA6(o){ if(!(this instanceof CHAINA6)){ return new CHAINA6(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINA6)){ this.opt(o) } }; CHAINA6.is = function(chain){ return chain instanceof CHAINA6 } CHAINA6.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } return cb.call(chain, null, node); }; CHAINA6.state = Date.now || function(){ return new Date().getTime() } CHAINA6.constructor = CHAINA6; CHAINA6.chain = CHAINA6.prototype; CHAINA6.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA6.chain.chain = function(){ var chain = new CHAINA6(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA6.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._ = chain._ || {}, lex = at.lex = at.lex || {}; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA6.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } if(chain.next){ chain.next.on(at) } } CHAINA6.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA6.get(chain, lex, get); } return chain; }; }()); ;(function(){ function on(cat){ cat.node; } CHAINA6.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA6.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina6 = CHAINA6(); var u; function noop(){}; function CHAINA7(o){ if(!(this instanceof CHAINA7)){ return new CHAINA7(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINA7)){ this.opt(o) } }; CHAINA7.is = function(chain){ return chain instanceof CHAINA7 } CHAINA7.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } cb.call(chain, null, node); }; CHAINA7.state = Date.now || function(){ return new Date().getTime() } CHAINA7.constructor = CHAINA7; CHAINA7.chain = CHAINA7.prototype; CHAINA7.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA7.chain.chain = function(){ var chain = new CHAINA7(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA7.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA7.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } if(chain.next){ chain.next.on(at) } } CHAINA7.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA7.get(chain, lex, get); } return chain; }; }()); ;(function(){ function map(node, soul){ Gun.tab.store.put(soul, node); } function ify(err, env){ if(err){ return } Gun.obj.map(env.graph, map); } function on(cat){ Gun.ify(cat.put.data, ify); } CHAINA7.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA7.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina7 = CHAINA7(); ;(function(exports){ // On event emitter generic javascript utility. function Scope(){ var s = function(a,b,c){ return s.tag = a, b? s.event(b,c) : s } s.emit = emit; s.event = event; s.create = Scope; s.on = {}; return s; } function emit(a){ var s = this, tag = s.tag, on = s.on[tag], i = -1, at; if(!on){ on = s.on[tag] = [] } while(at = on[i = 1 + i]){ at.on(a) } return s; } function event(fn){ var s = this, tag = s.tag, on = s.on[tag], at = new At(fn, tag, s); if(!on){ on = s.on[tag] = [] } on.push(at); return s; } function At(fn, tag, s){ this.on = fn; this.tag = tag; this.scope = s; } exports.on = Scope(); }(window)); var u; function noop(){}; function CHAINA8(o){ if(!(this instanceof CHAINA8)){ return new CHAINA8(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINA8)){ this.opt(o) } }; CHAINA8.is = function(chain){ return chain instanceof CHAINA8 } CHAINA8.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } cb.call(chain, null, node); }; CHAINA8.state = Date.now || function(){ return new Date().getTime() } CHAINA8.constructor = CHAINA8; CHAINA8.chain = CHAINA8.prototype; CHAINA8.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA8.chain.chain = function(){ var chain = new CHAINA8(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA8.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA8.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } at.back = cat; if(chain.next){ chain.next.on(at) } } CHAINA8.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA8.get(chain, lex, get); } return chain; }; }()); ;(function(){ function map(node, soul){ Gun.tab.store.put(soul, node); } function ify(err, env){ if(err){ return } Gun.obj.map(env.graph, map); } function wrap(cat, data){ if(!cat){ return data } if(cat.lex.field){ data = Gun.obj.put({}, cat.lex.field, data); } data = Gun.is.node.soul.ify(data, cat.lex.soul); if(cat.lex.soul){ return data } if(cat !== cat.back){ return wrap(cat.back, data); } return data; } function on(cat){ var data = wrap(cat, cat.put.data); Gun.ify(data, ify); } CHAINA8.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA8.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina8 = CHAINA8(); var u; function noop(){}; function CHAINA9(o){ if(!(this instanceof CHAINA9)){ return new CHAINA9(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINA9)){ this.opt(o) } }; CHAINA9.is = function(chain){ return chain instanceof CHAINA9 } CHAINA9.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } cb.call(chain, null, node); }; CHAINA9.state = Date.now || function(){ return new Date().getTime() } CHAINA9.constructor = CHAINA9; CHAINA9.chain = CHAINA9.prototype; CHAINA9.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINA9.chain.chain = function(){ var chain = new CHAINA9(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.on(at) } } CHAINA9.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINA9.get(chain, lex, get); } return chain; }; }()); ;(function(){ function get(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.on(at); } function on(cat){ var chain = this, at = chain._, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } at.back = cat; if(chain.next){ chain.next.on(at) } } CHAINA9.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.on = on; if(from.count){ chain.on(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINA9.get(chain, lex, get); } return chain; }; }()); ;(function(){ function wrap(cat, data){ if(!cat){ return data } if(cat.lex.field){ data = Gun.obj.put({}, cat.lex.field, data); } data = Gun.is.node.soul.ify(data, cat.lex.soul); if(cat.lex.soul){ return data } if(cat !== cat.back){ return wrap(cat.back, data); } return data; } function on(cat){ var at = cat, state = Gun.time.is(); var data = wrap(cat, cat.put.data); Gun.ify(data, end, { node: function(env, cb){ var eat = env.at; if(1 === eat.path.length && at.node){ eat.soul = Gun.is.rel(at.node[eat.path[0]]); } cb(env, eat); }, value: function(env){ var eat = env.at; if(!eat.field){ return } Gun.is.node.state.ify(eat.node, {field: eat.field, state: state}); }, uuid: gun.__.opt.uuid, state: state }); } function ack(err, ok){ //if(Gun.fns.is(opt.any)){ opt.any.call(gun, err, ok) } // TODO: gun context! } function end(err, env){ if(err){ return } Gun.put(gun, env.graph, ack, env.opt); // TODO: incorrect options! } CHAINA9.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINA9.state(); chain.on = on; if(at.count){ chain.on(at) } return chain; }; }()); var chaina9 = CHAINA9(); var u; function noop(){}; function CHAINB1(o){ if(!(this instanceof CHAINB1)){ return new CHAINB1(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINB1)){ this.opt(o) } }; CHAINB1.is = function(chain){ return chain instanceof CHAINB1 } CHAINB1.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } Gun.tab.store.get(soul, function(err, data){ graph[soul] = data; cb.call(chain, err, data); }); }; CHAINB1.state = Date.now || function(){ return new Date().getTime() } CHAINB1.constructor = CHAINB1; CHAINB1.chain = CHAINB1.prototype; CHAINB1.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINB1.chain.chain = function(){ var chain = new CHAINB1(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.run(at) } } CHAINB1.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINB1.get(chain, lex, get); } return chain; }; }()); function got(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.run(at); } ;(function(){ function run(cat){ var chain = this, at = chain._, lex = at.lex, field = lex.field, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = Gun.is.rel(node[cat.lex.field])){ return CHAINB1.get(chain, {soul: val}, got); } if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } at.back = cat; if(chain.next){ chain.next.run(at) } } CHAINB1.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.run = run; if(from.count){ chain.run(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINB1.get(chain, lex, got); } return chain; }; }()); ;(function(){ function wrap(cat, data){ if(!cat){ return data } if(cat.lex.field){ data = Gun.obj.put({}, cat.lex.field, data); } data = Gun.is.node.soul.ify(data, cat.lex.soul); if(cat.lex.soul){ return data } if(cat !== cat.back){ return wrap(cat.back, data); } return data; } function run(cat){ var at = cat, state = Gun.time.is(); var data = wrap(cat, cat.put.data); Gun.ify(data, end, { node: function(env, cb){ var eat = env.at; if(1 === eat.path.length && at.node){ eat.soul = Gun.is.rel(at.node[eat.path[0]]); } cb(env, eat); }, value: function(env){ var eat = env.at; if(!eat.field){ return } Gun.is.node.state.ify(eat.node, {field: eat.field, state: state}); }, uuid: gun.__.opt.uuid, state: state }); } function ack(err, ok){ //if(Gun.fns.is(opt.any)){ opt.any.call(gun, err, ok) } // TODO: gun context! } function end(err, env){ if(err){ return } Gun.put(gun, env.graph, ack, env.opt); // TODO: incorrect options! } CHAINB1.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINB1.state(); chain.run = run; if(at.count){ chain.run(at) } return chain; }; }()); ;(function(){ function run(cat){ var chain = this, lex = cat.lex, node = cat.node, field = lex.field, val; if(field && (val = Gun.is.rel(node[field]))){ return CHAINB1.get(chain, {soul: val}, got); } chain.cb(cat.node); } CHAINB1.chain.on = function(cb){ var chain = this, at = chain._; chain.run = run; chain.cb = cb; if(at.count){ chain.run(at) } return chain; } }()); var chainb1 = CHAINB1(); var u; function noop(){}; function CHAINB2(o){ if(!(this instanceof CHAINB2)){ return new CHAINB2(o) } this._ = {lex: {}, put: {}, count: 0}; if(!(o instanceof CHAINB2)){ this.opt(o) } }; CHAINB2.is = function(chain){ return chain instanceof CHAINB2 } CHAINB2.get = function(chain, lex, cb){ var soul = lex.soul, graph = chain.__.graph, node; if(node = graph[soul]){ return cb.call(chain, null, node); } Gun.tab.store.get(soul, function(err, data){ graph[soul] = data; cb.call(chain, err, data); }); }; CHAINB2.state = Date.now || function(){ return new Date().getTime() } CHAINB2.constructor = CHAINB2; CHAINB2.chain = CHAINB2.prototype; CHAINB2.chain.opt = function(o){ var chain = this; chain.__ = chain.__ || chain._; chain.__.graph = chain.__.graph || {}; return chain; }; CHAINB2.chain.chain = function(){ var chain = new CHAINB2(this); chain.__ = this.__; chain.back = this; return chain; }; ;(function(){ function get(err, node){ var chain = this, at = chain._; at.count++; at.err = err; at.node = node; if(chain.next){ chain.next.run(at) } } CHAINB2.chain.get = function(soul, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex; lex.soul = soul; lex.opt = opt; if(cb){ at.ok = cb; CHAINB2.get(chain, lex, get); } return chain; }; }()); function got(err, node){ var chain = this, at = chain._; at.err = err; at.node = node; chain.run(at); } ;(function(){ function run(cat){ var chain = this, at = chain._, lex = at.lex, field = lex.field, node, vert, val; at.count++; at.err = cat.err; if(node = cat.node){ if(val = Gun.is.rel(node[cat.lex.field])){ return CHAINB2.get(chain, {soul: val}, got); } if(val = node[field]){ at.node = vert = {}; vert[field] = val; } } at.back = cat; if(chain.next){ chain.next.run(at) } } CHAINB2.chain.path = function(field, cb, opt){ var chain = this.chain(), at = chain._, lex = at.lex , back = this, from = back._, flex = from.lex, vert; if(!field){ if(0 != field){ return chain; } } lex.field = field = ''+field; back.next = chain; chain.run = run; if(from.count){ chain.run(from); } else if(!flex.field){ lex.soul = flex.soul; CHAINB2.get(chain, lex, got); } return chain; }; }()); ;(function(){ function wrap(cat, data){ if(!cat){ return data } if(cat.lex.field){ data = Gun.obj.put({}, cat.lex.field, data); } data = Gun.is.node.soul.ify(data, cat.lex.soul); if(cat.lex.soul){ return data } if(cat !== cat.back){ return wrap(cat.back, data); } return data; } function run(cat){ var at = cat, state = Gun.time.is(); var data = wrap(cat, cat.put.data); /*end(null, {graph: { users: {_: {'#': 'users', '>': {1: 9}}, 1: {'#': 'fdsa'}}, fdsa: {_: {'#': 'fdsa', '>': {where: 9}}, where: {'#': 'sadf'}}, sadf: {_: {'#': 'sadf', '>': {lat: 9, lng: 9, i: 9}}, lat: 0.123456789, lng: 0.987654321, i:1} }});return;*/ Gun.ify(data, end, { node: function(env, cb){ var eat = env.at; if(1 === eat.path.length && at.node){ eat.soul = Gun.is.rel(at.node[eat.path[0]]); } cb(env, eat); }, value: function(env){ var eat = env.at; if(!eat.field){ return } Gun.is.node.state.ify(eat.node, {field: eat.field, state: state}); }, uuid: gun.__.opt.uuid, state: state }); } function ack(err, ok){ //if(Gun.fns.is(opt.any)){ opt.any.call(gun, err, ok) } // TODO: gun context! } function end(err, env){ if(err){ return } Gun.put(gun, env.graph, ack, env.opt); // TODO: incorrect options! } CHAINB2.chain.put = function(data, cb, opt){ var chain = this, at = chain._, put = at.put; put.data = data; put.state = CHAINB2.state(); chain.run = run; if(at.count){ chain.run(at) } return chain; }; }()); ;(function(){ function run(cat){ var chain = this, lex = cat.lex, node = cat.node, field = lex.field, val; if(field && (val = Gun.is.rel(node[field]))){ return CHAINB2.get(chain, {soul: val}, got); } chain.cb(cat.node); } CHAINB2.chain.on = function(cb){ var chain = this, at = chain._; chain.run = run; chain.cb = cb; if(at.count){ chain.run(at) } return chain; } }()); var chainb2 = CHAINB2(); function gun_get(soul){ gun_get.as = 'a'; if(!gun_get.a) Gun.tab.store.get(soul, gun_get.load); return gun_get; } gun_get.load = function(err,data){ gun_get[gun_get.as] = data } gun_get.path = funct