UNPKG

@docsvision/webclient

Version:

Type definitions for DocsVision WebClient scripts and extensions.

51 lines (50 loc) 3.72 kB
import { FieldSpec } from '@docsvision/webclient/System/GetFieldName'; import { Factories, ServiceGetter, ServiceSetter } from './ServiceContainer'; /** Информация о сервисе, используемая в {@link ServiceContainer} */ export declare class Service<T = any> { name: string; factory?: (services: any) => T; meta: object; instance?: T; get?: ServiceGetter<T>; set?: ServiceSetter<T>; /** * Создает описание сервиса на основе существующего экземпляра. * @param name Имя сервиса (имя переменной), по которому к нему будут обращаться. * @param service Экземпляр сервиса * @param T Тип сервиса */ static fromInstance<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, service: ValueT, meta?: object): Service<ValueT>; /** * Создает описание сервиса, экземпляр которого создается при первом обращении * @param name Имя сервиса (имя переменной), по которому к нему будут обращаться. * @param service Метод, который принимает параметром текущий контейнер и возвращает экземпляр сервиса. * @param T Тип сервиса */ static fromFactory<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, serviceFactory: (services: any) => ValueT, meta?: object): Service<ValueT>; /** * Создает описание сервиса, доступ к экземпляру которого осуществляется через специальные методы. * @param name Имя сервиса (имя переменной), по которому к нему будут обращаться. * @param get Метод, возвращающий экземпляр сервиса * @param set Метод, устаналивающий новый экземпляр сервиса * @param T Тип сервиса */ static fromAccessors<ContainerT, ValueT>(name: FieldSpec<ContainerT, ValueT>, get: ServiceGetter<ValueT>, set?: ServiceSetter<ValueT>, meta?: object): Service<ValueT>; /** * Создает описание сервиса из объекта, в котором ключем выступает имя переменной сервиса, а значением - его экземпляр. * @param name Имя сервиса (имя переменной), по которому к нему будут обращаться. * @param service Экземпляр сервиса * @param T Тип сервиса */ static fromMap<$T>(container: $T, meta?: object): Service; /** * Создает описание сервиса из объекта, в котором ключем выступает имя переменной сервиса, а значением - фабрика, создающая экземпляр сервиса. * @param container Объект, в котором ключи - имена сервисов, значения - фабричные методы сервисов. * @param service Экземпляр сервиса * @param T Тип сервиса */ static fromFactoryMap<$T>(container: Factories<$T>, meta?: object): Service; private static fromMapInternal; } export declare const ServiceDescriptor: typeof Service; export declare type ServiceDescriptor<T = any> = Service<T>;