diff --git a/.eslintrc.yml b/.eslintrc.yml index 269b9a3..6fd7279 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -1,4 +1,5 @@ env: + node: true # We use Promise, Map, and occasional ES6 syntax. es6: true @@ -13,3 +14,4 @@ rules: # Prevent some likely errors. no-redeclare: "error" + no-undef: "error" diff --git a/lib/svg-to-img.js b/lib/svg-to-img.js index a521b6d..8dc54d4 100644 --- a/lib/svg-to-img.js +++ b/lib/svg-to-img.js @@ -21,13 +21,14 @@ module.exports = function (svg, format, out, cb) { .flatten() .stream(format, function (err, stdout, stderr) { if (err) { console.error(err); } + + stdout.on('end', function () { + imgCache.set(cacheIndex, [stdout]); + cb && cb(); + }); + stdout.pipe(out); }); - stream.on('end', function () { - stdout.end(); - imgCache.set(cacheIndex, [stdout]); - cb && cb(); - }); }; // Fake stream from the cache. diff --git a/server.js b/server.js index b457112..6591d58 100644 --- a/server.js +++ b/server.js @@ -703,7 +703,7 @@ cache(function (data, match, sendBadge, request) { name: 'downloads', version: true, process: function (data, badgeData) { - downloads = data.crate? data.crate.downloads: data.version.downloads; + var downloads = data.crate? data.crate.downloads: data.version.downloads; version = data.version && data.version.num; badgeData.text[1] = metric(downloads) + (version? ' version ' + version: ''); badgeData.colorscheme = downloadCountColor(downloads); @@ -713,7 +713,7 @@ cache(function (data, match, sendBadge, request) { name: 'downloads', version: true, process: function (data, badgeData) { - downloads = data.version? data.version.downloads: data.versions[0].downloads; + var downloads = data.version? data.version.downloads: data.versions[0].downloads; version = data.version && data.version.num; badgeData.text[1] = metric(downloads) + (version? ' version ' + version: ' latest version'); badgeData.colorscheme = downloadCountColor(downloads); @@ -2293,7 +2293,7 @@ cache(function(data, match, sendBadge, request) { method: 'HEAD', }; // Query Params - queryParams = {}; + var queryParams = {}; if (branch) { queryParams.branch = branch; } @@ -2720,7 +2720,7 @@ cache(function(data, match, sendBadge, request) { var branch = match[2]; var format = match[3]; - queryParams = {}; + var queryParams = {}; if (branch) { queryParams.branch = branch; } @@ -2768,7 +2768,7 @@ cache(function(data, match, sendBadge, request) { var branch = match[2]; var format = match[3]; - queryParams = {}; + var queryParams = {}; if (branch) { queryParams.branch = branch; } @@ -3728,7 +3728,7 @@ function mapNugetFeed(pattern, offset, getInfo) { var versions = data.data; if (!includePre) { // Remove prerelease versions. - filteredVersions = versions.filter(function(version) { + var filteredVersions = versions.filter(function(version) { return !/-/.test(version); }); if (filteredVersions.length > 0) { @@ -4701,7 +4701,7 @@ cache(function(data, match, sendBadge, request) { var badgeData = getBadgeData('talk', data); request(url, function(err, res, buffer) { try { - room = JSON.parse(buffer); + var room = JSON.parse(buffer); badgeData.text[1] = room.topic; badgeData.colorscheme = room.color; sendBadge(format, badgeData); @@ -4726,7 +4726,7 @@ cache(function(data, match, sendBadge, request) { var apiUrl = 'https://circleci.com/api/v1.1/project/' + type + '/' + userRepo; // Query Params - queryParams = {}; + var queryParams = {}; queryParams['limit'] = 1; queryParams['filter'] = 'completed'; @@ -5215,7 +5215,7 @@ cache(function(data, match, sendBadge, request) { } try { if (type == 'image-size') { - size = metric(buffer[0].repo.size) + "B"; + var size = metric(buffer[0].repo.size) + "B"; badgeData.text[0] = 'image size'; badgeData.text[1] = size; } else if (type == 'layers') { @@ -5640,30 +5640,25 @@ cache(function(data, match, sendBadge, request) { var badgeData = getBadgeData('website', data); badgeData.colorscheme = undefined; request(options, function(err, res) { - try { - // We consider all HTTP status codes below 310 as success. - if (err != null || res.statusCode >= 310) { - badgeData.text[1] = offlineMessage; - if (sixHex(offlineColor)) { - badgeData.colorB = '#' + offlineColor; - } else { - badgeData.colorscheme = offlineColor; - } - sendBadge(format, badgeData); - return; + // We consider all HTTP status codes below 310 as success. + if (err != null || res.statusCode >= 310) { + badgeData.text[1] = offlineMessage; + if (sixHex(offlineColor)) { + badgeData.colorB = '#' + offlineColor; } else { - badgeData.text[1] = onlineMessage; - if (sixHex(onlineColor)) { - badgeData.colorB = '#' + onlineColor; - } else { - badgeData.colorscheme = onlineColor; - } - sendBadge(format, badgeData); - return; + badgeData.colorscheme = offlineColor; } - } catch(e) { - badge({text: ['error', 'bad badge'], colorscheme: 'red'}, - makeSend(format, ask.res, end)); + sendBadge(format, badgeData); + return; + } else { + badgeData.text[1] = onlineMessage; + if (sixHex(onlineColor)) { + badgeData.colorB = '#' + onlineColor; + } else { + badgeData.colorscheme = onlineColor; + } + sendBadge(format, badgeData); + return; } }); })); diff --git a/test/test.js b/test/test.js index e7947b0..2cdc095 100644 --- a/test/test.js +++ b/test/test.js @@ -62,7 +62,7 @@ test('The CLI', [ }); }], ['should produce colorschemed badges', function(done, assert) { - child = cproc.spawn('node', + var child = cproc.spawn('node', ['test/cli-test.js', 'cactus', 'grown', ':green']); child.stdout.on('data', function(chunk) { var buffer = ''+chunk; @@ -71,7 +71,7 @@ test('The CLI', [ }); }], ['should produce right-color badges', function(done, assert) { - child = cproc.spawn('node', + var child = cproc.spawn('node', ['test/cli-test.js', 'cactus', 'grown', '#abcdef']); child.stdout.on('data', function(chunk) { var buffer = ''+chunk; @@ -80,7 +80,7 @@ test('The CLI', [ }); }], ['should produce PNG badges', function(done, assert) { - child = cproc.spawn('node', + var child = cproc.spawn('node', ['test/cli-test.js', 'cactus', 'grown', '.png']); child.stdout.on('data', function(chunk) { // Check the PNG magic number.