md5-file
Advanced tools
Comparing version 1.1.10 to 2.0.0
46
index.js
@@ -1,25 +0,27 @@ | ||
'use strict'; | ||
'use strict' | ||
var crypto = require('crypto'); | ||
var fs = require('fs'); | ||
var crypto = require('crypto') | ||
var fs = require('fs') | ||
module.exports = function (filename) { | ||
var sum = crypto.createHash('md5'); | ||
sum.update(fs.readFileSync(filename)); | ||
return sum.digest('hex'); | ||
}; | ||
// if `strict` then throw error otherwise pass error through | ||
module.exports.async = function (filename, callback, strict) { | ||
fs.readFile(filename, function (error, data) { | ||
if (error) { | ||
if (strict) { | ||
throw new Error(error); | ||
module.exports = function (filename, callback) { | ||
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) | ||
} | ||
return callback(error); | ||
} | ||
var sum = crypto.createHash('md5'); | ||
sum.update(data); | ||
return callback(sum.digest('hex')); | ||
}); | ||
}; | ||
}) | ||
fileStream.on('end', function () { | ||
return callback(null, sum.digest('hex')) | ||
}) | ||
} else { | ||
sum.update(fs.readFileSync(filename)) | ||
return sum.digest('hex') | ||
} | ||
} |
@@ -8,3 +8,3 @@ { | ||
], | ||
"version": "1.1.10", | ||
"version": "2.0.0", | ||
"description": "return an md5sum of a given file", | ||
@@ -32,4 +32,7 @@ "keywords": [ | ||
"scripts": { | ||
"test": "node test" | ||
"test": "standard && node test" | ||
}, | ||
"devDependencies": { | ||
"standard": "^3.8.0" | ||
} | ||
} |
@@ -1,4 +0,4 @@ | ||
# md5-file [![Build Status](https://travis-ci.org/roryrjb/md5-file.svg?branch=master)](https://travis-ci.org/roryrjb/md5-file) | ||
# md5-file [![Build Status](https://travis-ci.org/roryrjb/md5-file.svg?branch=master)](https://travis-ci.org/roryrjb/md5-file) [![js-standard-style](https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat)](https://github.com/feross/standard) | ||
> Simply return an `md5` sum of a given file. | ||
> Simply return an `md5` sum of a given file. If using async version (by including callback), it will stream; successfully tested on files 4 GB+. | ||
@@ -19,38 +19,17 @@ ### Installation | ||
_Sync:_ | ||
__md5File(path)__ | ||
```javascript | ||
var md5File = require('md5-file'); | ||
var md5File = require('md5-file') | ||
md5File('path/to/a_file'); // '18e904aae79b5642ed7975c0a0074936' | ||
``` | ||
// sync (no callback) | ||
_Async:_ | ||
md5File('./path/to/a_file') // '18e904aae79b5642ed7975c0a0074936' | ||
__md5File(path, callback, [strict])__ | ||
// async/streamed (if using callback) | ||
If _strict_ is `true` and there is an error it will `throw` it, otherwise it will pass an error string through the callback. | ||
```javascript | ||
md5File.async('./README.md', function (data) { | ||
console.log(data); | ||
}); | ||
md5File.async('./README.md', function (data) { | ||
console.log(data); | ||
}, true); | ||
// errors | ||
// non-strict: will pass through an error to `data` | ||
md5File.async('./null', function (data) { | ||
console.log(data); | ||
}); | ||
// strict: will throw an error | ||
md5File.async('./null', function (data) { | ||
console.log(data); | ||
}, true); | ||
md5File('./path/to/a_file', function (error, sum) { | ||
if (error) return console.log(error) | ||
console.log(sum) // '18e904aae79b5642ed7975c0a0074936' | ||
}) | ||
``` | ||
@@ -57,0 +36,0 @@ |
32
test.js
@@ -1,21 +0,19 @@ | ||
'use strict'; | ||
'use strict' | ||
var md5 = require('./index'); | ||
var assert = require('assert'); | ||
var md5File = require('./index') | ||
var assert = require('assert') | ||
var filename = 'LICENSE.md' | ||
var preCheckedSum = '79069e31e6722533f772a4ca5de984e4' | ||
assert.equal(md5('./LICENSE.md'), '79069e31e6722533f772a4ca5de984e4'); | ||
md5File(filename, function (error, sum) { | ||
console.log('sum = ' + sum) | ||
assert(error === null) | ||
assert(sum === preCheckedSum) | ||
console.log('Pass 2/2') | ||
}) | ||
md5.async('./LICENSE.md', function (data) { | ||
assert.equal(data, '79069e31e6722533f772a4ca5de984e4'); | ||
}); | ||
var syncSum = md5File(filename) | ||
md5.async('./LICENSE.md', function (data) { | ||
assert.equal(data, '79069e31e6722533f772a4ca5de984e4'); | ||
}, true); | ||
// errors | ||
// non-strict: will pass through an error to `data` | ||
md5.async('./null', function (data) { | ||
assert.equal(data.code, 'ENOENT'); | ||
}); | ||
assert(syncSum === preCheckedSum) | ||
console.log('sum = ' + syncSum) | ||
console.log('Pass 1/2') |
3851
5
40
1
39