How to use gun - 10 common examples

To help you get started, we’ve selected a few gun examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github d3x0r / gun-db / testsetnul.js View on Github external
del = true;
else {
	console.log( "Must supply parameter 'add' or 'del'" );
	//process.exit(0);
}

var Gun = require( "gun/gun" );
var gunDb = require( "." );

//var Gun = require( "gun" );

require('gun/lib/not')
require( "gun-unset" );


const rel_ = Gun.val.rel._;  // '#'
const val_ = Gun._.field;  // '.'
const node_ = Gun.node._;  // '_'

var gun = new Gun( /*{ db:{ file:'gun.db' } }*/ );

console.log( new Date(), "Initialized gun instance" );
var root = gun.get( "db" );

var alice = root.get( "alice" )
alice.not( (val)=>{
	console.log( "init alice data", val );
	alice.put( { name: 'alice', dob: 'before now', whatever: 'one' } );
} );
var bob = root.get( "bob" )
bob.not( (val)=>{
	console.log( "init bob data" , val);
github d3x0r / gun-db / testsetnul.js View on Github external
console.log( "Must supply parameter 'add' or 'del'" );
	//process.exit(0);
}

var Gun = require( "gun/gun" );
var gunDb = require( "." );

//var Gun = require( "gun" );

require('gun/lib/not')
require( "gun-unset" );


const rel_ = Gun.val.rel._;  // '#'
const val_ = Gun._.field;  // '.'
const node_ = Gun.node._;  // '_'

var gun = new Gun( /*{ db:{ file:'gun.db' } }*/ );

console.log( new Date(), "Initialized gun instance" );
var root = gun.get( "db" );

var alice = root.get( "alice" )
alice.not( (val)=>{
	console.log( "init alice data", val );
	alice.put( { name: 'alice', dob: 'before now', whatever: 'one' } );
} );
var bob = root.get( "bob" )
bob.not( (val)=>{
	console.log( "init bob data" , val);
	bob.put( { name:'bob', dob: "yes", color: "purple" } );
} );
github amark / gun / test / panic / load.js View on Github external
test.async();
				// Now we want to connect to every gun server peer...
				var peers = [], i = env.config.servers;
				while(i--){
					// For the total number of servers listed in the configuration
					// Add their URL into an array.
					peers.push('http://'+ env.config.IP + ':' + (env.config.port + (i + 1)) + '/gun');
				}
				// Pass all the servers we want to connect to into gun.
				//var gun = Gun();
				var gun = Gun(peers);
				// Now we want to create a list
				// of all the messages that WILL be sent
				// according to the expected configuration.
				// This is equal to...
				var num = 0, total = 0, check = Gun.obj.map(env.ids, function(v,id,t){
					// for each browser ID
					// they will be saving X number of messages each.
					var i = env.config.each;
					while(i--){
						// So add a deterministic key we can check against.
						t(id + (i + 1), 1);
						// And count up the total number of messages we expect for all.
						total += 1;
					}
				});
				// Note, this `check` hash table now looks something like this:
				// {alice1: 1, alice2: 1, alice3: 1, bob1: 1, bob2: 1, bob3: 1}
				var report = $("<div>").css({position: 'fixed', top: 0, right: 0, background: 'white', padding: 10}).text(num +" / "+ total +" Verified").prependTo('body');
				// Add a nifty UI that tells us how many messages have been verified.
				// FINALLY, tell gun to subscribe to every record
				// that is is/will be saved to this table.</div>
github amark / gun / test / panic / load.js View on Github external
//$(log).append(el.attr('id', key).text(key +": "+ data));
					$(log).text(key +": "+ data); // DOM updates thrash performance, try this.
					// Scroll down with the logging.
					//$('body').stop(true).animate({scrollTop: $(log).height()});
					// Now, make sure the received data
					// matches exactly the data we EXPECT
					if(("Hello world, "+key+"!") === data){
						// if it does, we can "check off" record
						// Bump the total number of verified items and update the UI.
						if(check[key]){ num += 1 }
						// from our verify todo list.
						check[key] = 0;
						report.text(num +" / "+ total +" Verified");
					}
					// This next part is important:
					if(Gun.obj.map(check, function(still){
						// IF THERE ARE ANY RECORDS STILL LEFT TO BE VERIFIED
						if(still){ return true }
					})){ return } // return, PREVENTING the test from being finished.
					// IF HOWEVER, every single message
					// that we EXPECTED to see
					// has now been seen
					// then THIS ONE BROWSER PEER (of many peers)
					// is finally done.
					test.done();
				});
				// But we have to actually tell the browser to save data!
