Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
208 changes: 124 additions & 84 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,151 +1,191 @@
# Firegun

- [Firegun](#firegun)
- [Why the Name?](#why-the-name)
- [What is it ?](#what-is-it-)
- [Quickstart](#quickstart)
- [Installation](#installation)
- [Include the module](#include-the-module)
- [Initialization](#initialization)
- [Do](#do)
- [Installation](#installation)
- [Include the module](#include-the-module)
- [Initialization](#initialization)
- [Do](#do)
- [API Reference](#api-reference)
- [Public Space](#public-space)
- [Get](#get)
- [Load](#load)
- [Put](#put)
- [Userspace](#userspace)
- [Create new User (it logged them in automatically)](#create-new-user-it-logged-them-in-automatically)
- [Login User](#login-user)
- [Logout User](#logout-user)
- [Get Data from User Space](#get-data-from-user-space)
- [Get Data from User Space](#get-data-from-user-space-1)
- [Put Data to User Space](#put-data-to-user-space)
- [SEASpace](#seaspace)
- [Put Permanent Readonly Content](#put-permanent-readonly-content)
- [Generate KeyPair](#generate-keypair)
- [Login to Userspace with KeyPair](#login-to-userspace-with-keypair)
- [Public Space](#public-space)
- [Get](#get)
- [Load](#load)
- [Put](#put)
- [Userspace](#userspace)
- [Create new User (it logged them in automatically)](#create-new-user-it-logged-them-in-automatically)
- [Login User](#login-user)
- [Logout User](#logout-user)
- [Get Data from User Space](#get-data-from-user-space)
- [Get Data from User Space](#get-data-from-user-space-1)
- [Put Data to User Space](#put-data-to-user-space)
- [SEASpace](#seaspace)
- [Put Permanent Readonly Content](#put-permanent-readonly-content)
- [Generate KeyPair](#generate-keypair)
- [Login to Userspace with KeyPair](#login-to-userspace-with-keypair)

# 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
```

```sh
npm i gun @yokowasis/firegun
```

## Include the module
```
import { Firegun } from '@yokowasis/firegun'

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

## Initialization

```ts
const fg = new Firegun();
```
let fg = new Firegun();
```

## Do
```
var data = {
"Hello" : "World"
}

//Put Some Data
let success = await fg.Put("data/dummy",data);
```ts
const data = {
Hello: "World"
};

// Put some data
const success = await fg.Put("data/dummy", data);

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

# API Reference

## Public Space

### Get

```ts
const data = await fg.Get("path/to/the/things");
```
let data = await fg.Get("path/to/the/things")
```

### Load

```ts
// Load multi-nested data
const data = await fg.Load("path/to/the/things");
```
// 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"

```ts
const 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)

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

### Login User

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

### Logout User

```ts
await fg.userLogout();
console.log(fg.user);
```
await fg.userLogout ()
console.log (fg.user)
```

### Get Data from User Space

```ts
const data = await fg.userGet("mydata");
```
let data = await fg.userGet ("mydata")
```

### Get Data from User Space

```ts
// Load multi-nested data
const data = await fg.userLoad("mydata");
```
//Load Multi Nested Data
let data = await fg.userLoad ("mydata")
```

### Put Data to User Space

```ts
const success = await fg.userPut("mydata", {
Hello: "Userspace"
});
```
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",{
### Put Permanent Readonly Content

```ts
// Key must Begin with "#"
const success = fg.addContentAdressing("#permanentStuff", {
"Hello" : "Can't Touch Me"
})
});

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

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

//Try to change it
let success = await fg.Put("#permanentStuff",{
"New" : "entry"
})
//will fail
// 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.

```ts
const keyPair = await fg.generatePair();
```
let keyPair = await fg.generatePair();
```

### Login to Userspace with KeyPair
```
await fg.loginPair (keyPair);
console.log (fg.user);

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