flowie
Version:
Library for creating, and working with flows
35 lines • 1.88 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const debug_1 = __importDefault(require("debug"));
const flowieResult_1 = __importDefault(require("../runtime/flowieResult"));
const generateFunctionFromFlowDeclaration_1 = __importDefault(require("./generateFunctionFromFlowDeclaration"));
const debug = debug_1.default('flowie:compiler');
function compileFlowDeclaration(preparedFlowieManager, flowieContainer) {
const { generatedFlowFunction, generatedFlowFunctionWithContext } = generateFunctionFromFlowDeclaration_1.default(preparedFlowieManager, flowieContainer);
debug('Flowie compiled');
const executeMainFlow = generatedFlowFunction(separateReportListFromResult);
const executeMainFlowWithContext = generatedFlowFunctionWithContext(separateReportListFromResult);
return function executeCompiledFlow(reporter, argument, context) {
const executionArguments = { flowieContainer, argument, flowieResult: flowieResult_1.default, reporter };
if (context === undefined) {
return executeMainFlow(executionArguments);
}
return executeMainFlowWithContext({ ...executionArguments, context });
};
}
exports.default = compileFlowDeclaration;
function separateReportListFromResult(listToConcatenate) {
const emptyFunctionReportList = [];
const emptyResultList = [];
return listToConcatenate.reduce(concatenateReportListAndResult, [emptyFunctionReportList, emptyResultList]);
}
function concatenateReportListAndResult([functionReportList, resultList], [functionReport, result]) {
return [
functionReportList.concat(functionReport),
resultList.concat(result)
];
}
//# sourceMappingURL=compileFlowDeclaration.js.map