From 777d8605a06c8bd6f73766431b4ef4b1800c1bee Mon Sep 17 00:00:00 2001 From: Robin Chappatte Date: Fri, 31 May 2024 14:58:32 +0200 Subject: [PATCH] add header comment for api methods --- dependency-manager.ts | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/dependency-manager.ts b/dependency-manager.ts index 6de9fff..65b6e84 100644 --- a/dependency-manager.ts +++ b/dependency-manager.ts @@ -16,7 +16,14 @@ export class DependencyManager { private modules: Modules = new Map(); private resolving: Set = new Set(); - // Enregistrer un module avec son initialisateur + /** + * Set the given provider to be used to resolve the dependency identified by the given identifier. + * + * Throw an error if the identifier is already used. + * + * @param identifier the identifier that will be used to ask the manager for the resolved dependency. + * @param provider a function that receive the dependency manager as param and return the dependency. Can be asynchronous. + */ register(identifier: ModuleIdentifier, provider: Provider): void { if (this.modules.has(identifier)) { throw new Error(`Module ${identifier} is already registered.`); @@ -24,7 +31,16 @@ export class DependencyManager { this.modules.set(identifier, { provider }); } - // Résoudre un module et ses dépendances + /** + * Return the dependency matching the given identifier. + * If the dependency has not been resolved yet, resolve it first. + * + * Throw an error if: + * - no provider has been registred with that identifier + * - a circular dependency is detected + * + * @param identifier the identifier used to register the provider + */ async resolve(identifier: ClassType): Promise; async resolve(identifier: ModuleIdentifier): Promise; async resolve(identifier: ModuleIdentifier) {