md5-file
Advanced tools
Comparing version 2.0.4 to 2.0.5
41
index.js
@@ -6,23 +6,26 @@ 'use strict' | ||
module.exports = function (filename, callback) { | ||
function md5FileSync (filename) { | ||
var sum = crypto.createHash('md5') | ||
if (callback && typeof callback === 'function') { | ||
var fileStream = fs.createReadStream(filename) | ||
fileStream.on('error', function (err) { | ||
return callback(err, null) | ||
}) | ||
fileStream.on('data', function (chunk) { | ||
try { | ||
sum.update(chunk) | ||
} catch (ex) { | ||
return callback(ex, null) | ||
} | ||
}) | ||
fileStream.on('end', function () { | ||
return callback(null, sum.digest('hex')) | ||
}) | ||
} else { | ||
sum.update(fs.readFileSync(filename)) | ||
return sum.digest('hex') | ||
var data = fs.readFileSync(filename) | ||
return sum.update(data).digest('hex') | ||
} | ||
module.exports = function (filename, cb) { | ||
if (typeof cb !== 'function') { | ||
return md5FileSync(filename) | ||
} | ||
var output = crypto.createHash('md5') | ||
var input = fs.createReadStream(filename) | ||
input.on('error', function (err) { | ||
cb(err) | ||
}) | ||
output.on('readable', function () { | ||
cb(null, output.read().toString('hex')) | ||
}) | ||
input.pipe(output) | ||
} |
{ | ||
"name": "md5-file", | ||
"main": "index.js", | ||
"repository": "roryrjb/md5-file", | ||
"files": [ | ||
@@ -10,3 +11,3 @@ "index.js", | ||
], | ||
"version": "2.0.4", | ||
"version": "2.0.5", | ||
"description": "return an md5sum of a given file", | ||
@@ -18,3 +19,2 @@ "keywords": [ | ||
], | ||
"homepage": "https://github.com/roryrjb/md5-file", | ||
"author": { | ||
@@ -25,17 +25,10 @@ "name": "Rory Bradford", | ||
}, | ||
"repository": { | ||
"type": "git", | ||
"url": "https://github.com/roryrjb/md5-file.git" | ||
}, | ||
"license": "MIT", | ||
"bugs": { | ||
"url": "http://github.com/roryrjb/md5-file/issues", | ||
"email": "roryrjb@gmail.com" | ||
}, | ||
"scripts": { | ||
"test": "standard && node test" | ||
"test": "standard && mocha" | ||
}, | ||
"devDependencies": { | ||
"standard": "^3.8.0" | ||
"mocha": "^2.4.5", | ||
"standard": "^7.1.0" | ||
} | ||
} |
39
test.js
@@ -0,26 +1,35 @@ | ||
/* eslint-env mocha */ | ||
'use strict' | ||
var md5File = require('./index') | ||
var md5File = require('./') | ||
var assert = require('assert') | ||
var filename = 'LICENSE.md' | ||
var preCheckedSum = '687d0001c49a6315989af72c0325dff3' | ||
md5File(filename, function (error, sum) { | ||
console.log('sum = ' + sum) | ||
assert(error === null) | ||
assert(sum === preCheckedSum) | ||
console.log('Pass 2/2') | ||
}) | ||
describe('md5File', function () { | ||
it('works asynchronously', function (done) { | ||
md5File(filename, function (err, hash) { | ||
assert.ifError(err) | ||
assert.equal(hash, preCheckedSum) | ||
var syncSum = md5File(filename) | ||
done() | ||
}) | ||
}) | ||
assert(syncSum === preCheckedSum) | ||
console.log('sum = ' + syncSum) | ||
console.log('Pass 1/2') | ||
it('works synchronously', function () { | ||
var actual = md5File(filename) | ||
// errors | ||
assert.equal(actual, preCheckedSum) | ||
}) | ||
md5File('does not exist', function (error, sum) { | ||
assert(error) | ||
assert(!sum) | ||
it('has proper error handling', function (done) { | ||
md5File('does not exist', function (err) { | ||
assert.ok(err) | ||
assert.equal(err.code, 'ENOENT') | ||
done() | ||
}) | ||
}) | ||
}) |
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
No bug tracker
MaintenancePackage does not have a linked bug tracker in package.json.
Found 1 instance in 1 package
No repository
Supply chain riskPackage does not have a linked source code repository. Without this field, a package will have no reference to the location of the source code use to generate the package.
Found 1 instance in 1 package
No website
QualityPackage does not have a website.
Found 1 instance in 1 package
48
3878
2
1
1
2
1