function getColumnsByTableNamePrefix(tableName, columns) { const fn = fp.compose([ fp.mapKeys(fp.replace(`${tableName}_`, '')), fp.pickBy((value, key) => fp.startsWith(`${tableName}_`, key)) ]) if (columns) { return fn(columns) } return fn }
items = items.map((item) => ({ owner: fp.pick(['id', 'login', 'avatar_url', 'html_url', 'type'], item.owner), repository: fp.compose([ fp.assign({ owner: item.owner.id }), fp.defaults({ description: '', language: '' }),
const errors = fp.compose([ fp.mapValues(fp.map('message')), fp.groupBy('context.key')
const omitUserAndRepositoryColumns = fp.compose([ fp.omitBy((value, column) => fp.startsWith(`${User.tableName}_`, column)), fp.omitBy((value, column) => fp.startsWith(`${Repository.tableName}_`, column))
F.compose( x => x.length > 0, F.filter(x => x.status === 'in-progress'), F.propOr([], 'jobs') )
program .command('inc:build [project-dir]') .description('Increments the ios.buildNumber and android.versionCode in app.json') .action(act(async (dir) => { const projectManifest = await readBuildManifest(dir, null); const iosBuildNum = parseInteger(0, F.getOr(0, ['expo', 'ios', 'buildNumber'], projectManifest)); const androidVersionCode = F.getOr(0, ['expo', 'android', 'versionCode'], projectManifest); const newBuildNum = Math.max(iosBuildNum, androidVersionCode) + 1; const setObj = F.curry(set); const newManifest = F.compose( setObj(['expo', 'ios', 'buildNumber'], `${newBuildNum}`), setObj(['expo', 'android', 'versionCode'], newBuildNum) )(projectManifest); const manifestPath = buildManifestFilePathFromDir(dir); fs.writeFileSync(manifestPath, JSON.stringify(newManifest, null, 2)); return true; }));
_.uniq); const groupedUpdates = fp.compose( fp.map(joinObjects), fp.groupBy('_id'),