rsdi
Advanced tools
Comparing version 2.3.0 to 2.4.0
@@ -27,2 +27,3 @@ import { DependencyResolver, IDIContainer, NamedResolvers, ResolveDependencyType, ResolverName, ConvertToDefinedDependencies, NonStrictNamedResolvers } from "./types"; | ||
private addResolver; | ||
__(): ContainerResolvers; | ||
} | ||
@@ -29,0 +30,0 @@ /** |
@@ -34,5 +34,3 @@ "use strict"; | ||
*/ | ||
DIContainer.prototype.get = function (dependencyName, | ||
// @todo: move parent deps to separate method | ||
parentDeps) { | ||
DIContainer.prototype.get = function (dependencyName, parentDeps) { | ||
if (parentDeps === void 0) { parentDeps = []; } | ||
@@ -78,2 +76,5 @@ var name = (0, DefinitionName_1.definitionNameToString)(dependencyName); | ||
}; | ||
DIContainer.prototype.__ = function () { | ||
throw new Error("Method not implemented."); | ||
}; | ||
return DIContainer; | ||
@@ -80,0 +81,0 @@ }()); |
@@ -8,5 +8,5 @@ import { DependencyResolver } from "../types"; | ||
protected parentDeps: string[]; | ||
abstract resolve: (container: DIContainer) => T; | ||
abstract resolve: (container: DIContainer<any>) => T; | ||
setParentDependencies(parentDeps: string[]): void; | ||
} | ||
export default AbstractResolver; |
import AbstractResolver from "./AbstractResolver"; | ||
import { IDIContainer } from "../types"; | ||
import DIContainer from "../DIContainer"; | ||
export declare type Factory = (container: IDIContainer) => any; | ||
export type Factory = (container: IDIContainer) => any; | ||
/** | ||
@@ -6,0 +6,0 @@ * FactoryResolver - allows to use custom function to build dependency |
@@ -46,2 +46,3 @@ "use strict"; | ||
var constructorParameters = (0, DIContainer_1.resolveFunctionParameters)(diContainer, _this.deps, _this.parentDeps); | ||
// eslint-disable-next-line new-cap | ||
var object = new ((_a = _this.constructorFunction).bind.apply(_a, __spreadArray([void 0], constructorParameters, false)))(); | ||
@@ -48,0 +49,0 @@ _this.methods.forEach(function (method) { |
@@ -30,3 +30,4 @@ "use strict"; | ||
_this.resolve = function (container) { | ||
return container.get(_this.existingDefinitionName, _this.parentDeps); | ||
var resolved = container.get(_this.existingDefinitionName, _this.parentDeps); | ||
return resolved; | ||
}; | ||
@@ -33,0 +34,0 @@ _this.existingDefinitionName = existingDefinitionName; |
@@ -5,7 +5,7 @@ import ObjectResolver from "./resolvers/ObjectResolver"; | ||
import FactoryResolver from "./resolvers/FactoryResolver"; | ||
export declare type DependencyResolver<T extends any = any> = { | ||
export type DependencyResolver<T extends any = any> = { | ||
setParentDependencies: (parentDeps: string[]) => void; | ||
resolve: (container: DIContainer) => T; | ||
resolve: (container: DIContainer<any>) => T; | ||
}; | ||
export declare type AnyNamedResolvers = { | ||
export type AnyNamedResolvers = { | ||
[k: string]: DependencyResolver; | ||
@@ -22,3 +22,3 @@ }; | ||
*/ | ||
export declare type NonStrictNamedResolvers = { | ||
export type NonStrictNamedResolvers = { | ||
[k: string]: DependencyResolver | any; | ||
@@ -33,12 +33,12 @@ }; | ||
*/ | ||
export declare type NamedResolvers = { | ||
export type NamedResolvers = { | ||
[k: string]: DependencyResolver; | ||
}; | ||
export declare type ConvertToDefinedDependencies<T = NonStrictNamedResolvers> = { | ||
export type ConvertToDefinedDependencies<T = NonStrictNamedResolvers> = { | ||
[K in keyof T]: T[K] extends DependencyResolver ? T[K] : DependencyResolver<T[K]>; | ||
}; | ||
export declare type WrapWithResolver<T extends any[]> = { | ||
export type WrapWithResolver<T extends any[]> = { | ||
[K in keyof T]: T[K] | DependencyResolver<T[K]>; | ||
}; | ||
declare type Resolve<N extends DependencyResolver> = N extends { | ||
type Resolve<N extends DependencyResolver> = N extends { | ||
resolve(...args: any[]): infer R; | ||
@@ -49,16 +49,16 @@ } ? R : never; | ||
} | ||
export declare type FetchClassesFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
export type FetchClassesFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
[P in keyof ContainerResolvers]: ContainerResolvers[P] extends ObjectResolver<ClassOf<any>> ? ContainerResolvers[P] extends ObjectResolver<infer X> ? X : never : never; | ||
}[keyof ContainerResolvers]; | ||
export declare type FetchFunctionsFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
export type FetchFunctionsFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
[P in keyof ContainerResolvers]: ContainerResolvers[P] extends FunctionResolver<infer FT> ? FT : never; | ||
}[keyof ContainerResolvers]; | ||
export declare type FetchFactoriesFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
export type FetchFactoriesFromContainerResolvers<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = { | ||
[P in keyof ContainerResolvers]: ContainerResolvers[P] extends FactoryResolver<infer FT> ? FT : never; | ||
}[keyof ContainerResolvers]; | ||
export declare type ResolverName<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = keyof ContainerResolvers | { | ||
export type ResolverName<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> = keyof ContainerResolvers | { | ||
name: keyof ContainerResolvers; | ||
} | FetchClassesFromContainerResolvers<ContainerResolvers> | FetchFunctionsFromContainerResolvers<ContainerResolvers> | FetchFactoriesFromContainerResolvers<ContainerResolvers>; | ||
export declare type ParametersWithResolver<T extends (...args: any) => any> = T extends (...args: infer P) => any ? WrapWithResolver<P> : never; | ||
export declare type MethodArgs<T extends ClassOf<any>, K extends keyof InstanceType<T>> = ParametersWithResolver<InstanceType<T>[K]>; | ||
export type ParametersWithResolver<T extends (...args: any) => any> = T extends (...args: infer P) => any ? WrapWithResolver<P> : never; | ||
export type MethodArgs<T extends ClassOf<any>, K extends keyof InstanceType<T>> = ParametersWithResolver<InstanceType<T>[K]>; | ||
/** | ||
@@ -70,3 +70,3 @@ * Resolves types using self type | ||
*/ | ||
export declare type ResolveUsingSelfType<T> = T extends ClassOf<any> ? InstanceType<T> : T extends (...args: any) => infer FT ? FT : never; | ||
export type ResolveUsingSelfType<T> = T extends ClassOf<any> ? InstanceType<T> : T extends (...args: any) => infer FT ? FT : never; | ||
/** | ||
@@ -76,3 +76,3 @@ * Tries to resolve type based on provided name and accumulated | ||
*/ | ||
export declare type TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers extends NamedResolvers> = Name extends keyof NamedResolvers ? ExistingNamedResolvers[Name] extends DependencyResolver ? Resolve<ExistingNamedResolvers[Name]> : never : never; | ||
export type TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers extends NamedResolvers> = Name extends keyof NamedResolvers ? ExistingNamedResolvers[Name] extends DependencyResolver ? Resolve<ExistingNamedResolvers[Name]> : never : never; | ||
/** | ||
@@ -87,3 +87,3 @@ * Resolve dependency type | ||
*/ | ||
export declare type ResolveDependencyType<ExistingNamedResolvers extends NamedResolvers = NamedResolvers, Name extends ResolverName<ExistingNamedResolvers> = ResolverName<ExistingNamedResolvers>> = TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers> extends never ? ResolveUsingSelfType<Name> : TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers>; | ||
export type ResolveDependencyType<ExistingNamedResolvers extends NamedResolvers = NamedResolvers, Name extends ResolverName<ExistingNamedResolvers> = ResolverName<ExistingNamedResolvers>> = TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers> extends never ? ResolveUsingSelfType<Name> : TryResolveUsingExistingResolvers<Name, ExistingNamedResolvers>; | ||
export interface IDIContainer<ContainerResolvers extends NamedResolvers = AnyNamedResolvers> { | ||
@@ -90,0 +90,0 @@ get: <UserDefinedType = void, Name extends ResolverName<ContainerResolvers> = ResolverName<ContainerResolvers>>(dependencyName: Name) => UserDefinedType extends void ? ResolveDependencyType<ContainerResolvers, Name> : UserDefinedType; |
{ | ||
"name": "rsdi", | ||
"version": "2.3.0", | ||
"version": "2.4.0", | ||
"description": "Simple dependency injection container for JavaScript/TypeScript", | ||
@@ -39,4 +39,5 @@ "scripts": { | ||
"devDependencies": { | ||
"@tsd/typescript": "^4.6.4", | ||
"@types/jest": "^27.5.0", | ||
"@tsd/typescript": "^5.0.4", | ||
"@types/jest": "^29.5.1", | ||
"@types/node": "^20.1.2", | ||
"@typescript-eslint/eslint-plugin": "^5.27.1", | ||
@@ -50,10 +51,10 @@ "eslint": "^8.17.0", | ||
"husky": "^7.0.2", | ||
"jest": "^28.0.3", | ||
"jest-runner-tsd": "^3.0.0", | ||
"jest": "^29.5.0", | ||
"jest-runner-tsd": "^5.0.0", | ||
"lint-staged": "^11.2.0", | ||
"prettier": "^2.6.2", | ||
"ts-jest": "^28.0.1", | ||
"ts-jest": "^29.1.0", | ||
"tsd": "^0.20.0", | ||
"typescript": "^4.6.4" | ||
"typescript": "^5.0.4" | ||
} | ||
} |
@@ -99,6 +99,4 @@ # RSDI - Dependency Injection Container | ||
public async register(userData: SignupData) { | ||
// validate | ||
const user = this.userRepository.saveNewUser(userData); | ||
// send sign up email | ||
return user; | ||
// validate and send sign up email | ||
return this.userRepository.saveNewUser(userData); | ||
} | ||
@@ -138,3 +136,3 @@ } | ||
), | ||
[UserRegistrator.name]: object(UserRegistrator).contrstruct( | ||
[UserRegistrator.name]: object(UserRegistrator).construct( | ||
use(MyDbProviderUserRepository.name) | ||
@@ -141,0 +139,0 @@ ), |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
69854
793
0
18
400