UNPKG

flowie

Version:

Library for creating, and working with flows

58 lines 2.61 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const createFlowDeclarationManager_1 = __importDefault(require("./createFlowDeclarationManager")); function buildFlowDeclaration(flowDeclaration, flowieContainer) { const [firstFlow, ...restOfFlow] = flowDeclaration.flows; const flowFunctionDetails = convertFlowElementToDeclarable(firstFlow, flowieContainer); const flowDeclarationManager = createFlowDeclarationManager_1.default(flowFunctionDetails); return restOfFlow.reduce(parseFlows, { flowDeclarationManager, flowieContainer }).flowDeclarationManager; } exports.default = buildFlowDeclaration; function parseFlows({ flowDeclarationManager, flowieContainer }, flowElement) { const flowFunctionDetailsList = convertFlowElementToDeclarable(flowElement, flowieContainer); if (flowElement.split) { return { flowieContainer, flowDeclarationManager: flowDeclarationManager.split(flowFunctionDetailsList) }; } const [flowFunctionDetails] = flowFunctionDetailsList; return { flowieContainer, flowDeclarationManager: flowDeclarationManager.pipe(flowFunctionDetails) // TODO }; } // TODO subflows function convertFlowElementToDeclarable(flowElement, flowieContainer) { const pipeFlow = flowElement; if (pipeFlow.pipe) { if (typeof pipeFlow.pipe === 'string') { return [converToFlowFunctionDetails(pipeFlow.pipe, flowieContainer)]; } return [ buildFlowDeclaration({ flows: [pipeFlow.pipe], name: pipeFlow.name }, flowieContainer) ]; } const splitFlow = flowElement; if (splitFlow.split) { const splitFlow = flowElement; return splitFlow.split.map(converSplitToFlowFunctionDetails, { flowieContainer }); } return [buildFlowDeclaration(flowElement, flowieContainer)]; } function converSplitToFlowFunctionDetails(flowieItemDeclaration) { if (typeof flowieItemDeclaration === 'string') { return converToFlowFunctionDetails(flowieItemDeclaration, this.flowieContainer); } return buildFlowDeclaration({ flows: [flowieItemDeclaration], name: flowieItemDeclaration.name }, this.flowieContainer); } function converToFlowFunctionDetails(functionName, flowieContainer) { return { name: functionName, isAsync: flowieContainer.functionsContainer[functionName].isAsync }; } //# sourceMappingURL=buildFlowDeclaration.js.map