2020-08-30 07:45:44 +00:00
|
|
|
/**
|
|
|
|
* @author Martin Karkowski
|
|
|
|
* @email m.karkowski@zema.de
|
|
|
|
* @create date 2018-05-22 01:14:10
|
2020-09-08 14:59:06 +00:00
|
|
|
* @modify date 2020-09-08 16:05:40
|
2020-08-30 07:45:44 +00:00
|
|
|
* @desc [description]
|
|
|
|
*/
|
|
|
|
|
2020-09-01 15:05:06 +00:00
|
|
|
import { nopeObserver } from '../../../lib/observables/nopeObservable';
|
2020-09-08 14:59:06 +00:00
|
|
|
import { IModuleDescription } from '../../mod-Assembly-Builder/type/interfaces';
|
2020-08-30 07:45:44 +00:00
|
|
|
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';
|
2020-09-01 15:05:06 +00:00
|
|
|
import { AsyncWildcardSubscription, SyncWildcardSubscription } from '../src/Pub-Sub-Subscriptions';
|
2020-08-30 07:45:44 +00:00
|
|
|
import { BasePubSubSystem } from '../src/Pub-Sub-System';
|
2020-09-01 15:05:06 +00:00
|
|
|
import { BaseTopic } from '../src/Pub-Sub-Topic';
|
2020-08-30 07:45:44 +00:00
|
|
|
import { TopicContainer } from '../src/Pub-Sub-Topic-Container';
|
2020-09-01 15:05:06 +00:00
|
|
|
import { IContainsObservables, IObservable, IPublisher, IPubSubSystem, IRegistery, IShareConfig, ISharedObservables, ITopic, ITopicMatcher, IWildcardSubscription } from '../type/interfaces';
|
2020-09-08 14:59:06 +00:00
|
|
|
import { TYPES } from '../type/types';
|
2020-08-30 07:45:44 +00:00
|
|
|
|
2020-09-08 14:59:06 +00:00
|
|
|
export const DESCRIPTION: IModuleDescription<typeof TYPES> = {
|
|
|
|
AUTOSTART: {
|
2020-08-30 07:45:44 +00:00
|
|
|
},
|
2020-09-08 14:59:06 +00:00
|
|
|
DEFAULT_INSTANCES: ['pubSubSystem'],
|
|
|
|
NAME: 'PUBSUB',
|
|
|
|
PROVIDED_CLASSES: [
|
|
|
|
{
|
|
|
|
selector: TYPES.WildcardSubscription,
|
|
|
|
factorySelector: TYPES.WildcardSubscriptionFactory,
|
|
|
|
type: AsyncWildcardSubscription,
|
|
|
|
options: {
|
|
|
|
addition: {
|
|
|
|
name: 'whenTargetTagged',
|
|
|
|
args: ['mode', 'immediate']
|
|
|
|
}
|
2020-08-30 07:45:44 +00:00
|
|
|
}
|
2020-09-08 14:59:06 +00:00
|
|
|
},
|
|
|
|
{
|
|
|
|
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
|
|
|
|
},
|
2020-08-30 07:45:44 +00:00
|
|
|
|
2020-09-08 14:59:06 +00:00
|
|
|
],
|
|
|
|
PROVIDED_FUNCTIONS: [],
|
|
|
|
REQURIES: ["PUBSUB"],
|
|
|
|
TYPES,
|
|
|
|
ACTIVATIONHANDLERS: [addObservables, autoLinkobservables]
|
|
|
|
}
|
2020-08-30 07:45:44 +00:00
|
|
|
|
2020-09-08 14:59:06 +00:00
|
|
|
export default DESCRIPTION;
|
2020-08-30 07:45:44 +00:00
|
|
|
|
|
|
|
/** Export the Type */
|
|
|
|
export type PubSubSystem = IPubSubSystem;
|
|
|
|
export type Observable<T> = IObservable<T>;
|
|
|
|
export type ContainsObservables = IContainsObservables;
|
|
|
|
export type ContainsSharedObservables = ISharedObservables;
|
|
|
|
export type WildcardSubscription<T> = IWildcardSubscription<T>;
|
2020-09-01 15:05:06 +00:00
|
|
|
export type Subscription<T> = nopeObserver<T>;
|
2020-08-30 07:45:44 +00:00
|
|
|
export type Publisher<T> = IPublisher<T>;
|
|
|
|
export type Registery = IRegistery;
|
|
|
|
export type Topic<T> = ITopic<T>;
|
|
|
|
export type Matcher = ITopicMatcher;
|
|
|
|
export type ShareConfig = IShareConfig;
|
|
|
|
|
|
|
|
|