Add sha1 and crypto stub

pull/1/head
Tyler Sommer 4 years ago
parent 2830953d52
commit 89fac8b64c
Signed by: tyler-sommer
GPG Key ID: C09C010500DBD008

@ -0,0 +1,39 @@
package main
import "code.dopame.me/veonik/squircy3/vm"
var crypto = &vm.Module{
Name: "crypto",
Main: "index",
Body: `
import {Buffer} from 'buffer';
class Sha1 {
constructor() {
this.data = Buffer.alloc(0);
}
update(data) {
this.data.write(data);
return this;
}
digest(kind) {
switch(kind) {
case 'hex':
return sha1.Sum(this.data.toString());
default:
throw new Error('unsupported digest format: '+kind);
}
}
}
export const createHash = (kind) => {
switch(kind) {
case 'sha1':
return new Sha1();
default:
throw new Error('unsupported hash algo: '+kind);
}
};`,
}

@ -1,6 +1,7 @@
package main // import "code.dopame.me/veonik/squircy3/plugins/node_compat"
import (
"crypto/sha1"
"fmt"
"github.com/dop251/goja"
@ -25,6 +26,7 @@ func Initialize(m *plugin.Manager) (plugin.Plugin, error) {
}
vmp.SetModule(eventEmitter)
vmp.SetModule(childProcess)
vmp.SetModule(crypto)
return &nodeCompatPlugin{}, nil
}
@ -41,6 +43,15 @@ func (p *nodeCompatPlugin) HandleRuntimeInit(r *goja.Runtime) {
logrus.Warnf("%s: error initializing runtime: %s", pluginName, err)
}
r.Set("exec", v)
v = r.NewObject()
if err := v.Set("Sum", func(b []byte) (string, error) {
return fmt.Sprintf("%x", sha1.Sum(b)), nil
}); err != nil {
logrus.Warnf("%s: error initializing runtime: %s", pluginName, err)
}
r.Set("sha1", v)
_, err := r.RunString(`this.global = this.global || this;
require('core-js-bundle');
this.process = this.process || require('process/browser');

@ -4,40 +4,12 @@ import (
log "github.com/sirupsen/logrus"
)
func NewDatabaseConnection(rootPath string, l *log.Logger) (database *DB) {
func NewDatabaseConnection(rootPath string, l *log.Logger) *DB {
dir := rootPath
database, err := OpenDB(dir, l)
if err != nil {
panic(err)
}
initDatabase(database)
return
}
func initDatabase(database *DB) {
col := database.Use("Settings")
if col == nil {
err := database.Create("Settings")
if err != nil {
panic(err)
}
}
col = database.Use("Scripts")
if col == nil {
err := database.Create("Scripts")
if err != nil {
panic(err)
}
}
col = database.Use("Webhooks")
if col == nil {
err := database.Create("Webhooks")
if err != nil {
panic(err)
}
}
return database
}

@ -25,14 +25,6 @@ func NewGenericRepository(database *DB, coll string) *GenericRepository {
return &GenericRepository{database, coll}
}
func hydrateGeneric(rawGeneric map[string]interface{}) GenericModel {
return GenericModel(rawGeneric)
}
func flattenGeneric(generic GenericModel) map[string]interface{} {
return map[string]interface{}(generic)
}
func (repo *GenericRepository) FetchAll() []GenericModel {
col := repo.database.Use(repo.coll)
generics := make([]GenericModel, 0)
@ -44,7 +36,7 @@ func (repo *GenericRepository) FetchAll() []GenericModel {
if err := json.Unmarshal(doc, &val); err != nil {
repo.database.logger.Warnln("failed to unmarshal json data:", err)
}
generic := hydrateGeneric(val)
generic := GenericModel(val)
generic["ID"] = id
generics = append(generics, generic)
@ -62,7 +54,7 @@ func (repo *GenericRepository) Fetch(id int) GenericModel {
if err != nil {
panic(err)
}
generic := hydrateGeneric(rawGeneric)
generic := GenericModel(rawGeneric)
generic["ID"] = id
return generic
@ -70,17 +62,15 @@ func (repo *GenericRepository) Fetch(id int) GenericModel {
func (repo *GenericRepository) Save(generic GenericModel) {
col := repo.database.Use(repo.coll)
data := flattenGeneric(generic)
if _, ok := generic["ID"]; !ok {
id, err := col.Insert(data)
id, err := col.Insert(generic)
generic["ID"] = id
if err != nil {
repo.database.logger.Warnln("failed to insert model data:", err)
}
} else {
err := col.Update(generic["ID"].(int), data)
err := col.Update(generic["ID"].(int), generic)
if err != nil {
repo.database.logger.Warnln("failed to update model data: ", err)
}

@ -60,6 +60,7 @@ func (r *Registry) Enable(runtime *goja.Runtime) {
func (r *Registry) SetModule(module *Module) {
module.registry = r
module.root = r.main.root
r.modules[module.Name] = module
}

Loading…
Cancel
Save