Documentation
¶
Overview ¶
Package plugin provides an explicit, application-owned plugin host for companion packages and example integrations.
The package is a supported companion API. It does not grant privileged runtime access, and it does not replace the internal framework-owned plugin kernel used for deep devtools and service interposition. Companion plugins remain app-owned integrations over a Host instance.
Index ¶
- type BootstrapPayload
- type BootstrapProvider
- type CacheKeyDecorator
- type Capability
- type CleanupFunc
- type DefineFunc
- type DevtoolsAction
- type DevtoolsActionContext
- type DevtoolsActionProvider
- type DevtoolsSection
- type DevtoolsSectionProvider
- type FormSubmission
- type FormValidator
- type GuardDecision
- type GuardOutcome
- type HeadProvider
- type Host
- func (parseHost *Host) AddBootstrapProvider(parseProvider BootstrapProvider) error
- func (parseHost *Host) AddCacheKeyDecorator(parseDecorator CacheKeyDecorator) error
- func (parseHost *Host) AddDevtoolsActionProvider(parseProvider DevtoolsActionProvider) error
- func (parseHost *Host) AddDevtoolsSectionProvider(parseProvider DevtoolsSectionProvider) error
- func (parseHost *Host) AddFormValidator(parseValidator FormValidator) error
- func (parseHost *Host) AddHeadProvider(parseProvider HeadProvider) error
- func (parseHost *Host) AddNavigationObserver(parseObserver NavigationObserver) error
- func (parseHost *Host) AddPanelProvider(parseProvider PanelProvider) error
- func (parseHost *Host) AddRequestObserver(parseObserver RequestObserver) error
- func (parseHost *Host) AddRouteGuard(parseGuard RouteGuard) error
- func (parseHost *Host) AddSubmitObserver(parseObserver SubmitObserver) error
- func (parseHost *Host) BootstrapData() map[string]map[string]any
- func (parseHost *Host) Capabilities() []Capability
- func (parseHost *Host) Close() error
- func (parseHost *Host) DecorateCacheKey(parseKey string) string
- func (parseHost *Host) DevtoolsActions() []DevtoolsAction
- func (parseHost *Host) DevtoolsSections() []DevtoolsSection
- func (parseHost *Host) EvaluateRoute(parseRequest RouteRequest) GuardDecision
- func (parseHost *Host) HeadNodes() []ui.Node
- func (parseHost *Host) NotifyNavigation(parseEvent NavigationEvent)
- func (parseHost *Host) NotifyRequest(parseEvent RequestEvent)
- func (parseHost *Host) NotifySubmit(parseSubmission FormSubmission)
- func (parseHost *Host) Panels() []Panel
- func (parseHost *Host) Plugins() []Manifest
- func (parseHost *Host) Register(parsePlugin Plugin) error
- func (parseHost *Host) SetValue(parseKey string, parseValue any)
- func (parseHost *Host) ValidateForm(parseSubmission FormSubmission) []ValidationIssue
- func (parseHost *Host) Value(parseKey string) (any, bool)
- type HostOptions
- type Manifest
- type NavigationEvent
- type NavigationObserver
- type Panel
- type PanelProvider
- type Plugin
- type RequestEvent
- type RequestObserver
- type RouteGuard
- type RouteRequest
- type SubmitObserver
- type Tier
- type ValidationIssue
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BootstrapPayload ¶
type BootstrapProvider ¶
type BootstrapProvider func() BootstrapPayload
type CacheKeyDecorator ¶
type Capability ¶
type Capability string
const ( CapabilityRouter Capability = "router" CapabilityAsyncData Capability = "async-data" CapabilityDevtools Capability = "devtools" CapabilitySSR Capability = "ssr" CapabilityForms Capability = "forms" )
type CleanupFunc ¶
type CleanupFunc func() error
type DefineFunc ¶
type DefineFunc func(*Host) (CleanupFunc, error)
type DevtoolsAction ¶
type DevtoolsAction struct {
Label string
MatchCodes []string
MatchSources []string
Run func(DevtoolsActionContext)
}
type DevtoolsActionContext ¶
type DevtoolsActionProvider ¶
type DevtoolsActionProvider func() []DevtoolsAction
type DevtoolsSection ¶
type DevtoolsSectionProvider ¶
type DevtoolsSectionProvider func() DevtoolsSection
type FormSubmission ¶
type FormValidator ¶
type FormValidator func(FormSubmission) []ValidationIssue
type GuardDecision ¶
type GuardDecision struct {
Outcome GuardOutcome
Reason string
Redirect string
}
func Allow ¶
func Allow(parseReason string) GuardDecision
Allow creates a GuardDecision that permits navigation with an optional reason.
func Block ¶
func Block(parseReason string) GuardDecision
Block creates a GuardDecision that blocks navigation with a reason.
func Redirect ¶
func Redirect(parsePath, parseReason string) GuardDecision
Redirect creates a GuardDecision that redirects navigation to the given path.
type GuardOutcome ¶
type GuardOutcome string
const ( GuardAllow GuardOutcome = "allow" GuardBlock GuardOutcome = "block" GuardRedirect GuardOutcome = "redirect" )
type HeadProvider ¶
type Host ¶
type Host struct {
// contains filtered or unexported fields
}
func NewHost ¶
func NewHost(parseOptions HostOptions) *Host
NewHost creates a Host with the given capabilities configuration.
func (*Host) AddBootstrapProvider ¶
func (parseHost *Host) AddBootstrapProvider(parseProvider BootstrapProvider) error
AddBootstrapProvider registers a provider that contributes SSR bootstrap data.
func (*Host) AddCacheKeyDecorator ¶
func (parseHost *Host) AddCacheKeyDecorator(parseDecorator CacheKeyDecorator) error
AddCacheKeyDecorator registers a function that transforms fetch cache keys.
func (*Host) AddDevtoolsActionProvider ¶
func (parseHost *Host) AddDevtoolsActionProvider(parseProvider DevtoolsActionProvider) error
AddDevtoolsActionProvider registers a provider that contributes one or more error-overlay recovery actions.
func (*Host) AddDevtoolsSectionProvider ¶
func (parseHost *Host) AddDevtoolsSectionProvider(parseProvider DevtoolsSectionProvider) error
AddDevtoolsSectionProvider registers a provider that contributes one devtools extension section.
func (*Host) AddFormValidator ¶
func (parseHost *Host) AddFormValidator(parseValidator FormValidator) error
AddFormValidator registers a function that validates form submissions.
func (*Host) AddHeadProvider ¶
func (parseHost *Host) AddHeadProvider(parseProvider HeadProvider) error
AddHeadProvider registers a provider that contributes ui.Node elements to the document head.
func (*Host) AddNavigationObserver ¶
func (parseHost *Host) AddNavigationObserver(parseObserver NavigationObserver) error
AddNavigationObserver registers a callback invoked after each navigation event.
func (*Host) AddPanelProvider ¶
func (parseHost *Host) AddPanelProvider(parseProvider PanelProvider) error
AddPanelProvider registers a devtools panel provider that returns panel metadata.
func (*Host) AddRequestObserver ¶
func (parseHost *Host) AddRequestObserver(parseObserver RequestObserver) error
AddRequestObserver registers a callback invoked for fetch request lifecycle events.
func (*Host) AddRouteGuard ¶
func (parseHost *Host) AddRouteGuard(parseGuard RouteGuard) error
AddRouteGuard registers a route guard evaluated before navigation decisions.
func (*Host) AddSubmitObserver ¶
func (parseHost *Host) AddSubmitObserver(parseObserver SubmitObserver) error
AddSubmitObserver registers a callback invoked after each form submission.
func (*Host) BootstrapData ¶
BootstrapData collects and merges bootstrap payloads from all registered providers.
func (*Host) Capabilities ¶
func (parseHost *Host) Capabilities() []Capability
Capabilities returns the sorted list of capabilities the host was configured with.
func (*Host) DecorateCacheKey ¶
DecorateCacheKey applies all registered cache-key decorators in order and returns the result.
func (*Host) DevtoolsActions ¶
func (parseHost *Host) DevtoolsActions() []DevtoolsAction
DevtoolsActions collects and returns all valid devtools recovery actions from registered providers.
func (*Host) DevtoolsSections ¶
func (parseHost *Host) DevtoolsSections() []DevtoolsSection
DevtoolsSections collects and returns all valid devtools extension sections from registered providers.
func (*Host) EvaluateRoute ¶
func (parseHost *Host) EvaluateRoute(parseRequest RouteRequest) GuardDecision
EvaluateRoute runs all registered route guards and returns the first non-allow decision.
func (*Host) HeadNodes ¶
HeadNodes collects and returns all head nodes from registered head providers.
func (*Host) NotifyNavigation ¶
func (parseHost *Host) NotifyNavigation(parseEvent NavigationEvent)
NotifyNavigation delivers a navigation event to all registered observers.
func (*Host) NotifyRequest ¶
func (parseHost *Host) NotifyRequest(parseEvent RequestEvent)
NotifyRequest delivers a request event to all registered request observers.
func (*Host) NotifySubmit ¶
func (parseHost *Host) NotifySubmit(parseSubmission FormSubmission)
NotifySubmit delivers a form submission event to all registered submit observers.
func (*Host) Register ¶
Register installs a plugin on the host after validating its manifest and capabilities.
func (*Host) ValidateForm ¶
func (parseHost *Host) ValidateForm(parseSubmission FormSubmission) []ValidationIssue
ValidateForm runs all registered form validators and returns the combined issues.
type HostOptions ¶
type HostOptions struct {
Capabilities []Capability
}
type Manifest ¶
type Manifest struct {
ID string
Version string
Description string
Tier Tier
Requires []Capability
}
type NavigationEvent ¶
type NavigationEvent struct {
}
type NavigationObserver ¶
type NavigationObserver func(NavigationEvent)
type PanelProvider ¶
type PanelProvider func() Panel
type Plugin ¶
type Plugin interface {
Manifest() Manifest
Setup(*Host) (CleanupFunc, error)
}
func Define ¶
func Define(parseManifest Manifest, parseSetup DefineFunc) Plugin
Define creates a Plugin from a manifest and a setup function.
type RequestEvent ¶
type RequestObserver ¶
type RequestObserver func(RequestEvent)
type RouteGuard ¶
type RouteGuard func(RouteRequest) GuardDecision
type RouteRequest ¶
type SubmitObserver ¶
type SubmitObserver func(FormSubmission)
type ValidationIssue ¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package conformance provides a Plugin API conformance suite that third-party plugin authors can run against their plugin to prove it meets the host contract defined by the plugin package.
|
Package conformance provides a Plugin API conformance suite that third-party plugin authors can run against their plugin to prove it meets the host contract defined by the plugin package. |