Documentation
¶
Index ¶
- Constants
- Variables
- func Batch(handler Handler, configure func(Handler), tags ...any) *promise.Promise[[]any]
- func BatchAsync[T any](handler Handler, configure func(Handler) *promise.Promise[T], tags ...any) *promise.Promise[[]any]
- func BatchTag[T any](handler Handler, configure func(Handler)) *promise.Promise[[]any]
- func BatchTagAsync[T any, E any](handler Handler, configure func(Handler) *promise.Promise[T]) *promise.Promise[[]any]
- func CoerceResult[T any](callback Callback, target *T) (t T, tp *promise.Promise[T], _ error)
- func CoerceResults[T any](callback Callback, target *[]T) (t []T, tp *promise.Promise[[]T], _ error)
- func CoerceSlice(slice reflect.Value, elemTyp reflect.Type) (reflect.Value, bool)
- func Command(handler Handler, callback any, constraints ...any) (pv *promise.Promise[Void], err error)
- func CommandAll(handler Handler, callback any, constraints ...any) (pv *promise.Promise[Void], err error)
- func CompleteResult(callback Callback) (*promise.Promise[Void], error)
- func CompleteResults(callback Callback) (*promise.Promise[Void], error)
- func CopyIndirect(src any, target any)
- func CopySliceIndirect(src []any, target any)
- func Create[T any](handler Handler, constraints ...any) (T, *promise.Promise[T], error)
- func CreateAll[T any](handler Handler, constraints ...any) (t []T, tp *promise.Promise[[]T], err error)
- func CreateKey[T any](handler Handler, key any, constraints ...any) (t T, tp *promise.Promise[T], err error)
- func DynNext(filter Filter, next Next, ctx HandleContext, provider FilterProvider) (out []any, po *promise.Promise[[]any], err error)
- func Execute[T any](handler Handler, callback any, constraints ...any) (t T, tp *promise.Promise[T], err error)
- func ExecuteAll[T any](handler Handler, callback any, constraints ...any) (t []T, tp *promise.Promise[[]T], err error)
- func GetBatch[TB batching](handler Handler, tags ...any) TB
- func GetOptions(handler Handler, target any) bool
- func IsNil(val any) bool
- func IsStruct(val any) bool
- func MakeCaller(fun any) (func(Handler) []reflect.Value, error)
- func Map[T any](handler Handler, source any, constraints ...any) (t T, tp *promise.Promise[T], err error)
- func MapAll[T any](handler Handler, source any, constraints ...any) (t []T, _ *promise.Promise[[]T], _ error)
- func MapInto[T any](handler Handler, source any, target *T, constraints ...any) (tp *promise.Promise[T], err error)
- func MapKey[T any](handler Handler, key any, constraints ...any) (t T, tp *promise.Promise[T], err error)
- func MergeOptions(from, into any) bool
- func Resolve[T any](handler Handler, constraints ...any) (T, *promise.Promise[T], error)
- func ResolveAll[T any](handler Handler, constraints ...any) (t []T, tp *promise.Promise[[]T], err error)
- func ResolveKey[T any](handler Handler, key any, constraints ...any) (t T, tp *promise.Promise[T], err error)
- func TargetSliceValue(target any) reflect.Value
- func TargetValue(target any) reflect.Value
- func TraverseAxis(node Traversing, axis TraversingAxis, visitor TraversalVisitor) error
- func TraverseLevelOrder(node Traversing, visitor TraversalVisitor) error
- func TraversePostOrder(node Traversing, visitor TraversalVisitor) error
- func TraversePreOrder(node Traversing, visitor TraversalVisitor) error
- func TraverseReverseLevelOrder(node Traversing, visitor TraversalVisitor) error
- func TypeOf[T any]() reflect.Type
- func ValueAs[T any](v reflect.Value) (r T)
- type AcceptPromiseResultFunc
- type AcceptResultFunc
- type Batched
- type Binding
- type BindingConstraint
- type BindingGroup
- type BindingMetadata
- func (b *BindingMetadata) Get(key any) (any, bool)
- func (b *BindingMetadata) Has(key any) bool
- func (b *BindingMetadata) IsEmpty() bool
- func (b *BindingMetadata) MergeInto(other *BindingMetadata)
- func (b *BindingMetadata) Name() string
- func (b *BindingMetadata) Set(key any, val any)
- func (b *BindingMetadata) SetName(name string)
- type BindingReducer
- type BindingScope
- type BivariantPolicy
- func (p *BivariantPolicy) AcceptResults(results []any) (any, HandleResult)
- func (p *BivariantPolicy) IsVariantKey(key any) (variant bool, unknown bool)
- func (p *BivariantPolicy) Less(binding, otherBinding Binding) bool
- func (p *BivariantPolicy) MatchesKey(key, otherKey any, invariant bool) (matches bool, exact bool)
- func (p *BivariantPolicy) NewFuncBinding(fun reflect.Value, spec *policySpec, key any) (Binding, error)
- func (p *BivariantPolicy) NewMethodBinding(method reflect.Method, spec *policySpec, key any) (Binding, error)
- func (p *BivariantPolicy) Strict() bool
- type Builder
- type BuilderFunc
- type Callback
- type CallbackArg
- type CallbackBase
- func (c *CallbackBase) AddResult(result any, composer Handler) HandleResult
- func (c *CallbackBase) Metadata() *BindingMetadata
- func (c *CallbackBase) ReceiveResult(result any, strict bool, composer Handler) HandleResult
- func (c *CallbackBase) Result(many bool) (any, *promise.Promise[any])
- func (c *CallbackBase) ResultCount() int
- func (c *CallbackBase) SetAcceptPromiseResult(accept AcceptPromiseResultFunc)
- func (c *CallbackBase) SetAcceptResult(accept AcceptResultFunc)
- func (c *CallbackBase) SetResult(result any)
- func (c *CallbackBase) Source() any
- type CallbackBuilder
- type CallbackGuard
- type CallbackSemantics
- func (c *CallbackSemantics) CanBatch() bool
- func (c *CallbackSemantics) CanFilter() bool
- func (c *CallbackSemantics) CanInfer() bool
- func (c *CallbackSemantics) HasOption(options SemanticFlags) bool
- func (c *CallbackSemantics) IsSpecified(options SemanticFlags) bool
- func (c *CallbackSemantics) MergeInto(semantics *CallbackSemantics)
- func (c *CallbackSemantics) SetOption(options SemanticFlags, enabled bool)
- type CancelledError
- type ChildContextEndedObserver
- type ChildContextEndedObserverFunc
- type ChildContextEndingObserver
- type ChildContextEndingObserverFunc
- type CompletePipelineFunc
- type Composition
- type ConfigureHandlerDescriptorFactory
- type ConstraintBuilder
- func (b *ConstraintBuilder) Metadata() (metadata *BindingMetadata)
- func (b *ConstraintBuilder) Named(name string) *ConstraintBuilder
- func (b *ConstraintBuilder) WithConstraint(constraint BindingConstraint) *ConstraintBuilder
- func (b *ConstraintBuilder) WithMetadata(metadata BindingMetadata) *ConstraintBuilder
- type ConstraintBuilderFunc
- type ConstraintInitialize
- type ConstraintProvider
- type ConstructorBinder
- type ConstructorBinding
- type Context
- func (m *Context) AddHandlers(handlers ...any) *mutableHandlers
- func (c *Context) Children() []Traversing
- func (c *Context) Dispose()
- func (c *Context) End(reason any)
- func (c *Context) Handle(callback any, greedy bool, composer Handler) HandleResult
- func (c *Context) HandleAxis(axis TraversingAxis, callback any, greedy bool, composer Handler) HandleResult
- func (m *Context) Handlers() []any
- func (c *Context) HasChildren() bool
- func (m *Context) InsertHandlers(index int, handlers ...any) *mutableHandlers
- func (c *Context) NewChild() *Context
- func (c *Context) Observe(observer ContextObserver) Disposable
- func (c *Context) Parent() Traversing
- func (m *Context) RemoveHandlers(handlers ...any) *mutableHandlers
- func (c *Context) Root() *Context
- func (c *Context) State() ContextState
- func (c *Context) Store(values ...any) *Context
- func (m *Context) SuppressDispatch()
- func (c *Context) Traverse(axis TraversingAxis, visitor TraversalVisitor) error
- func (c *Context) Unwind(reason any) *Context
- func (c *Context) UnwindToRoot(reason any) *Context
- type ContextChangedObserver
- type ContextChangedObserverFunc
- type ContextChangingObserver
- type ContextChangingObserverFunc
- type ContextEndedObserver
- type ContextEndedObserverFunc
- type ContextEndingObserver
- type ContextEndingObserverFunc
- type ContextObserver
- type ContextReason
- type ContextState
- type Contextual
- type ContextualBase
- type ContravariantPolicy
- func (p *ContravariantPolicy) AcceptResults(results []any) (result any, accepted HandleResult)
- func (p *ContravariantPolicy) IsVariantKey(key any) (variant bool, unknown bool)
- func (p *ContravariantPolicy) Less(binding, otherBinding Binding) bool
- func (p *ContravariantPolicy) MatchesKey(key, otherKey any, invariant bool) (matches bool, exact bool)
- func (p *ContravariantPolicy) NewFuncBinding(fun reflect.Value, spec *policySpec, key any) (Binding, error)
- func (p *ContravariantPolicy) NewMethodBinding(method reflect.Method, spec *policySpec, key any) (Binding, error)
- func (p *ContravariantPolicy) Strict() bool
- type CovariantPolicy
- func (p *CovariantPolicy) AcceptResults(results []any) (result any, accepted HandleResult)
- func (p *CovariantPolicy) IsVariantKey(key any) (variant bool, unknown bool)
- func (p *CovariantPolicy) Less(binding, otherBinding Binding) bool
- func (p *CovariantPolicy) MatchesKey(key, otherKey any, invariant bool) (matches bool, exact bool)
- func (p *CovariantPolicy) NewFuncBinding(fun reflect.Value, spec *policySpec, key any) (Binding, error)
- func (p *CovariantPolicy) NewMethodBinding(method reflect.Method, spec *policySpec, key any) (Binding, error)
- func (p *CovariantPolicy) Strict() bool
- type Creates
- type CreatesBuilder
- type DependencyArg
- type DependencyResolver
- type DiKey
- type Disposable
- type DisposableFunc
- type Feature
- type FeatureFunc
- type Filter
- type FilterFunc
- type FilterInstanceProvider
- type FilterOptions
- type FilterProvider
- type Filtered
- type FilteredScope
- type Format
- func (f *Format) Direction() FormatDirection
- func (f *Format) Identifier() string
- func (f *Format) InitWithTag(tag reflect.StructTag) error
- func (f *Format) Matches(metadata *BindingMetadata) bool
- func (f *Format) Merge(constraint BindingConstraint) bool
- func (f *Format) Require(metadata *BindingMetadata)
- func (f *Format) Required() bool
- func (f *Format) Rule() FormatRule
- type FormatDirection
- type FormatRule
- type FromOptions
- type FuncBinder
- type FuncBinding
- type FuncBindingError
- type HandleContext
- type HandleResult
- func (r HandleResult) And(other HandleResult) HandleResult
- func (r HandleResult) AndBlock(other HandleResult) HandleResult
- func (r HandleResult) Error() error
- func (r HandleResult) IsError() bool
- func (r HandleResult) IsHandled() bool
- func (r HandleResult) Or(other HandleResult) HandleResult
- func (r HandleResult) OrBlock(block HandleResultBlock) HandleResult
- func (r HandleResult) Otherwise(block HandleResultBlock) HandleResult
- func (r HandleResult) OtherwiseHandledIf(handled bool) HandleResult
- func (r HandleResult) OtherwiseIf(condition bool, block HandleResultBlock) HandleResult
- func (r HandleResult) ShouldStop() bool
- func (r HandleResult) Then(block HandleResultBlock) HandleResult
- func (r HandleResult) ThenIf(condition bool, block HandleResultBlock) HandleResult
- func (r HandleResult) WithError(err error) HandleResult
- func (r HandleResult) WithoutError() HandleResult
- type HandleResultBlock
- type Handler
- type HandlerAxis
- type HandlerDescriptor
- type HandlerDescriptorError
- type HandlerDescriptorFactory
- type HandlerDescriptorFactoryBuilder
- func (b *HandlerDescriptorFactoryBuilder) AddBindingBuilders(parsers ...bindingParser) *HandlerDescriptorFactoryBuilder
- func (b *HandlerDescriptorFactoryBuilder) Build() HandlerDescriptorFactory
- func (b *HandlerDescriptorFactoryBuilder) SetObserver(observer HandlerDescriptorObserver) *HandlerDescriptorFactoryBuilder
- type HandlerDescriptorFactoryOption
- type HandlerDescriptorObserver
- type HandlerDescriptorProvider
- type HandlerDescriptorVisitorFunc
- type HandlerFuncSpec
- type HandlerSpec
- type HandlerTypeSpec
- type Handles
- func (h *Handles) CanBatch() bool
- func (h *Handles) CanDispatch(handler any, binding Binding) (reset func(), approved bool)
- func (h *Handles) CanFilter() bool
- func (h *Handles) CanInfer() bool
- func (h *Handles) Dispatch(handler any, greedy bool, composer Handler) HandleResult
- func (h *Handles) Key() any
- func (h *Handles) Policy() Policy
- func (h *Handles) Source() any
- type HandlesBuilder
- type KeyValues
- type Late
- type Lifestyle
- type LifestyleProvider
- type Maps
- type MapsBuilder
- type Metadata
- type MethodBinder
- type MethodBinding
- func (b *MethodBinding) Invoke(ctx HandleContext, initArgs ...any) ([]any, *promise.Promise[[]any], error)
- func (b *MethodBinding) Key() any
- func (b *MethodBinding) Metadata() []any
- func (b *MethodBinding) Method() reflect.Method
- func (b *MethodBinding) SkipFilters() bool
- func (b *MethodBinding) Strict() bool
- type MethodBindingError
- type Named
- type Next
- func (n Next) Abort() ([]any, *promise.Promise[[]any], error)
- func (n Next) Fail(err error) ([]any, *promise.Promise[[]any], error)
- func (n Next) Handle(callback any, greedy bool, composer Handler) ([]any, *promise.Promise[[]any], error)
- func (n Next) Pipe() ([]any, *promise.Promise[[]any], error)
- func (n Next) PipeAwait() []any
- func (n Next) PipeComposer(composer Handler) ([]any, *promise.Promise[[]any], error)
- func (n Next) PipeComposerAwait(composer Handler) []any
- type NotHandledError
- type Option
- type Optional
- type Policy
- type PolicyDispatch
- type Predicate
- type ProceedFunc
- type Provides
- func (p *Provides) Binding() Binding
- func (p *Provides) CanDispatch(handler any, binding Binding) (reset func(), approved bool)
- func (p *Provides) Dispatch(handler any, greedy bool, composer Handler) (result HandleResult)
- func (p *Provides) Key() any
- func (p *Provides) Owner() any
- func (p *Provides) Parent() *Provides
- func (p *Provides) Policy() Policy
- func (p *Provides) Resolve(handler Handler, many bool) (any, *promise.Promise[any], error)
- type ProvidesBuilder
- type Qualifier
- type RejectedError
- type Resolves
- type ResolvesBuilder
- type Scoped
- type SemanticFlags
- type SetupBuilder
- func (s *SetupBuilder) Builders(builders ...Builder) *SetupBuilder
- func (s *SetupBuilder) CanInstall(tag any) bool
- func (s *SetupBuilder) Context() (*Context, error)
- func (s *SetupBuilder) ExcludeSpecs(excludes ...Predicate[HandlerSpec]) *SetupBuilder
- func (s *SetupBuilder) Features(features ...Feature) *SetupBuilder
- func (s *SetupBuilder) Filters(providers ...FilterProvider) *SetupBuilder
- func (s *SetupBuilder) Handler() (handler Handler, buildErrors error)
- func (s *SetupBuilder) Handlers(handlers ...any) *SetupBuilder
- func (s *SetupBuilder) NoInference() *SetupBuilder
- func (s *SetupBuilder) Options(options ...any) *SetupBuilder
- func (s *SetupBuilder) Specs(specs ...any) *SetupBuilder
- func (s *SetupBuilder) UseHandlerDescriptorFactory(factory HandlerDescriptorFactory) *SetupBuilder
- type Singleton
- type SkipFilters
- type Strict
- type Timespan
- type Trampoline
- func (t *Trampoline) Callback() any
- func (t *Trampoline) CanBatch() bool
- func (t *Trampoline) CanDispatch(handler any, binding Binding) (reset func(), approved bool)
- func (t *Trampoline) CanFilter() bool
- func (t *Trampoline) CanInfer() bool
- func (t *Trampoline) Dispatch(callback any, handler any, greedy bool, composer Handler) HandleResult
- func (t *Trampoline) Policy() Policy
- func (t *Trampoline) Result(many bool) (any, *promise.Promise[any])
- func (t *Trampoline) SetResult(result any)
- func (t *Trampoline) Source() any
- type TraversalCircularityError
- type TraversalVisitor
- type TraversalVisitorFunc
- type Traversing
- type TraversingAxis
- type UnresolvedArgError
- type Void
Constants ¶
const ( FilterStage = 0 FilterStageLogging = 10 FilterStateAuthorization = 30 FilterStageValidation = 50 )
Filter stage priorities.
const ( FormatDirectionNone FormatDirection = 0 FormatDirectionTo FormatDirection = 1 << iota FormatDirectionFrom FormatRuleEquals FormatRule = 0 FormatRuleStartsWith FormatRule = 1 << iota FormatRuleEndsWith FormatRulePattern )
Variables ¶
var ( ErrBiMissingCallback = errors.New("bivariant: missing callback argument") ErrBiMissingReturn = errors.New("bivariant: must have a return value") )
var ( ErrConResultsExceeded = errors.New("contravariant: cannot accept more than 2 results") ErrConMissingCallback = errors.New("contravariant: missing callback argument") )
var ( ErrCovResultsExceeded = errors.New("covariant: cannot accept more than 2 results") ErrCovMissingReturn = errors.New("covariant: must have a return value") )
var ( ErrInvalidFormat = errors.New("invalid format tag") ErrEmptyFormatIdentifier = errors.New("empty format identifier") )
var ( Handled = HandleResult{true, false, nil} HandledAndStop = HandleResult{true, true, nil} NotHandled = HandleResult{false, false, nil} NotHandledAndStop = HandleResult{false, true, nil} )
var ( Broadcast = CallWith(SemanticBroadcast) BestEffort = CallWith(SemanticBestEffort) Notify = CallWith(SemanticNotify) )
var AncestorAxis = Axis(TraverseAncestor)
var ChildAxis = Axis(TraverseChild)
var DescendantAxis = Axis(TraverseDescendant)
var DescendantReverseAxis = Axis(TraverseDescendantReverse)
var (
ErrNameMissing = errors.New("the Named constraint requires a non-empty `name:[name]` tag")
)
var Publish = ComposeBuilders(SelfOrDescendantAxis, Notify)
var RootAxis = Axis(TraverseRoot)
var SelfAxis = Axis(TraverseSelf)
var SelfOrAncestorAxis = Axis(TraverseSelfOrAncestor)
var SelfOrChildAxis = Axis(TraverseSelfOrChild)
var SelfOrDescendantAxis = Axis(TraverseSelfOrDescendant)
var SelfOrDescendantReverseAxis = Axis(TraverseSelfOrDescendant)
var SelfOrSiblingAxis = Axis(TraverseSelfOrSibling)
var SelfSiblingOrAncestorAxis = Axis(TraverseSelfSiblingOrAncestor)
var SiblingAxis = Axis(TraverseSibling)
Functions ¶
func BatchAsync ¶ added in v0.10.0
func BatchTagAsync ¶ added in v0.10.0
func CoerceResult ¶ added in v0.10.0
func CoerceResults ¶ added in v0.10.0
func CoerceSlice ¶ added in v0.11.0
CoerceSlice attempts to upcast the elements of a slice and return the newly promoted slice and true if successful. If elemType is nil, the most specific type will be inferred.
func Command ¶ added in v0.10.0
func Command( handler Handler, callback any, constraints ...any, ) (pv *promise.Promise[Void], err error)
Command invokes a callback with no results. returns an empty promise if execution is asynchronous.
func CommandAll ¶ added in v0.10.0
func CommandAll( handler Handler, callback any, constraints ...any, ) (pv *promise.Promise[Void], err error)
CommandAll invokes a callback on all with no results. returns an empty promise if execution is asynchronous.
func CompleteResult ¶ added in v0.10.0
func CompleteResults ¶ added in v0.10.0
func CopyIndirect ¶
CopyIndirect copies the contents of src into the source pointer or reflect.Value.
func CopySliceIndirect ¶
CopySliceIndirect copies the contents of src slice into the source pointer or reflect.Value.
func DynNext ¶
func DynNext( filter Filter, next Next, ctx HandleContext, provider FilterProvider, ) (out []any, po *promise.Promise[[]any], err error)
func Execute ¶ added in v0.10.0
func Execute[T any]( handler Handler, callback any, constraints ...any, ) (t T, tp *promise.Promise[T], err error)
Execute executes a callback with results. returns the results or promise if execution is asynchronous.
func ExecuteAll ¶ added in v0.10.0
func ExecuteAll[T any]( handler Handler, callback any, constraints ...any, ) (t []T, tp *promise.Promise[[]T], err error)
ExecuteAll executes a callback on all and collects the results. returns the results or promise if execution is asynchronous.
func GetOptions ¶
func MergeOptions ¶
func ResolveAll ¶
func ResolveKey ¶ added in v0.11.0
func TargetSliceValue ¶
TargetSliceValue validates the interface contains a non-nil typed slice pointer and return reflect.Value.
func TargetValue ¶
TargetValue validates the interface contains a non-nil typed pointer and return reflect.Value.
func TraverseAxis ¶
func TraverseAxis( node Traversing, axis TraversingAxis, visitor TraversalVisitor, ) error
TraverseAxis traverses a node over an axis.
func TraverseLevelOrder ¶
func TraverseLevelOrder( node Traversing, visitor TraversalVisitor, ) error
TraverseLevelOrder traverse the node using level-order algorithm.
func TraversePostOrder ¶
func TraversePostOrder( node Traversing, visitor TraversalVisitor, ) error
TraversePostOrder traverse the node using post-order algorithm.
func TraversePreOrder ¶
func TraversePreOrder( node Traversing, visitor TraversalVisitor, ) error
TraversePreOrder traverse the node using pre-order algorithm.
func TraverseReverseLevelOrder ¶
func TraverseReverseLevelOrder( node Traversing, visitor TraversalVisitor, ) error
TraverseReverseLevelOrder traverse the node using reverse level-order algorithm.
Types ¶
type AcceptPromiseResultFunc ¶ added in v0.10.0
AcceptPromiseResultFunc adjusts promise callback results.
type AcceptResultFunc ¶
type AcceptResultFunc func( result any, composer Handler, ) HandleResult
AcceptResultFunc accepts or rejects callback results.
type Binding ¶
type Binding interface { Filtered Key() any Strict() bool SkipFilters() bool Metadata() []any Invoke( ctx HandleContext, initArgs ...any, ) ([]any, *promise.Promise[[]any], error) }
Binding connects a Callback to a handler.
type BindingConstraint ¶
type BindingConstraint interface { Required() bool Require(metadata *BindingMetadata) Matches(metadata *BindingMetadata) bool }
BindingConstraint manages BindingMetadata assertions.
func WithConstraintProvider ¶ added in v0.5.0
func WithConstraintProvider[T ConstraintInitialize](provider T) BindingConstraint
type BindingGroup ¶ added in v0.10.0
type BindingGroup struct{}
BindingGroup marks bindings that aggregate one or more binding metadata.
func (BindingGroup) DefinesBindingGroup ¶ added in v0.10.0
func (d BindingGroup) DefinesBindingGroup()
type BindingMetadata ¶
type BindingMetadata struct {
// contains filtered or unexported fields
}
BindingMetadata is a key/value container.
func ApplyConstraints ¶
func ApplyConstraints( scope BindingScope, constraints ...any, ) *BindingMetadata
func (*BindingMetadata) Has ¶
func (b *BindingMetadata) Has(key any) bool
func (*BindingMetadata) IsEmpty ¶
func (b *BindingMetadata) IsEmpty() bool
func (*BindingMetadata) MergeInto ¶
func (b *BindingMetadata) MergeInto(other *BindingMetadata)
func (*BindingMetadata) Name ¶
func (b *BindingMetadata) Name() string
func (*BindingMetadata) Set ¶
func (b *BindingMetadata) Set(key any, val any)
func (*BindingMetadata) SetName ¶
func (b *BindingMetadata) SetName(name string)
type BindingReducer ¶
type BindingReducer func( binding Binding, result HandleResult, ) (HandleResult, bool)
BindingReducer aggregates Binding results.
type BindingScope ¶
type BindingScope interface {
Metadata() *BindingMetadata
}
BindingScope is a BindingMetadata container.
type BivariantPolicy ¶
type BivariantPolicy struct { FilteredScope // contains filtered or unexported fields }
BivariantPolicy matches related input and output values.
func (*BivariantPolicy) AcceptResults ¶
func (p *BivariantPolicy) AcceptResults( results []any, ) (any, HandleResult)
func (*BivariantPolicy) IsVariantKey ¶
func (p *BivariantPolicy) IsVariantKey( key any, ) (variant bool, unknown bool)
func (*BivariantPolicy) Less ¶
func (p *BivariantPolicy) Less( binding, otherBinding Binding, ) bool
func (*BivariantPolicy) MatchesKey ¶
func (p *BivariantPolicy) MatchesKey( key, otherKey any, invariant bool, ) (matches bool, exact bool)
func (*BivariantPolicy) NewFuncBinding ¶ added in v0.3.0
func (*BivariantPolicy) NewMethodBinding ¶
func (*BivariantPolicy) Strict ¶ added in v0.10.0
func (p *BivariantPolicy) Strict() bool
type Builder ¶
Builder augments a Handler.
func CallWith ¶ added in v0.7.0
func CallWith(semantics SemanticFlags) Builder
func ComposeBuilders ¶
func PipeBuilders ¶
func ProvideFilters ¶ added in v0.7.0
func ProvideFilters(providers ...FilterProvider) Builder
func UseFilters ¶ added in v0.7.0
type BuilderFunc ¶
var ( DisableFilters BuilderFunc = func(handler Handler) Handler { return BuildUp(handler, disableFilters) } EnableFilters BuilderFunc = func(handler Handler) Handler { return BuildUp(handler, enableFilters) } )
var NoBatch BuilderFunc = func(handler Handler) Handler { if IsNil(handler) { panic("handler cannot be nil") } return &noBatchHandler{handler} }
func Axis ¶ added in v0.7.0
func Axis(axis TraversingAxis) BuilderFunc
func Options ¶ added in v0.7.0
func Options(options any) BuilderFunc
func Reentrant ¶ added in v0.7.0
func Reentrant(filter FilterFunc) BuilderFunc
func With ¶
func With(values ...any) BuilderFunc
func (BuilderFunc) BuildUp ¶ added in v0.7.0
func (f BuilderFunc) BuildUp( handler Handler, ) Handler
type Callback ¶
type Callback interface { Key() any Source() any Policy() Policy ResultCount() int Result(many bool) (any, *promise.Promise[any]) SetResult(result any) ReceiveResult( result any, strict bool, composer Handler, ) HandleResult Metadata() *BindingMetadata }
Callback represents any intention.
type CallbackBase ¶
type CallbackBase struct {
// contains filtered or unexported fields
}
CallbackBase is abstract Callback implementation.
func (*CallbackBase) AddResult ¶
func (c *CallbackBase) AddResult( result any, composer Handler, ) HandleResult
func (*CallbackBase) Metadata ¶ added in v0.11.0
func (c *CallbackBase) Metadata() *BindingMetadata
func (*CallbackBase) ReceiveResult ¶
func (c *CallbackBase) ReceiveResult( result any, strict bool, composer Handler, ) HandleResult
func (*CallbackBase) ResultCount ¶ added in v0.7.0
func (c *CallbackBase) ResultCount() int
func (*CallbackBase) SetAcceptPromiseResult ¶ added in v0.10.0
func (c *CallbackBase) SetAcceptPromiseResult( accept AcceptPromiseResultFunc, )
func (*CallbackBase) SetAcceptResult ¶ added in v0.7.0
func (c *CallbackBase) SetAcceptResult( accept AcceptResultFunc, )
func (*CallbackBase) SetResult ¶
func (c *CallbackBase) SetResult(result any)
func (*CallbackBase) Source ¶ added in v0.4.0
func (c *CallbackBase) Source() any
type CallbackBuilder ¶
type CallbackBuilder struct {
// contains filtered or unexported fields
}
CallbackBuilder builds common CallbackBase.
func (*CallbackBuilder) CallbackBase ¶
func (b *CallbackBuilder) CallbackBase() CallbackBase
func (*CallbackBuilder) WithConstraints ¶ added in v0.11.0
func (b *CallbackBuilder) WithConstraints( constraints ...any, ) *CallbackBuilder
type CallbackGuard ¶
type CallbackGuard interface { CanDispatch( handler any, binding Binding, ) (reset func(), approved bool) }
CallbackGuard detects and prevents circular Callback dispatch.
type CallbackSemantics ¶
type CallbackSemantics struct { Composition // contains filtered or unexported fields }
CallbackSemantics captures semantic options
func GetSemantics ¶
func GetSemantics(handler Handler) *CallbackSemantics
func (*CallbackSemantics) CanBatch ¶ added in v0.10.0
func (c *CallbackSemantics) CanBatch() bool
func (*CallbackSemantics) CanFilter ¶
func (c *CallbackSemantics) CanFilter() bool
func (*CallbackSemantics) CanInfer ¶
func (c *CallbackSemantics) CanInfer() bool
func (*CallbackSemantics) HasOption ¶
func (c *CallbackSemantics) HasOption(options SemanticFlags) bool
func (*CallbackSemantics) IsSpecified ¶
func (c *CallbackSemantics) IsSpecified(options SemanticFlags) bool
func (*CallbackSemantics) MergeInto ¶
func (c *CallbackSemantics) MergeInto(semantics *CallbackSemantics)
func (*CallbackSemantics) SetOption ¶
func (c *CallbackSemantics) SetOption(options SemanticFlags, enabled bool)
type CancelledError ¶ added in v0.10.0
CancelledError reports a cancelled operation.
func (*CancelledError) Error ¶ added in v0.10.0
func (e *CancelledError) Error() string
func (*CancelledError) Unwrap ¶ added in v0.10.0
func (e *CancelledError) Unwrap() error
type ChildContextEndedObserver ¶
ChildContextEndedObserver reports child Context ended.
type ChildContextEndedObserverFunc ¶
func (ChildContextEndedObserverFunc) ChildContextEnded ¶
func (f ChildContextEndedObserverFunc) ChildContextEnded( ctx *Context, reason any, )
type ChildContextEndingObserver ¶
ChildContextEndingObserver reports child Context is ending.
type ChildContextEndingObserverFunc ¶
func (ChildContextEndingObserverFunc) ChildContextEnding ¶
func (f ChildContextEndingObserverFunc) ChildContextEnding( ctx *Context, reason any, )
type CompletePipelineFunc ¶
type Composition ¶
type Composition struct {
Trampoline
}
func (*Composition) Dispatch ¶
func (c *Composition) Dispatch( handler any, greedy bool, composer Handler, ) HandleResult
type ConfigureHandlerDescriptorFactory ¶ added in v0.7.0
type ConfigureHandlerDescriptorFactory func(builder *HandlerDescriptorFactoryBuilder)
func (ConfigureHandlerDescriptorFactory) Configure ¶ added in v0.7.0
func (f ConfigureHandlerDescriptorFactory) Configure( builder *HandlerDescriptorFactoryBuilder, )
type ConstraintBuilder ¶
type ConstraintBuilder struct {
// contains filtered or unexported fields
}
ConstraintBuilder is a fluent builder for BindingMetadata.
func (*ConstraintBuilder) Metadata ¶
func (b *ConstraintBuilder) Metadata() (metadata *BindingMetadata)
func (*ConstraintBuilder) Named ¶
func (b *ConstraintBuilder) Named( name string, ) *ConstraintBuilder
func (*ConstraintBuilder) WithConstraint ¶
func (b *ConstraintBuilder) WithConstraint( constraint BindingConstraint, ) *ConstraintBuilder
func (*ConstraintBuilder) WithMetadata ¶
func (b *ConstraintBuilder) WithMetadata( metadata BindingMetadata, ) *ConstraintBuilder
type ConstraintBuilderFunc ¶ added in v0.11.0
type ConstraintBuilderFunc func(*ConstraintBuilder)
ConstraintBuilderFunc configures a ConstraintBuilder.
type ConstraintInitialize ¶ added in v0.5.0
type ConstraintInitialize interface { BindingConstraint Init() error }
ConstraintInitialize defines generic contract for providers.
type ConstraintProvider ¶
type ConstraintProvider struct {
// contains filtered or unexported fields
}
ConstraintProvider is a FilterProvider for constraints.
func (*ConstraintProvider) Constraints ¶
func (c *ConstraintProvider) Constraints() []BindingConstraint
func (*ConstraintProvider) Required ¶
func (c *ConstraintProvider) Required() bool
type ConstructorBinder ¶
type ConstructorBinder interface { NewConstructorBinding( handlerType reflect.Type, constructor *reflect.Method, spec *policySpec, ) (Binding, error) }
ConstructorBinder creates a constructor binding to `handlerType`.
type ConstructorBinding ¶ added in v0.12.0
type ConstructorBinding struct { FilteredScope // contains filtered or unexported fields }
ConstructorBinding customizes the construction of `handlerType`.
func (*ConstructorBinding) Invoke ¶ added in v0.12.0
func (b *ConstructorBinding) Invoke( ctx HandleContext, initArgs ...any, ) ([]any, *promise.Promise[[]any], error)
func (*ConstructorBinding) Key ¶ added in v0.12.0
func (b *ConstructorBinding) Key() any
func (*ConstructorBinding) Metadata ¶ added in v0.12.0
func (b *ConstructorBinding) Metadata() []any
func (*ConstructorBinding) SkipFilters ¶ added in v0.12.0
func (b *ConstructorBinding) SkipFilters() bool
func (*ConstructorBinding) Strict ¶ added in v0.12.0
func (b *ConstructorBinding) Strict() bool
type Context ¶
type Context struct {
// contains filtered or unexported fields
}
A Context represents the scope at a give point in time. It has a beginning and an end and can handle callbacks As well As notify observers of lifecycle changes. In addition, it maintains parent-child relationships and thus can form a graph.
func NewContext ¶
func (*Context) AddHandlers ¶
func (m *Context) AddHandlers( handlers ...any, ) *mutableHandlers
func (*Context) Children ¶
func (c *Context) Children() []Traversing
func (*Context) Handle ¶
func (c *Context) Handle( callback any, greedy bool, composer Handler, ) HandleResult
func (*Context) HandleAxis ¶
func (c *Context) HandleAxis( axis TraversingAxis, callback any, greedy bool, composer Handler, ) HandleResult
func (*Context) HasChildren ¶
func (*Context) InsertHandlers ¶
func (*Context) Observe ¶
func (c *Context) Observe(observer ContextObserver) Disposable
func (*Context) Parent ¶
func (c *Context) Parent() Traversing
func (*Context) RemoveHandlers ¶
func (m *Context) RemoveHandlers( handlers ...any, ) *mutableHandlers
func (*Context) State ¶
func (c *Context) State() ContextState
func (*Context) SuppressDispatch ¶ added in v0.3.0
func (m *Context) SuppressDispatch()
func (*Context) Traverse ¶
func (c *Context) Traverse( axis TraversingAxis, visitor TraversalVisitor, ) error
func (*Context) UnwindToRoot ¶
type ContextChangedObserver ¶
type ContextChangedObserver interface { ContextChanged( contextual Contextual, oldCtx *Context, newCtx *Context) }
ContextChangedObserver reports a Context changed.
type ContextChangedObserverFunc ¶
type ContextChangedObserverFunc func( contextual Contextual, oldCtx *Context, newCtx *Context)
func (ContextChangedObserverFunc) ContextChanged ¶
func (f ContextChangedObserverFunc) ContextChanged( contextual Contextual, oldCtx *Context, newCtx *Context, )
type ContextChangingObserver ¶
type ContextChangingObserver interface { ContextChanging( contextual Contextual, oldCtx *Context, newCtx **Context) }
ContextChangingObserver reports a Context is changing.
type ContextChangingObserverFunc ¶
type ContextChangingObserverFunc func( contextual Contextual, oldCtx *Context, newCtx **Context)
func (ContextChangingObserverFunc) ContextChanging ¶
func (f ContextChangingObserverFunc) ContextChanging( contextual Contextual, oldCtx *Context, newCtx **Context, )
type ContextEndedObserver ¶
ContextEndedObserver reports Context ended.
type ContextEndedObserverFunc ¶
func (ContextEndedObserverFunc) ContextEnded ¶
func (f ContextEndedObserverFunc) ContextEnded( ctx *Context, reason any, )
type ContextEndingObserver ¶
ContextEndingObserver reports Context is ending.
type ContextEndingObserverFunc ¶
func (ContextEndingObserverFunc) ContextEnding ¶
func (f ContextEndingObserverFunc) ContextEnding( ctx *Context, reason any, )
type ContextObserver ¶
type ContextObserver = interface{}
ContextObserver is a generic Context observer.
type ContextReason ¶
type ContextReason uint
ContextReason identifies the cause for the notification.
const ( ContextAlreadyEnded ContextReason = iota ContextUnwinded ContextDisposed )
type ContextState ¶
type ContextState uint
ContextState represents the state of a Context.
const ( ContextActive ContextState = iota ContextEnding ContextEnded )
type Contextual ¶
type Contextual interface { Context() *Context SetContext(ctx *Context) Observe(observer ContextObserver) Disposable }
Contextual represents anything with a Context.
type ContextualBase ¶
type ContextualBase struct {
// contains filtered or unexported fields
}
func (*ContextualBase) ChangeContext ¶
func (c *ContextualBase) ChangeContext( contextual Contextual, ctx *Context, )
func (*ContextualBase) Context ¶
func (c *ContextualBase) Context() *Context
func (*ContextualBase) EndContext ¶
func (c *ContextualBase) EndContext()
func (*ContextualBase) Observe ¶
func (c *ContextualBase) Observe( observer ContextObserver, ) Disposable
type ContravariantPolicy ¶
type ContravariantPolicy struct {
FilteredScope
}
ContravariantPolicy matches related input values.
func (*ContravariantPolicy) AcceptResults ¶
func (p *ContravariantPolicy) AcceptResults( results []any, ) (result any, accepted HandleResult)
func (*ContravariantPolicy) IsVariantKey ¶
func (p *ContravariantPolicy) IsVariantKey( key any, ) (variant bool, unknown bool)
func (*ContravariantPolicy) Less ¶
func (p *ContravariantPolicy) Less( binding, otherBinding Binding, ) bool
func (*ContravariantPolicy) MatchesKey ¶
func (p *ContravariantPolicy) MatchesKey( key, otherKey any, invariant bool, ) (matches bool, exact bool)
func (*ContravariantPolicy) NewFuncBinding ¶ added in v0.3.0
func (*ContravariantPolicy) NewMethodBinding ¶
func (*ContravariantPolicy) Strict ¶ added in v0.10.0
func (p *ContravariantPolicy) Strict() bool
type CovariantPolicy ¶
type CovariantPolicy struct {
FilteredScope
}
CovariantPolicy matches related output values.
func (*CovariantPolicy) AcceptResults ¶
func (p *CovariantPolicy) AcceptResults( results []any, ) (result any, accepted HandleResult)
func (*CovariantPolicy) IsVariantKey ¶
func (p *CovariantPolicy) IsVariantKey( key any, ) (variant bool, unknown bool)
func (*CovariantPolicy) Less ¶
func (p *CovariantPolicy) Less( binding, otherBinding Binding, ) bool
func (*CovariantPolicy) MatchesKey ¶
func (p *CovariantPolicy) MatchesKey( key, otherKey any, invariant bool, ) (matches bool, exact bool)
func (*CovariantPolicy) NewFuncBinding ¶ added in v0.3.0
func (*CovariantPolicy) NewMethodBinding ¶
func (*CovariantPolicy) Strict ¶ added in v0.10.0
func (p *CovariantPolicy) Strict() bool
type Creates ¶
type Creates struct { CallbackBase // contains filtered or unexported fields }
Creates instances covariantly.
type CreatesBuilder ¶
type CreatesBuilder struct { CallbackBuilder // contains filtered or unexported fields }
CreatesBuilder builds Creates callbacks.
func (*CreatesBuilder) NewCreation ¶
func (b *CreatesBuilder) NewCreation() *Creates
func (*CreatesBuilder) WithKey ¶ added in v0.11.0
func (b *CreatesBuilder) WithKey( key any, ) *CreatesBuilder
type DependencyArg ¶
type DependencyArg struct {
// contains filtered or unexported fields
}
DependencyArg is a parameter resolved at runtime.
func (DependencyArg) Metadata ¶ added in v0.9.0
func (d DependencyArg) Metadata() []any
func (DependencyArg) Optional ¶
func (d DependencyArg) Optional() bool
func (DependencyArg) Promise ¶ added in v0.10.0
func (d DependencyArg) Promise() bool
func (DependencyArg) Strict ¶
func (d DependencyArg) Strict() bool
type DependencyResolver ¶
type DependencyResolver interface { Resolve( typ reflect.Type, dep DependencyArg, ctx HandleContext, ) (reflect.Value, *promise.Promise[reflect.Value], error) }
DependencyResolver defines how an argument value is retrieved.
type Disposable ¶
type Disposable interface {
Dispose()
}
type DisposableFunc ¶
type DisposableFunc func()
func (DisposableFunc) Dispose ¶
func (f DisposableFunc) Dispose()
type Feature ¶ added in v0.3.0
type Feature interface {
Install(setup *SetupBuilder) error
}
Feature encapsulates custom setup.
type FeatureFunc ¶ added in v0.3.0
type FeatureFunc func(setup *SetupBuilder) error
func GroupFeatures ¶ added in v0.16.0
func GroupFeatures(features ...Feature) FeatureFunc
GroupFeatures combines one or more Feature's into a single Feature.
func (FeatureFunc) Install ¶ added in v0.3.0
func (f FeatureFunc) Install(setup *SetupBuilder) error
type Filter ¶
type Filter interface { Order() int Next( next Next, ctx HandleContext, provider FilterProvider, ) ([]any, *promise.Promise[[]any], error) }
Filter defines a middleware step in a pipeline.
type FilterFunc ¶
type FilterFunc func( callback any, greedy bool, composer Handler, proceed ProceedFunc, ) HandleResult
FilterFunc defines a function that can intercept a callback.
func (FilterFunc) BuildUp ¶ added in v0.7.0
func (f FilterFunc) BuildUp(handler Handler) Handler
type FilterInstanceProvider ¶
type FilterInstanceProvider struct {
// contains filtered or unexported fields
}
FilterInstanceProvider provides existing Filters.
func NewFilterInstanceProvider ¶
func NewFilterInstanceProvider( required bool, filters ...Filter, ) *FilterInstanceProvider
func (*FilterInstanceProvider) Required ¶
func (f *FilterInstanceProvider) Required() bool
type FilterOptions ¶
type FilterOptions struct { Providers []FilterProvider SkipFilters Option[bool] }
FilterOptions are used to control Filter processing.
type FilterProvider ¶
type FilterProvider interface { Required() bool Filters( binding Binding, callback any, composer Handler, ) ([]Filter, error) }
FilterProvider provides one or more Filter's.
type Filtered ¶
type Filtered interface { Filters() []FilterProvider AddFilters(providers ...FilterProvider) RemoveFilters(providers ...FilterProvider) RemoveAllFilters() }
Filtered is a container of Filters.
type FilteredScope ¶
type FilteredScope struct {
// contains filtered or unexported fields
}
FilteredScope implements a container of Filters.
func (*FilteredScope) AddFilters ¶
func (f *FilteredScope) AddFilters(providers ...FilterProvider)
func (*FilteredScope) Filters ¶
func (f *FilteredScope) Filters() []FilterProvider
func (*FilteredScope) RemoveAllFilters ¶
func (f *FilteredScope) RemoveAllFilters()
func (*FilteredScope) RemoveFilters ¶
func (f *FilteredScope) RemoveFilters(providers ...FilterProvider)
type Format ¶
type Format struct {
// contains filtered or unexported fields
}
Format is a BindingConstraint for applying formatting.
func (*Format) Direction ¶ added in v0.11.0
func (f *Format) Direction() FormatDirection
func (*Format) Identifier ¶ added in v0.11.0
func (*Format) Matches ¶
func (f *Format) Matches(metadata *BindingMetadata) bool
func (*Format) Merge ¶
func (f *Format) Merge(constraint BindingConstraint) bool
func (*Format) Require ¶
func (f *Format) Require(metadata *BindingMetadata)
func (*Format) Rule ¶ added in v0.11.0
func (f *Format) Rule() FormatRule
type FormatDirection ¶ added in v0.11.0
type FormatDirection uint8
FormatDirection indicates direction of formatting.
type FormatRule ¶ added in v0.11.0
type FormatRule uint8
FormatRule describes how to interpret the format.
type FromOptions ¶
type FromOptions struct{}
FromOptions is a DependencyResolver that binds options to an argument.
func (FromOptions) Resolve ¶
func (o FromOptions) Resolve( typ reflect.Type, dep DependencyArg, ctx HandleContext, ) (options reflect.Value, _ *promise.Promise[reflect.Value], err error)
func (FromOptions) Validate ¶
func (o FromOptions) Validate( typ reflect.Type, dep DependencyArg, ) error
type FuncBinder ¶ added in v0.3.0
type FuncBinder interface { NewFuncBinding( fun reflect.Value, spec *policySpec, key any, ) (Binding, error) }
FuncBinder creates a binding to a function.
type FuncBinding ¶ added in v0.12.0
type FuncBinding struct { FilteredScope // contains filtered or unexported fields }
FuncBinding models a `key` Binding to a function.
func (*FuncBinding) Invoke ¶ added in v0.12.0
func (b *FuncBinding) Invoke( ctx HandleContext, initArgs ...any, ) ([]any, *promise.Promise[[]any], error)
func (*FuncBinding) Key ¶ added in v0.12.0
func (b *FuncBinding) Key() any
func (*FuncBinding) Metadata ¶ added in v0.12.0
func (b *FuncBinding) Metadata() []any
func (*FuncBinding) SkipFilters ¶ added in v0.12.0
func (b *FuncBinding) SkipFilters() bool
func (*FuncBinding) Strict ¶ added in v0.12.0
func (b *FuncBinding) Strict() bool
type FuncBindingError ¶ added in v0.3.0
type FuncBindingError struct {
// contains filtered or unexported fields
}
FuncBindingError reports a failed function binding.
func (*FuncBindingError) Error ¶ added in v0.3.0
func (e *FuncBindingError) Error() string
func (*FuncBindingError) Func ¶ added in v0.3.0
func (e *FuncBindingError) Func() reflect.Value
func (*FuncBindingError) Unwrap ¶ added in v0.3.0
func (e *FuncBindingError) Unwrap() error
type HandleContext ¶
type HandleContext struct {
// contains filtered or unexported fields
}
HandleContext contain all the information about handling a Callback.
func (HandleContext) Binding ¶
func (h HandleContext) Binding() Binding
func (HandleContext) Callback ¶
func (h HandleContext) Callback() Callback
func (HandleContext) Composer ¶
func (h HandleContext) Composer() Handler
func (HandleContext) Greedy ¶ added in v0.4.0
func (h HandleContext) Greedy() bool
func (HandleContext) Handler ¶ added in v0.5.0
func (h HandleContext) Handler() any
type HandleResult ¶
type HandleResult struct {
// contains filtered or unexported fields
}
HandleResult describes the result of an operation.
func DispatchCallback ¶
func DispatchCallback( handler any, callback any, greedy bool, composer Handler, ) HandleResult
func DispatchPolicy ¶
func DispatchPolicy( handler any, callback Callback, greedy bool, composer Handler, ) HandleResult
func (HandleResult) And ¶
func (r HandleResult) And(other HandleResult) HandleResult
func (HandleResult) AndBlock ¶ added in v0.7.0
func (r HandleResult) AndBlock(other HandleResult) HandleResult
func (HandleResult) Error ¶
func (r HandleResult) Error() error
func (HandleResult) IsError ¶
func (r HandleResult) IsError() bool
func (HandleResult) IsHandled ¶
func (r HandleResult) IsHandled() bool
func (HandleResult) Or ¶
func (r HandleResult) Or(other HandleResult) HandleResult
func (HandleResult) OrBlock ¶ added in v0.7.0
func (r HandleResult) OrBlock(block HandleResultBlock) HandleResult
func (HandleResult) Otherwise ¶
func (r HandleResult) Otherwise( block HandleResultBlock, ) HandleResult
func (HandleResult) OtherwiseHandledIf ¶
func (r HandleResult) OtherwiseHandledIf( handled bool, ) HandleResult
func (HandleResult) OtherwiseIf ¶
func (r HandleResult) OtherwiseIf( condition bool, block HandleResultBlock, ) HandleResult
func (HandleResult) ShouldStop ¶
func (r HandleResult) ShouldStop() bool
func (HandleResult) Then ¶
func (r HandleResult) Then( block HandleResultBlock, ) HandleResult
func (HandleResult) ThenIf ¶
func (r HandleResult) ThenIf( condition bool, block HandleResultBlock, ) HandleResult
func (HandleResult) WithError ¶
func (r HandleResult) WithError(err error) HandleResult
func (HandleResult) WithoutError ¶
func (r HandleResult) WithoutError() HandleResult
type HandleResultBlock ¶
type HandleResultBlock func() HandleResult
HandleResultBlock provides another HandleResult.
type Handler ¶
type Handler interface { Handle( callback any, greedy bool, composer Handler, ) HandleResult }
Handler is the uniform metaphor for processing.
func AddHandlers ¶
func NewProvider ¶
type HandlerAxis ¶
type HandlerAxis interface { Handler HandleAxis( axis TraversingAxis, callback any, greedy bool, composer Handler, ) HandleResult }
HandlerAxis extends Handler with traversal.
type HandlerDescriptor ¶
type HandlerDescriptor struct { FilteredScope // contains filtered or unexported fields }
HandlerDescriptor describes the Binding's of a Handler.
func (*HandlerDescriptor) Dispatch ¶
func (d *HandlerDescriptor) Dispatch( policy Policy, handler any, callback Callback, greedy bool, composer Handler, guard CallbackGuard, ) (result HandleResult)
type HandlerDescriptorError ¶
type HandlerDescriptorError struct { Reason error // contains filtered or unexported fields }
HandlerDescriptorError reports a failed HandlerDescriptor.
func (*HandlerDescriptorError) Error ¶
func (e *HandlerDescriptorError) Error() string
func (*HandlerDescriptorError) HandlerSpec ¶ added in v0.3.0
func (e *HandlerDescriptorError) HandlerSpec() HandlerSpec
func (*HandlerDescriptorError) Unwrap ¶
func (e *HandlerDescriptorError) Unwrap() error
type HandlerDescriptorFactory ¶
type HandlerDescriptorFactory interface { HandlerDescriptorProvider MakeHandlerSpec(spec any) HandlerSpec RegisterHandler(spec any) (*HandlerDescriptor, bool, error) }
HandlerDescriptorFactory registers HandlerDescriptor's.
func GetHandlerDescriptorFactory ¶
func GetHandlerDescriptorFactory( handler Handler, ) HandlerDescriptorFactory
func NewMutableHandlerDescriptorFactory ¶
func NewMutableHandlerDescriptorFactory( opts ...HandlerDescriptorFactoryOption, ) HandlerDescriptorFactory
type HandlerDescriptorFactoryBuilder ¶ added in v0.7.0
type HandlerDescriptorFactoryBuilder struct {
// contains filtered or unexported fields
}
HandlerDescriptorFactoryBuilder build the HandlerDescriptorFactory.
func (*HandlerDescriptorFactoryBuilder) AddBindingBuilders ¶ added in v0.7.0
func (b *HandlerDescriptorFactoryBuilder) AddBindingBuilders( parsers ...bindingParser, ) *HandlerDescriptorFactoryBuilder
func (*HandlerDescriptorFactoryBuilder) Build ¶ added in v0.7.0
func (b *HandlerDescriptorFactoryBuilder) Build() HandlerDescriptorFactory
func (*HandlerDescriptorFactoryBuilder) SetObserver ¶ added in v0.7.0
func (b *HandlerDescriptorFactoryBuilder) SetObserver( observer HandlerDescriptorObserver, ) *HandlerDescriptorFactoryBuilder
type HandlerDescriptorFactoryOption ¶ added in v0.7.0
type HandlerDescriptorFactoryOption interface {
Configure(builder *HandlerDescriptorFactoryBuilder)
}
type HandlerDescriptorObserver ¶ added in v0.7.0
type HandlerDescriptorObserver interface { NotifyHandlerBinding( descriptor *HandlerDescriptor, binding Binding, ) }
HandlerDescriptorObserver observes HandlerDescriptor Binding's.
type HandlerDescriptorProvider ¶
type HandlerDescriptorProvider interface {
DescriptorOf(spec any) *HandlerDescriptor
}
HandlerDescriptorProvider returns Handler descriptors.
type HandlerDescriptorVisitorFunc ¶
type HandlerDescriptorVisitorFunc func(*HandlerDescriptor, Binding)
func (HandlerDescriptorVisitorFunc) NotifyHandlerBinding ¶ added in v0.7.0
func (f HandlerDescriptorVisitorFunc) NotifyHandlerBinding( descriptor *HandlerDescriptor, binding Binding, )
type HandlerFuncSpec ¶ added in v0.4.0
type HandlerFuncSpec struct {
// contains filtered or unexported fields
}
HandlerFuncSpec represents Handler function specifications.
func (HandlerFuncSpec) Func ¶ added in v0.4.0
func (s HandlerFuncSpec) Func() reflect.Value
func (HandlerFuncSpec) String ¶ added in v0.4.0
func (s HandlerFuncSpec) String() string
type HandlerSpec ¶ added in v0.3.0
type HandlerSpec interface {
// contains filtered or unexported methods
}
HandlerSpec manages a category of HandlerDescriptor's.
type HandlerTypeSpec ¶ added in v0.3.0
type HandlerTypeSpec struct {
// contains filtered or unexported fields
}
HandlerTypeSpec represents Handler type specifications.
func (HandlerTypeSpec) Name ¶ added in v0.3.0
func (s HandlerTypeSpec) Name() string
func (HandlerTypeSpec) String ¶ added in v0.3.0
func (s HandlerTypeSpec) String() string
func (HandlerTypeSpec) Type ¶ added in v0.3.0
func (s HandlerTypeSpec) Type() reflect.Type
type Handles ¶
type Handles struct { CallbackBase // contains filtered or unexported fields }
Handles callbacks contravariantly.
func (*Handles) CanDispatch ¶
type HandlesBuilder ¶
type HandlesBuilder struct { CallbackBuilder // contains filtered or unexported fields }
HandlesBuilder builds Handles callbacks.
func (*HandlesBuilder) NewHandles ¶
func (b *HandlesBuilder) NewHandles() *Handles
func (*HandlesBuilder) WithCallback ¶
func (b *HandlesBuilder) WithCallback( callback any, ) *HandlesBuilder
type Late ¶ added in v0.11.0
type Late struct {
Value any
}
Late is a container for late Binding results.
type LifestyleProvider ¶
type LifestyleProvider struct {
// contains filtered or unexported fields
}
LifestyleProvider is a FilterProvider of lifestyles.
func (*LifestyleProvider) AppliesTo ¶
func (l *LifestyleProvider) AppliesTo( callback Callback, ) bool
func (*LifestyleProvider) Required ¶
func (l *LifestyleProvider) Required() bool
func (*LifestyleProvider) SetFilters ¶
func (l *LifestyleProvider) SetFilters(filters ...Filter)
type Maps ¶
type Maps struct { CallbackBase // contains filtered or unexported fields }
Maps callbacks bivariantly.
type MapsBuilder ¶
type MapsBuilder struct { CallbackBuilder // contains filtered or unexported fields }
MapsBuilder builds Maps callbacks.
func (*MapsBuilder) FromSource ¶
func (b *MapsBuilder) FromSource( source any, ) *MapsBuilder
func (*MapsBuilder) NewMaps ¶
func (b *MapsBuilder) NewMaps() *Maps
func (*MapsBuilder) ToTarget ¶
func (b *MapsBuilder) ToTarget( target any, ) *MapsBuilder
func (*MapsBuilder) WithKey ¶ added in v0.11.0
func (b *MapsBuilder) WithKey( key any, ) *MapsBuilder
type Metadata ¶
type Metadata struct {
// contains filtered or unexported fields
}
Metadata matches against kev/value pairs.
func (*Metadata) InitWithMetadata ¶
func (*Metadata) Matches ¶
func (m *Metadata) Matches(metadata *BindingMetadata) bool
func (*Metadata) Require ¶
func (m *Metadata) Require(metadata *BindingMetadata)
type MethodBinder ¶
type MethodBinder interface { NewMethodBinding( method reflect.Method, spec *policySpec, key any, ) (Binding, error) }
MethodBinder creates a binding a method.
type MethodBinding ¶ added in v0.12.0
type MethodBinding struct { FilteredScope // contains filtered or unexported fields }
MethodBinding models a `key` Binding to a method.
func (*MethodBinding) Invoke ¶ added in v0.12.0
func (b *MethodBinding) Invoke( ctx HandleContext, initArgs ...any, ) ([]any, *promise.Promise[[]any], error)
func (*MethodBinding) Key ¶ added in v0.12.0
func (b *MethodBinding) Key() any
func (*MethodBinding) Metadata ¶ added in v0.12.0
func (b *MethodBinding) Metadata() []any
func (*MethodBinding) Method ¶ added in v0.12.0
func (b *MethodBinding) Method() reflect.Method
func (*MethodBinding) SkipFilters ¶ added in v0.12.0
func (b *MethodBinding) SkipFilters() bool
func (*MethodBinding) Strict ¶ added in v0.12.0
func (b *MethodBinding) Strict() bool
type MethodBindingError ¶
type MethodBindingError struct {
// contains filtered or unexported fields
}
MethodBindingError reports a failed method binding.
func (*MethodBindingError) Error ¶
func (e *MethodBindingError) Error() string
func (*MethodBindingError) Method ¶
func (e *MethodBindingError) Method() reflect.Method
func (*MethodBindingError) Unwrap ¶
func (e *MethodBindingError) Unwrap() error
type Named ¶
type Named string
Named matches against a name.
func (*Named) Matches ¶
func (n *Named) Matches(metadata *BindingMetadata) bool
func (*Named) Require ¶
func (n *Named) Require(metadata *BindingMetadata)
type Next ¶
Next advances to the next step in a pipeline.
func (Next) PipeComposer ¶ added in v0.10.0
func (Next) PipeComposerAwait ¶ added in v0.10.0
type NotHandledError ¶
type NotHandledError struct {
Callback any
}
NotHandledError reports a failed callback.
func (*NotHandledError) Error ¶
func (e *NotHandledError) Error() string
type Option ¶ added in v0.11.0
type Option[T any] struct { // contains filtered or unexported fields }
Option should be used in option structs if unset values cannot be distinguished from Zero values.
func (*Option[T]) ValueOrDefault ¶ added in v0.11.0
func (o *Option[T]) ValueOrDefault(val T) T
type Policy ¶
type Policy interface { Filtered Strict() bool Less(binding, otherBinding Binding) bool IsVariantKey(key any) (bool, bool) MatchesKey(key, otherKey any, invariant bool) (bool, bool) AcceptResults(results []any) (any, HandleResult) }
Policy manages behaviors and callback Binding's.
type PolicyDispatch ¶
type PolicyDispatch interface { DispatchPolicy( policy Policy, callback Callback, greedy bool, composer Handler, ) HandleResult }
PolicyDispatch customizes Callback Policy dispatch.
type ProceedFunc ¶ added in v0.7.0
type ProceedFunc func() HandleResult
ProceedFunc calls the next filter in the pipeline.
type Provides ¶
type Provides struct { CallbackBase // contains filtered or unexported fields }
Provides results covariantly.
func (*Provides) CanDispatch ¶
type ProvidesBuilder ¶
type ProvidesBuilder struct { CallbackBuilder // contains filtered or unexported fields }
ProvidesBuilder builds Provides callbacks.
func (*ProvidesBuilder) ForOwner ¶ added in v0.11.0
func (b *ProvidesBuilder) ForOwner( owner any, ) *ProvidesBuilder
func (*ProvidesBuilder) NewProvides ¶
func (b *ProvidesBuilder) NewProvides() *Provides
func (*ProvidesBuilder) Provides ¶
func (b *ProvidesBuilder) Provides() Provides
func (*ProvidesBuilder) WithKey ¶
func (b *ProvidesBuilder) WithKey( key any, ) *ProvidesBuilder
func (*ProvidesBuilder) WithParent ¶
func (b *ProvidesBuilder) WithParent( parent *Provides, ) *ProvidesBuilder
type Qualifier ¶
type Qualifier[T any] struct{}
Qualifier matches against a type.
func (Qualifier[T]) Matches ¶ added in v0.5.0
func (q Qualifier[T]) Matches(metadata *BindingMetadata) bool
func (Qualifier[T]) Require ¶ added in v0.5.0
func (q Qualifier[T]) Require(metadata *BindingMetadata)
type RejectedError ¶
type RejectedError struct {
Callback any
}
RejectedError reports a rejected callback.
func (*RejectedError) Error ¶
func (e *RejectedError) Error() string
type Resolves ¶ added in v0.10.0
type Resolves struct { Provides // contains filtered or unexported fields }
func (*Resolves) CanDispatch ¶ added in v0.10.0
type ResolvesBuilder ¶ added in v0.10.0
type ResolvesBuilder struct { ProvidesBuilder // contains filtered or unexported fields }
func (*ResolvesBuilder) NewResolves ¶ added in v0.10.0
func (b *ResolvesBuilder) NewResolves() *Resolves
func (*ResolvesBuilder) WithCallback ¶ added in v0.10.0
func (b *ResolvesBuilder) WithCallback( callback Callback, ) *ResolvesBuilder
func (*ResolvesBuilder) WithGreedy ¶ added in v0.10.0
func (b *ResolvesBuilder) WithGreedy( greedy bool, ) *ResolvesBuilder
type Scoped ¶
type Scoped struct { LifestyleProvider // contains filtered or unexported fields }
Scoped LifestyleProvider provides instances per Context.
func (*Scoped) Constraints ¶ added in v0.12.0
func (s *Scoped) Constraints() []BindingConstraint
type SemanticFlags ¶
type SemanticFlags uint8
const ( SemanticNone SemanticFlags = 0 SemanticBroadcast SemanticFlags = 1 << iota SemanticBestEffort SemanticNotify = SemanticBroadcast | SemanticBestEffort )
type SetupBuilder ¶ added in v0.3.0
type SetupBuilder struct {
// contains filtered or unexported fields
}
SetupBuilder orchestrates the setup process.
func Setup ¶ added in v0.3.0
func Setup(features ...Feature) *SetupBuilder
Setup returns a new SetupBuilder with initial Feature's.
func (*SetupBuilder) Builders ¶ added in v0.17.0
func (s *SetupBuilder) Builders( builders ...Builder, ) *SetupBuilder
func (*SetupBuilder) CanInstall ¶ added in v0.3.0
func (s *SetupBuilder) CanInstall(tag any) bool
func (*SetupBuilder) Context ¶ added in v0.17.0
func (s *SetupBuilder) Context() (*Context, error)
func (*SetupBuilder) ExcludeSpecs ¶ added in v0.17.0
func (s *SetupBuilder) ExcludeSpecs( excludes ...Predicate[HandlerSpec], ) *SetupBuilder
func (*SetupBuilder) Features ¶ added in v0.17.0
func (s *SetupBuilder) Features( features ...Feature, ) *SetupBuilder
func (*SetupBuilder) Filters ¶ added in v0.17.0
func (s *SetupBuilder) Filters( providers ...FilterProvider, ) *SetupBuilder
func (*SetupBuilder) Handler ¶ added in v0.17.0
func (s *SetupBuilder) Handler() (handler Handler, buildErrors error)
func (*SetupBuilder) Handlers ¶ added in v0.17.0
func (s *SetupBuilder) Handlers( handlers ...any, ) *SetupBuilder
func (*SetupBuilder) NoInference ¶ added in v0.17.0
func (s *SetupBuilder) NoInference() *SetupBuilder
func (*SetupBuilder) Options ¶ added in v0.17.0
func (s *SetupBuilder) Options( options ...any, ) *SetupBuilder
func (*SetupBuilder) Specs ¶ added in v0.17.0
func (s *SetupBuilder) Specs( specs ...any, ) *SetupBuilder
func (*SetupBuilder) UseHandlerDescriptorFactory ¶ added in v0.17.0
func (s *SetupBuilder) UseHandlerDescriptorFactory( factory HandlerDescriptorFactory, ) *SetupBuilder
type Singleton ¶
type Singleton struct {
LifestyleProvider
}
Singleton LifestyleProvider providing same instance.
type Trampoline ¶
type Trampoline struct {
// contains filtered or unexported fields
}
func (*Trampoline) Callback ¶
func (t *Trampoline) Callback() any
func (*Trampoline) CanBatch ¶ added in v0.10.0
func (t *Trampoline) CanBatch() bool
func (*Trampoline) CanDispatch ¶
func (t *Trampoline) CanDispatch( handler any, binding Binding, ) (reset func(), approved bool)
func (*Trampoline) CanFilter ¶
func (t *Trampoline) CanFilter() bool
func (*Trampoline) CanInfer ¶
func (t *Trampoline) CanInfer() bool
func (*Trampoline) Dispatch ¶
func (t *Trampoline) Dispatch( callback any, handler any, greedy bool, composer Handler, ) HandleResult
func (*Trampoline) Policy ¶
func (t *Trampoline) Policy() Policy
func (*Trampoline) SetResult ¶
func (t *Trampoline) SetResult(result any)
func (*Trampoline) Source ¶ added in v0.4.0
func (t *Trampoline) Source() any
type TraversalCircularityError ¶
type TraversalCircularityError struct {
// contains filtered or unexported fields
}
TraversalCircularityError reports a traversal circularity.
func (TraversalCircularityError) Culprit ¶
func (e TraversalCircularityError) Culprit() Traversing
func (TraversalCircularityError) Error ¶
func (e TraversalCircularityError) Error() string
type TraversalVisitor ¶
type TraversalVisitor interface {
VisitTraversal(node Traversing) (stop bool, err error)
}
TraversalVisitor is called during traversal.
type TraversalVisitorFunc ¶
type TraversalVisitorFunc func(node Traversing) (stop bool, err error)
func (TraversalVisitorFunc) VisitTraversal ¶
func (f TraversalVisitorFunc) VisitTraversal(node Traversing) (bool, error)
type Traversing ¶
type Traversing interface { Parent() Traversing Children() []Traversing Traverse(axis TraversingAxis, visitor TraversalVisitor) error }
Traversing represents a node in a graph.
type TraversingAxis ¶
type TraversingAxis uint
TraversingAxis defines a path of traversal.
const ( TraverseSelf TraversingAxis = iota TraverseRoot TraverseChild TraverseSibling TraverseAncestor TraverseDescendant TraverseDescendantReverse TraverseSelfOrChild TraverseSelfOrSibling TraverseSelfOrAncestor TraverseSelfOrDescendant TraverseSelfOrDescendantReverse TraverseSelfSiblingOrAncestor )
type UnresolvedArgError ¶ added in v0.3.0
type UnresolvedArgError struct { Reason error // contains filtered or unexported fields }
UnresolvedArgError reports a failed resolve an arg.
func (*UnresolvedArgError) Error ¶ added in v0.3.0
func (e *UnresolvedArgError) Error() string
func (*UnresolvedArgError) Unwrap ¶ added in v0.3.0
func (e *UnresolvedArgError) Unwrap() error
Source Files
¶
- arg.go
- axis.go
- batch.go
- bind.go
- bivar.go
- build.go
- call.go
- callback.go
- compose.go
- constraint.go
- context.go
- contravar.go
- covar.go
- creates.go
- ctorbind.go
- describe.go
- dispose.go
- filter.go
- funcbind.go
- graph.go
- handler.go
- handles.go
- infer.go
- initialize.go
- lifestyle.go
- maps.go
- methodbind.go
- options.go
- policy.go
- predicate.go
- provider.go
- provides.go
- resolves.go
- result.go
- runtime.go
- scoped.go
- semantics.go
- setup.go
- timespan.go
- trampoline.go