const configParser = require('../../config'); const depTypeWorker = require('../dep-type'); let logger = require('../../logger'); module.exports = { renovatePackageFile, }; async function renovatePackageFile(packageFileConfig) { const config = { ...packageFileConfig }; let upgrades = []; logger = config.logger; logger.info(`Processing package file`); // Check if config is disabled if (config.enabled === false) { logger.info('packageFile is disabled'); return upgrades; } // Warn if workspaces found if (config.content.workspaces) { logger.warn('Found workspaces'); const warn = { ...config }; warn.depName = 'workspaces'; warn.type = 'warning'; warn.message = 'workspaces configuration detected in `package.json` but this is currently unsupported. Please see https://github.com/singapore/renovate/issues/473 for details.'; upgrades.push(warn); } const depTypes = [ 'dependencies', 'devDependencies', 'optionalDependencies', 'peerDependencies', ]; const depTypeConfigs = depTypes.map(depType => { const depTypeConfig = configParser.mergeChildConfig(config, { ...config[depType], }); depTypeConfig.depType = depType; depTypeConfig.logger = logger.child({ repository: depTypeConfig.repository, packageFile: depTypeConfig.packageFile, depType: depTypeConfig.depType, }); logger.debug({ config: depTypeConfig }, 'depTypeConfig'); return configParser.filterConfig(depTypeConfig, 'depType'); }); logger.trace({ config: depTypeConfigs }, `depTypeConfigs`); for (const depTypeConfig of depTypeConfigs) { upgrades = upgrades.concat( await depTypeWorker.renovateDepType(config.content, depTypeConfig) ); } if ( config.lockFileMaintenance.enabled && (config.hasYarnLock || config.hasPackageLock) ) { logger.debug('lockFileMaintenance enabled'); // Maintain lock files const lockFileMaintenanceConf = configParser.mergeChildConfig( config, config.lockFileMaintenance ); lockFileMaintenanceConf.type = 'lockFileMaintenance'; logger.debug( { config: lockFileMaintenanceConf }, `lockFileMaintenanceConf` ); upgrades.push(lockFileMaintenanceConf); } logger.info('Finished processing package file'); return upgrades; }