45 lines
850 B
Go
45 lines
850 B
Go
package module
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
|
|
"gitlab.com/wpetit/goweb/logger"
|
|
|
|
"forge.cadoles.com/arcad/edge/pkg/app"
|
|
"github.com/dop251/goja"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
type ConsoleModule struct{}
|
|
|
|
func (m *ConsoleModule) Name() string {
|
|
return "console"
|
|
}
|
|
|
|
func (m *ConsoleModule) log(call goja.FunctionCall) goja.Value {
|
|
var sb strings.Builder
|
|
|
|
for _, arg := range call.Arguments {
|
|
sb.WriteString(fmt.Sprintf("%+v", arg.Export()))
|
|
sb.WriteString(" ")
|
|
}
|
|
|
|
logger.Debug(context.Background(), sb.String())
|
|
|
|
return nil
|
|
}
|
|
|
|
func (m *ConsoleModule) Export(export *goja.Object) {
|
|
if err := export.Set("log", m.log); err != nil {
|
|
panic(errors.Wrap(err, "could not set 'log' function"))
|
|
}
|
|
}
|
|
|
|
func ConsoleModuleFactory() app.ServerModuleFactory {
|
|
return func(backend *app.Server) app.ServerModule {
|
|
return &ConsoleModule{}
|
|
}
|
|
}
|