| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- import {Constructor} from './types.js';
- /**
- * Find service predicate.
- */
- export type FindServicePredicate<T extends object> = (
- ctor: Constructor<T>,
- container: ServiceContainer,
- ) => boolean;
- /**
- * Service container.
- */
- export declare class ServiceContainer {
- /**
- * Constructor.
- *
- * @param parent
- */
- constructor(parent?: ServiceContainer);
- /**
- * Получить родительский сервис-контейнер или выбросить ошибку.
- */
- getParent(): ServiceContainer;
- /**
- * Проверить наличие родительского сервис-контейнера.
- */
- hasParent(): boolean;
- /**
- * Получить существующий или новый экземпляр.
- *
- * @param ctor
- * @param args
- */
- get<T extends object>(
- ctor: Constructor<T>,
- ...args: any[],
- ): T;
- /**
- * Получить существующий или новый экземпляр,
- * только если конструктор зарегистрирован.
- *
- * @param ctor
- * @param args
- */
- getRegistered<T extends object>(
- ctor: Constructor<T>,
- ...args: any[],
- ): T;
- /**
- * Проверить существование конструктора в контейнере.
- *
- * @param ctor
- */
- has<T extends object>(ctor: Constructor<T>): boolean;
- /**
- * Добавить конструктор в контейнер.
- *
- * @param ctor
- * @param args
- */
- add<T extends object>(
- ctor: Constructor<T>,
- ...args: any[],
- ): this;
- /**
- * Добавить конструктор и создать экземпляр.
- *
- * @param ctor
- * @param args
- */
- use<T extends object>(
- ctor: Constructor<T>,
- ...args: any[],
- ): this;
- /**
- * Добавить конструктор и связанный экземпляр.
- *
- * @param ctor
- * @param service
- */
- set<T extends object>(
- ctor: Constructor<T>,
- service: T,
- ): this;
- /**
- * Найти сервис удовлетворяющий условию.
- *
- * @param predicate
- * @param noParent
- */
- find<T extends object>(
- predicate: FindServicePredicate<T>,
- noParent?: boolean,
- ): T | undefined;
- }
|