diff --git a/src/registry.ts b/src/registry.ts index e6b20a9..cb25b9f 100644 --- a/src/registry.ts +++ b/src/registry.ts @@ -12,12 +12,11 @@ export interface RegistryConfig { export class Registry { #owner: Owner | null; + #config: RegistryConfig; #cache: Map, any>; - readonly config: RegistryConfig; - constructor(config: RegistryConfig = {}) { - this.config = config; + this.#config = config; this.#owner = getOwner(); this.#cache = new Map, any>(); } @@ -25,12 +24,7 @@ export class Registry { has(initializer: ServiceInitializer): boolean { const parentRegistry = this.getParentRegistry(); - if ( - parentRegistry && - (parentRegistry.config.expose === true || - (Array.isArray(parentRegistry.config.expose) && - parentRegistry.config.expose?.includes(initializer))) - ) { + if (parentRegistry?.isExposing(initializer)) { return parentRegistry.has(initializer); } @@ -40,12 +34,7 @@ export class Registry { get(initializer: ServiceInitializer): T | undefined { const parentRegistry = this.getParentRegistry(); - if ( - parentRegistry && - (parentRegistry.config.expose === true || - (Array.isArray(parentRegistry.config.expose) && - parentRegistry.config.expose?.includes(initializer))) - ) { + if (parentRegistry?.isExposing(initializer)) { return parentRegistry.get(initializer); } @@ -59,12 +48,7 @@ export class Registry { register(initializer: ServiceInitializer): T { const parentRegistry = this.getParentRegistry(); - if ( - parentRegistry && - (parentRegistry.config.expose === true || - (Array.isArray(parentRegistry.config.expose) && - parentRegistry.config.expose?.includes(initializer))) - ) { + if (parentRegistry?.isExposing(initializer)) { return parentRegistry.register(initializer); } @@ -77,6 +61,16 @@ export class Registry { return registration; } + protected isExposing( + initializer: ServiceInitializer + ): boolean { + return ( + this.#config.expose === true || + (Array.isArray(this.#config.expose) && + this.#config.expose?.includes(initializer)) + ); + } + private getParentRegistry(): Registry | undefined { return this.#owner ? runWithOwner(this.#owner, () => {