mirror of
https://github.com/fluencelabs/dweb-transports
synced 2025-04-25 14:52:18 +00:00
GUN - testing continued
This commit is contained in:
parent
2c3c0f4272
commit
10cc6d93dd
@ -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;
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user