diff --git a/package.json b/package.json index a29b47d..c3a5f4e 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "uglifyjs": "~2.4.10" }, "scripts": { - "test": "mocha tests/node-test.js -r jscoverage", + "test": "mocha tests/node-test.js", "report": "mocha tests/node-test.js -r jscoverage --covout=html", - "coveralls": "mocha tests/node-test.js -R mocha-lcov-reporter -r jscoverage | coveralls", + "coveralls": "mocha tests/node-test.js -R mocha-lcov-reporter | coveralls", "doc": "rm -rf doc;jsdoc src README.md -d doc", "compress": "uglifyjs src/md5.js --compress --mangle --comments --output build/md5.min.js", "build": "npm run-script compress;npm run-script doc" diff --git a/src/md5.js b/src/md5.js index 8f401a2..edc47b1 100644 --- a/src/md5.js +++ b/src/md5.js @@ -15,6 +15,10 @@ if (NODE_JS) { root = global; } + var btoa = NODE_JS ? function(strOrBuffer){ + return Buffer.from(strOrBuffer, 'binary').toString('base64'); + } : window && window.btoa; + var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports; var AMD = typeof define === 'function' && define.amd; var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; @@ -496,7 +500,11 @@ * @example * hash.toString(); */ - Md5.prototype.toString = Md5.prototype.hex; + Md5.prototype.toString = function(enc) { + if (enc == 'hex') return this.hex(); + if (enc == 'base64') return btoa(this.digest().reduce((data, byte) => data + String.fromCharCode(byte), '')); + return this.hex(); // by default (for not modifying all tests), I'd prefer .digest() by default + } /** * @method digest