mirror of
https://github.com/emn178/js-md5.git
synced 2026-08-12 20:31:43 +08:00
Added
- support for web worker. #11 Changed - throw error if input type is incorrect. - prevent webpack to require dependencies.
This commit is contained in:
@@ -1,5 +1,13 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## v0.5.0 / 2017-07-14
|
||||||
|
### Added
|
||||||
|
- support for web worker. #11
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- throw error if input type is incorrect.
|
||||||
|
- prevent webpack to require dependencies.
|
||||||
|
|
||||||
## v0.4.2 / 2017-01-18
|
## v0.4.2 / 2017-01-18
|
||||||
### Fixed
|
### Fixed
|
||||||
- `root` is undefined in some special environment. #7
|
- `root` is undefined in some special environment. #7
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "js-md5",
|
"name": "js-md5",
|
||||||
"version": "0.4.2",
|
"version": "0.5.0",
|
||||||
"main": ["src/md5.js"],
|
"main": ["src/md5.js"],
|
||||||
"ignore": [
|
"ignore": [
|
||||||
"tests"
|
"tests"
|
||||||
|
|||||||
Vendored
+2
-2
File diff suppressed because one or more lines are too long
+9
-9
@@ -91,7 +91,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line141">line 141</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line162">line 162</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line523">line 523</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line556">line 556</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -314,7 +314,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line535">line 535</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line568">line 568</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -432,7 +432,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line557">line 557</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line590">line 590</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -548,7 +548,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line501">line 501</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line534">line 534</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -664,7 +664,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line456">line 456</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line489">line 489</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -780,7 +780,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line489">line 489</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line522">line 522</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -954,7 +954,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line169">line 169</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line190">line 190</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -1031,7 +1031,7 @@
|
|||||||
<br class="clear">
|
<br class="clear">
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Wed Jan 18 2017 09:43:27 GMT+0800 (CST)
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Fri Jul 14 2017 12:58:59 GMT+0800 (CST)
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script> prettyPrint(); </script>
|
<script> prettyPrint(); </script>
|
||||||
|
|||||||
+2
-2
@@ -210,7 +210,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line575">line 575</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line608">line 608</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -285,7 +285,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Md5_.html">Md5</a></li></ul><h3>Namespaces</h3><ul><li><a href="md5.html">md5</a></li></ul><h3>Global</h3><ul><li><a href="global.html#md5%2508">md5</a></li></ul>
|
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Md5_.html">Md5</a></li></ul><h3>Namespaces</h3><ul><li><a href="md5.html">md5</a></li></ul><h3>Global</h3><ul><li><a href="global.html#md5%2508">md5</a></li></ul>
|
||||||
|
|||||||
+1
-1
@@ -95,7 +95,7 @@ md5.buffer(''); // ArrayBuffer, deprecated, This maybe confuse with Buffer in no
|
|||||||
<br class="clear">
|
<br class="clear">
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Wed Jan 18 2017 09:43:27 GMT+0800 (CST)
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Fri Jul 14 2017 12:58:59 GMT+0800 (CST)
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script> prettyPrint(); </script>
|
<script> prettyPrint(); </script>
|
||||||
|
|||||||
+9
-9
@@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
|
|
||||||
<dt class="tag-version">Version:</dt>
|
<dt class="tag-version">Version:</dt>
|
||||||
<dd class="tag-version"><ul class="dummy"><li>0.4.2</li></ul></dd>
|
<dd class="tag-version"><ul class="dummy"><li>0.5.0</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line53">line 53</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line67">line 67</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -400,7 +400,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line62">line 62</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line76">line 76</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -569,7 +569,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line71">line 71</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line85">line 85</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -678,7 +678,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line87">line 87</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line101">line 101</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -845,7 +845,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line44">line 44</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line58">line 58</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -1012,7 +1012,7 @@
|
|||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line33">line 33</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line47">line 47</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
|
|
||||||
|
|
||||||
@@ -1179,7 +1179,7 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
<dt class="tag-source">Source:</dt>
|
<dt class="tag-source">Source:</dt>
|
||||||
<dd class="tag-source"><ul class="dummy"><li>
|
<dd class="tag-source"><ul class="dummy"><li>
|
||||||
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line109">line 109</a>
|
<a href="md5.js.html">md5.js</a>, <a href="md5.js.html#line109">line 109</a>
|
||||||
</li></ul></dd>
|
</li></ul></dd>
|
||||||
@@ -1254,7 +1254,7 @@
|
|||||||
|
|
||||||
<nav>
|
<nav>
|
||||||
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Md5_.html">Md5</a></li></ul><h3>Namespaces</h3><ul><li><a href="md5.html">md5</a></li></ul><h3>Global</h3><ul><li><a href="global.html#md5%2508">md5</a></li></ul>
|
<h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="Md5_.html">Md5</a></li></ul><h3>Namespaces</h3><ul><li><a href="md5.html">md5</a></li></ul><h3>Global</h3><ul><li><a href="global.html#md5%2508">md5</a></li></ul>
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<br class="clear">
|
<br class="clear">
|
||||||
|
|
||||||
|
|||||||
+42
-9
@@ -30,7 +30,7 @@
|
|||||||
* [js-md5]{@link https://github.com/emn178/js-md5}
|
* [js-md5]{@link https://github.com/emn178/js-md5}
|
||||||
*
|
*
|
||||||
* @namespace md5
|
* @namespace md5
|
||||||
* @version 0.4.2
|
* @version 0.5.0
|
||||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
* @copyright Chen, Yi-Cyuan 2014-2017
|
||||||
* @license MIT
|
* @license MIT
|
||||||
@@ -38,10 +38,18 @@
|
|||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var root = typeof window === 'object' ? window : {};
|
var ERROR = 'input is invalid type';
|
||||||
|
var WINDOW = typeof window === 'object';
|
||||||
|
var root = WINDOW ? window : {};
|
||||||
|
if (root.JS_MD5_NO_WINDOW) {
|
||||||
|
WINDOW = false;
|
||||||
|
}
|
||||||
|
var WEB_WORKER = !WINDOW && typeof self === 'object';
|
||||||
var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
||||||
if (NODE_JS) {
|
if (NODE_JS) {
|
||||||
root = global;
|
root = global;
|
||||||
|
} else if (WEB_WORKER) {
|
||||||
|
root = self;
|
||||||
}
|
}
|
||||||
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
||||||
var AMD = typeof define === 'function' && define.amd;
|
var AMD = typeof define === 'function' && define.amd;
|
||||||
@@ -58,6 +66,12 @@
|
|||||||
blocks = new Uint32Array(buffer);
|
blocks = new Uint32Array(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (root.JS_MD5_NO_NODE_JS || !Array.isArray) {
|
||||||
|
Array.isArray = function (obj) {
|
||||||
|
return Object.prototype.toString.call(obj) === '[object Array]';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method hex
|
* @method hex
|
||||||
* @memberof md5
|
* @memberof md5
|
||||||
@@ -151,17 +165,24 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var nodeWrap = function (method) {
|
var nodeWrap = function (method) {
|
||||||
var crypto = require('crypto');
|
var crypto = eval("require('crypto')");
|
||||||
var Buffer = require('buffer').Buffer;
|
var Buffer = eval("require('buffer').Buffer");
|
||||||
var nodeMethod = function (message) {
|
var nodeMethod = function (message) {
|
||||||
if (typeof message === 'string') {
|
if (typeof message === 'string') {
|
||||||
return crypto.createHash('md5').update(message, 'utf8').digest('hex');
|
return crypto.createHash('md5').update(message, 'utf8').digest('hex');
|
||||||
|
} else {
|
||||||
|
if (message === null || message === undefined) {
|
||||||
|
throw ERROR;
|
||||||
} else if (message.constructor === ArrayBuffer) {
|
} else if (message.constructor === ArrayBuffer) {
|
||||||
message = new Uint8Array(message);
|
message = new Uint8Array(message);
|
||||||
} else if (message.length === undefined) {
|
}
|
||||||
|
}
|
||||||
|
if (Array.isArray(message) || ArrayBuffer.isView(message) ||
|
||||||
|
message.constructor === Buffer) {
|
||||||
|
return crypto.createHash('md5').update(new Buffer(message)).digest('hex');
|
||||||
|
} else {
|
||||||
return method(message);
|
return method(message);
|
||||||
}
|
}
|
||||||
return crypto.createHash('md5').update(new Buffer(message)).digest('hex');
|
|
||||||
};
|
};
|
||||||
return nodeMethod;
|
return nodeMethod;
|
||||||
};
|
};
|
||||||
@@ -208,10 +229,22 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var notString = typeof(message) != 'string';
|
var notString = typeof(message) != 'string';
|
||||||
if (notString && message.constructor == root.ArrayBuffer) {
|
if (notString) {
|
||||||
|
if (message === null || message === undefined) {
|
||||||
|
throw ERROR;
|
||||||
|
} else if (message.constructor === root.ArrayBuffer) {
|
||||||
message = new Uint8Array(message);
|
message = new Uint8Array(message);
|
||||||
}
|
}
|
||||||
var code, index = 0, i, length = message.length || 0, blocks = this.blocks;
|
}
|
||||||
|
var length = message.length;
|
||||||
|
if (notString) {
|
||||||
|
if (typeof length !== 'number' ||
|
||||||
|
!Array.isArray(message) &&
|
||||||
|
!(ARRAY_BUFFER && ArrayBuffer.isView(message))) {
|
||||||
|
throw ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var code, index = 0, i, blocks = this.blocks;
|
||||||
var buffer8 = this.buffer8;
|
var buffer8 = this.buffer8;
|
||||||
|
|
||||||
while (index < length) {
|
while (index < length) {
|
||||||
@@ -641,7 +674,7 @@
|
|||||||
<br class="clear">
|
<br class="clear">
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Wed Jan 18 2017 09:43:27 GMT+0800 (CST)
|
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.4.3</a> on Fri Jul 14 2017 12:58:59 GMT+0800 (CST)
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script> prettyPrint(); </script>
|
<script> prettyPrint(); </script>
|
||||||
|
|||||||
+3
-2
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "js-md5",
|
"name": "js-md5",
|
||||||
"version": "0.4.2",
|
"version": "0.5.0",
|
||||||
"description": "A simple MD5 hash function for JavaScript supports UTF-8 encoding.",
|
"description": "A simple MD5 hash function for JavaScript supports UTF-8 encoding.",
|
||||||
"main": "src/md5.js",
|
"main": "src/md5.js",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@@ -9,7 +9,8 @@
|
|||||||
"jsdoc": "^3.4.0",
|
"jsdoc": "^3.4.0",
|
||||||
"mocha": "~2.3.4",
|
"mocha": "~2.3.4",
|
||||||
"requirejs": "^2.1.22",
|
"requirejs": "^2.1.22",
|
||||||
"uglifyjs": "~2.4.10"
|
"uglifyjs": "~2.4.10",
|
||||||
|
"webworker-threads": "^0.7.11"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"test": "mocha tests/node-test.js -r jscoverage",
|
"test": "mocha tests/node-test.js -r jscoverage",
|
||||||
|
|||||||
+41
-8
@@ -2,7 +2,7 @@
|
|||||||
* [js-md5]{@link https://github.com/emn178/js-md5}
|
* [js-md5]{@link https://github.com/emn178/js-md5}
|
||||||
*
|
*
|
||||||
* @namespace md5
|
* @namespace md5
|
||||||
* @version 0.4.2
|
* @version 0.5.0
|
||||||
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
* @author Chen, Yi-Cyuan [emn178@gmail.com]
|
||||||
* @copyright Chen, Yi-Cyuan 2014-2017
|
* @copyright Chen, Yi-Cyuan 2014-2017
|
||||||
* @license MIT
|
* @license MIT
|
||||||
@@ -10,10 +10,18 @@
|
|||||||
(function () {
|
(function () {
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var root = typeof window === 'object' ? window : {};
|
var ERROR = 'input is invalid type';
|
||||||
|
var WINDOW = typeof window === 'object';
|
||||||
|
var root = WINDOW ? window : {};
|
||||||
|
if (root.JS_MD5_NO_WINDOW) {
|
||||||
|
WINDOW = false;
|
||||||
|
}
|
||||||
|
var WEB_WORKER = !WINDOW && typeof self === 'object';
|
||||||
var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;
|
||||||
if (NODE_JS) {
|
if (NODE_JS) {
|
||||||
root = global;
|
root = global;
|
||||||
|
} else if (WEB_WORKER) {
|
||||||
|
root = self;
|
||||||
}
|
}
|
||||||
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
|
||||||
var AMD = typeof define === 'function' && define.amd;
|
var AMD = typeof define === 'function' && define.amd;
|
||||||
@@ -30,6 +38,12 @@
|
|||||||
blocks = new Uint32Array(buffer);
|
blocks = new Uint32Array(buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (root.JS_MD5_NO_NODE_JS || !Array.isArray) {
|
||||||
|
Array.isArray = function (obj) {
|
||||||
|
return Object.prototype.toString.call(obj) === '[object Array]';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method hex
|
* @method hex
|
||||||
* @memberof md5
|
* @memberof md5
|
||||||
@@ -123,17 +137,24 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
var nodeWrap = function (method) {
|
var nodeWrap = function (method) {
|
||||||
var crypto = require('crypto');
|
var crypto = eval("require('crypto')");
|
||||||
var Buffer = require('buffer').Buffer;
|
var Buffer = eval("require('buffer').Buffer");
|
||||||
var nodeMethod = function (message) {
|
var nodeMethod = function (message) {
|
||||||
if (typeof message === 'string') {
|
if (typeof message === 'string') {
|
||||||
return crypto.createHash('md5').update(message, 'utf8').digest('hex');
|
return crypto.createHash('md5').update(message, 'utf8').digest('hex');
|
||||||
|
} else {
|
||||||
|
if (message === null || message === undefined) {
|
||||||
|
throw ERROR;
|
||||||
} else if (message.constructor === ArrayBuffer) {
|
} else if (message.constructor === ArrayBuffer) {
|
||||||
message = new Uint8Array(message);
|
message = new Uint8Array(message);
|
||||||
} else if (message.length === undefined) {
|
}
|
||||||
|
}
|
||||||
|
if (Array.isArray(message) || ArrayBuffer.isView(message) ||
|
||||||
|
message.constructor === Buffer) {
|
||||||
|
return crypto.createHash('md5').update(new Buffer(message)).digest('hex');
|
||||||
|
} else {
|
||||||
return method(message);
|
return method(message);
|
||||||
}
|
}
|
||||||
return crypto.createHash('md5').update(new Buffer(message)).digest('hex');
|
|
||||||
};
|
};
|
||||||
return nodeMethod;
|
return nodeMethod;
|
||||||
};
|
};
|
||||||
@@ -180,10 +201,22 @@
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var notString = typeof(message) != 'string';
|
var notString = typeof(message) != 'string';
|
||||||
if (notString && message.constructor == root.ArrayBuffer) {
|
if (notString) {
|
||||||
|
if (message === null || message === undefined) {
|
||||||
|
throw ERROR;
|
||||||
|
} else if (message.constructor === root.ArrayBuffer) {
|
||||||
message = new Uint8Array(message);
|
message = new Uint8Array(message);
|
||||||
}
|
}
|
||||||
var code, index = 0, i, length = message.length || 0, blocks = this.blocks;
|
}
|
||||||
|
var length = message.length;
|
||||||
|
if (notString) {
|
||||||
|
if (typeof length !== 'number' ||
|
||||||
|
!Array.isArray(message) &&
|
||||||
|
!(ARRAY_BUFFER && ArrayBuffer.isView(message))) {
|
||||||
|
throw ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var code, index = 0, i, blocks = this.blocks;
|
||||||
var buffer8 = this.buffer8;
|
var buffer8 = this.buffer8;
|
||||||
|
|
||||||
while (index < length) {
|
while (index < length) {
|
||||||
|
|||||||
+47
-1
@@ -1,5 +1,8 @@
|
|||||||
// Node.js env
|
|
||||||
expect = require('expect.js');
|
expect = require('expect.js');
|
||||||
|
Worker = require('webworker-threads').Worker;
|
||||||
|
|
||||||
|
// Node.js env
|
||||||
|
BUFFER = true;
|
||||||
md5 = require('../src/md5.js');
|
md5 = require('../src/md5.js');
|
||||||
require('./test.js');
|
require('./test.js');
|
||||||
|
|
||||||
@@ -9,6 +12,7 @@ md5 = null
|
|||||||
|
|
||||||
// Webpack browser env
|
// Webpack browser env
|
||||||
JS_MD5_NO_NODE_JS = true;
|
JS_MD5_NO_NODE_JS = true;
|
||||||
|
BUFFER = false;
|
||||||
window = global;
|
window = global;
|
||||||
md5 = require('../src/md5.js');
|
md5 = require('../src/md5.js');
|
||||||
require('./test.js');
|
require('./test.js');
|
||||||
@@ -20,6 +24,7 @@ md5 = null;
|
|||||||
// browser env
|
// browser env
|
||||||
JS_MD5_NO_NODE_JS = true;
|
JS_MD5_NO_NODE_JS = true;
|
||||||
JS_MD5_NO_COMMON_JS = true;
|
JS_MD5_NO_COMMON_JS = true;
|
||||||
|
BUFFER = false;
|
||||||
window = global;
|
window = global;
|
||||||
require('../src/md5.js');
|
require('../src/md5.js');
|
||||||
require('./test.js');
|
require('./test.js');
|
||||||
@@ -32,6 +37,7 @@ md5 = null;
|
|||||||
JS_MD5_NO_NODE_JS = true;
|
JS_MD5_NO_NODE_JS = true;
|
||||||
JS_MD5_NO_COMMON_JS = true;
|
JS_MD5_NO_COMMON_JS = true;
|
||||||
JS_MD5_NO_ARRAY_BUFFER = true;
|
JS_MD5_NO_ARRAY_BUFFER = true;
|
||||||
|
BUFFER = false;
|
||||||
window = global;
|
window = global;
|
||||||
require('../src/md5.js');
|
require('../src/md5.js');
|
||||||
require('./test.js');
|
require('./test.js');
|
||||||
@@ -44,6 +50,7 @@ md5 = null;
|
|||||||
JS_MD5_NO_NODE_JS = true;
|
JS_MD5_NO_NODE_JS = true;
|
||||||
JS_MD5_NO_COMMON_JS = true;
|
JS_MD5_NO_COMMON_JS = true;
|
||||||
JS_MD5_NO_ARRAY_BUFFER = false;
|
JS_MD5_NO_ARRAY_BUFFER = false;
|
||||||
|
BUFFER = false;
|
||||||
window = global;
|
window = global;
|
||||||
define = function (func) {
|
define = function (func) {
|
||||||
md5 = func();
|
md5 = func();
|
||||||
@@ -52,3 +59,42 @@ define = function (func) {
|
|||||||
define.amd = true;
|
define.amd = true;
|
||||||
|
|
||||||
require('../src/md5.js');
|
require('../src/md5.js');
|
||||||
|
|
||||||
|
delete require.cache[require.resolve('../src/md5.js')];
|
||||||
|
delete require.cache[require.resolve('./test.js')];
|
||||||
|
md5 = null;
|
||||||
|
|
||||||
|
// webworker
|
||||||
|
WORKER = 'tests/worker.js';
|
||||||
|
SOURCE = 'src/md5.js';
|
||||||
|
|
||||||
|
require('./worker-test.js');
|
||||||
|
|
||||||
|
// cover webworker
|
||||||
|
JS_MD5_NO_WINDOW = true;
|
||||||
|
JS_MD5_NO_NODE_JS = true;
|
||||||
|
JS_MD5_NO_COMMON_JS = false;
|
||||||
|
JS_MD5_NO_ARRAY_BUFFER = false;
|
||||||
|
BUFFER = false;
|
||||||
|
WORKER = './worker.js';
|
||||||
|
SOURCE = '../src/md5.js';
|
||||||
|
window = global;
|
||||||
|
self = global;
|
||||||
|
|
||||||
|
Worker = function (file) {
|
||||||
|
require(file);
|
||||||
|
currentWorker = this;
|
||||||
|
|
||||||
|
this.postMessage = function (data) {
|
||||||
|
onmessage({data: data});
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
postMessage = function (data) {
|
||||||
|
currentWorker.onmessage({data: data});
|
||||||
|
}
|
||||||
|
|
||||||
|
importScripts = function () {};
|
||||||
|
|
||||||
|
md5 = require('../src/md5.js');
|
||||||
|
require('./worker-test.js');
|
||||||
|
|||||||
+28
-15
@@ -42,29 +42,30 @@
|
|||||||
'd41d8cd98f00b204e9800998ecf8427e': [],
|
'd41d8cd98f00b204e9800998ecf8427e': [],
|
||||||
'93b885adfe0da089cdf634904fd59f71': [0],
|
'93b885adfe0da089cdf634904fd59f71': [0],
|
||||||
'9e107d9d372bb6826bd81d3542a419d6': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]
|
'9e107d9d372bb6826bd81d3542a419d6': [84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]
|
||||||
},
|
|
||||||
'Uint8Array': {
|
|
||||||
'9e107d9d372bb6826bd81d3542a419d6': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'Int8Array': {
|
|
||||||
'9e107d9d372bb6826bd81d3542a419d6': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
|
||||||
},
|
|
||||||
'ArrayBuffer': {
|
|
||||||
'93b885adfe0da089cdf634904fd59f71': new ArrayBuffer(1)
|
|
||||||
},
|
|
||||||
'Object': {
|
|
||||||
'd41d8cd98f00b204e9800998ecf8427e': {},
|
|
||||||
'd41d8cd98f00b204e9800998ecf8427e': {what: 'ever'}
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if (typeof process == 'object') {
|
if (!(typeof JS_MD5_NO_ARRAY_BUFFER === 'boolean' && JS_MD5_NO_ARRAY_BUFFER)) {
|
||||||
|
testCases['Uint8Array'] = {
|
||||||
|
'9e107d9d372bb6826bd81d3542a419d6': new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases['Int8Array'] = {
|
||||||
|
'9e107d9d372bb6826bd81d3542a419d6': new Int8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103])
|
||||||
|
};
|
||||||
|
testCases['ArrayBuffer'] = {
|
||||||
|
'93b885adfe0da089cdf634904fd59f71': new ArrayBuffer(1)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof BUFFER === 'boolean' && BUFFER) {
|
||||||
testCases['Buffer'] = {
|
testCases['Buffer'] = {
|
||||||
'd41d8cd98f00b204e9800998ecf8427e': new Buffer(0),
|
'd41d8cd98f00b204e9800998ecf8427e': new Buffer(0),
|
||||||
'9e107d9d372bb6826bd81d3542a419d6': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
'9e107d9d372bb6826bd81d3542a419d6': new Buffer(new Uint8Array([84, 104, 101, 32, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110, 32, 102, 111, 120, 32, 106, 117, 109, 112, 115, 32, 111, 118, 101, 114, 32, 116, 104, 101, 32, 108, 97, 122, 121, 32, 100, 111, 103]))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var errorTestCases = [null, undefined, { length: 0 }, 0, 1, false, true, NaN, Infinity, function () {}];
|
||||||
|
|
||||||
var methods = [
|
var methods = [
|
||||||
{
|
{
|
||||||
name: 'md5',
|
name: 'md5',
|
||||||
@@ -154,6 +155,7 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
describe('md5', function () {
|
||||||
methods.forEach(function (method) {
|
methods.forEach(function (method) {
|
||||||
describe('#' + method.name, function () {
|
describe('#' + method.name, function () {
|
||||||
for (var testCaseName in testCases) {
|
for (var testCaseName in testCases) {
|
||||||
@@ -173,7 +175,6 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('Md5', function () {
|
|
||||||
classMethods.forEach(function (method) {
|
classMethods.forEach(function (method) {
|
||||||
describe('#' + method.name, function () {
|
describe('#' + method.name, function () {
|
||||||
for (var testCaseName in testCases) {
|
for (var testCaseName in testCases) {
|
||||||
@@ -192,5 +193,17 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('#md5', function () {
|
||||||
|
errorTestCases.forEach(function (testCase) {
|
||||||
|
context('when ' + testCase, function () {
|
||||||
|
it('should throw error', function () {
|
||||||
|
expect(function () {
|
||||||
|
md5(testCase);
|
||||||
|
}).to.throwError(/input is invalid type/);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
})(md5);
|
})(md5);
|
||||||
|
|||||||
@@ -0,0 +1,21 @@
|
|||||||
|
(function () {
|
||||||
|
var cases = {
|
||||||
|
'd41d8cd98f00b204e9800998ecf8427e': '',
|
||||||
|
'9e107d9d372bb6826bd81d3542a419d6': 'The quick brown fox jumps over the lazy dog',
|
||||||
|
'e4d909c290d0fb1ca068ffaddf22cbd0': 'The quick brown fox jumps over the lazy dog.'
|
||||||
|
};
|
||||||
|
|
||||||
|
describe('#md5', function () {
|
||||||
|
Object.keys(cases).forEach(function (hash) {
|
||||||
|
it('should be equal', function (done) {
|
||||||
|
var worker = new Worker(WORKER);
|
||||||
|
worker.onmessage = function(event) {
|
||||||
|
expect(event.data).to.be(hash);
|
||||||
|
done();
|
||||||
|
};
|
||||||
|
worker.postMessage(SOURCE);
|
||||||
|
worker.postMessage(cases[hash]);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})();
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<title>MD5</title>
|
||||||
|
<link rel="stylesheet" href="../node_modules/mocha/mocha.css">
|
||||||
|
<script src="../node_modules/mocha/mocha.js"></script>
|
||||||
|
<script src="../node_modules/expect.js/index.js"></script>
|
||||||
|
<script src="../src/md5.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="mocha"></div>
|
||||||
|
<script>
|
||||||
|
WORKER = 'worker.js';
|
||||||
|
SOURCE = '../src/md5.js';
|
||||||
|
mocha.setup('bdd');
|
||||||
|
</script>
|
||||||
|
<script src="worker-test.js"></script>
|
||||||
|
<script>
|
||||||
|
mocha.checkLeaks();
|
||||||
|
mocha.run();
|
||||||
|
</script>
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
var imported = false;
|
||||||
|
onmessage = function(e) {
|
||||||
|
if (imported) {
|
||||||
|
postMessage(md5(e.data));
|
||||||
|
if (typeof exports !== 'undefined') {
|
||||||
|
imported = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
imported = true;
|
||||||
|
importScripts(e.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user