123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272 |
- (function(){
- if(!this.Gun){ return }
- function Test(o){
- var test = this;
- if(!(test instanceof Test)){ return new Test(o) }
- test._ = {};
- test._.stack = [];
- return test;
- }
- Test.chain = Test.prototype;
- Test.chain.run = function(fn){
- var test = this;
- var e = test._.i, i = 0;
- var stack = test._.stack;
- stack.push(fn);
- //var to = setInterval(function(){ if(++i >= e){ return clearTimeout(to) }
- var start = Gun.time.is();
- while(++i <= e){
- Gun.list.map(stack, function(fn){ (fn||function(){})(i) })
- }
- console.log((Gun.time.is() - start) / 1000);
- //},0);
- return test;
- }
- Test.chain.it = function(i){
- var test = this;
- test._.i = i || 1000;
- return test;
- }
- Test.chain.gen = function(fn){
- var test = this;
- test._.stack.push(fn);
- return test;
- }
- var gun = window.gun = Gun();
- window.SPAM = function(read){ // TODO: BUG? gun-sid in transport layer not correct?
- //localStorage.clear();
- var start = Gun.time.is();
- /*var mark = {
- name: "Mark Nadal"
- };
- var amber = {
- name: "Amber Nadal",
- spouse: mark
- }
- mark.spouse = amber;
- amber.pet = {
- name: "Fluffy",
- slave: mark
- }
- Test().it(read).gen(function(i){
- Gun.ify(mark);
- }).run();return;*/
- Test().it(read).gen(function(i){
- gun.get('users').path(i).path('where').put({lat: Math.random(), lng: Math.random(),i:i});
- }).run();return;
- Test().it(read === true? 1 : read || 1000).gen(function(i){
- if(read === true){
- gun.get('users').map().path('where').on(function(node){
- console.log("node:", node);
- if(node.i === (1000)){
- console.log("total:", Gun.time.is() - start);
- start = Gun.time.is();
- }
- });
- return;
- }
- // PUT, GET, PATH, ON
- var now = Gun.time.is();
- /*var obj = {'i': i, 'v': Gun.text.random(100)};
- gun.put(obj, function(err, ok){
- //console.log("put done", i, 'in', Gun.time.is() - now);//, i % 1000);
- if(i % (1000) === 0){
- console.log("total:", Gun.time.is() - start);
- start = Gun.time.is();
- }
- });return;*/
- gun.get('users').path(i).path('where').put({
- lat: Math.random(),lng: Math.random(),i: i
- //lol: i / 2
- }, function(err, ok){
- console.log("put done", i, 'in', Gun.time.is() - now);//, i % 1000);
- if(i % (1000) === 0){
- console.log("total:", Gun.time.is() - start);
- start = Gun.time.is();
- }
- });return;
- }).run(function(){});
- }
- //window.SPAM(1000000);
- }());
- /* EXTRA GUN UTILITY FUNCTIONS I MIGHT WANT TO KEEP
- (function(){
- Gun().get('chat').path('messages').since(Gun().get('me').path('last')).map().val(function(msg){
- });
- Gun().get('chat').path('messages').last(100).map().val(function(msg){
- });
- var peers = [
- peer1,
- peer2
- ];
- Gun.on('put').event(function(graph, cb, opt){
- Gun.is.graph(graph, function(node, soul){
- localStorage[soul] = node;
- });
- });
- Gun.on('put').event(function(graph, cb, opt){
- Peers(opt.peers).send({
- id: MsgID,
- value: data,
- from: myPeerID
- }, cb);
- });
- Gun.on('get').event(function(lex, cb, opt){
- Peers(opt.peers || peers).send({
- '#': MsgID,
- '$': lex,
- '~': myPeerID
- }, cb);
- });
- Peers.server(function(req, res){
- if(Msg.IDs[req.id]){ return } // throttle
- // auth
- Peers(peers).send(req); // relay
- // auth
- if(req.rid){ return } // ignore
- if(req.put && opt.everything || graph[for soul in req.body]){ // process
- Gun.put(gun, req.body, REPLY);
- }
- });
- // TODO: MARK / JESSE need to solve infinite circular loop on get flushing and put flushing.
- GUN = {'#': 'soul', '.': 'field', '=': 'value', '>': 'state'}
- MSG = {'#': 'id', '$': 'body', '@': 'to'}
- Gun.wire = function(data){
- }
- Gun.get.wire = function(lex, cb, opt){ return Gun.text.is(lex)? Gun.get.wire.from(lex, cb, opt) : Gun.get.wire.to(lex, cb, opt) }
- Gun.get.wire.to = function(lex, cb, opt){
- var t = '';
- Gun.obj.map(lex, function(v,f){
- if(!v){ return }
- Gun.list.map(Gun.list.is(v)? v : [v], function(v){
- t += f + "'" + Gun.put.wire.ify(v) + "'";
- });
- });
- return t + '?';
- }
- Gun.get.wire.from = function(t, cb, opt){
- if(!t){ return null }
- var a = Gun.put.wire.from.parse(t), lex = {};
- Gun.list.map([Gun._.soul, Gun._.field, Gun._.value, Gun._.state], function(sym, i){
- if(!(i = a.indexOf(sym) + 1)){ return }
- lex[sym] = Gun.put.wire.type(a[i]);
- });
- return lex;
- }
- // #soul.field
- // "#soul.field=value>state"
- // #messages>>1234567890 //{soul: 'messages', state: {'>': 1234567890}}
- // #id$"msg"~who@to
- Gun.put.wire = function(n, cb, opt){ return Gun.text.is(n)? Gun.put.wire.from(n, cb, opt) : Gun.put.wire.to(n, cb, opt) }
- Gun.put.wire.ify = function(s){ var tmp;
- if(Infinity === s || -Infinity === s){ return s }
- if(tmp = Gun.is.rel(s)){ return '#' + JSON.stringify(tmp) }
- return JSON.stringify(s)
- }
- Gun.put.wire.type = function(s){ var tmp;
- if(Gun._.soul === s.charAt(0)){ return Gun.is.rel.ify(JSON.parse(s.slice(1))) }
- if(String(Infinity) === s){ return Infinity }
- if(String(-Infinity) === s){ return -Infinity }
- return JSON.parse(s)
- }
- Gun.put.wire.to = function(n, cb, opt){ var t, b;
- if(!n || !(t = Gun.is.node.soul(n))){ return null }
- cb = cb || function(){};
- t = (b = "#'" + Gun.put.wire.ify(t) + "'");
- var val = function(v,f, nv,nf){
- var w = '', s = Gun.is.node.state(n,f), sw = '';
- if(!s){ return }
- w += ".'" + Gun.put.wire.ify(f) + "'";
- console.log("yeah value?", v, Gun.put.wire.ify(v));
- w += "='" + Gun.put.wire.ify(v) + "'";
- if(s !== Gun.is.node.state(n,nf)){
- w += ">'" + Gun.put.wire.ify(s) + "'";
- } else {
- sw = ">'" + Gun.put.wire.ify(s) + "'";
- }
- t += w;
- w = b + w + sw;
- cb(null, w);
- }
- var next = function(v,f){ // TODO: BUG! Missing adding meta data.
- if(Gun._.meta === f){ return }
- if(next.f){
- val(next.v, next.f, v,f);
- }
- next.f = f;
- next.v = v;
- }
- Gun.obj.map(n, next);
- next();
- return t;
- }
- Gun.put.wire.from = function(t, cb, opt){
- if(!t){ return null }
- var a = Gun.put.wire.from.parse(t);
- Gun.list.map(a, function(v, i){
- if(Gun._.soul === v){
- Gun.is.node.soul.ify(n, Gun.put.wire.type(a[i]));
- return;
- }
- if(Gun._.field === v){
- var val = a.indexOf(Gun._.value,i), state = a.indexOf(Gun._.state,i);
- Gun.is.node.state.ify([n], Gun.put.wire.type(a[i]), Gun.put.wire.type(a[val+1]), Gun.put.wire.type(a[state+1]));
- return;
- }
- })
- return n;
- }
- Gun.put.wire.from.parse = function(t){
- var a = [], s = -1, e = 0, end = 1, n = {};
- while((e = t.indexOf("'", s + 1)) >= 0){
- if(s === e || '\\' === t.charAt(e-1)){}else{
- a.push(t.slice(s + 1,e));
- s = e;
- }
- }
- return a;
- }
- }());
- */
- ;(function(){ // make as separate module!
- function SQL(){}
- SQL.select = function(sel){
- this._.sql.select = sel;
- return this;
- }
- SQL.from = function(from){
- this._.sql.from = from;
- //this.get(from).map();
- return this;
- }
- SQL.where = function(where){
- this._.sql.where = where;
- return this;
- }
- Gun.chain.sql = function(sql){
- var gun = this;//.chain();
- sql = gun._.sql = sql || {};
- gun.select = SQL.select;
- gun.from = SQL.from;
- gun.where = SQL.where;
- return gun;
- }
- Gun.on('chain').event(function(gun, at){
- console.log("sql stuff?", gun._, at.node);
- var query = gun._.sql;
- if(!query){ return }
- var node = at.node;
- });
- }());
|