Go-indexeddb - This expirement will attempt to implement IndexedDB features for Go

go-indexeddb

This expirement will attempt to implement IndexedDB features for Go. It wraps goleveldb similar to how Chrome's implementation utilizes LevelDB under the hood.

Structure

Key Value
["core"] database definition
["core", "store", <store>] store spec
["core", "index", <index>] index spec
["data", <store>, <id>] data record
["idx", <index>, <key>] index record (unique)
["idx", <index>, <key>, <id>] index record
  • <store> (string) Name of the Store
  • <index> (string) Name of the Index
  • <id> (string, float, bool, nil, slice) unique identifier for a document
  • <key> (string, float, bool, nil, slice) index key

Roadmap

Implement the API as described by MDN and defined by W3C.

cloneable

As per the spec, objects to be stored should be supported by the structured clone algorithm. Currently using Go's json marshalling.

synchronicity

One obvious differentiator between Go and Javascript would be the need to make the library asynchronous. In Go it is pretty easy to make sync libraries work async, so should be up to the user. However if there is enough demand async wrappers could be added.

storage limits

Browser storage limits and eviction criteria are beyond the scope of this project. At least initially.

Similar Resources

An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

Grafana Complementary Operator A grafana which complements grafana-operator for custom features which are not feasible to be merged into core operator

Aug 16, 2022

others implement usefuls stuff in their free time. I implement an eventstore framework

Eventstore eventstore is a library where I try out new stuff related to an eventstore as a single point of truth. At the moment I'm writing this it's

Nov 10, 2022

There is a certain amount of work to be done before you can implement the features of your Go powered CLI app

go-project-template-cli There is a certain amount of work to be done before you can implement the features of your Go powered CLI app. A few of those

Jan 23, 2022

SLOs, Error windows and alerts are complicated. Here an attempt to make it easy

slo-computer SLOs, Error windows and alerts are complicated. Here's an attempt to make it easy SLO, burn_rate, error_rate, budget_spend are convoluted

Dec 30, 2022

An attempt to make a cli for dev.to in Go

An attempt to make a cli for dev.to in Go

Devto a cli for dev.to This is a work in progress so don't a expect a full support for Dev API(beta). Table of contents Devto a cli for dev.to Table o

Mar 13, 2022

A Go-flavored attempt to reimplement the git-crypt algorithm in native Go

Golang port of git-crypt functionality

Dec 24, 2022

An attempt to manage session and prevent ddos attack

This is an attempt to manage the session and prevent ddos attack. A session_id is an int64, inscrease by 1 when issue a new session. Server has a tabl

Jan 10, 2022

Simple attempt at making a program to Brute Force Gift codes for Roberts Space Industries AKA Star Citizen.

Simple attempt at making a program to Brute Force Gift codes for Roberts Space Industries AKA Star Citizen.

Roberts Space Industries: Gift Generator Simple attempt at making a program to Brute Force Gift codes for Roberts Space Industries AKA Star Citizen. I

Nov 2, 2021

Attempt to plot light sensor data from lunarsensor.

Attempt to plot light sensor data from lunarsensor.

lightsensor Attempt to plot light sensor data from lunarsensor. Buy the components, install firmware on Ambient Light Sensor. Build the go app that po

Nov 10, 2022

Gones - An attempt to program a NES emulator

Gones - An attempt to program a NES emulator The following resources were used for the project: The great work on wiki.nesdev.org R650X and R651X Data

Jan 10, 2022

This app is an attempt towards using go lang with graphql data fetch in react front end.

go_movies _A React js + GraphQL supported with backend in GoLang. This app is an attempt towards using go lang with graphql data fetch in react front

Dec 7, 2021

First attempt to trace a shell script with Datadog's go tracer

First attempt to trace a shell script with Datadog's go tracer

dd-trace-shell First attempt to trace a shell script with Datadog's go tracer. W

Dec 17, 2021

Attempt at rewriting ltv in golang

Attempt at rewriting ltv in golang

ltv-go my attempt at rewriting ltv in go. Install and Usage Download binaries fo

May 5, 2022

