diff --git a/gun.min.js b/gun.min.js index 0249ba5d..6cebffda 100644 --- a/gun.min.js +++ b/gun.min.js @@ -1 +1 @@ -!function(){var t;"undefined"!=typeof window&&(t=window),"undefined"!=typeof global&&(t=global);var _=(t=t||{}).console||{log:function(){}};function x(o){return o.slice?x[e(o)]:function(t,n){o(t={exports:{}}),x[e(n)]=t.exports};function e(t){return t.split("/").slice(-1).toString().replace(".js","")}}if("undefined"!=typeof module)var f=module;x(function(t){var p={};p.fns=p.fn={is:function(t){return!!t&&"function"==typeof t}},p.bi={is:function(t){return t instanceof Boolean||"boolean"==typeof t}},p.num={is:function(t){return!h(t)&&(0<=t-parseFloat(t)+1||1/0===t||-1/0===t)}},p.text={is:function(t){return"string"==typeof t}},p.text.ify=function(t){return p.text.is(t)?t:"undefined"!=typeof JSON?JSON.stringify(t):t&&t.toString?t.toString():t},p.text.random=function(t,n){var o="";for(t=t||24,n=n||"0123456789ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxyz";0")){if(!(n>t[">"]))return!1;o=!0}if(p.obj.has(t,"<")){if(!(n",s.drift=0,s.is=function(t,n,o){var e=n&&t&&t[b]&&t[b][s._]||o;if(e)return d(e=e[n])?e:-1/0},s.lex=function(){return s().toString(36).replace(".","")},s.ify=function(t,n,o,e,i){if(!t||!t[b]){if(!i)return;t=u.soul.ify(t,i)}var r=c(t[b],s._);return void 0!==n&&n!==b&&(d(o)&&(r[n]=o),void 0!==e&&(t[n]=e)),t},s.to=function(t,n,o){var e=t[n];return p(e)&&(e=h(e)),s.ify(o,n,s.is(t,n),e,u.soul(t))},function(){function a(t,n){b!==n&&s.ify(this.o,n,this.s)}s.map=function(i,r,u){var t=p(t=i||r)?t:null;return i=v(i=i||r)?i:null,t&&!i?(r=d(r)?r:s(),t[b]=t[b]||{},g(t,a,{o:t,s:r}),t):(u=u||p(r)?r:void 0,r=d(r)?r:s(),function(t,n,o,e){if(!i)return a.call({o:o,s:r},t,n),t;i.call(u||this||{},t,n,o,e),l(o,n)&&void 0===o[n]||a.call({o:o,s:r},t,n)})}}();var f=n.obj,c=f.as,l=f.has,p=f.is,g=f.map,h=f.copy,d=n.num.is,v=n.fn.is,b=u._;t.exports=s})(x,"./state"),x(function(t){var u=x("./type"),f=x("./val"),c=x("./node"),r={};!function(){function i(t,n){if(!t||n!==c.soul(t)||!c.is(t,this.fn,this.as))return!0;this.cb&&(o.n=t,o.as=this.as,this.cb.call(o.as,t,n,o))}function o(t){t&&c.is(o.n,t,o.as)}r.is=function(t,n,o,e){return!(!t||!l(t)||a(t))&&!s(t,i,{cb:n,fn:o,as:e})}}(),function(){function a(t,n){var o;return(o=function(t,n){var o,e=t.seen,i=e.length;for(;i--;)if(o=e[i],n.obj===o.obj)return o;e.push(n)}(t,n))?o:(n.env=t,n.soul=i,c.ify(n.obj,e,n)&&(t.graph[f.rel.is(n.rel)]=n.node),n)}function e(t,n,o){var e,i,r=this,u=r.env;if(c._===n&&g(t,f.rel._))return o._;if(e=s(t,n,o,r,u)){if(n||(r.node=r.node||o||{},g(t,c._)&&(r.node._=h(t._)),r.node=c.soul.ify(r.node,f.rel.is(r.rel)),r.rel=r.rel||f.rel.ify(c.soul(r.node))),(i=u.map)&&(i.call(u.as||{},t,n,o,r),g(o,n))){if(void 0===(t=o[n]))return void p(o,n);if(!(e=s(t,n,o,r,u)))return}if(!n)return r.node;if(!0===e)return t;if((i=a(u,{obj:t,path:r.path.concat(n)})).node)return i.rel}}function i(t){var n=this,o=f.rel.is(n.rel),e=n.env.graph;n.rel=n.rel||f.rel.ify(t),n.rel[f.rel._]=t,n.node&&n.node[c._]&&(n.node[c._][f.rel._]=t),g(e,o)&&(e[t]=e[o],p(e,o))}function s(t,n,o,e,i){var r;return!!f.is(t)||(l(t)?1:(r=i.invalid)?s(t=r.call(i.as||{},t,n,o),n,o,e,i):(i.err="Invalid value at '"+e.path.concat(n).join(".")+"'!",void(u.list.is(t)&&(i.err+=" Use `.set(item)` instead of an Array."))))}r.ify=function(t,n,o){var e={path:[],obj:t};return n?"string"==typeof n?n={soul:n}:n instanceof Function&&(n.map=n):n={},n.soul&&(e.rel=f.rel.ify(n.soul)),n.graph=n.graph||{},n.seen=n.seen||[],n.as=n.as||o,a(n,e),n.root=e.node,n.graph}}(),r.node=function(t){var n=c.soul(t);if(n)return o({},n,t)},function(){function i(t,n){var o,e;if(c._!==n)(o=f.rel.is(t))?(e=this.opt.seen[o])?this.obj[n]=e:this.obj[n]=this.opt.seen[o]=r.to(this.graph,o,this.opt):this.obj[n]=t;else{if(a(t,f.rel._))return;this.obj[n]=h(t)}}r.to=function(t,n,o){if(t){var e={};return o=o||{seen:{}},s(t[n],i,{obj:e,graph:t,opt:o}),e}}}();u.fn.is;var n=u.obj,l=n.is,p=n.del,g=n.has,a=n.empty,o=n.put,s=n.map,h=n.copy;t.exports=r})(x,"./graph"),x(function(t){x("./onto"),t.exports=function(t,n){if(this.on){if(!(t instanceof Function)){if(!t||!n)return;var o=t["#"]||t,e=(this.tag||empty)[o];if(!e)return;return e=this.on(o,n),clearTimeout(e.err),!0}o=n&&n["#"]||Math.random().toString(36).slice(2);if(!t)return o;var i=this.on(o,t,n);return i.err=i.err||setTimeout(function(){i.next({err:"Error: No ACK received yet."}),i.off()},(this.opt||{}).lack||9e3),o}}})(x,"./ask"),x(function(t){var r=x("./type");var u=r.time.is;t.exports=function(e){var i={s:{}};return e=e||{max:1e3,age:9e3},i.check=function(t){var n;return!!(n=i.s[t])&&(n.pass?n.pass=!1:i.track(t))},i.track=function(t,n){var o=i.s[t]||(i.s[t]={});return o.was=u(),n&&(o.pass=!0),i.to||(i.to=setTimeout(function(){var o=u();r.obj.map(i.s,function(t,n){e.age>o-t.was||r.obj.del(i.s,n)}),i.to=null},e.age+9)),o},i}})(x,"./dup"),x(function(t){function c(t){return t instanceof c?(this._={gun:this}).gun:this instanceof c?c.create(this._={gun:this,opt:t}):new c(t)}c.is=function(t){return t instanceof c||t&&t._&&t._.gun&&!0||!1},c.version=.9,(c.chain=c.prototype).toJSON=function(){};var n=x("./type");n.obj.to(n,c),c.HAM=x("./HAM"),c.val=x("./val"),c.node=x("./node"),c.state=x("./state"),c.graph=x("./graph"),c.on=x("./onto"),c.ask=x("./ask"),c.dup=x("./dup"),function(){function r(t){var n,o,e=this.as,i=e.gun;(o=t["#"])||(o=t["#"]=u(9)),(n=e.dup).check(o)?e.out===t.out&&(t.out=void 0,this.to.next(t)):(n.track(o),e.ask(t["@"],t)||(t.get&&c.on.get(t,i),t.put&&c.on.put(t,i)),this.to.next(t),e.out||(t.out=r,e.on("out",t)))}c.create=function(t){t.root=t.root||t,t.graph=t.graph||{},t.on=t.on||c.on,t.ask=t.ask||c.ask,t.dup=t.dup||c.dup();var n=t.gun.opt(t.opt);return t.once||(t.on("in",r,t),t.on("out",r,p(t,{out:r})),c.on("create",t),t.on("create",t)),t.once=1,n}}(),function(){function i(t,n,o,e){var i=this,r=c.state.is(o,n);if(!r)return i.err="Error: No state on '"+n+"' in node '"+e+"'!";var u=i.graph[e]||v,a=c.state.is(u,n,!0),s=u[n],f=c.HAM(i.machine,r,a,t,s);f.incoming?(i.put[e]=c.state.to(o,n,i.put[e]),(i.diff||(i.diff={}))[e]=c.state.to(o,n,i.diff[e]),i.souls[e]=!0):f.defer&&(i.defer=r<(i.defer||1/0)?r:i.defer)}function r(t,n){var o=this,e=o.gun._,i=(e.next||v)[n];if(!i){if(!(e.opt||v).super)return void(o.souls[n]=!1);i=o.gun.get(n)._}var r=o.map[n]={put:t,get:n,gun:i.gun},u={ctx:o,msg:r};o.async=!!e.tag.node,o.ack&&(r["@"]=o.ack),g(t,a,u),o.async&&(o.and||e.on("node",function(t){this.to.next(t),t===o.map[t.get]&&(o.souls[t.get]=!1,g(t.put,s,t),g(o.souls,function(t){if(t)return t})||o.c||(o.c=1,this.off(),e.stop={},g(o.map,f,o)))}),o.and=!0,e.on("node",r))}function a(t,n){var o=this.ctx,e=o.graph,i=this.msg,r=i.get,u=i.put,a=i.gun._;e[r]=c.state.to(u,n,e[r]),o.async||(a.put=c.state.to(u,n,a.put))}function s(t,n){var o=this.put,e=this.gun._;e.put=c.state.to(o,n,e.put)}function f(t,n){t.gun&&t.gun._.on("in",t)}c.on.put=function(t,n){var o=n._,e={gun:n,graph:o.graph,put:{},map:{},souls:{},machine:c.state(),ack:t["@"]};if(c.graph.is(t.put,null,i,e)||(e.err="Error: Invalid graph!"),e.err)return o.on("in",{"@":t["#"],err:c.log(e.err)});g(e.put,r,e),e.async||(o.stop={},g(e.map,f,e)),void 0!==e.defer&&setTimeout(function(){c.on.put(t,n)},e.defer-e.machine),e.diff&&o.on("put",p(t,{put:e.diff}))},c.on.get=function(t,n){var o=n._,e=t.get[h],i=o.graph[e],r=t.get[d],u=(o.next||(o.next={}))[e];if(!i||!u)return o.on("get",t);if(r){if(!l(i,r))return o.on("get",t);i=c.state.to(i,r)}else i=c.obj.copy(i);i=c.graph.node(i),o.on("in",{"@":t["#"],how:"mem",put:i,gun:n}),o.on("get",t)}}(),c.chain.opt=function(t){t=t||{};var n=this._,o=t.peers||t;return a(t)||(t={}),a(n.opt)||(n.opt=t),i(o)&&(o=[o]),e(o)&&(o=g(o,function(t,n,o){o(t,{url:t})}),a(n.opt.peers)||(n.opt.peers={}),n.opt.peers=p(o,n.opt.peers)),n.opt.peers=n.opt.peers||{},p(t,n.opt),c.on("opt",n),n.opt.uuid=n.opt.uuid||function(){return s()+u(12)},this};var e=c.list.is,o=c.text,i=o.is,u=o.random,r=c.obj,a=r.is,l=r.has,p=r.to,g=r.map,s=(r.copy,c.state.lex),h=c.val.rel._,d=".",v=(c.node._,c.val.rel.is,{});_.debug=function(t,n){return _.debug.i&&t===_.debug.i&&_.debug.i++&&(_.log.apply(_,arguments)||n)},(c.log=function(){return!c.log.off&&_.log.apply(_,arguments),[].slice.call(arguments).join(" ")}).once=function(t,n,o){return(o=c.log.once)[t]=o[t]||0,o[t]++||c.log(n)},c.log.once("welcome","Hello wonderful person! :) Thanks for using GUN, feel free to ask for help on https://gitter.im/amark/gun and ask StackOverflow questions tagged with 'gun'!"),"undefined"!=typeof window&&(window.Gun=c);try{void 0!==f&&(f.exports=c)}catch(t){}t.exports=c})(x,"./root"),x(function(t){var a=x("./root");a.chain.back=function(t,n){if(-1===(t=t||1)||1/0===t)return this._.root.gun;if(1===t)return(this._.back||this._).gun;var o=this._;if("string"==typeof t&&(t=t.split(".")),t instanceof Array){for(var e=0,i=t.length,r=o;e .once, apologies unexpected."),this.once(t,n)},s.chain.once=function(t,n){var o=this,e=o._,i=e.put;if(0=(u.batch||1e3))return f();e||(e=setTimeout(f,u.wait||1))}),r.on("get",function(t){this.to.next(t);var n,o,e=t.get;if(e&&(n=e["#"])){var i=e["."];(o=s[n]||void 0)&&i&&(o=Gun.state.to(o,i)),(o||Gun.obj.empty(u.peers))&&r.on("in",{"@":t["#"],put:Gun.graph.node(o),how:"lS",lS:t.I})}});var n=function(t,n,o,e){s[e]=Gun.state.to(o,n,s[e])},f=function(t){var o;a=0,clearTimeout(e),e=!1;var n=i;i={},t&&(s=t);try{c.setItem(u.file,JSON.stringify(s))}catch(t){Gun.log(o=t||"localStorage failure"),r.on("localStorage:error",{err:o,file:u.file,flush:s,retry:f})}(o||Gun.obj.empty(u.peers))&&Gun.obj.map(n,function(t,n){r.on("in",{"@":n,err:o,ok:0})})}}})}})(x,"./adapters/localStorage"),x(function(t){var h=x("../type");function o(p){var g=function(){};return g.out=function(t){var n;if(this.to&&this.to.next(t),(n=t["@"])&&(n=p.dup.s[n])&&(n=n.it)&&n.mesh)return g.say(t,n.mesh.via),void(n["##"]=t["##"]);g.say(t)},g.hear=function(t,n){if(t){var o,e,i,r=p.dup,u=t[0];try{i=JSON.parse(t)}catch(t){}if("{"===u){if(!i)return;if(r.check(o=i["#"]))return;if((u=(r.track(o,!0).it=i)["@"])&&i.put&&(u+=e=i["##"]||(i["##"]=g.hash(i)))!=o){if(r.check(u))return;(u=r.s)[e]=u[o]}return(i.mesh=function(){}).via=n,(u=i["><"])&&(i.mesh.to=h.obj.map(u.split(","),function(t,n,o){o(t,!0)})),void p.on("in",i)}if("["!==u);else{if(!i)return;for(var a,s=0;a=i[s++];)g.hear(a,n)}}},function(){function r(n,o){var t=o.wire;try{t.send?t.readyState===t.OPEN?t.send(n):(o.queue=o.queue||[]).push(n):o.say&&o.say(n)}catch(t){(o.queue=o.queue||[]).push(n)}}g.say=function(n,o){var t,e,i;o?(o.wire||p.opt.wire&&p.opt.wire(o))&&(e=n.mesh||u,o!==e.via&&((i=e.raw)||(i=g.raw(n)),(t=n["@"])&&(t=p.dup.s[t])&&(t=t.it)&&t.get&&t["##"]&&t["##"]===n["##"]||(t=e.to)&&(t[o.url]||t[o.id])||(o.batch?o.batch.push(i):(o.batch=[],setTimeout(function(){var t=o.batch;t&&(o.batch=null,t.length&&r(JSON.stringify(t),o))},p.opt.gap||p.opt.wait||1),r(i,o))))):h.obj.map(p.opt.peers,function(t){g.say(n,t)})}}(),function(){function f(t,n){var o;return n instanceof Object?(h.obj.map(Object.keys(n).sort(),e,{to:o={},on:n}),o):n}function e(t){this.to[t]=this.on[t]}g.raw=function(t){if(!t)return"";var n,o,e,i=p.dup,r=t.mesh||{};if(e=r.raw)return e;if("string"==typeof t)return t;t["@"]&&(e=t.put)&&((o=t["##"])||(n=c(e,f)||"",o=g.hash(t,n),t["##"]=o),(e=i.s)[o=t["@"]+o]=e[t["#"]],t["#"]=o||t["#"],n&&((t=h.obj.to(t)).put=l));var u=0,a=[];h.obj.map(p.opt.peers,function(t){if(a.push(t.url||t.id),9<++u)return!0}),t["><"]=a.join();var s=c(t);return d!==n&&(s=s.replace('"'+l+'"',n)),r&&(r.raw=s),s},g.hash=function(t,n){return o.hash(n||c(t.put,f)||"")||t["#"]||h.text.random(9)};var c=JSON.stringify,l=":])([:"}(),g.hi=function(n){p.on("hi",n);var t=n.queue;n.queue=[],h.obj.map(t,function(t){g.say(t,n)})},g}o.hash=function(t){if("string"!=typeof t)return{err:1};var n=0;if(!t.length)return n;for(var o=0,e=t.length;o")){if(!(n>t[">"]))return!1;o=!0}if(p.obj.has(t,"<")){if(!(n",s.drift=0,s.is=function(t,n,o){var e=n&&t&&t[b]&&t[b][s._]||o;if(e)return d(e=e[n])?e:-1/0},s.lex=function(){return s().toString(36).replace(".","")},s.ify=function(t,n,o,e,i){if(!t||!t[b]){if(!i)return;t=u.soul.ify(t,i)}var r=c(t[b],s._);return void 0!==n&&n!==b&&(d(o)&&(r[n]=o),void 0!==e&&(t[n]=e)),t},s.to=function(t,n,o){var e=t[n];return p(e)&&(e=h(e)),s.ify(o,n,s.is(t,n),e,u.soul(t))},function(){function a(t,n){b!==n&&s.ify(this.o,n,this.s)}s.map=function(i,r,u){var t=p(t=i||r)?t:null;return i=v(i=i||r)?i:null,t&&!i?(r=d(r)?r:s(),t[b]=t[b]||{},g(t,a,{o:t,s:r}),t):(u=u||p(r)?r:void 0,r=d(r)?r:s(),function(t,n,o,e){if(!i)return a.call({o:o,s:r},t,n),t;i.call(u||this||{},t,n,o,e),l(o,n)&&void 0===o[n]||a.call({o:o,s:r},t,n)})}}();var f=n.obj,c=f.as,l=f.has,p=f.is,g=f.map,h=f.copy,d=n.num.is,v=n.fn.is,b=u._;t.exports=s})(x,"./state"),x(function(t){var u=x("./type"),f=x("./val"),c=x("./node"),r={};!function(){function i(t,n){if(!t||n!==c.soul(t)||!c.is(t,this.fn,this.as))return!0;this.cb&&(o.n=t,o.as=this.as,this.cb.call(o.as,t,n,o))}function o(t){t&&c.is(o.n,t,o.as)}r.is=function(t,n,o,e){return!(!t||!l(t)||a(t))&&!s(t,i,{cb:n,fn:o,as:e})}}(),function(){function a(t,n){var o;return(o=function(t,n){var o,e=t.seen,i=e.length;for(;i--;)if(o=e[i],n.obj===o.obj)return o;e.push(n)}(t,n))?o:(n.env=t,n.soul=i,c.ify(n.obj,e,n)&&(t.graph[f.rel.is(n.rel)]=n.node),n)}function e(t,n,o){var e,i,r=this,u=r.env;if(c._===n&&g(t,f.rel._))return o._;if(e=s(t,n,o,r,u)){if(n||(r.node=r.node||o||{},g(t,c._)&&(r.node._=h(t._)),r.node=c.soul.ify(r.node,f.rel.is(r.rel)),r.rel=r.rel||f.rel.ify(c.soul(r.node))),(i=u.map)&&(i.call(u.as||{},t,n,o,r),g(o,n))){if(void 0===(t=o[n]))return void p(o,n);if(!(e=s(t,n,o,r,u)))return}if(!n)return r.node;if(!0===e)return t;if((i=a(u,{obj:t,path:r.path.concat(n)})).node)return i.rel}}function i(t){var n=this,o=f.rel.is(n.rel),e=n.env.graph;n.rel=n.rel||f.rel.ify(t),n.rel[f.rel._]=t,n.node&&n.node[c._]&&(n.node[c._][f.rel._]=t),g(e,o)&&(e[t]=e[o],p(e,o))}function s(t,n,o,e,i){var r;return!!f.is(t)||(l(t)?1:(r=i.invalid)?s(t=r.call(i.as||{},t,n,o),n,o,e,i):(i.err="Invalid value at '"+e.path.concat(n).join(".")+"'!",void(u.list.is(t)&&(i.err+=" Use `.set(item)` instead of an Array."))))}r.ify=function(t,n,o){var e={path:[],obj:t};return n?"string"==typeof n?n={soul:n}:n instanceof Function&&(n.map=n):n={},n.soul&&(e.rel=f.rel.ify(n.soul)),n.graph=n.graph||{},n.seen=n.seen||[],n.as=n.as||o,a(n,e),n.root=e.node,n.graph}}(),r.node=function(t){var n=c.soul(t);if(n)return o({},n,t)},function(){function i(t,n){var o,e;if(c._!==n)(o=f.rel.is(t))?(e=this.opt.seen[o])?this.obj[n]=e:this.obj[n]=this.opt.seen[o]=r.to(this.graph,o,this.opt):this.obj[n]=t;else{if(a(t,f.rel._))return;this.obj[n]=h(t)}}r.to=function(t,n,o){if(t){var e={};return o=o||{seen:{}},s(t[n],i,{obj:e,graph:t,opt:o}),e}}}();u.fn.is;var n=u.obj,l=n.is,p=n.del,g=n.has,a=n.empty,o=n.put,s=n.map,h=n.copy;t.exports=r})(x,"./graph"),x(function(t){x("./onto"),t.exports=function(t,n){if(this.on){if(!(t instanceof Function)){if(!t||!n)return;var o=t["#"]||t,e=(this.tag||empty)[o];if(!e)return;return e=this.on(o,n),clearTimeout(e.err),!0}o=n&&n["#"]||Math.random().toString(36).slice(2);if(!t)return o;var i=this.on(o,t,n);return i.err=i.err||setTimeout(function(){i.next({err:"Error: No ACK received yet."}),i.off()},(this.opt||{}).lack||9e3),o}}})(x,"./ask"),x(function(t){var r=x("./type");var u=r.time.is;t.exports=function(e){var i={s:{}};return e=e||{max:1e3,age:9e3},i.check=function(t){var n;return!!(n=i.s[t])&&(n.pass?n.pass=!1:i.track(t))},i.track=function(t,n){var o=i.s[t]||(i.s[t]={});return o.was=u(),n&&(o.pass=!0),i.to||(i.to=setTimeout(function(){var o=u();r.obj.map(i.s,function(t,n){e.age>o-t.was||r.obj.del(i.s,n)}),i.to=null},e.age+9)),o},i}})(x,"./dup"),x(function(t){function c(t){return t instanceof c?(this._={gun:this}).gun:this instanceof c?c.create(this._={gun:this,opt:t}):new c(t)}c.is=function(t){return t instanceof c||t&&t._&&t._.gun&&!0||!1},c.version=.9,(c.chain=c.prototype).toJSON=function(){};var n=x("./type");n.obj.to(n,c),c.HAM=x("./HAM"),c.val=x("./val"),c.node=x("./node"),c.state=x("./state"),c.graph=x("./graph"),c.on=x("./onto"),c.ask=x("./ask"),c.dup=x("./dup"),function(){function r(t){var n,o,e=this.as,i=e.gun;(o=t["#"])||(o=t["#"]=u(9)),(n=e.dup).check(o)?e.out===t.out&&(t.out=void 0,this.to.next(t)):(n.track(o),e.ask(t["@"],t)||(t.get&&c.on.get(t,i),t.put&&c.on.put(t,i)),this.to.next(t),e.out||(t.out=r,e.on("out",t)))}c.create=function(t){t.root=t.root||t,t.graph=t.graph||{},t.on=t.on||c.on,t.ask=t.ask||c.ask,t.dup=t.dup||c.dup();var n=t.gun.opt(t.opt);return t.once||(t.on("in",r,t),t.on("out",r,p(t,{out:r})),c.on("create",t),t.on("create",t)),t.once=1,n}}(),function(){function i(t,n,o,e){var i=this,r=c.state.is(o,n);if(!r)return i.err="Error: No state on '"+n+"' in node '"+e+"'!";var u=i.graph[e]||v,a=c.state.is(u,n,!0),s=u[n],f=c.HAM(i.machine,r,a,t,s);f.incoming?(i.put[e]=c.state.to(o,n,i.put[e]),(i.diff||(i.diff={}))[e]=c.state.to(o,n,i.diff[e]),i.souls[e]=!0):f.defer&&(i.defer=r<(i.defer||1/0)?r:i.defer)}function r(t,n){var o=this,e=o.gun._,i=(e.next||v)[n];if(!i){if(!(e.opt||v).super)return void(o.souls[n]=!1);i=o.gun.get(n)._}var r=o.map[n]={put:t,get:n,gun:i.gun},u={ctx:o,msg:r};o.async=!!e.tag.node,o.ack&&(r["@"]=o.ack),g(t,a,u),o.async&&(o.and||e.on("node",function(t){this.to.next(t),t===o.map[t.get]&&(o.souls[t.get]=!1,g(t.put,s,t),g(o.souls,function(t){if(t)return t})||o.c||(o.c=1,this.off(),e.stop={},g(o.map,f,o)))}),o.and=!0,e.on("node",r))}function a(t,n){var o=this.ctx,e=o.graph,i=this.msg,r=i.get,u=i.put,a=i.gun._;e[r]=c.state.to(u,n,e[r]),o.async||(a.put=c.state.to(u,n,a.put))}function s(t,n){var o=this.put,e=this.gun._;e.put=c.state.to(o,n,e.put)}function f(t,n){t.gun&&t.gun._.on("in",t)}c.on.put=function(t,n){var o=n._,e={gun:n,graph:o.graph,put:{},map:{},souls:{},machine:c.state(),ack:t["@"]};if(c.graph.is(t.put,null,i,e)||(e.err="Error: Invalid graph!"),e.err)return o.on("in",{"@":t["#"],err:c.log(e.err)});g(e.put,r,e),e.async||(o.stop={},g(e.map,f,e)),void 0!==e.defer&&setTimeout(function(){c.on.put(t,n)},e.defer-e.machine),e.diff&&o.on("put",p(t,{put:e.diff}))},c.on.get=function(t,n){var o=n._,e=t.get[h],i=o.graph[e],r=t.get[d],u=(o.next||(o.next={}))[e];if(!i||!u)return o.on("get",t);if(r){if(!l(i,r))return o.on("get",t);i=c.state.to(i,r)}else i=c.obj.copy(i);i=c.graph.node(i),o.on("in",{"@":t["#"],how:"mem",put:i,gun:n}),o.on("get",t)}}(),c.chain.opt=function(t){t=t||{};var n=this._,o=t.peers||t;return a(t)||(t={}),a(n.opt)||(n.opt=t),i(o)&&(o=[o]),e(o)&&(o=g(o,function(t,n,o){o(t,{url:t})}),a(n.opt.peers)||(n.opt.peers={}),n.opt.peers=p(o,n.opt.peers)),n.opt.peers=n.opt.peers||{},p(t,n.opt),c.on("opt",n),n.opt.uuid=n.opt.uuid||function(){return s()+u(12)},this};var e=c.list.is,o=c.text,i=o.is,u=o.random,r=c.obj,a=r.is,l=r.has,p=r.to,g=r.map,s=(r.copy,c.state.lex),h=c.val.rel._,d=".",v=(c.node._,c.val.rel.is,{});_.debug=function(t,n){return _.debug.i&&t===_.debug.i&&_.debug.i++&&(_.log.apply(_,arguments)||n)},(c.log=function(){return!c.log.off&&_.log.apply(_,arguments),[].slice.call(arguments).join(" ")}).once=function(t,n,o){return(o=c.log.once)[t]=o[t]||0,o[t]++||c.log(n)},c.log.once("welcome","Hello wonderful person! :) Thanks for using GUN, feel free to ask for help on https://gitter.im/amark/gun and ask StackOverflow questions tagged with 'gun'!"),"undefined"!=typeof window&&(window.Gun=c);try{void 0!==f&&(f.exports=c)}catch(t){}t.exports=c})(x,"./root"),x(function(t){var a=x("./root");a.chain.back=function(t,n){if(-1===(t=t||1)||1/0===t)return this._.root.gun;if(1===t)return(this._.back||this._).gun;var o=this._;if("string"==typeof t&&(t=t.split(".")),t instanceof Array){for(var e=0,i=t.length,r=o;e .once, apologies unexpected."),this.once(t,n)},s.chain.once=function(t,n){var o=this,e=o._,i=e.put;if(0=(u.batch||1e3))return f();e||(e=setTimeout(f,u.wait||1))}),r.on("get",function(t){this.to.next(t);var n,o,e=t.get;if(e&&(n=e["#"])){var i=e["."];(o=s[n]||void 0)&&i&&(o=Gun.state.to(o,i)),(o||Gun.obj.empty(u.peers))&&r.on("in",{"@":t["#"],put:Gun.graph.node(o),how:"lS",lS:t.I})}});var n=function(t,n,o,e){s[e]=Gun.state.to(o,n,s[e])},f=function(t){var o;a=0,clearTimeout(e),e=!1;var n=i;i={},t&&(s=t);try{c.setItem(u.file,JSON.stringify(s))}catch(t){Gun.log(o=t||"localStorage failure"),r.on("localStorage:error",{err:o,file:u.file,flush:s,retry:f})}(o||Gun.obj.empty(u.peers))&&Gun.obj.map(n,function(t,n){r.on("in",{"@":n,err:o,ok:0})})}}})}})(x,"./adapters/localStorage"),x(function(t){var h=x("../type");function o(p){var g=function(){};return g.out=function(t){var n;if(this.to&&this.to.next(t),(n=t["@"])&&(n=p.dup.s[n])&&(n=n.it)&&n.mesh)return g.say(t,n.mesh.via),void(n["##"]=t["##"]);g.say(t)},g.hear=function(t,n){if(t){var o,e,i,r=p.dup,u=t[0];try{i=JSON.parse(t)}catch(t){}if("{"===u){if(!i)return;if(r.check(o=i["#"]))return;if((u=(r.track(o,!0).it=i)["@"])&&i.put&&(u+=e=i["##"]||(i["##"]=g.hash(i)))!=o){if(r.check(u))return;(u=r.s)[e]=u[o]}return(i.mesh=function(){}).via=n,(u=i["><"])&&(i.mesh.to=h.obj.map(u.split(","),function(t,n,o){o(t,!0)})),void p.on("in",i)}if("["!==u);else{if(!i)return;for(var a,s=0;a=i[s++];)g.hear(a,n)}}},function(){function r(n,o){var t=o.wire;try{t.send?t.readyState===t.OPEN?t.send(n):(o.queue=o.queue||[]).push(n):o.say&&o.say(n)}catch(t){(o.queue=o.queue||[]).push(n)}}g.say=function(n,o){var t,e,i;o?(o.wire||p.opt.wire&&p.opt.wire(o))&&(e=n.mesh||u,o!==e.via&&((i=e.raw)||(i=g.raw(n)),(t=n["@"])&&(t=p.dup.s[t])&&(t=t.it)&&t.get&&t["##"]&&t["##"]===n["##"]||(t=e.to)&&(t[o.url]||t[o.id])||(o.batch?o.batch.push(i):(o.batch=[],setTimeout(function(){var t=o.batch;t&&(o.batch=null,t.length&&r(JSON.stringify(t),o))},p.opt.gap||p.opt.wait||1),r(i,o))))):h.obj.map(p.opt.peers,function(t){g.say(n,t)})}}(),function(){function f(t,n){var o;return n instanceof Object?(h.obj.map(Object.keys(n).sort(),e,{to:o={},on:n}),o):n}function e(t){this.to[t]=this.on[t]}g.raw=function(t){if(!t)return"";var n,o,e,i=p.dup,r=t.mesh||{};if(e=r.raw)return e;if("string"==typeof t)return t;t["@"]&&(e=t.put)&&((o=t["##"])||(n=c(e,f)||"",o=g.hash(t,n),t["##"]=o),(e=i.s)[o=t["@"]+o]=e[t["#"]],t["#"]=o||t["#"],n&&((t=h.obj.to(t)).put=l));var u=0,a=[];h.obj.map(p.opt.peers,function(t){if(a.push(t.url||t.id),9<++u)return!0}),t["><"]=a.join();var s=c(t);return d!==n&&(s=s.replace('"'+l+'"',n)),r&&(r.raw=s),s},g.hash=function(t,n){return o.hash(n||c(t.put,f)||"")||t["#"]||h.text.random(9)};var c=JSON.stringify,l=":])([:"}(),g.hi=function(n){p.on("hi",n);var t=n.queue;n.queue=[],h.obj.map(t,function(t){g.say(t,n)})},g}o.hash=function(t){if("string"!=typeof t)return{err:1};var n=0;if(!t.length)return n;for(var o=0,e=t.length;o=0.6.0", "xmlbuilder": "^4.1.0" @@ -1358,7 +1344,6 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-4.2.1.tgz", "integrity": "sha1-qlijBBoGb5DqoWwvU4n/GfP0YaU=", - "dev": true, "requires": { "lodash": "^4.0.0" } diff --git a/package.json b/package.json index f99dcede..b7e355fe 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,8 @@ "node": ">=0.8.4" }, "dependencies": { - "ws": "~>5.2.0" + "ws": "~>5.2.0", + "aws-sdk": ">=2.153.0" }, "devDependencies": { "@trust/webcrypto": "^0.7.1", diff --git a/src/put.js b/src/put.js index 856f36c5..98ca9c5c 100644 --- a/src/put.js +++ b/src/put.js @@ -7,7 +7,7 @@ Gun.chain.put = function(data, cb, as){ var gun = this, at = (gun._), root = at.root.gun, tmp; as = as || {}; as.data = data; - as.gun = as.gun || gun; + as.via = as.gun = as.via || as.gun || gun; if(typeof cb === 'string'){ as.soul = cb; } else { @@ -22,9 +22,9 @@ Gun.chain.put = function(data, cb, as){ if(as.res){ as.res() } return gun; } - as.soul = as.soul || (as.not = Gun.node.soul(as.data) || ((root._).opt.uuid || Gun.text.random)()); + as.soul = as.soul || (as.not = Gun.node.soul(as.data) || (as.via.back('opt.uuid') || Gun.text.random)()); if(!as.soul){ // polyfill async uuid for SEA - (root._).opt.uuid(function(err, soul){ // TODO: improve perf without anonymous callback + as.via.back('opt.uuid')(function(err, soul){ // TODO: improve perf without anonymous callback if(err){ return Gun.log(err) } // TODO: Handle error! (as.ref||as.gun).put(as.data, as.soul = soul, as); }); @@ -126,10 +126,10 @@ function map(v,k,n, at){ var as = this; ref = ref.get(path[i]); } if(Gun.node.soul(at.obj)){ - var id = Gun.node.soul(at.obj) || (ref.back('opt.uuid') || Gun.text.random)(); + var id = Gun.node.soul(at.obj) || (as.via.back('opt.uuid') || Gun.text.random)(); if(!id){ // polyfill async uuid for SEA (as.stun = as.stun || {})[path] = true; // make DRY - ref.back('opt.uuid')(function(err, id){ // TODO: improve perf without anonymous callback + as.via.back('opt.uuid')(function(err, id){ // TODO: improve perf without anonymous callback if(err){ return Gun.log(err) } // TODO: Handle error. ref.back(-1).get(id); at.soul(id); @@ -154,9 +154,9 @@ function soul(msg, ev){ var as = this.as, cat = as.at; as = as.as; var _id = (msg.put||empty)['#']; ev.off(); at = (msg.gun._.back); // go up 1! - var id = id || Gun.node.soul(cat.obj) || Gun.node.soul(at.put) || Gun.val.rel.is(at.put) || _id || at_._id || (as.gun.back('opt.uuid') || Gun.text.random)(); // TODO: BUG!? Do we really want the soul of the object given to us? Could that be dangerous? + var id = id || Gun.node.soul(cat.obj) || Gun.node.soul(at.put) || Gun.val.rel.is(at.put) || _id || at_._id || (as.via.back('opt.uuid') || Gun.text.random)(); // TODO: BUG!? Do we really want the soul of the object given to us? Could that be dangerous? if(!id){ // polyfill async uuid for SEA - at.gun.back('opt.uuid')(function(err, id){ // TODO: improve perf without anonymous callback + at.via.back('opt.uuid')(function(err, id){ // TODO: improve perf without anonymous callback if(err){ return Gun.log(err) } // TODO: Handle error. solve(at, at_._id = at_._id || id, cat, as); }); @@ -206,16 +206,16 @@ function any(at, ev){ } if(!as.not && !(as.soul = Gun.node.soul(data))){ if(as.path && obj_is(as.data)){ // Apparently necessary - as.soul = (opt.uuid || cat.root.opt.uuid || Gun.text.random)(); + as.soul = (opt.uuid || as.via.back('opt.uuid') || Gun.text.random)(); } else { //as.data = obj_put({}, as.gun._.get, as.data); if(node_ == at.get){ as.soul = (at.put||empty)['#'] || at._id; } - as.soul = as.soul || at.soul || cat.soul || (opt.uuid || cat.root.opt.uuid || Gun.text.random)(); + as.soul = as.soul || at.soul || cat.soul || (opt.uuid || as.via.back('opt.uuid') || Gun.text.random)(); } if(!as.soul){ // polyfill async uuid for SEA - as.ref.back('opt.uuid')(function(err, soul){ // TODO: improve perf without anonymous callback + as.via.back('opt.uuid')(function(err, soul){ // TODO: improve perf without anonymous callback if(err){ return Gun.log(err) } // Handle error. as.ref.put(as.data, as.soul = soul, as); }); diff --git a/src/set.js b/src/set.js index 995202bc..f856c96f 100644 --- a/src/set.js +++ b/src/set.js @@ -6,11 +6,11 @@ Gun.chain.set = function(item, cb, opt){ opt = opt || {}; opt.item = opt.item || item; if(soul = Gun.node.soul(item)){ return gun.set(gun.back(-1).get(soul), cb, opt) } if(!Gun.is(item)){ - var id = gun._.root.opt.uuid(); + var id = gun.back('opt.uuid')(); if(id && Gun.obj.is(item)){ return gun.set(gun._.root.gun.put(item, id), cb, opt); } - return gun.get(id || (Gun.state.lex() + Gun.text.random(12))).put(item, cb, opt); + return gun.get((Gun.state.lex() + Gun.text.random(7))).put(item, cb, opt); } item.get('_').get(function(at, ev){ if(!at.gun || !at.gun._.back){ return }