UNPKG

@decaf-ts/decorator-validation

Version:
69 lines (68 loc) 1.5 kB
import { Constructor } from "../model/types"; /** * @summary Basic interface for Registries * * @interface IRegistry * * @category Model */ export interface IRegistry<T> { /** * @summary Registers an Object * * @param {T} obj * @param {any[]} args * * @method */ register(obj: T | any, ...args: any[]): void; /** * @summary Retrieves an Object if it can find it * * @param {any} key * @param {any[]} args * @return {T | undefined} * * @method */ get(key: any, ...args: any[]): T | undefined; } /** * @summary Basic Builder Registry Interface * * @template T * @interface BuilderRegistry<T> * * @category Model */ export interface BuilderRegistry<T> extends IRegistry<Constructor<T>> { /** * @summary Retrieves an Builder Object by name if it can * * @param {string} name * @param {any[]} args * * @method */ get(name: string, ...args: any[]): Constructor<T> | undefined; /** * @summary Registers a constructor by name * * @param {Constructor<T>} [constructor] * @param {name} name * @param {any[]} args * * @method */ register(constructor: Constructor<T>, name?: string, ...args: any[]): void; /** * @summary Builds an Object by name * * @param {{}} obj * @param {any[]} args * @return T * * @method */ build(obj: Record<string, any> | T, ...args: any[]): T; }