- support for web worker. #11

Changed
- throw error if input type is incorrect.
- prevent webpack to require dependencies.
This commit is contained in:
Chen, Yi-Cyuan
2017-07-14 13:10:27 +08:00
parent 8b9a23ce32
commit c00df3af37
15 changed files with 275 additions and 82 deletions
+45 -12
View File
@@ -30,7 +30,7 @@
* [js-md5]{@link https://github.com/emn178/js-md5}
*
* @namespace md5
* @version 0.4.2
* @version 0.5.0
* @author Chen, Yi-Cyuan [emn178@gmail.com]
* @copyright Chen, Yi-Cyuan 2014-2017
* @license MIT
@@ -38,10 +38,18 @@
(function () {
'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;
if (NODE_JS) {
root = global;
} else if (WEB_WORKER) {
root = self;
}
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && typeof module === 'object' && module.exports;
var AMD = typeof define === 'function' && define.amd;
@@ -58,6 +66,12 @@
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
* @memberof md5
@@ -151,17 +165,24 @@
};
var nodeWrap = function (method) {
var crypto = require('crypto');
var Buffer = require('buffer').Buffer;
var crypto = eval("require('crypto')");
var Buffer = eval("require('buffer').Buffer");
var nodeMethod = function (message) {
if (typeof message === 'string') {
return crypto.createHash('md5').update(message, 'utf8').digest('hex');
} else if (message.constructor === ArrayBuffer) {
message = new Uint8Array(message);
} else if (message.length === undefined) {
} else {
if (message === null || message === undefined) {
throw ERROR;
} else if (message.constructor === ArrayBuffer) {
message = new Uint8Array(message);
}
}
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 crypto.createHash('md5').update(new Buffer(message)).digest('hex');
};
return nodeMethod;
};
@@ -208,10 +229,22 @@
return;
}
var notString = typeof(message) != 'string';
if (notString && message.constructor == root.ArrayBuffer) {
message = new Uint8Array(message);
if (notString) {
if (message === null || message === undefined) {
throw ERROR;
} else if (message.constructor === root.ArrayBuffer) {
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;
while (index < length) {
@@ -641,7 +674,7 @@
<br class="clear">
<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>
<script> prettyPrint(); </script>