GUN - testing continued

This commit is contained in:
Mitra Ardron 2018-07-13 11:52:42 -07:00
parent 2c3c0f4272
commit 10cc6d93dd
2 changed files with 18 additions and 12 deletions

View File

@ -3,7 +3,7 @@ This Transport layers uses GUN.
*/ */
const Url = require('url'); const Url = require('url');
process.env.GUN_ENV = "false"; process.env.GUN_ENV = "false";
const Gun = require('gun'); const Gun = require('gun/gun.js'); // TODO-GUN switchback to gun/gun at some point to get minimized version
require('gun/lib/path.js'); require('gun/lib/path.js');
// Other Dweb modules // Other Dweb modules
@ -20,6 +20,7 @@ let defaultoptions = {
//localstore: true #True is default //localstore: true #True is default
}; };
//To run a superpeer - cd wherever; node install gun; cd node_modules/gun; npm start - starts server by default on port 8080, or set an "env" - see http.js //To run a superpeer - cd wherever; node install gun; cd node_modules/gun; npm start - starts server by default on port 8080, or set an "env" - see http.js
//node examples/http.js 4246
//Make sure to open of the port (typically in /etc/ferm) //Make sure to open of the port (typically in /etc/ferm)
//TODO-GUN - figure out how to make server persistent - started by systemctl etc and incorporate in dweb-gateway/scripts/install.sh //TODO-GUN - figure out how to make server persistent - started by systemctl etc and incorporate in dweb-gateway/scripts/install.sh
@ -122,7 +123,8 @@ class TransportGUN extends Transport {
*/ */
try { try {
let g = this.connection(url, verbose); let g = this.connection(url, verbose);
//let res = g.once(data => Object.keys(data).filter(k => k !== '_').sort().map(k => data[k])); //See TODO-GUN-UNDERSCORE let data = await this._p_once(g);
let res = data ? Object.keys(data).filter(k => k !== '_').sort().map(k => data[k]) : []; //See TODO-GUN-UNDERSCORE
// .filter((obj) => (obj.signedby.includes(url))); // upper layers verify, which filters // .filter((obj) => (obj.signedby.includes(url))); // upper layers verify, which filters
if (verbose) console.log("GUN.p_rawlist found", ...utils.consolearr(res)); if (verbose) console.log("GUN.p_rawlist found", ...utils.consolearr(res));
return res; return res;
@ -144,15 +146,17 @@ class TransportGUN extends Transport {
*/ */
let g = this.connection(url, verbose); let g = this.connection(url, verbose);
if (!current) { // See TODO-GUN-CURRENT have to keep an extra copy to compare for which calls are new. if (!current) { // See TODO-GUN-CURRENT have to keep an extra copy to compare for which calls are new.
g.once(data => this.monitored = data); // Keep a copy - could actually just keep high water mark unless getting partial knowledge of state of array. g.once(data => {
g.map.on((v, k) => { this.monitored = data || []; // Keep a copy - could actually just keep high water mark unless getting partial knowledge of state of array.
g.map().on((v, k) => {
if ((v !== this.monitored[k]) && (k !== '_')) { //See TODO-GUN-UNDERSCORE if ((v !== this.monitored[k]) && (k !== '_')) { //See TODO-GUN-UNDERSCORE
this.monitored[k] = v; this.monitored[k] = v;
callback(JSON.parse(v)); callback(JSON.parse(v));
} }
}); });
});
} else { } else {
g.map.on((v, k) => callback("set", k, JSON.parse(v))); g.map().on((v, k) => callback("set", k, JSON.parse(v)));
} }
} }
@ -299,14 +303,14 @@ class TransportGUN extends Transport {
let g = this.connection(url, verbose); let g = this.connection(url, verbose);
if (!current) { // See TODO-GUN-CURRENT have to keep an extra copy to compare for which calls are new. if (!current) { // See TODO-GUN-CURRENT have to keep an extra copy to compare for which calls are new.
g.once(data => this.monitored = data); // Keep a copy g.once(data => this.monitored = data); // Keep a copy
g.map.on((v, k) => { g.map().on((v, k) => {
if (v !== this.monitored[k]) { if (v !== this.monitored[k]) {
this.monitored[k] = v; this.monitored[k] = v;
callback("set", k, JSON.parse(v)); callback("set", k, JSON.parse(v));
} }
}); });
} else { } else {
g.map.on((v, k) => callback("set", k, JSON.parse(v))); g.map().on((v, k) => callback("set", k, JSON.parse(v)));
} }
} }
@ -318,7 +322,7 @@ class TransportGUN extends Transport {
await t.p_setup2(verbose); // Not passing cb yet - this one does nothing on GUN await t.p_setup2(verbose); // Not passing cb yet - this one does nothing on GUN
// noinspection JSIgnoredPromiseFromCall // noinspection JSIgnoredPromiseFromCall
t.p_test_kvt("gun:/gun/NACL", {verbose}); t.p_test_kvt("gun:/gun/NACL", {verbose});
//t.p_test_list("gun:/gun/NACL", {verbose}); //TODO test_list needs fixing to not req Signature //t.p_test_list("gun:/gun/NACL", {verbose}); //TODO test_list needs fixing to not create a dependency on Signature
} catch(err) { } catch(err) {
console.log("Exception thrown in TransportGUN.test:", err.message); console.log("Exception thrown in TransportGUN.test:", err.message);
throw err; throw err;

View File

@ -220,6 +220,8 @@ class Transports {
returns: undefined returns: undefined
throws: TransportError with message being concatenated messages of transports if NONE of them succeed. throws: TransportError with message being concatenated messages of transports if NONE of them succeed.
*/ */
//TODO-REFACTOR remove dependecy on the object having a .preflight, this should be handled one layer up.
//TODO-REFACTOR requires changes in: dweb-transports: TransportXyz, Transport, API.md; dweb-objects: CommonList.js, test.js; dweb-serviceworker/TransportsProxy.js;
//TODO-MULTI-GATEWAY might be smarter about not waiting but Promise.race is inappropriate as returns after a failure as well. //TODO-MULTI-GATEWAY might be smarter about not waiting but Promise.race is inappropriate as returns after a failure as well.
urls = await this.p_resolveNames(urls); // If naming is loaded then convert to a name urls = await this.p_resolveNames(urls); // If naming is loaded then convert to a name
let tt = this.validFor(urls, "add"); // Valid connected transports that support "store" let tt = this.validFor(urls, "add"); // Valid connected transports that support "store"