Skip to content

myriadsocial/firegun

 
 

Repository files navigation

Firegun

Why the Name?

Because it's inspired by fireship youtube video, and I am trying to replace Firestore with GunDB (Decentralized Database)

What is it ?

It's a wrapper for gunDB. gunDB is great, but sometimes the docs is confusing.

Quickstart

Installation

npm i gun @yokowasis/firegun

Include the module

import { Firegun } from '@yokowasis/firegun'
// or
const Fg = require('@yokowasis/firegun');
const Firegun = Fg.Firegun;

Initialization

let fg = new Firegun();

Do

var data = {
    "Hello" : "World"
}

//Put Some Data
let success = await fg.Put("data/dummy",data);

//Retrieve Some Data
let retrieveData = await fg.Get("data/dummy");

API Reference

Public Space

Get

let data = await fg.Get("path/to/the/things")

Load

// Load Multi Nested Data
let data = await fg.Load("path/to/the/things")

Put

let success = await fg.Put("path/to/the/things",{
    "hello" : "world",
    "parent" : {
      "nested" : "data"
    }
})

Userspace

What is it ? It's a space for user. The data written in this way is readonly for the public.

Create new User (it logged them in automatically)

await fg.userNew ("username", "password")
console.log (fg.user)

Login User

await fg.userLogin ("username", "password")
console.log (fg.user)

Logout User

await fg.userLogout ()
console.log (fg.user)

Get Data from User Space

let data = await fg.userGet ("mydata")

Get Data from User Space

//Load Multi Nested Data
let data = await fg.userLoad ("mydata")

Put Data to User Space

let success = await fg.userPut ("mydata",{
    "Hello" : "Userspace"
})

SEASpace

What is it? It's like the UserSpace, but without the username / password

Put Permanent Readonly Content

//Key Must begin with "#"
let success = fg.addContentAdressing("#permanentStuff",{
    "Hello" : "Can't Touch Me"
})

//Try to read it
let data = await fg.Get("#permanentStuff");
for (const key in data) {
  const element = data[key];
  console.log (element);
}

//or using gun.map()
fg.gun.get("#permanentStuff").map().once(element=>{
    console.log (element)
})

//Try to change it
let success = await fg.Put("#permanentStuff",{
    "New"   : "entry"
})
//will fail

Generate KeyPair

What is it for ? it's to create a user without username / password.

let keyPair = await fg.generatePair();

Login to Userspace with KeyPair

await fg.loginPair (keyPair);
console.log (fg.user);

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 74.8%
  • JavaScript 9.4%
  • HTML 8.9%
  • CSS 6.6%
  • Shell 0.3%