From ec544518e8d3610bcd4f20e6c32447322f32770a Mon Sep 17 00:00:00 2001
From: Peter Jaszkowiak
Date: Mon, 2 Jan 2017 22:23:17 -0700
Subject: [PATCH 1/2] Use async v2
---
minifier.js | 14 +++++++++++---
package.json | 2 +-
src/file.js | 20 ++++++++++++++------
src/meta/dependencies.js | 25 ++++++++++++++++---------
src/meta/themes.js | 18 ++++++++++++++----
src/plugins.js | 12 ++++++++----
src/plugins/load.js | 4 +---
src/privileges/helpers.js | 8 ++------
src/rewards/index.js | 10 ++++++----
9 files changed, 73 insertions(+), 40 deletions(-)
diff --git a/minifier.js b/minifier.js
index 25c0177175..a83069ab85 100644
--- a/minifier.js
+++ b/minifier.js
@@ -17,13 +17,21 @@ Minifier.js.minify = function (scripts, minify, callback) {
});
async.filter(scripts, function (script, next) {
- file.exists(script, function (exists) {
+ file.exists(script, function (err, exists) {
+ if (err) {
+ return next(err);
+ }
+
if (!exists) {
console.warn('[minifier] file not found, ' + script);
}
- next(exists);
+ next(null, exists);
});
- }, function (scripts) {
+ }, function (err, scripts) {
+ if (err) {
+ return callback(err);
+ }
+
if (minify) {
minifyScripts(scripts, callback);
} else {
diff --git a/package.json b/package.json
index a9dbdfb82b..f80a1b12c9 100644
--- a/package.json
+++ b/package.json
@@ -17,7 +17,7 @@
"coveralls": "istanbul cover _mocha --report lcovonly -- -R dot && cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js && rm -rf ./coverage"
},
"dependencies": {
- "async": "~1.5.0",
+ "async": "^2.1.4",
"autoprefixer": "^6.2.3",
"bcryptjs": "~2.3.0",
"body-parser": "^1.9.0",
diff --git a/src/file.js b/src/file.js
index df820cc47f..a231ddd01d 100644
--- a/src/file.js
+++ b/src/file.js
@@ -87,19 +87,27 @@ file.allowedExtensions = function () {
file.exists = function (path, callback) {
fs.stat(path, function (err, stat) {
- callback(!err && stat);
+ if (err) {
+ if (err.code === 'ENOENT') {
+ return callback(null, false);
+ }
+ return callback(err);
+ }
+ return callback(null, true);
});
};
file.existsSync = function (path) {
- var exists = false;
try {
- exists = fs.statSync(path);
- } catch(err) {
- exists = false;
+ fs.statSync(path);
+ } catch (err) {
+ if (err.code === 'ENOENT') {
+ return false;
+ }
+ throw err;
}
- return !!exists;
+ return true;
};
module.exports = file;
diff --git a/src/meta/dependencies.js b/src/meta/dependencies.js
index 3f892c37ab..fdfa755198 100644
--- a/src/meta/dependencies.js
+++ b/src/meta/dependencies.js
@@ -19,14 +19,17 @@ module.exports = function (Meta) {
winston.verbose('Checking dependencies for outdated modules');
- async.every(modules, function (module, next) {
+ async.each(modules, function (module, next) {
fs.readFile(path.join(__dirname, '../../node_modules/', module, 'package.json'), {
encoding: 'utf-8'
}, function (err, pkgData) {
- // If a bundled plugin/theme is not present, skip the dep check (#3384)
- if (err && err.code === 'ENOENT' && (module === 'nodebb-rewards-essentials' || module.startsWith('nodebb-plugin') || module.startsWith('nodebb-theme'))) {
- winston.warn('[meta/dependencies] Bundled plugin ' + module + ' not found, skipping dependency check.');
- return next(true);
+ if (err) {
+ // If a bundled plugin/theme is not present, skip the dep check (#3384)
+ if (err.code === 'ENOENT' && (module === 'nodebb-rewards-essentials' || module.startsWith('nodebb-plugin') || module.startsWith('nodebb-theme'))) {
+ winston.warn('[meta/dependencies] Bundled plugin ' + module + ' not found, skipping dependency check.');
+ return next();
+ }
+ return next(err);
}
try {
@@ -34,20 +37,24 @@ module.exports = function (Meta) {
} catch(e) {
process.stdout.write('[' + 'missing'.red + '] ' + module.bold + ' is a required dependency but could not be found\n');
depsMissing = true;
- return next(true);
+ return next();
}
var ok = !semver.validRange(pkg.dependencies[module]) || semver.satisfies(pkgData.version, pkg.dependencies[module]);
if (ok || (pkgData._resolved && pkgData._resolved.indexOf('//github.com') !== -1)) {
- next(true);
+ next();
} else {
process.stdout.write('[' + 'outdated'.yellow + '] ' + module.bold + ' installed v' + pkgData.version + ', package.json requires ' + pkg.dependencies[module] + '\n');
depsOutdated = true;
- next(true);
+ next();
}
});
- }, function (ok) {
+ }, function (err) {
+ if (err) {
+ return callback(err);
+ }
+
if (depsMissing) {
callback(new Error('dependencies-missing'));
} else if (depsOutdated) {
diff --git a/src/meta/themes.js b/src/meta/themes.js
index be48d1e70d..777e1af5df 100644
--- a/src/meta/themes.js
+++ b/src/meta/themes.js
@@ -27,18 +27,28 @@ module.exports = function (Meta) {
async.filter(files, function (file, next) {
fs.stat(path.join(themePath, file), function (err, fileStat) {
if (err) {
- return next(false);
+ if (err.code === 'ENOENT') {
+ return next(null, false);
+ }
+ return next(err);
}
- next((fileStat.isDirectory() && file.slice(0, 13) === 'nodebb-theme-'));
+ next(null, (fileStat.isDirectory() && file.slice(0, 13) === 'nodebb-theme-'));
});
- }, function (themes) {
+ }, function (err, themes) {
+ if (err) {
+ return callback(err);
+ }
+
async.map(themes, function (theme, next) {
var config = path.join(themePath, theme, 'theme.json');
fs.readFile(config, function (err, file) {
if (err) {
- return next();
+ if (err.code === 'ENOENT') {
+ return next(null, null);
+ }
+ return next(err);
}
try {
var configObj = JSON.parse(file.toString());
diff --git a/src/plugins.js b/src/plugins.js
index b8ddbdc0fe..52378e7f38 100644
--- a/src/plugins.js
+++ b/src/plugins.js
@@ -161,9 +161,7 @@ var middleware;
});
// Filter out plugins with invalid paths
- async.filter(paths, file.exists, function (paths) {
- next(null, paths);
- });
+ async.filter(paths, file.exists, next);
},
function (paths, next) {
async.map(paths, Plugins.loadPluginInfo, next);
@@ -346,7 +344,13 @@ var middleware;
async.filter(dirs, function (dir, callback) {
fs.stat(dir, function (err, stats) {
- callback(!err && stats.isDirectory());
+ if (err) {
+ if (err.code === 'ENOENT') {
+ return callback(null, false);
+ }
+ return callback(err);
+ }
+ callback(null, stats.isDirectory());
});
}, function (plugins) {
next(null, plugins);
diff --git a/src/plugins/load.js b/src/plugins/load.js
index 60d584f99f..98a470f914 100644
--- a/src/plugins/load.js
+++ b/src/plugins/load.js
@@ -31,9 +31,7 @@ module.exports = function (Plugins) {
return path.join(__dirname, '../../node_modules/', plugin);
});
- async.filter(plugins, file.exists, function (plugins) {
- next(null, plugins);
- });
+ async.filter(plugins, file.exists, next);
},
], callback);
};
diff --git a/src/privileges/helpers.js b/src/privileges/helpers.js
index 9df9d8cd7b..02e1bed879 100644
--- a/src/privileges/helpers.js
+++ b/src/privileges/helpers.js
@@ -8,12 +8,8 @@ var helpers = {};
helpers.some = function (tasks, callback) {
async.some(tasks, function (task, next) {
- task(function (err, result) {
- next(!err && result);
- });
- }, function (result) {
- callback(null, result);
- });
+ task(next);
+ }, callback);
};
helpers.isUserAllowedTo = function (privilege, uid, cid, callback) {
diff --git a/src/rewards/index.js b/src/rewards/index.js
index 4ba403fce8..398abfb8f3 100644
--- a/src/rewards/index.js
+++ b/src/rewards/index.js
@@ -37,12 +37,14 @@ rewards.checkConditionAndRewardUser = function (uid, condition, method, callback
function (rewards, next) {
async.filter(rewards, function (reward, next) {
if (!reward) {
- return next(false);
+ return next(null, false);
}
- checkCondition(reward, method, next);
- }, function (eligible) {
- if (!eligible) {
+ checkCondition(reward, method, function (result) {
+ next(null, result);
+ });
+ }, function (err, eligible) {
+ if (err || !eligible) {
return next(false);
}
From 11f7cc416363b7fb116feae135ffecf721acd62f Mon Sep 17 00:00:00 2001
From: Peter Jaszkowiak
Date: Mon, 2 Jan 2017 23:03:34 -0700
Subject: [PATCH 2/2] Pass tests
---
public/logo.png | Bin 7189 -> 3680 bytes
src/controllers/admin/themes.js | 6 +++---
src/plugins.js | 4 +---
src/plugins/load.js | 4 ++--
src/webserver.js | 4 ++--
5 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/public/logo.png b/public/logo.png
index 6a6c184126221ac0b44a53d08ef3fe012ed73b45..d8dcba4638cbdf043ad23c7426a73f0743dadd0d 100644
GIT binary patch
literal 3680
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
BPY?hA
literal 7189
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 ' + staticDir + '\' not found.');
}
- callback();
+ callback(err);
});
}
}
diff --git a/src/webserver.js b/src/webserver.js
index fec42974c6..43e3c4b324 100644
--- a/src/webserver.js
+++ b/src/webserver.js
@@ -262,11 +262,11 @@ module.exports.testSocket = function (socketPath, callback) {
var file = require('./file');
async.series([
function (next) {
- file.exists(socketPath, function (exists) {
+ file.exists(socketPath, function (err, exists) {
if (exists) {
next();
} else {
- callback();
+ callback(err);
}
});
},
|