nope/modules/mod-Broker/assembly/manual-assembly.ts
2020-09-10 18:21:19 +02:00

78 lines
2.0 KiB
TypeScript

/**
* @author Martin Karkowski
* @email m.karkowski@zema.de
* @create date 2018-07-02 03:51:00
* @modify date 2020-09-09 15:55:51
* @desc [description]
*/
import { IDescriptor } from "../../mod-Assembly-Builder/type/interfaces";
import { BrokerBaseFilesystem } from "../src/Broker-System.FileLoader";
import {
IteratorCancel, MultiFunctionChain,
SingleFunctionChain
} from "../src/Function-Chain";
import { ChainRepository as _ChainRepository } from "../src/Repository";
import {
IBroker, IBrokerFilebaseModuleLoader,
IChainRepository,
IFunctionChain
} from "../type/interfaces";
import * as BROKER from "../type/types";
export const TYPES = BROKER.TYPES;
// export type Broker = IBrokerFilebaseModuleLoader;
export type Broker = IBroker;
export type FilebasedBroker = IBrokerFilebaseModuleLoader;
export type ChainRepository = IChainRepository;
export type FunctionChain = IFunctionChain;
export const EXPORT: Array<IDescriptor> = [
{
selector: [TYPES.Broker, TYPES.BrokerFilebased],
factorySelector: [TYPES.BrokerFactory, TYPES.BrokerFilebasedFactory],
type: BrokerBaseFilesystem,
options: {
scope: "inSingletonScope"
}
},
{
selector: TYPES.CancelableIteratorForChain,
factorySelector: TYPES.CancelableIteratorForChainFactory,
type: IteratorCancel
},
{
selector: TYPES.FunctionChain,
factorySelector: TYPES.FunctionChainFactory,
type: MultiFunctionChain,
options: {
addition: {
name: "whenTargetTagged",
args: ["type", "multi"]
}
}
},
{
selector: TYPES.FunctionChain,
factorySelector: TYPES.FunctionChainFactory,
type: SingleFunctionChain,
options: {
addition: {
name: "whenTargetTagged",
args: ["type", "single"]
}
}
},
{
selector: TYPES.ChainRepository,
factorySelector: TYPES.ChainRepositoryFactory,
type: _ChainRepository
}
];
export const REQUIRE = ["BROKER", "MODULELOADER"];
export const NAME = "BROKERFILEBASED";