diff --git a/definitions/type.DependencyCollection.go b/definitions/type.DependencyCollection.go new file mode 100644 index 0000000..3ebc396 --- /dev/null +++ b/definitions/type.DependencyCollection.go @@ -0,0 +1,16 @@ +package definitions + +import ( + "reflect" + + "github.com/MY-RV/gosc/enums/scopeStatus" +) + +type DependencyCollection interface { + GetDependencyFactory(reflect.Type) (Factory, error) + GetRegisteredDependencies() []reflect.Type + GetScopeStatus() scopeStatus.Enum + + GetDependency(reflect.Type) (any, error) + MustGetDependency(reflect.Type) any +} diff --git a/definitions/type.DependencyCollectionBuilder.go b/definitions/type.DependencyCollectionBuilder.go new file mode 100644 index 0000000..ca28e86 --- /dev/null +++ b/definitions/type.DependencyCollectionBuilder.go @@ -0,0 +1,12 @@ +package definitions + +import "github.com/MY-RV/gosc/enums/scope" + +type DependencyCollectionBuilder interface { + AddDependency(scope.Enum, Factory) + AddSingleton(Factory) + AddTransient(Factory) + AddScoped(Factory) + + Build() DependencyCollection +} diff --git a/definitions/type.DependencyRecord.go b/definitions/type.DependencyRecord.go new file mode 100644 index 0000000..84af113 --- /dev/null +++ b/definitions/type.DependencyRecord.go @@ -0,0 +1,10 @@ +package definitions + +import ( + "github.com/MY-RV/gosc/enums/scope" +) + +type DependencyRecord interface { + GetFactory() Factory + GetScope() scope.Enum +} diff --git a/definitions/type.Factory.go b/definitions/type.Factory.go new file mode 100644 index 0000000..e3cbf02 --- /dev/null +++ b/definitions/type.Factory.go @@ -0,0 +1,8 @@ +package definitions + +import "reflect" + +type Factory interface { + GetFactoryType() reflect.Type + Create(DependencyCollection) any +} diff --git a/definitions/type.TypedFactory.go b/definitions/type.TypedFactory.go new file mode 100644 index 0000000..183e51e --- /dev/null +++ b/definitions/type.TypedFactory.go @@ -0,0 +1,6 @@ +package definitions + +type TypedFactory[T any] interface { + Factory + TypedCreate(DependencyCollection) T +} diff --git a/enums/scope/enum.go b/enums/scope/enum.go index 412131f..b24679c 100644 --- a/enums/scope/enum.go +++ b/enums/scope/enum.go @@ -4,5 +4,6 @@ type Enum int const ( SINGLETON Enum = iota + TRANSIENT SCOPED ) diff --git a/enums/scope_status/enum.go b/enums/scopeStatus/enum.go similarity index 72% rename from enums/scope_status/enum.go rename to enums/scopeStatus/enum.go index 49a9833..a7ad091 100644 --- a/enums/scope_status/enum.go +++ b/enums/scopeStatus/enum.go @@ -1,4 +1,4 @@ -package scope_status +package scopeStatus type Enum int diff --git a/enums/scope_status/enum_test.go b/enums/scopeStatus/enum_test.go similarity index 70% rename from enums/scope_status/enum_test.go rename to enums/scopeStatus/enum_test.go index fee4103..b689762 100644 --- a/enums/scope_status/enum_test.go +++ b/enums/scopeStatus/enum_test.go @@ -1,4 +1,4 @@ -package scope_status +package scopeStatus import "testing" diff --git a/internal/defaults/dependencyCollection/dependencyCollection.GetDependency.go b/internal/defaults/dependencyCollection/dependencyCollection.GetDependency.go new file mode 100644 index 0000000..27ddb8d --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollection.GetDependency.go @@ -0,0 +1,8 @@ +package dependencyCollection + +import "reflect" + +// GetDependency implements definitions.DependencyCollection. +func (d *dependencyCollection) GetDependency(reflect.Type) (any, error) { + panic("unimplemented") +} diff --git a/internal/defaults/dependencyCollection/dependencyCollection.GetDependencyFactory.go b/internal/defaults/dependencyCollection/dependencyCollection.GetDependencyFactory.go new file mode 100644 index 0000000..b1d5b12 --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollection.GetDependencyFactory.go @@ -0,0 +1,12 @@ +package dependencyCollection + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" +) + +// GetDependencyFactory implements definitions.DependencyCollection. +func (d *dependencyCollection) GetDependencyFactory(reflect.Type) (definitions.Factory, error) { + panic("unimplemented") +} \ No newline at end of file diff --git a/internal/defaults/dependencyCollection/dependencyCollection.GetRegisteredDependencies.go b/internal/defaults/dependencyCollection/dependencyCollection.GetRegisteredDependencies.go new file mode 100644 index 0000000..0bdcdc7 --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollection.GetRegisteredDependencies.go @@ -0,0 +1,8 @@ +package dependencyCollection + +import "reflect" + +// GetRegisteredDependencies implements definitions.DependencyCollection. +func (d *dependencyCollection) GetRegisteredDependencies() []reflect.Type { + panic("unimplemented") +} diff --git a/internal/defaults/dependencyCollection/dependencyCollection.GetScopeStatus.go b/internal/defaults/dependencyCollection/dependencyCollection.GetScopeStatus.go new file mode 100644 index 0000000..254ef6a --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollection.GetScopeStatus.go @@ -0,0 +1,8 @@ +package dependencyCollection + +import "github.com/MY-RV/gosc/enums/scopeStatus" + +// GetScopeStatus implements definitions.DependencyCollection. +func (d *dependencyCollection) GetScopeStatus() scopeStatus.Enum { + return d.scopeStatus +} diff --git a/internal/defaults/dependencyCollection/dependencyCollection.MustGetDependency.go b/internal/defaults/dependencyCollection/dependencyCollection.MustGetDependency.go new file mode 100644 index 0000000..b3fce93 --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollection.MustGetDependency.go @@ -0,0 +1,8 @@ +package dependencyCollection + +import "reflect" + +// MustGetDependency implements definitions.DependencyCollection. +func (d *dependencyCollection) MustGetDependency(reflect.Type) any { + panic("unimplemented") +} diff --git a/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddDependency.go b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddDependency.go new file mode 100644 index 0000000..dbc8ced --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddDependency.go @@ -0,0 +1,14 @@ +package dependencyCollection + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" + "github.com/MY-RV/gosc/internal/defaults/dependencyRecord" +) + +// AddDependency implements definitions.DependencyCollectionBuilder. +func (d *dependencyCollectionBuilder) AddDependency(scope scope.Enum, factory definitions.Factory) { + dependencyRecord := dependencyRecord.Default(factory, scope) + registry := d.dependencyCollection.registry + registry[factory.GetFactoryType()] = dependencyRecord +} \ No newline at end of file diff --git a/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddScoped.go b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddScoped.go new file mode 100644 index 0000000..155e883 --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddScoped.go @@ -0,0 +1,11 @@ +package dependencyCollection + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" +) + +// AddScoped implements definitions.DependencyCollectionBuilder. +func (d *dependencyCollectionBuilder) AddScoped(factory definitions.Factory) { + d.AddDependency(scope.SCOPED, factory) +} diff --git a/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddSingleton.go b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddSingleton.go new file mode 100644 index 0000000..4454f15 --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddSingleton.go @@ -0,0 +1,11 @@ +package dependencyCollection + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" +) + +// AddSingleton implements definitions.DependencyCollectionBuilder. +func (d *dependencyCollectionBuilder) AddSingleton(factory definitions.Factory) { + d.AddDependency(scope.SCOPED, factory) +} diff --git a/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddTransient.go b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddTransient.go new file mode 100644 index 0000000..5c76bdb --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.AddTransient.go @@ -0,0 +1,11 @@ +package dependencyCollection + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" +) + +// AddTransient implements definitions.DependencyCollectionBuilder. +func (d *dependencyCollectionBuilder) AddTransient(factory definitions.Factory) { + d.AddDependency(scope.SCOPED, factory) +} diff --git a/internal/defaults/dependencyCollection/dependencyCollectionBuilder.Build.go b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.Build.go new file mode 100644 index 0000000..51b9a5c --- /dev/null +++ b/internal/defaults/dependencyCollection/dependencyCollectionBuilder.Build.go @@ -0,0 +1,19 @@ +package dependencyCollection + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scopeStatus" + "github.com/MY-RV/gosc/internal/helpers/map_helper" +) + +// Build implements definitions.DependencyCollectionBuilder. +func (d *dependencyCollectionBuilder) Build() definitions.DependencyCollection { + return &dependencyCollection{ + singletonServices: d.dependencyCollection.singletonServices, + scopedServices: make(map[reflect.Type]any), + registry: map_helper.CopyMap(d.dependencyCollection.registry), + scopeStatus: scopeStatus.ACTIVE, + } +} \ No newline at end of file diff --git a/internal/defaults/dependencyCollection/pkg.NewBuilder.go b/internal/defaults/dependencyCollection/pkg.NewBuilder.go new file mode 100644 index 0000000..ee028d2 --- /dev/null +++ b/internal/defaults/dependencyCollection/pkg.NewBuilder.go @@ -0,0 +1,19 @@ +package dependencyCollection + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scopeStatus" +) + +func NewBuilder() definitions.DependencyCollectionBuilder { + return &dependencyCollectionBuilder{ + dependencyCollection: dependencyCollection{ + singletonServices: make(map[reflect.Type]any), + scopedServices: make(map[reflect.Type]any), + registry: make(map[reflect.Type]definitions.DependencyRecord), + scopeStatus: scopeStatus.INACTIVE, + }, + } +} diff --git a/internal/defaults/dependencyCollection/type.dependencyCollection.go b/internal/defaults/dependencyCollection/type.dependencyCollection.go new file mode 100644 index 0000000..1f4020a --- /dev/null +++ b/internal/defaults/dependencyCollection/type.dependencyCollection.go @@ -0,0 +1,22 @@ +package dependencyCollection + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scopeStatus" +) + +// Implements github.com/MY-RV/gosc/definitions::DependencyCollection +type dependencyCollection struct { + singletonServices map[reflect.Type]any + scopedServices map[reflect.Type]any + + registry map[reflect.Type]definitions.DependencyRecord + scopeStatus scopeStatus.Enum +} + +// TYPE CHECKING +func init() { + var _ definitions.DependencyCollection = &dependencyCollection{} +} diff --git a/internal/defaults/dependencyCollection/type.dependencyCollectionBuilder.go b/internal/defaults/dependencyCollection/type.dependencyCollectionBuilder.go new file mode 100644 index 0000000..fd88731 --- /dev/null +++ b/internal/defaults/dependencyCollection/type.dependencyCollectionBuilder.go @@ -0,0 +1,15 @@ +package dependencyCollection + +import ( + "github.com/MY-RV/gosc/definitions" +) + +// Implements github.com/MY-RV/gosc/definitions::DependencyCollectionBuilder +type dependencyCollectionBuilder struct { + dependencyCollection dependencyCollection +} + +// TYPE CHECKING +func init() { + var _ definitions.DependencyCollectionBuilder = &dependencyCollectionBuilder{} +} diff --git a/internal/defaults/dependencyRecord/dependencyRecord.GetFactory.go b/internal/defaults/dependencyRecord/dependencyRecord.GetFactory.go new file mode 100644 index 0000000..1076d4f --- /dev/null +++ b/internal/defaults/dependencyRecord/dependencyRecord.GetFactory.go @@ -0,0 +1,8 @@ +package dependencyRecord + +import "github.com/MY-RV/gosc/definitions" + +// GetFactory implements definitions.DependencyRecord. +func (d *dependencyRecord) GetFactory() definitions.Factory { + return d.factory +} diff --git a/internal/defaults/dependencyRecord/dependencyRecord.GetScope.go b/internal/defaults/dependencyRecord/dependencyRecord.GetScope.go new file mode 100644 index 0000000..5e0ab55 --- /dev/null +++ b/internal/defaults/dependencyRecord/dependencyRecord.GetScope.go @@ -0,0 +1,8 @@ +package dependencyRecord + +import "github.com/MY-RV/gosc/enums/scope" + +// GetScope implements definitions.DependencyRecord. +func (d *dependencyRecord) GetScope() scope.Enum { + return d.scope +} diff --git a/internal/defaults/dependencyRecord/pkg.Default.go b/internal/defaults/dependencyRecord/pkg.Default.go new file mode 100644 index 0000000..51c2933 --- /dev/null +++ b/internal/defaults/dependencyRecord/pkg.Default.go @@ -0,0 +1,13 @@ +package dependencyRecord + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" +) + +func Default(factory definitions.Factory, scope scope.Enum) definitions.DependencyRecord { + return &dependencyRecord{ + factory: factory, + scope: scope, + } +} \ No newline at end of file diff --git a/internal/defaults/dependencyRecord/type.dependencyRecord.go b/internal/defaults/dependencyRecord/type.dependencyRecord.go new file mode 100644 index 0000000..99d3dbd --- /dev/null +++ b/internal/defaults/dependencyRecord/type.dependencyRecord.go @@ -0,0 +1,16 @@ +package dependencyRecord + +import ( + "github.com/MY-RV/gosc/definitions" + "github.com/MY-RV/gosc/enums/scope" +) + +type dependencyRecord struct { + factory definitions.Factory + scope scope.Enum +} + +// TYPE CHECKING +func init() { + var _ definitions.DependencyRecord = &dependencyRecord{} +} diff --git a/internal/defaults/factories/pkg.TypedFactory.go b/internal/defaults/factories/pkg.TypedFactory.go new file mode 100644 index 0000000..66e898d --- /dev/null +++ b/internal/defaults/factories/pkg.TypedFactory.go @@ -0,0 +1,8 @@ +package factories + +import "github.com/MY-RV/gosc/definitions" + +// Implements github.com/MY-RV/gosc/definitions.TypedFactory +type TypedFactory[T any] struct { + factoryFunction func(definitions.DependencyCollection) T +} diff --git a/internal/defaults/factories/typedFactory/DependencyTypedFactory.Create.go b/internal/defaults/factories/typedFactory/DependencyTypedFactory.Create.go new file mode 100644 index 0000000..c05e774 --- /dev/null +++ b/internal/defaults/factories/typedFactory/DependencyTypedFactory.Create.go @@ -0,0 +1,8 @@ +package typedFactory + +import "github.com/MY-RV/gosc/definitions" + +// Implements github.com/MY-RV/gosc/definitions::TypedFactory.Create +func (typedFactory *DependencyTypedFactory[T]) Create(dependencyCollection definitions.DependencyCollection) any { + return typedFactory.factoryFunction(dependencyCollection) +} diff --git a/internal/defaults/factories/typedFactory/DependencyTypedFactory.GetFactoryType.go b/internal/defaults/factories/typedFactory/DependencyTypedFactory.GetFactoryType.go new file mode 100644 index 0000000..540b431 --- /dev/null +++ b/internal/defaults/factories/typedFactory/DependencyTypedFactory.GetFactoryType.go @@ -0,0 +1,8 @@ +package typedFactory + +import "reflect" + +// Implements github.com/MY-RV/gosc/definitions::TypedFactory.GetFactoryType +func (typedFactory *DependencyTypedFactory[T]) GetFactoryType() reflect.Type { + return typedFactory.factoryType +} diff --git a/internal/defaults/factories/typedFactory/DependencyTypedFactory.TypedCreate.go b/internal/defaults/factories/typedFactory/DependencyTypedFactory.TypedCreate.go new file mode 100644 index 0000000..06f4ffb --- /dev/null +++ b/internal/defaults/factories/typedFactory/DependencyTypedFactory.TypedCreate.go @@ -0,0 +1,8 @@ +package typedFactory + +import "github.com/MY-RV/gosc/definitions" + +// Implements github.com/MY-RV/gosc/definitions::TypedFactory.TypedCreate +func (typedFactory *DependencyTypedFactory[T]) TypedCreate(dependencyCollection definitions.DependencyCollection) T { + return typedFactory.factoryFunction(dependencyCollection) +} diff --git a/internal/defaults/factories/typedFactory/pkg.NewDependencyTypedFactory.go b/internal/defaults/factories/typedFactory/pkg.NewDependencyTypedFactory.go new file mode 100644 index 0000000..f424cbf --- /dev/null +++ b/internal/defaults/factories/typedFactory/pkg.NewDependencyTypedFactory.go @@ -0,0 +1,17 @@ +package typedFactory + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" +) + +func NewDependencyTypedFactory[T any](factoryFunction func(definitions.DependencyCollection) T) DependencyTypedFactory[T] { + reflectType := reflect.TypeOf(factoryFunction) + dependencyType := reflectType.Out(0) + + return DependencyTypedFactory[T]{ + factoryFunction: factoryFunction, + factoryType: dependencyType, + } +} diff --git a/internal/defaults/factories/typedFactory/type.DependencyTypedFactory.go b/internal/defaults/factories/typedFactory/type.DependencyTypedFactory.go new file mode 100644 index 0000000..e087e11 --- /dev/null +++ b/internal/defaults/factories/typedFactory/type.DependencyTypedFactory.go @@ -0,0 +1,13 @@ +package typedFactory + +import ( + "reflect" + + "github.com/MY-RV/gosc/definitions" +) + +// Implements github.com/MY-RV/gosc/definitions::DependencyTypedFactory +type DependencyTypedFactory[T any] struct { + factoryFunction func(definitions.DependencyCollection) T + factoryType reflect.Type +} diff --git a/internal/helpers/map_helper/CopyMap.go b/internal/helpers/map_helper/CopyMap.go new file mode 100644 index 0000000..e790b4f --- /dev/null +++ b/internal/helpers/map_helper/CopyMap.go @@ -0,0 +1,9 @@ +package map_helper + +func CopyMap[K comparable, V any](m map[K]V) map[K]V { + result := make(map[K]V, len(m)) + for k, v := range m { + result[k] = v + } + return result +} diff --git a/internal/pkg/ServiceCollection.NewScope.go b/internal/pkg/ServiceCollection.NewScope.go index 65fc993..56c6ca3 100644 --- a/internal/pkg/ServiceCollection.NewScope.go +++ b/internal/pkg/ServiceCollection.NewScope.go @@ -3,7 +3,7 @@ package pkg import ( "reflect" - "github.com/MY-RV/gosc/enums/scope_status" + "github.com/MY-RV/gosc/enums/scopeStatus" ) func (serviceCollection *ServiceCollection) NewScope() *ServiceCollection { @@ -15,7 +15,7 @@ func (serviceCollection *ServiceCollection) NewScope() *ServiceCollection { }, servicesDefinitions: serviceCollection.servicesDefinitions, - scopeStatus: scope_status.ACTIVE, + scopeStatus: scopeStatus.ACTIVE, } return &response diff --git a/internal/pkg/ServiceCollection.NewServiceCollectionBuilder.go b/internal/pkg/ServiceCollection.NewServiceCollectionBuilder.go index f57f18b..602465a 100644 --- a/internal/pkg/ServiceCollection.NewServiceCollectionBuilder.go +++ b/internal/pkg/ServiceCollection.NewServiceCollectionBuilder.go @@ -3,7 +3,7 @@ package pkg import ( "reflect" - "github.com/MY-RV/gosc/enums/scope_status" + "github.com/MY-RV/gosc/enums/scopeStatus" ) func NewServiceCollectionBuilder() *ServiceCollectionBuilder { @@ -15,7 +15,7 @@ func NewServiceCollectionBuilder() *ServiceCollectionBuilder { }, servicesDefinitions: make(map[reflect.Type]*ServiceDefinition[any]), - scopeStatus: scope_status.INACTIVE, + scopeStatus: scopeStatus.INACTIVE, }, } } diff --git a/internal/pkg/ServiceCollection._getServiceScoped.go b/internal/pkg/ServiceCollection._getServiceScoped.go index 799ef25..a5768a8 100644 --- a/internal/pkg/ServiceCollection._getServiceScoped.go +++ b/internal/pkg/ServiceCollection._getServiceScoped.go @@ -4,11 +4,11 @@ import ( "fmt" "reflect" - "github.com/MY-RV/gosc/enums/scope_status" + "github.com/MY-RV/gosc/enums/scopeStatus" ) func (serviceCollection *ServiceCollection) _getServiceScoped(reflectType reflect.Type) (*any, error) { - if serviceCollection.scopeStatus == scope_status.INACTIVE { + if serviceCollection.scopeStatus == scopeStatus.INACTIVE { return nil, fmt.Errorf("scope is not active") } diff --git a/internal/pkg/ServiceCollectionBuilder.Build.go b/internal/pkg/ServiceCollectionBuilder.Build.go index 9c638e5..697a615 100644 --- a/internal/pkg/ServiceCollectionBuilder.Build.go +++ b/internal/pkg/ServiceCollectionBuilder.Build.go @@ -3,7 +3,7 @@ package pkg import ( "reflect" - "github.com/MY-RV/gosc/enums/scope_status" + "github.com/MY-RV/gosc/enums/scopeStatus" ) func (serviceCollectionBuilder *ServiceCollectionBuilder) Build() *ServiceCollection { @@ -16,7 +16,7 @@ func (serviceCollectionBuilder *ServiceCollectionBuilder) Build() *ServiceCollec }, servicesDefinitions: serviceCollection.servicesDefinitions, - scopeStatus: scope_status.INACTIVE, + scopeStatus: scopeStatus.INACTIVE, } return &response diff --git a/internal/pkg/type.ServiceCollection.go b/internal/pkg/type.ServiceCollection.go index 34f5a18..af44a02 100644 --- a/internal/pkg/type.ServiceCollection.go +++ b/internal/pkg/type.ServiceCollection.go @@ -3,11 +3,11 @@ package pkg import ( "reflect" - "github.com/MY-RV/gosc/enums/scope_status" + "github.com/MY-RV/gosc/enums/scopeStatus" ) type ServiceCollection struct { activeServices ServiceCollectionActiveServices servicesDefinitions map[reflect.Type]*ServiceDefinition[any] - scopeStatus scope_status.Enum + scopeStatus scopeStatus.Enum } diff --git a/publish.go b/publish.go index f3f1677..cfb1e06 100644 --- a/publish.go +++ b/publish.go @@ -1,6 +1,8 @@ package gosc -import "github.com/MY-RV/gosc/internal/pkg" +import "github.com/MY-RV/gosc/definitions" + +/* import "github.com/MY-RV/gosc/internal/pkg" type ServiceCollectionBuilder pkg.ServiceCollectionBuilder type ServiceCollection pkg.ServiceCollection @@ -24,4 +26,8 @@ func FactoryFunc(factoryFunction any) *pkg.ServiceFactory[any] { func NewFactoryFunc(factoryFunction any) (*pkg.ServiceFactory[any], error) { return pkg.NewFactoryFunc(factoryFunction) +} */ + +func NewDependencyCollectionBuilder() definitions.DependencyCollectionBuilder { + return nil }