feature/dwn database state (#18)

* refactor: move database, navigator scripts to state package

* feat: add Schema config for dwn

* test: add unit tests for InitializeDatabase

* feat: use templated index.html for the DWN frontend

* feat: introduce templ generation for templ

* chore(deps): update devbox.json to use latest packages

* chore: update devbox to use bun

* feat: introduce dwn config generation

* feat: add motr.mjs for vault management

* refactor: move front end from  to  (alert)

* feat: implement devbox integration and devbox-based process management

* feat: embed motr.mjs script for offline demo

* refactor: embed motr.mjs data in embed.go

* chore: update workflows to use actions/checkout@v4

* refactor: move process-compose.yaml to deploy directory

* refactor: remove unnecessary JSON conversion
This commit is contained in:
Prad Nukala
2024-09-21 21:42:51 -04:00
committed by GitHub
parent a115b79db7
commit a4dbb41202
89 changed files with 1257 additions and 968 deletions
+22
View File
@@ -0,0 +1,22 @@
package builder
import "github.com/onsonr/sonr/config/dwn"
type SchemaVersion = int
var CurrentSchemaVersion SchemaVersion = 1
func DefaultSchema() *dwn.Schema {
return &dwn.Schema{
Version: CurrentSchemaVersion,
Account: "++, id, name, address, publicKey, chainCode, index, controller, createdAt",
Asset: "++, id, name, symbol, decimals, chainCode, createdAt",
Chain: "++, id, name, networkId, chainCode, createdAt",
Credential: "++, id, subject, controller, attestationType, origin, label, deviceId, credentialId, publicKey, transport, signCount, userPresent, userVerified, backupEligible, backupState, cloneWarning, createdAt, updatedAt",
Jwk: "++, kty, crv, x, y, n, e",
Grant: "++, subject, controller, origin, token, scopes, createdAt, updatedAt",
Keyshare: "++, id, data, role, createdAt, lastRefreshed",
PublicKey: "++, role, algorithm, encoding, curve, key_type, raw, jwk",
Profile: "++, id, subject, controller, originUri, publicMetadata, privateMetadata, createdAt, updatedAt",
}
}
+53
View File
@@ -0,0 +1,53 @@
package builder
import (
"github.com/cosmos/cosmos-sdk/types/bech32"
"github.com/ipfs/boxo/files"
"github.com/onsonr/crypto/mpc"
"github.com/onsonr/sonr/pkg/vault"
)
type Vault struct {
FS files.Node
ValKs mpc.Share
}
func NewVault(subject string, origin string, chainID string) (*Vault, error) {
shares, err := mpc.GenerateKeyshares()
var (
valKs = shares[0]
usrKs = shares[1]
)
usrKsJSON, err := usrKs.Marshal()
if err != nil {
return nil, err
}
sonrAddr, err := bech32.ConvertAndEncode("idx", valKs.GetPublicKey())
if err != nil {
return nil, err
}
cnfg := vault.NewConfig(usrKsJSON, sonrAddr, chainID, DefaultSchema())
cnfgFile, err := vault.MarshalConfigFile(cnfg)
if err != nil {
return nil, err
}
idxFile, err := vault.IndexHTMLFile(cnfg)
if err != nil {
return nil, err
}
fileMap := map[string]files.Node{
"config.json": cnfgFile,
"motr.mjs": vault.MotrMJSFile(),
"sw.js": vault.SWJSFile(),
"app.wasm": vault.DWNWasmFile(),
"index.html": idxFile,
}
return &Vault{
FS: files.NewMapDirectory(fileMap),
ValKs: valKs,
}, nil
}