package module import ( "context" "forge.cadoles.com/arcad/edge/pkg/app" "github.com/dop251/goja" "gitlab.com/wpetit/goweb/logger" ) type LifecycleModule struct{} func (m *LifecycleModule) Name() string { return "lifecycle" } func (m *LifecycleModule) Export(export *goja.Object) { } func (m *LifecycleModule) OnInit(ctx context.Context, rt *goja.Runtime) (err error) { call, ok := goja.AssertFunction(rt.Get("onInit")) if !ok { logger.Warn(ctx, "could not find onInit() function") return nil } defer func() { recovered := recover() if recovered == nil { return } recoveredErr, ok := recovered.(error) if !ok { panic(recovered) } err = recoveredErr }() call(nil, rt.ToValue(ctx)) return nil } func LifecycleModuleFactory() app.ServerModuleFactory { return func(server *app.Server) app.ServerModule { module := &LifecycleModule{} return module } } var _ app.InitializableModule = &LifecycleModule{}