// Code generated by ndpgen. DO NOT EDIT. // // This file contains export wrappers for the Lifecycle capability. // It is intended for use in Navidrome plugins built with TinyGo. // //go:build wasip1 package lifecycle import ( "github.com/navidrome/navidrome/plugins/pdk/go/pdk" ) // Lifecycle is the marker interface for lifecycle plugins. // Implement one or more of the provider interfaces below. // Lifecycle provides plugin lifecycle hooks. // This capability allows plugins to perform initialization when loaded, // such as establishing connections, starting background processes, or // validating configuration. // // The OnInit function is called once when the plugin is loaded, and is NOT // called when the plugin is hot-reloaded. Plugins should not assume this // function will be called on every startup. type Lifecycle interface{} // InitProvider provides the OnInit function. type InitProvider interface { OnInit() error } // Internal implementation holders var ( initImpl func() error ) // Register registers a lifecycle implementation. // The implementation is checked for optional provider interfaces. func Register(impl Lifecycle) { if p, ok := impl.(InitProvider); ok { initImpl = p.OnInit } } // NotImplementedCode is the standard return code for unimplemented functions. // The host recognizes this and skips the plugin gracefully. const NotImplementedCode int32 = -2 //go:wasmexport nd_on_init func _NdOnInit() int32 { if initImpl == nil { // Return standard code - host will skip this plugin gracefully return NotImplementedCode } if err := initImpl(); err != nil { pdk.SetError(err) return -1 } return 0 }