mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
130 lines
3.4 KiB
JavaScript
130 lines
3.4 KiB
JavaScript
;(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){
|
|
|
|
}
|
|
|
|
}()); |