// implementation function addUsedDependencies(config) { return when.all( config.deps.map(function (dependency) { return dependency.synchronise(); }) ); }
function wrap(fn) { return rateLimit(whenNode.lift(fn)); }
// implementation function deleteUnusedDependencies(config) { var deletions = []; for (var location in config.unusedDependencies) { // eslint-disable-line guard-for-in deletions.push(performDeletion(location)); } return when.all(deletions); function performDeletion(location) { return deleteFile(location) .then(onSuccess); } function onSuccess(location) { console.info(chalk.red('- %s'), location.replace(/.+\//, '')); } }
// implementation function getUnusedDependencies(config) { return when(config.deps.reduce(updateIndex, clone(config.bundle))); function updateIndex(unused, dependency) { var location = dependency.getPathToBundle(); if (location in unused) { delete unused[location]; } return unused; } function clone(value) { return JSON.parse(JSON.stringify(value)); } }
// implementation function getDependencies(config) { Dependency.setConfig(config); var dependencies = []; var handler = config.options.keepOptional ? addDependency : addIfMandatory; forEachNestedDependency(config.graph, handler); return when(dependencies); function addDependency(key, node) { dependencies.push(new Dependency(key, node)); } function addIfMandatory(key, node, parentNode) { if (node.optional === true) { delete parentNode[key]; } else { addDependency(key, node); } } }
// implementation function pruneOptionalDependencies(config) { return config.options.keepOptional ? when(config.graph) : getPackageJson(); function getPackageJson() { return fs.readFile(config.path.manifest, {encoding: 'utf8'}) .then(onSuccess, onError); function onSuccess(manifest) { var pkg = JSON.parse(manifest); if (pkg.optionalDependencies) { for (var name in pkg.optionalDependencies) { // eslint-disable-line guard-for-in delete config.graph.dependencies[name]; } } return config.graph; } function onError() { throw new Error('! failed to prune optional dependencies'); } } }
var cached = unbundled.length - uncached.length; return when({ bundled: { used: bundled.length,
var home = os.homedir(); return getCacheContents() .then(toArray) .then(getPackages) .then(indexByPath); var deferred = when.defer(); var npmCache = childProcess.spawn('npm', ['cache', 'ls']); npmCache.on('close', onClose); return deferred.promise; deferred.reject(new Error('! failed to read contents of npm cache')); } else { deferred.resolve(allData);
return when({options: options, startTime: new Date()}) .then(getConfigWithPaths) .then(getConfigWithGraph) .then(handleOptionalDependencies) .then(ensureBundleExists) .then(getConfigWithNpmCacheContents) .then(getConfigWithBundleContents) .then(getConfigWithDependencies) .then(getConfigWithUnusedDependencies) .then(getConfigWithStats); .then(function (npmCache) { return assign(config, {npmCache: npmCache}); }); .then(function (deps) { return assign(config, {deps: deps}); }); .then(function (unusedDependencies) { return assign(config, {unusedDependencies: unusedDependencies}); }); .then(function (stats) { return assign(config, {stats: stats}); });