proxydi
Version:
A typed hierarchical DI container that resolves circular dependencies via Proxy
53 lines (34 loc) • 1.63 kB
Markdown
Refactoring plan for 0.4.x version:
- ~~resolveAll() as container method~~
- ~~scope to resolve() and isKnown()~~
- Current+Parent by default
- ~~remove allowRegisterAnything option~~
- allow register anything always
- scope to @inject()
- the same logic as in resolve() method
- Split ResolveScope.Parent to ResolveScope.DirectParent and ResolveScope.FistAncestor
- replace resolveInContainerContext option by contextResolve() method
- polish baking:
- remove public direct baking method
- remember all baked instances to:
- replace them by proxy after removing baked instance
- replace baked instance in hierarchy if added new instance clother to client (depends on injected scope)
- remove allowRewriteDependencies
- register() always throws Error if dependency already exists
- new replace() method as syntax sugar for remove()-register() chain
- dependencies aliases:
- strict separating between dependencyId and aliasId
- aliases to @injectable() and register()
- allow many dependencies by one aliasId
- resolve first alias in @inject() and resolve()
- remove container settings
- add iniitialize() function to container constructor()
const rootContainer = new ProxyDiContainer({initializer: (container) => {
container.register(UserService);
container.register(AuthService);
}})
- rebranding aka rename:
@inject() to @resolve()
@injectAll to @resolveAll() (and remove current separaete resolveAll function)
@injectable() to @resolvable()
- make injectDependenciesTo() private?