123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- ;(function(){
- function resolve(chain){
- /*
- If we say "Spray paint all of Bob's friends' cat blue",
- the embedded question we might need to ask is:
- If one of Bob's friends winds up unfriending him,
- AND has their cat die that they get a new cat,
- do we want THAT cat painted blue?
- I believe the answer is NO.
- */
- // soul.key=value
- // soul ???
- // stream -> soul.key ...
- // stream -> soul.key
- // if you have a dynamic map, and you want to "process it", you wind up waiting until at least 1 item exists, calling off, then calling each.
- // in this sense, resolve can only know it has processed each item once, but not whether it itself is done. and that is fair.
- // what about ops that read before writing like timegraph?
- //console.debug.i=1;console.log("----------------");
- /*
- gun.get('a').get('b').put({
- x: {
- x1: {c: {d: {'yay':1}}},
- x2: {c: {d: {'cake':1}}}
- },
- y: {
- y1: {c: {d: {'foo':1}}},
- y2: {c: {d: {'bar':1}}}
- }
- });
- /*
- map {10:{}, 5:{}} -> get link to load
- */
- // FOR THIS CHAIN: Each item gets called 3 times.
- Gun.debug=1;
- //return;
- chain = chain || gun.get('a').get('b').map().map().get('c').get('d').get(function(a,b,c,tmp){
- // a.gun._.soul || a.gun._.link;
- a.ID = a.ID || Gun.text.random(2);
- console.log('********', a.put || a);//, Gun.node.soul(a.put), a.gun._);//, a.gun.back(function back(_){_.get && (tmp || (tmp = [])).push(_.get);return _.back? undefined : tmp;}));
- //b.rid(a);
- });
- console.log("~~~~~~~~~~~~~~");
- window.chain = chain;
- }
- /*
- sync put: 5 node - 1 stop
- sync reload: 1 link 2 node - X stop
- sync resolve: 6 node - 0 stop : 3 node - 0 stop
- async put: 5 node + 3 node - 1 stop
- async reload: 2 link 1 node - X stop (2 links per each stop)
- async resolve: 6 node - 0 stop : 3 node - 0 stop
- sync put: 1 mum
- sync reload: 1 mum
- sync resolve: 1 mum
- async put: 1 mum
- async reload: 0 mum: 2 link 1 node
- async resolve: 1 mum
- */
- function off(chain){
- //Gun.debug = 1;
- chain = chain || gun.get('users').map().get(function(a,b,c,tmp){
- console.log("***", a.put);
- b.rid(a);
- });
- gun.get('users').get('alice').get(function(a,b){
- console.log(">>>", a.put);
- });
- console.log("vvvvvvvvvvvvv");
- window.chain = chain;
- }
- /*
- gun.get('users').put({
- alice: {age: 29},
- bob: {age: 32}
- });
- */
- function soul(chain){
- Gun.debug = 1;
- gun.get('x').get('y').get('z').get('q').get(function(a,b,c){
- console.log("***", a.put || a);//,b,c);
- });
- setTimeout(function(){
- console.debug.j=1;
- console.debug.i=1;console.log("------------");
- gun.get('x').get('y').put({
- z: {
- q: {r: {hello: 'world'}}
- }
- });
- },20);
- console.log("..............");
- window.chain = chain;
- }
- /*
- gun.get('x').get('y').get('z').put({xyz: 'zyx'});
- */
- window.resolve = resolve;
- window.off = off;
- window.soul = soul;
- //localStorage.clear();sessionStorage.clear();
- setTimeout(function(){ resolve() },1);
-
- /*
- At the end of the day, you trust an entity, not data.
- That entity might be a person, or a group of people,
- it doesn't really matter - you do not trust a machine.
- Trust gives write access (public).
- Grant gives read access (private).
- */
- function Role(){}
- if(typeof window !== "undefined"){ Role.window = window }
- var Gun = (Role.window||{}).Gun || require('../gun');
- Gun.SEA || require('../sea');
- if(!Gun.User){ throw "No User System!" }
- var User = Gun.User;
- User.prototype.trust = function(user){
- }
- }());
|