import { Type } from './type'; export interface PipeMetadata { name: string; pure: boolean; } export class PipeRegistry { private static instance: PipeRegistry; private pipes = new Map>(); private pipeMetadata = new Map, PipeMetadata>(); private constructor() {} static get(): PipeRegistry { if (!PipeRegistry.instance) { PipeRegistry.instance = new PipeRegistry(); } return PipeRegistry.instance; } register(pipeType: Type): void { const metadata = (pipeType as any)._quarcPipe?.[0]; if (!metadata) { return; } const pipeName = metadata.name; const pure = metadata.pure !== false; this.pipes.set(pipeName, pipeType); this.pipeMetadata.set(pipeType, { name: pipeName, pure }); } getPipe(name: string): Type | undefined { return this.pipes.get(name); } getPipeMetadata(pipeType: Type): PipeMetadata | undefined { return this.pipeMetadata.get(pipeType); } getAllPipes(): Map> { return new Map(this.pipes); } }