mirror of
https://github.com/amark/gun.git
synced 2025-03-30 15:08:33 +00:00
mimeograph fix
This commit is contained in:
parent
71ccb5d37f
commit
a4d559900d
@ -80,7 +80,7 @@ ul, li {
|
||||
.gap {
|
||||
padding: 3%;
|
||||
}
|
||||
.ditch {
|
||||
.gully {
|
||||
margin-top: 2em;
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
2
gun.min.js
vendored
2
gun.min.js
vendored
File diff suppressed because one or more lines are too long
128
lib/time.js
128
lib/time.js
@ -13,111 +13,115 @@
|
||||
var t = new Date(Gun.state()).toISOString().split(/[\-t\:\.z]/ig);
|
||||
var gun = this, root = gun.back(-1);
|
||||
var p, tmp = t.pop();
|
||||
gun.get('_', function(msg, ev){ ev.off();
|
||||
var id = (msg.put && msg.put['#']) || ((root.back('opt.uuid') || Gun.text.random)(6) + ':'); // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
|
||||
//gun.get('_', function(msg, ev){ ev.off();
|
||||
//var id = (msg.put && msg.put['#']) || (((gun._).soul || (root.back('opt.uuid') || Gun.text.random)(6)) + ':'); // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
|
||||
var id = (gun._).soul; // TODO: BUG! THIS SHOULD NOT BE HARDCODED.
|
||||
p = id;
|
||||
if(!p){ return cb({err: "For now, a timegraph can only be saved as a root node."}), this }
|
||||
// could shrink this into a loop. Do later?
|
||||
t = [p].concat(t);
|
||||
var rid = (root.back('opt.uuid') || Gun.text.random)(9);
|
||||
var milli = ify({}, p + t.join(':'));
|
||||
var milli = ify({}, t.join(':'));
|
||||
milli[rid] = data;
|
||||
tmp = t.pop();
|
||||
var sec = ify({}, p + t.join(':'));
|
||||
var sec = ify({}, t.join(':'));
|
||||
sec[tmp] = milli;
|
||||
tmp = t.pop();
|
||||
var min = ify({}, p + t.join(':'));
|
||||
var min = ify({}, t.join(':'));
|
||||
min[tmp] = sec;
|
||||
tmp = t.pop();
|
||||
var hour = ify({}, p + t.join(':'));
|
||||
var hour = ify({}, t.join(':'));
|
||||
hour[tmp] = min;
|
||||
tmp = t.pop();
|
||||
var day = ify({}, p + t.join(':'));
|
||||
var day = ify({}, t.join(':'));
|
||||
day[tmp] = hour;
|
||||
tmp = t.pop();
|
||||
var month = ify({}, p + t.join(':'));
|
||||
var month = ify({}, t.join(':'));
|
||||
month[tmp] = day;
|
||||
tmp = t.pop();
|
||||
var year = ify({}, p + t.join(':'));
|
||||
var year = ify({}, t.join(':'));
|
||||
year[tmp] = month;
|
||||
tmp = t.pop();
|
||||
var time = ify({}, p + t.join(':'));
|
||||
var time = ify({}, t.join(':') || id);
|
||||
time[tmp] = year;
|
||||
var ref = root.put(time);
|
||||
gun.put(ref, cb);
|
||||
})
|
||||
gun.put(time, cb);
|
||||
//})
|
||||
return gun;
|
||||
}
|
||||
function travel(cb, opt, b, gun){
|
||||
var root = gun.back(-1), tmp;
|
||||
(opt = Gun.num.is(opt)? {start: opt} : opt || {}).seen = opt.seen || {};
|
||||
var t = new Date(opt.start || Gun.state()).toISOString().split(/[\-t\:\.z]/ig).slice(0,-1);
|
||||
gun.get('_', function(msg, ev){ ev.off();
|
||||
(opt = Gun.num.is(opt)? {last: opt} : opt || {}).seen = opt.seen || {};
|
||||
var t = now();
|
||||
gun.get('_', function(msg, ev){
|
||||
var id = (msg.put && msg.put['#']);
|
||||
if(':' == id[id.length-1]){
|
||||
id = id.slice(0,-1);
|
||||
} else {
|
||||
id = null;
|
||||
}
|
||||
if(!id){ return Gun.log("Could not find time index.") }
|
||||
opt.at = opt.start = [id].concat(t);
|
||||
find(opt, cb, root);
|
||||
})
|
||||
if(!id){ return }
|
||||
if(false === opt.next){ ev.off() }
|
||||
else { opt.next = true }
|
||||
opt.start = [opt.id = id].concat(t);
|
||||
opt.low = opt.low || opt.start;
|
||||
opt.top = opt.top || opt.start;
|
||||
opt.now = [id].concat(now());
|
||||
//console.log("UPDATE");
|
||||
find(opt, cb, root, opt.at? opt.now : opt.at = opt.start);
|
||||
});
|
||||
return gun;
|
||||
}
|
||||
function find(o, cb, root){
|
||||
var at = o.at, t = at.join(':');
|
||||
if(1 == at.length){ t += ':' }
|
||||
if(o.seen[t]){ return } o.seen[t] = true;
|
||||
var next = o.start[at.length];
|
||||
function now(t){
|
||||
return new Date(t || Gun.state()).toISOString().split(/[\-t\:\.z]/ig).slice(0,-1);
|
||||
}
|
||||
function find(o, cb, root, at, off){
|
||||
var at = at || o.at, t = at.join(':'), tmp;
|
||||
if(!off){
|
||||
if(o.seen[t]){ return }
|
||||
o.seen[t] = true;
|
||||
}
|
||||
var next = (o.low || o.start)[at.length];
|
||||
root.get(t).get(function(msg, ev){
|
||||
if(off){ ev.off() }
|
||||
var g = this;
|
||||
if(/*true || */u === msg.put){
|
||||
o.at = at.slice(0,-1);
|
||||
console.debug(5, o.at);
|
||||
console.debug(4, o.at);
|
||||
console.debug(3, o.at);
|
||||
console.debug(2, o.at);
|
||||
console.debug(1, o.at);
|
||||
find(o, cb, root);
|
||||
//console.log(at, msg.put);
|
||||
if(u === msg.put){
|
||||
find(o, cb, root, at.slice(0,-1), off);
|
||||
return;
|
||||
}
|
||||
if(7 < at.length){
|
||||
var l = Object.keys(msg.put).length;
|
||||
if(l === o.seen[t]){ return }
|
||||
Gun.node.is(msg.put, function(v, k){
|
||||
cb(v, k, ev);
|
||||
if(o.last){ --o.last }
|
||||
})
|
||||
});
|
||||
o.seen[t] = l;
|
||||
if(!o.last){ return }
|
||||
if(o.last <= 0){ return }
|
||||
var tmp = {seen: {}};
|
||||
tmp.last = o.last;
|
||||
tmp.start = tmp.at = o.at;
|
||||
tmp.at = tmp.at.slice(0,-1);
|
||||
tmp.was = true;
|
||||
find(tmp, cb, root);
|
||||
o.low = at;
|
||||
var tmp = at.slice(0,-1);
|
||||
find(o, cb, root, tmp, true);
|
||||
return;
|
||||
}
|
||||
if(u === msg.put){ return }
|
||||
if(o.last){
|
||||
if(o.last && false !== off){
|
||||
var keys = Object.keys(msg.put).sort().reverse();
|
||||
var less = Gun.list.map(keys, function(k){
|
||||
if(parseFloat(k) < parseFloat(next)){ return k }
|
||||
})
|
||||
});
|
||||
if(!less){
|
||||
o.at = at.slice(0,-1);
|
||||
find(o, cb, root);
|
||||
return;
|
||||
find(o, cb, root, at.slice(0,-1), true);
|
||||
} else {
|
||||
var tmp = (at || o.at).slice();
|
||||
tmp.push(less);
|
||||
(o.low = tmp.slice()).push(Infinity);
|
||||
find(o, cb, root, tmp, true);
|
||||
}
|
||||
o.at.push(less);
|
||||
(o.start = o.at.slice()).push(Infinity);
|
||||
o.at.length === 8 && (console.debug.i = console.debug.i || 1);
|
||||
find(o, cb, root);
|
||||
return;
|
||||
}
|
||||
if(off){ return }
|
||||
if(!o.next){ return }
|
||||
if(at < o.start.slice(0, at.length)){ return }
|
||||
var n = [o.id].concat(now()), top = n[at.length];
|
||||
Gun.node.is(msg.put, function(v, k){
|
||||
if(k < o.start[at.length]){ return }
|
||||
(o.at = at.slice()).push(k)
|
||||
//console.log('>>>>>', o.at);
|
||||
find(o, cb, root);
|
||||
})
|
||||
//console.log(o.at, msg.put, o.start[o.at.length]);
|
||||
if(k > top){ return }
|
||||
(v = at.slice()).push(k);
|
||||
find(o, cb, root, v, false);
|
||||
});
|
||||
})
|
||||
}
|
||||
}());
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "gun",
|
||||
"version": "0.9.994",
|
||||
"version": "0.9.995",
|
||||
"description": "A realtime, decentralized, offline-first, graph data synchronization engine.",
|
||||
"main": "index.js",
|
||||
"browser": "gun.min.js",
|
||||
|
@ -58,7 +58,7 @@ var Graph = {};
|
||||
if(!(is = valid(v,k,n, at,env))){ return }
|
||||
if(!k){
|
||||
at.node = at.node || n || {};
|
||||
if(obj_has(v, Node._)){
|
||||
if(obj_has(v, Node._)){ // && Node.soul(v) ? for safety ?
|
||||
at.node._ = obj_copy(v._);
|
||||
}
|
||||
at.node = Node.soul.ify(at.node, Val.rel.is(at.rel));
|
||||
|
@ -116,6 +116,7 @@ function batch(){ var as = this;
|
||||
} function no(v,k){ if(v){ return true } }
|
||||
|
||||
function map(v,k,n, at){ var as = this;
|
||||
//if(Gun.is(v)){} // TODO: HANDLE!
|
||||
if(k || !at.path.length){ return }
|
||||
(as.res||iife)(function(){
|
||||
var path = at.path, ref = as.ref, opt = as.opt;
|
||||
|
@ -3,11 +3,11 @@ var Type = require('./type');
|
||||
var Node = require('./node');
|
||||
function State(){
|
||||
var t;
|
||||
if(perf){
|
||||
t = start + perf.now();
|
||||
} else {
|
||||
/*if(perf){
|
||||
t = start + perf.now(); // Danger: Accuracy decays significantly over time, even if precise.
|
||||
} else {*/
|
||||
t = time();
|
||||
}
|
||||
//}
|
||||
if(last < t){
|
||||
return N = 0, last = t + State.drift;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user