const createAllModules = (dependencyGraph, existingModules, moduleDefinitions) => f.flow( f.keys, f.reduce( (accumulatedModules, name) => createModule(name, dependencyGraph, accumulatedModules, moduleDefinitions), existingModules ) )(dependencyGraph)
const parseDependencies = (functionStr) => { const parsed = babylon.parse(functionStr, { sourceType: 'script' }); // get the first argument of the function, then get its desctructued properties const properties = f.flow( f.get('program.body.0.expression.params.0.properties'), f.map('key.name') )(parsed); return properties; }
_.flow( _.defaults(defaults || printers), _.omit(verbose || ['debug']), _.toPairs, _.forEach(printer => logger.on(printer[0], printer[1])) )(methods);
fp.flow([ fp.filter((v, k) => isValidField(v)), fp.uniq, fp.map(replaceSelectAliases), fp.flatten, ])
const checkVoidModules = (createdModules, graphDetails) => { const voidModulesInjected = f.flow( f.pickBy(module => module == null), f.keys, f.tap(modules => { if (modules.length) { console.log(`the modules "${modules.join(', ')}" are void`); } }), f.map(moduleName => [moduleName, graphDetails.depends(moduleName)]), f.filter('1.length') )(createdModules); if (voidModulesInjected.length) { f.flow( f.forEach(([moduleName, dependents]) => { console.log(`the module "${moduleName}" has no return and can't\ be injected in the modules "${dependents.join(', ')}"`); }) )(voidModulesInjected); throw new Error('depending on void modules'); } }
const checkMissingDependencies = (moduleDefinitions, existingModules, dependencyGraph) => { const missingDependencies = f.flow( f.mapValues( f.reject(dependencyName => moduleDefinitions[dependencyName] || existingModules[dependencyName] ) ), f.pickBy('length'), f.toPairs )(dependencyGraph); if (missingDependencies.length) { f.forEach(([name, missing]) => { console.log(`unable to find dependencies "${missing.join(', ')}" for module "${name}"`); })(missingDependencies); throw new Error('missing dependencies'); } }
const spacesAreValid = _.flow( _.map(spacePattern.test.bind(spacePattern)), _.every