import { Resolver } from './interface.js'; type MakeResolver = () => Resolver; const resolverDb: Map = new Map(); const resolverPathMappings: Map = new Map(); export function registerResolver(name: string, r: MakeResolver) { resolverDb.set(name, r); } export function setResolver(fqEntryName: string, resolverName: string) { if (resolverDb.has(resolverName)) { resolverPathMappings.set(fqEntryName, resolverName); } else { throw new Error(`Resolver not found - ${resolverName}`); } } export function getResolverNameForPath(fqEntryName: string): string | undefined { return resolverPathMappings.get(fqEntryName); } export function getResolver(fqEntryName: string): Resolver { const resName: string | undefined = resolverPathMappings.get(fqEntryName); if (resName != undefined) { const f: MakeResolver | undefined = resolverDb.get(resName); if (f) return f(); } throw new Error(`No resolver registered for ${fqEntryName}`); }