UNPKG

@wearesage/schema

Version:

A flexible schema definition and validation system for TypeScript with multi-database support

60 lines (52 loc) 1.59 kB
import { MetadataRegistry } from "./MetadataRegistry"; /** * Interface for a registry provider */ export interface IRegistryProvider { getRegistry(): MetadataRegistry; } /** * Default registry provider that uses a shared registry instance * * Note: This no longer uses a singleton pattern via static getInstance(), * but provides a shared instance through the provider pattern. */ export class DefaultRegistryProvider implements IRegistryProvider { private static sharedRegistry: MetadataRegistry = new MetadataRegistry(); getRegistry(): MetadataRegistry { return DefaultRegistryProvider.sharedRegistry; } } /** * Global registry provider instance - can be replaced for testing */ let globalRegistryProvider: IRegistryProvider = new DefaultRegistryProvider(); /** * Get the current registry provider */ export function getRegistryProvider(): IRegistryProvider { return globalRegistryProvider; } /** * Set a new registry provider * @param provider The registry provider to use */ export function setRegistryProvider(provider: IRegistryProvider): void { globalRegistryProvider = provider; } /** * Reset to the default registry provider */ export function resetRegistryProvider(): void { globalRegistryProvider = new DefaultRegistryProvider(); } /** * Get the current registry instance * * This provides backward compatibility with existing code, * but new code should prefer explicit dependency injection * via constructors when possible. */ export function getRegistry(): MetadataRegistry { return globalRegistryProvider.getRegistry(); }