UNPKG

2.98 kBTypeScriptView Raw
1/// <reference types="node" />
2import * as events from 'events';
3import { Flow as FlowDefinition, Node, NodeDefinition, NodeDefinitions, NodeDependencyTypes } from '@chix/common';
4import { ILoader, LoaderResponse } from './interfaces';
5import { DependencyManager, NodeDefinitionManager, NodeDefinitionProviderMap } from './lib';
6import { Dependencies, DependencyTypes, LoadDefinitionResult, LoadNodeResult, ProviderDef, Workload } from './types';
7/**
8 * Loader
9 *
10 * This is the base loader class
11 * Ít can be used to implement a definition loader
12 * for Chix
13 *
14 * @api public
15 * @author Rob Halff <rob.halff@gmail.com>
16 * @constructor
17 */
18export declare class Loader extends events.EventEmitter implements ILoader {
19 getNodeSource: (provider: string, ns: string, name: string) => NodeDefinition | FlowDefinition;
20 protected dependencyManager: DependencyManager;
21 protected nodeDefinitionManager: NodeDefinitionManager;
22 constructor();
23 /**
24 * This is the main method all child classes should implement.
25 *
26 * @param {FlowDefinition[]} _flows
27 * @param {boolean} _update
28 * @returns {Promise<LoaderResponse>}
29 */
30 load(_flows: FlowDefinition | FlowDefinition[], _update?: boolean): Promise<LoaderResponse>;
31 loadNodeDefinitionFrom(provider: string, ns: string, name: string): Promise<LoadDefinitionResult>;
32 /**
33 * Loader itself only expects preloaded nodes.
34 * There is no actual load going on.
35 *
36 * Remote loader *does* implement loading.
37 *
38 * @param {ProviderDef} providerDef
39 * @returns {Promise<{nodeDef: NodeDefinition | {}}>}
40 */
41 loadNode(providerDef: ProviderDef): Promise<LoadNodeResult>;
42 /**
43 * loop the nodes, detect what provider they expect
44 * if they do not have a provider we will use the default,
45 * if the flow has set it's own default we will use that.
46 * the default within a flow is the one without namespace
47 */
48 getWorkLoad(flows: FlowDefinition[], defaultProvider: string, update: boolean): Workload;
49 addNodeDefinitions(identifier: string, nodeDefs: NodeDefinitions | Array<FlowDefinition | NodeDefinition>): void;
50 addNodeDefinition(identifier: string, nodeDef: NodeDefinition | FlowDefinition): void;
51 hasNodeDefinition(providerUrl: string, ns: string, name: string): boolean;
52 getNodeDefinition(node: Node, flow: FlowDefinition): NodeDefinition | FlowDefinition;
53 getNodeDefinitionFrom(provider: string, ns: string, name: string): FlowDefinition | NodeDefinition;
54 saveNodeDefinition(_providerLocation: string, _nodeDefinition: NodeDefinition | FlowDefinition): void;
55 getNodeDefinitions(provider?: string): NodeDefinitions | NodeDefinitionProviderMap;
56 setNodeDefinitions(nodeDefinitions: NodeDefinitionProviderMap): void;
57 hasDependencies(type?: DependencyTypes): boolean;
58 getDependencies(type?: DependencyTypes): Dependencies | NodeDependencyTypes;
59 setDependencies(dependencies: Dependencies): void;
60}