/** * @author Martin Karkowski * @email m.karkowski@zema.de * @create date 2018-05-22 01:14:10 * @modify date 2020-09-08 16:05:40 * @desc [description] */ import { nopeObserver } from '../../../lib/observables/nopeObservable'; import { IModuleDescription } from '../../mod-Assembly-Builder/type/interfaces'; import { DefaultMatcher } from '../src/Pub-Sub-Matcher'; import { addObservables, autoLinkobservables, GenericObservable } from '../src/Pub-Sub-Observable'; import { BasePublisherAlternative } from '../src/Pub-Sub-Publisher'; import { BaseRegistery } from '../src/Pub-Sub-Registery'; import { AsyncWildcardSubscription, SyncWildcardSubscription } from '../src/Pub-Sub-Subscriptions'; import { BasePubSubSystem } from '../src/Pub-Sub-System'; import { BaseTopic } from '../src/Pub-Sub-Topic'; import { TopicContainer } from '../src/Pub-Sub-Topic-Container'; import { IContainsObservables, IObservable, IPublisher, IPubSubSystem, IRegistery, IShareConfig, ISharedObservables, ITopic, ITopicMatcher, IWildcardSubscription } from '../type/interfaces'; import { TYPES } from '../type/types'; export const DESCRIPTION: IModuleDescription = { AUTOSTART: { }, DEFAULT_INSTANCES: ['pubSubSystem'], NAME: 'PUBSUB', PROVIDED_CLASSES: [ { selector: TYPES.WildcardSubscription, factorySelector: TYPES.WildcardSubscriptionFactory, type: AsyncWildcardSubscription, options: { addition: { name: 'whenTargetTagged', args: ['mode', 'immediate'] } } }, { selector: TYPES.WildcardSubscription, factorySelector: TYPES.WildcardSubscriptionFactory, type: SyncWildcardSubscription, options: { addition: { name: 'whenTargetTagged', args: ['mode', 'sync'] } } }, { selector: TYPES.Publisher, factorySelector: TYPES.PublisherFactory, type: BasePublisherAlternative }, { selector: TYPES.PubSubSystem, factorySelector: TYPES.PubSubSystemFactory, type: BasePubSubSystem, options: { scope: 'inSingletonScope' } }, { selector: TYPES.Registery, factorySelector: TYPES.RegisteryFactory, type: BaseRegistery }, { selector: TYPES.TopicContainer, factorySelector: TYPES.TopicContainerFactory, type: TopicContainer, options: { scope: 'inSingletonScope' } }, { selector: TYPES.TopicMatcher, factorySelector: TYPES.TopicMatcherFactory, type: DefaultMatcher }, { selector: TYPES.DefaultMatcher, factorySelector: TYPES.DefaultMatcherFactory, type: DefaultMatcher }, { selector: TYPES.Topic, factorySelector: TYPES.TopicFactory, type: BaseTopic }, { selector: TYPES.Observable, factorySelector: TYPES.ObservableFactory, type: GenericObservable }, ], PROVIDED_FUNCTIONS: [], REQURIES: ["PUBSUB"], TYPES, ACTIVATIONHANDLERS: [addObservables, autoLinkobservables] } export default DESCRIPTION; /** Export the Type */ export type PubSubSystem = IPubSubSystem; export type Observable = IObservable; export type ContainsObservables = IContainsObservables; export type ContainsSharedObservables = ISharedObservables; export type WildcardSubscription = IWildcardSubscription; export type Subscription = nopeObserver; export type Publisher = IPublisher; export type Registery = IRegistery; export type Topic = ITopic; export type Matcher = ITopicMatcher; export type ShareConfig = IShareConfig;