github SocialXNetwork / socialx_react_native / packages / api-data / src / __testHelpers / mockApi.ts View on Github external
export const dataApiFactory = (accountMock: IAccountMock) => {
	const time = () => new Date(Gun.state());

	const rootGun: IGunInstance = new Gun({
		localStorage: false,
		radix: true,
	});

	const gun = rootGun.get('test');

	// const account = gun.user();
	const account: IGunAccountInstance = {
		create(
			username: string,
			password: string,
			callback?: (data: { wait?: boolean; err?: string; ok?: number; pub: string }) => void,
		) {
			return this;
		},
		auth(
github SocialXNetwork / socialx_react_native / packages / api-data / src / extensions / docload.ts View on Github external
return this.once((obj: object = {}, key: string) => {
		// if null or undefined (but shouldnt be able to be that, right ?).. skip it if opt allows
		if (obj === null) {
			return;
		}

		const { _: obSoul, ...obRest } = Gun.obj.copy(obj);
		obj = obRest;

		// next objects to dig into
		const queue: any = {};
		// current doc (passed on the callback)
		let doc: object;
		// flag
		let done: boolean;

		// get deeper into the reference soul
		const expand = (newObj: object | any = {}) => {
			const { _: newObSoul, ...o } = newObj;
			// console.log("que", queue);
			// if doc is null assign the current object to the doc
			if (!doc) {
				doc = o;
github d3x0r / gun-db / index.js View on Github external
//process.on( "warning", (warning)=>{console.trace( "WARNING:", warning ); } );
//process.on( "error", (warning)=>{console.trace( "ERROR PROCESS:", warning ); } );
//process.on( "exit", (warning)=>{console.trace( "EXIT:", warning ); } );

const Gun = require('gun/gun');
const vfs = require("sack.vfs");

var _debug_counter = 0;
var __debug_counter = 0;
var _debug_tick = Date.now();
const _debug = false;

const rel_ = Gun.val.rel._;  // '#'
const val_ = Gun.obj.has._;  // '.'
const node_ = Gun.node._;  // '_'
const state_ = Gun.state._;// '>';
const soul_ = Gun.node.soul._;// '#';

const ACK_ = '@';
const SEQ_ = '#';

Gun.on('opt', function(ctx){
	this.to.next(ctx);
	if(ctx.once){ return }
	var opt = ctx.opt.db || (ctx.opt.db = {});
	//opt.file = opt.file || ('file:gun.db?nolock=1');
	opt.file = opt.file || ('gun.db');
	var client = vfs.Sqlite(opt.file);
	var gun = ctx.gun;
github lmangani / gun-cassandra / index.js View on Github external
//process.on( "warning", (warning)=>{console.trace( "WARNING:", warning ); } );
//process.on( "error", (warning)=>{console.trace( "ERROR PROCESS:", warning ); } );
//process.on( "exit", (warning)=>{console.trace( "EXIT:", warning ); } );

const Gun = require('gun/gun');

var _debug_counter = 0;
var __debug_counter = 0;
var _debug_tick = Date.now();
const _debug = false;

const rel_ = Gun.val.rel._; // '#'
const val_ = Gun._.field; // '.'
const node_ = Gun.node._; // '_'
const state_ = Gun.state._; // '>';

var qb;

const ACK_ = '@';
const SEQ_ = '#';

Gun.on('opt', function(ctx) {

    var goNext = function(){
	    this.to.next(ctx);
	    if (ctx.once) {
	        return;
	    }
github amark / gun / lib / time.js View on Github external
if(data instanceof Function){
			return travel(data, a, b, this);
		}
		var gun = this, root = gun.back(-1);
		var cb = (a instanceof Function && a) || (b instanceof Function && b);
		if(Gun.is(data)){
			data.get(function(soul){
				if(!soul){
					return cb && cb({err: "Timegraph cannot link `undefined`!"});
				}
				gun.time(Gun.val.link.ify(soul), a, b);
			}, true);
			return gun;
		}
		opt = (cb === a)? b : a;
		opt = Gun.text.is(opt)? {key: opt} : opt || {};
		var t = new Date(Gun.state()).toISOString().split(/[\-t\:\.z]/ig);
		var p, tmp = t.pop();
		gun.get(function(soul){
			var id = soul;
			p = id;
			if(!p){ id = p = (gun.back('opt.uuid') || Gun.text.random)(9) }
			// could shrink this into a loop. Do later?
			t = [p].concat(t);
			var rid = opt.key || (gun.back('opt.uuid') || Gun.text.random)(9);
			var milli = ify({}, t.join(':'));
			milli[rid] = data;
			tmp = t.pop();
			var sec = ify({}, t.join(':'));
			sec[tmp] = milli;
			tmp = t.pop();
			var min = ify({}, t.join(':'));
github lmangani / gun-cassandra / index.js View on Github external
//process.on( "warning", (warning)=>{console.trace( "WARNING:", warning ); } );
//process.on( "error", (warning)=>{console.trace( "ERROR PROCESS:", warning ); } );
//process.on( "exit", (warning)=>{console.trace( "EXIT:", warning ); } );

const Gun = require('gun/gun');

var _debug_counter = 0;
var __debug_counter = 0;
var _debug_tick = Date.now();
const _debug = false;

const rel_ = Gun.val.rel._; // '#'
const val_ = Gun._.field; // '.'
const node_ = Gun.node._; // '_'
const state_ = Gun.state._; // '>';

var qb;

const ACK_ = '@';
const SEQ_ = '#';

Gun.on('opt', function(ctx) {

    var goNext = function(){
	    this.to.next(ctx);
	    if (ctx.once) {
	        return;
	    }
    }.bind(this);

gun

A realtime, decentralized, offline-first, graph data synchronization engine.

(Zlib OR MIT OR Apache-2.0)
Latest version published 29 days ago

Package Health Score

83 / 100
Full package analysis