Email-searcher - Given a domain name and real name, attempt to find an existing email for that user.

email-searcher Given a domain name and real name, attempt to find an existing email for that user. Using Run it with both the domain and name flags, l

Jan 2, 2022

An attempt to clone the mechanics from the game Majesty.

An attempt to clone the mechanics from the game Majesty. Basically, an indirect control kingdom building simulation.

Jan 4, 2022

Go implementation of a vanity attempt to generate Bitcoin private keys and subsequently checking whether the corresponding Bitcoin address has a non-zero balance.

vanity-BTC-miner Go implementation of a vanity attempt to generate Bitcoin private keys and subsequently checking whether the corresponding Bitcoin ad

Jun 3, 2022

Caps - Attempt at making computer generated pixel art from bottle caps

Caps - Attempt at making computer generated pixel art from bottle caps

I started sorting the caps and realised that there are significantly more Alexan

Mar 9, 2022

A (attempt to create a) multiversion gophertunnel proxy to join the latest MC version without renderdragon

draco a multiversion gophertunnel proxy to join the latest MC version without renderdragon Purpose mojang can't seem to actually make a good update to

Dec 15, 2022

Permits a Go application to implement subcommands support similar to what is supported by the 'go' tool.

subcommands golang library This package permits a Go application to implement subcommands support similar to what is supported by the 'go' tool. The l

Jul 28, 2022
Comments
  • web also ?

    web also ?

    I heard about this on reddit at https://www.reddit.com/r/golang/comments/si3m9l/an_indexeddb_clone_in_pure_go/

    Can you let me know if the intent is to also support web, like https://github.com/hack-pad/hackpadfs..

    there is also this for web: https://github.com/paralin/go-indexeddb

Using Go to implement CobaltStrike's Beacon
Using Go to implement CobaltStrike's Beacon

Geacon 本项目仅限于安全研究和教学,严禁用于非法用途! Usage 修改core/config.go中的配置信息 设置平台和架构set "GOOS=linux" && set "GOARCH=amd64" 编译生成go build -ldflags="-s -w" main.go Screen

Nov 15, 2022
Go implement for Genshin Gacha Export

README Build on Windows 执行命令 env GOOS=windows GOARCH=amd64 go build 测试在 windows 11 上通过 使用 确保在原神游戏中打开一次祈愿记录. 然后双击运行 GenshinGachaExport.exe. 它将会在当前目录下生成

Apr 6, 2022
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism

___ werf is an Open Source CLI tool written in Go, designed to simplify and speed up the delivery of applications. To use it, you need to describe the

Jan 4, 2023
Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.
Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.

Edge Orchestration Introduction The main purpose of Edge Orchestration project is to implement distributed computing between Docker Container enabled

Dec 17, 2021
Code generator to help implement the visitor pattern.

mkvisitor Given package example type ( Node struct{} Leaf struct{} ) run mkvisitor -type "Node,Leaf" then generate package example import "fmt" t

Oct 6, 2021
TiDB Mesh: Implement Multi-Tenant Keyspace by Decorating Message between Components
TiDB Mesh: Implement Multi-Tenant Keyspace by Decorating Message between Components

TiDB Mesh: Implement Multi-Tenant Keyspace by Decorating Message between Compone

Jan 11, 2022
easyssh-proxy provides a simple implementation of some SSH protocol features in Go

easyssh-proxy easyssh-proxy provides a simple implementation of some SSH protocol features in Go. Feature This project is forked from easyssh but add

Dec 30, 2022
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Jan 2, 2023
Act is a task runner and supervisor with some great features like act name matching, subacts, etc. We use this in nosebit workspaces.

Act Act is a task runner and supervisor tool written in Go which aims to provide the following features: process supervision in a project level allow

May 8, 2022
Raspberry Pi Archlinux Automated Offline Installer with Wi-Fi. Windows, Mac and more features coming.
Raspberry Pi Archlinux Automated Offline Installer with Wi-Fi. Windows, Mac and more features coming.

Raspberry Pi Archlinux Automated Installer with Wi-Fi. Windows, Mac and more features coming. Download Go to releases page and download the zip file f

Nov 22, 2022