wikimedia-commons-file-path
Advanced tools
Comparing version 1.1.0 to 1.2.0
@@ -1,2 +0,2 @@ | ||
/* wikimedia-commons-file-path 1.1.0 (ISC) by Simon Legner <Simon.Legner@gmail.com>. https://github.com/simon04/wikimedia-commons-file-path#readme */ | ||
/* wikimedia-commons-file-path 1.2.0 (ISC) by Simon Legner <Simon.Legner@gmail.com>. https://github.com/simon04/wikimedia-commons-file-path#readme */ | ||
(function (global, factory) { | ||
@@ -15,680 +15,256 @@ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : | ||
var md5 = createCommonjsModule(function (module) { | ||
/** | ||
* [js-md5]{@link https://github.com/emn178/js-md5} | ||
* | ||
* @namespace md5 | ||
* @version 0.7.3 | ||
* @author Chen, Yi-Cyuan [emn178@gmail.com] | ||
* @copyright Chen, Yi-Cyuan 2014-2017 | ||
* @license MIT | ||
*/ | ||
(function () { | ||
(function ($) { | ||
var ERROR = 'input is invalid type'; | ||
var WINDOW = typeof window === 'object'; | ||
var root = WINDOW ? window : {}; | ||
if (root.JS_MD5_NO_WINDOW) { | ||
WINDOW = false; | ||
/* | ||
* Add integers, wrapping at 2^32. This uses 16-bit operations internally | ||
* to work around bugs in some JS interpreters. | ||
*/ | ||
function safeAdd (x, y) { | ||
var lsw = (x & 0xffff) + (y & 0xffff); | ||
var msw = (x >> 16) + (y >> 16) + (lsw >> 16); | ||
return (msw << 16) | (lsw & 0xffff) | ||
} | ||
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 = commonjsGlobal; | ||
} else if (WEB_WORKER) { | ||
root = self; | ||
} | ||
var COMMON_JS = !root.JS_MD5_NO_COMMON_JS && 'object' === 'object' && module.exports; | ||
var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined'; | ||
var HEX_CHARS = '0123456789abcdef'.split(''); | ||
var EXTRA = [128, 32768, 8388608, -2147483648]; | ||
var SHIFT = [0, 8, 16, 24]; | ||
var OUTPUT_TYPES = ['hex', 'array', 'digest', 'buffer', 'arrayBuffer', 'base64']; | ||
var BASE64_ENCODE_CHAR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split(''); | ||
var blocks = [], buffer8; | ||
if (ARRAY_BUFFER) { | ||
var buffer = new ArrayBuffer(68); | ||
buffer8 = new Uint8Array(buffer); | ||
blocks = new Uint32Array(buffer); | ||
/* | ||
* Bitwise rotate a 32-bit number to the left. | ||
*/ | ||
function bitRotateLeft (num, cnt) { | ||
return (num << cnt) | (num >>> (32 - cnt)) | ||
} | ||
if (root.JS_MD5_NO_NODE_JS || !Array.isArray) { | ||
Array.isArray = function (obj) { | ||
return Object.prototype.toString.call(obj) === '[object Array]'; | ||
}; | ||
/* | ||
* These functions implement the four basic operations the algorithm uses. | ||
*/ | ||
function md5cmn (q, a, b, x, s, t) { | ||
return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) | ||
} | ||
if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) { | ||
ArrayBuffer.isView = function (obj) { | ||
return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer; | ||
}; | ||
function md5ff (a, b, c, d, x, s, t) { | ||
return md5cmn((b & c) | (~b & d), a, b, x, s, t) | ||
} | ||
function md5gg (a, b, c, d, x, s, t) { | ||
return md5cmn((b & d) | (c & ~d), a, b, x, s, t) | ||
} | ||
function md5hh (a, b, c, d, x, s, t) { | ||
return md5cmn(b ^ c ^ d, a, b, x, s, t) | ||
} | ||
function md5ii (a, b, c, d, x, s, t) { | ||
return md5cmn(c ^ (b | ~d), a, b, x, s, t) | ||
} | ||
/** | ||
* @method hex | ||
* @memberof md5 | ||
* @description Output hash as hex string | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {String} Hex string | ||
* @example | ||
* md5.hex('The quick brown fox jumps over the lazy dog'); | ||
* // equal to | ||
* md5('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
/** | ||
* @method digest | ||
* @memberof md5 | ||
* @description Output hash as bytes array | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {Array} Bytes array | ||
* @example | ||
* md5.digest('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
/** | ||
* @method array | ||
* @memberof md5 | ||
* @description Output hash as bytes array | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {Array} Bytes array | ||
* @example | ||
* md5.array('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
/** | ||
* @method arrayBuffer | ||
* @memberof md5 | ||
* @description Output hash as ArrayBuffer | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {ArrayBuffer} ArrayBuffer | ||
* @example | ||
* md5.arrayBuffer('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
/** | ||
* @method buffer | ||
* @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead. | ||
* @memberof md5 | ||
* @description Output hash as ArrayBuffer | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {ArrayBuffer} ArrayBuffer | ||
* @example | ||
* md5.buffer('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
/** | ||
* @method base64 | ||
* @memberof md5 | ||
* @description Output hash as base64 string | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {String} base64 string | ||
* @example | ||
* md5.base64('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
var createOutputMethod = function (outputType) { | ||
return function (message) { | ||
return new Md5(true).update(message)[outputType](); | ||
}; | ||
}; | ||
/* | ||
* Calculate the MD5 of an array of little-endian words, and a bit length. | ||
*/ | ||
function binlMD5 (x, len) { | ||
/* append padding */ | ||
x[len >> 5] |= 0x80 << (len % 32); | ||
x[((len + 64) >>> 9 << 4) + 14] = len; | ||
/** | ||
* @method create | ||
* @memberof md5 | ||
* @description Create Md5 object | ||
* @returns {Md5} Md5 object. | ||
* @example | ||
* var hash = md5.create(); | ||
*/ | ||
/** | ||
* @method update | ||
* @memberof md5 | ||
* @description Create and update Md5 object | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {Md5} Md5 object. | ||
* @example | ||
* var hash = md5.update('The quick brown fox jumps over the lazy dog'); | ||
* // equal to | ||
* var hash = md5.create(); | ||
* hash.update('The quick brown fox jumps over the lazy dog'); | ||
*/ | ||
var createMethod = function () { | ||
var method = createOutputMethod('hex'); | ||
if (NODE_JS) { | ||
method = nodeWrap(method); | ||
} | ||
method.create = function () { | ||
return new Md5(); | ||
}; | ||
method.update = function (message) { | ||
return method.create().update(message); | ||
}; | ||
for (var i = 0; i < OUTPUT_TYPES.length; ++i) { | ||
var type = OUTPUT_TYPES[i]; | ||
method[type] = createOutputMethod(type); | ||
} | ||
return method; | ||
}; | ||
var i; | ||
var olda; | ||
var oldb; | ||
var oldc; | ||
var oldd; | ||
var a = 1732584193; | ||
var b = -271733879; | ||
var c = -1732584194; | ||
var d = 271733878; | ||
var nodeWrap = function (method) { | ||
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 === 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 nodeMethod; | ||
}; | ||
for (i = 0; i < x.length; i += 16) { | ||
olda = a; | ||
oldb = b; | ||
oldc = c; | ||
oldd = d; | ||
/** | ||
* Md5 class | ||
* @class Md5 | ||
* @description This is internal class. | ||
* @see {@link md5.create} | ||
*/ | ||
function Md5(sharedMemory) { | ||
if (sharedMemory) { | ||
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = | ||
blocks[4] = blocks[5] = blocks[6] = blocks[7] = | ||
blocks[8] = blocks[9] = blocks[10] = blocks[11] = | ||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; | ||
this.blocks = blocks; | ||
this.buffer8 = buffer8; | ||
} else { | ||
if (ARRAY_BUFFER) { | ||
var buffer = new ArrayBuffer(68); | ||
this.buffer8 = new Uint8Array(buffer); | ||
this.blocks = new Uint32Array(buffer); | ||
} else { | ||
this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; | ||
} | ||
} | ||
this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0; | ||
this.finalized = this.hashed = false; | ||
this.first = true; | ||
} | ||
a = md5ff(a, b, c, d, x[i], 7, -680876936); | ||
d = md5ff(d, a, b, c, x[i + 1], 12, -389564586); | ||
c = md5ff(c, d, a, b, x[i + 2], 17, 606105819); | ||
b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330); | ||
a = md5ff(a, b, c, d, x[i + 4], 7, -176418897); | ||
d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426); | ||
c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341); | ||
b = md5ff(b, c, d, a, x[i + 7], 22, -45705983); | ||
a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416); | ||
d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417); | ||
c = md5ff(c, d, a, b, x[i + 10], 17, -42063); | ||
b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162); | ||
a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682); | ||
d = md5ff(d, a, b, c, x[i + 13], 12, -40341101); | ||
c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290); | ||
b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329); | ||
/** | ||
* @method update | ||
* @memberof Md5 | ||
* @instance | ||
* @description Update hash | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {Md5} Md5 object. | ||
* @see {@link md5.update} | ||
*/ | ||
Md5.prototype.update = function (message) { | ||
var this$1 = this; | ||
a = md5gg(a, b, c, d, x[i + 1], 5, -165796510); | ||
d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632); | ||
c = md5gg(c, d, a, b, x[i + 11], 14, 643717713); | ||
b = md5gg(b, c, d, a, x[i], 20, -373897302); | ||
a = md5gg(a, b, c, d, x[i + 5], 5, -701558691); | ||
d = md5gg(d, a, b, c, x[i + 10], 9, 38016083); | ||
c = md5gg(c, d, a, b, x[i + 15], 14, -660478335); | ||
b = md5gg(b, c, d, a, x[i + 4], 20, -405537848); | ||
a = md5gg(a, b, c, d, x[i + 9], 5, 568446438); | ||
d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690); | ||
c = md5gg(c, d, a, b, x[i + 3], 14, -187363961); | ||
b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501); | ||
a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467); | ||
d = md5gg(d, a, b, c, x[i + 2], 9, -51403784); | ||
c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473); | ||
b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734); | ||
if (this.finalized) { | ||
return; | ||
} | ||
a = md5hh(a, b, c, d, x[i + 5], 4, -378558); | ||
d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463); | ||
c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562); | ||
b = md5hh(b, c, d, a, x[i + 14], 23, -35309556); | ||
a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060); | ||
d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353); | ||
c = md5hh(c, d, a, b, x[i + 7], 16, -155497632); | ||
b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640); | ||
a = md5hh(a, b, c, d, x[i + 13], 4, 681279174); | ||
d = md5hh(d, a, b, c, x[i], 11, -358537222); | ||
c = md5hh(c, d, a, b, x[i + 3], 16, -722521979); | ||
b = md5hh(b, c, d, a, x[i + 6], 23, 76029189); | ||
a = md5hh(a, b, c, d, x[i + 9], 4, -640364487); | ||
d = md5hh(d, a, b, c, x[i + 12], 11, -421815835); | ||
c = md5hh(c, d, a, b, x[i + 15], 16, 530742520); | ||
b = md5hh(b, c, d, a, x[i + 2], 23, -995338651); | ||
var notString, type = typeof message; | ||
if (type !== 'string') { | ||
if (type === 'object') { | ||
if (message === null) { | ||
throw ERROR; | ||
} else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) { | ||
message = new Uint8Array(message); | ||
} else if (!Array.isArray(message)) { | ||
if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) { | ||
throw ERROR; | ||
} | ||
} | ||
} else { | ||
throw ERROR; | ||
} | ||
notString = true; | ||
a = md5ii(a, b, c, d, x[i], 6, -198630844); | ||
d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415); | ||
c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905); | ||
b = md5ii(b, c, d, a, x[i + 5], 21, -57434055); | ||
a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571); | ||
d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606); | ||
c = md5ii(c, d, a, b, x[i + 10], 15, -1051523); | ||
b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799); | ||
a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359); | ||
d = md5ii(d, a, b, c, x[i + 15], 10, -30611744); | ||
c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380); | ||
b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649); | ||
a = md5ii(a, b, c, d, x[i + 4], 6, -145523070); | ||
d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379); | ||
c = md5ii(c, d, a, b, x[i + 2], 15, 718787259); | ||
b = md5ii(b, c, d, a, x[i + 9], 21, -343485551); | ||
a = safeAdd(a, olda); | ||
b = safeAdd(b, oldb); | ||
c = safeAdd(c, oldc); | ||
d = safeAdd(d, oldd); | ||
} | ||
var code, index = 0, i, length = message.length, blocks = this.blocks; | ||
var buffer8 = this.buffer8; | ||
return [a, b, c, d] | ||
} | ||
while (index < length) { | ||
if (this$1.hashed) { | ||
this$1.hashed = false; | ||
blocks[0] = blocks[16]; | ||
blocks[16] = blocks[1] = blocks[2] = blocks[3] = | ||
blocks[4] = blocks[5] = blocks[6] = blocks[7] = | ||
blocks[8] = blocks[9] = blocks[10] = blocks[11] = | ||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; | ||
} | ||
if (notString) { | ||
if (ARRAY_BUFFER) { | ||
for (i = this.start; index < length && i < 64; ++index) { | ||
buffer8[i++] = message[index]; | ||
} | ||
} else { | ||
for (i = this.start; index < length && i < 64; ++index) { | ||
blocks[i >> 2] |= message[index] << SHIFT[i++ & 3]; | ||
} | ||
} | ||
} else { | ||
if (ARRAY_BUFFER) { | ||
for (i = this.start; index < length && i < 64; ++index) { | ||
code = message.charCodeAt(index); | ||
if (code < 0x80) { | ||
buffer8[i++] = code; | ||
} else if (code < 0x800) { | ||
buffer8[i++] = 0xc0 | (code >> 6); | ||
buffer8[i++] = 0x80 | (code & 0x3f); | ||
} else if (code < 0xd800 || code >= 0xe000) { | ||
buffer8[i++] = 0xe0 | (code >> 12); | ||
buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); | ||
buffer8[i++] = 0x80 | (code & 0x3f); | ||
} else { | ||
code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); | ||
buffer8[i++] = 0xf0 | (code >> 18); | ||
buffer8[i++] = 0x80 | ((code >> 12) & 0x3f); | ||
buffer8[i++] = 0x80 | ((code >> 6) & 0x3f); | ||
buffer8[i++] = 0x80 | (code & 0x3f); | ||
} | ||
} | ||
} else { | ||
for (i = this.start; index < length && i < 64; ++index) { | ||
code = message.charCodeAt(index); | ||
if (code < 0x80) { | ||
blocks[i >> 2] |= code << SHIFT[i++ & 3]; | ||
} else if (code < 0x800) { | ||
blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; | ||
} else if (code < 0xd800 || code >= 0xe000) { | ||
blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; | ||
} else { | ||
code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff)); | ||
blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3]; | ||
blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3]; | ||
} | ||
} | ||
} | ||
} | ||
this$1.lastByteIndex = i; | ||
this$1.bytes += i - this$1.start; | ||
if (i >= 64) { | ||
this$1.start = i - 64; | ||
this$1.hash(); | ||
this$1.hashed = true; | ||
} else { | ||
this$1.start = i; | ||
} | ||
/* | ||
* Convert an array of little-endian words to a string | ||
*/ | ||
function binl2rstr (input) { | ||
var i; | ||
var output = ''; | ||
var length32 = input.length * 32; | ||
for (i = 0; i < length32; i += 8) { | ||
output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); | ||
} | ||
if (this.bytes > 4294967295) { | ||
this.hBytes += this.bytes / 4294967296 << 0; | ||
this.bytes = this.bytes % 4294967296; | ||
} | ||
return this; | ||
}; | ||
return output | ||
} | ||
Md5.prototype.finalize = function () { | ||
if (this.finalized) { | ||
return; | ||
/* | ||
* Convert a raw string to an array of little-endian words | ||
* Characters >255 have their high-byte silently ignored. | ||
*/ | ||
function rstr2binl (input) { | ||
var i; | ||
var output = []; | ||
output[(input.length >> 2) - 1] = undefined; | ||
for (i = 0; i < output.length; i += 1) { | ||
output[i] = 0; | ||
} | ||
this.finalized = true; | ||
var blocks = this.blocks, i = this.lastByteIndex; | ||
blocks[i >> 2] |= EXTRA[i & 3]; | ||
if (i >= 56) { | ||
if (!this.hashed) { | ||
this.hash(); | ||
} | ||
blocks[0] = blocks[16]; | ||
blocks[16] = blocks[1] = blocks[2] = blocks[3] = | ||
blocks[4] = blocks[5] = blocks[6] = blocks[7] = | ||
blocks[8] = blocks[9] = blocks[10] = blocks[11] = | ||
blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0; | ||
var length8 = input.length * 8; | ||
for (i = 0; i < length8; i += 8) { | ||
output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); | ||
} | ||
blocks[14] = this.bytes << 3; | ||
blocks[15] = this.hBytes << 3 | this.bytes >>> 29; | ||
this.hash(); | ||
}; | ||
return output | ||
} | ||
Md5.prototype.hash = function () { | ||
var a, b, c, d, bc, da, blocks = this.blocks; | ||
/* | ||
* Calculate the MD5 of a raw string | ||
*/ | ||
function rstrMD5 (s) { | ||
return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) | ||
} | ||
if (this.first) { | ||
a = blocks[0] - 680876937; | ||
a = (a << 7 | a >>> 25) - 271733879 << 0; | ||
d = (-1732584194 ^ a & 2004318071) + blocks[1] - 117830708; | ||
d = (d << 12 | d >>> 20) + a << 0; | ||
c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375; | ||
c = (c << 17 | c >>> 15) + d << 0; | ||
b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209; | ||
b = (b << 22 | b >>> 10) + c << 0; | ||
} else { | ||
a = this.h0; | ||
b = this.h1; | ||
c = this.h2; | ||
d = this.h3; | ||
a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936; | ||
a = (a << 7 | a >>> 25) + b << 0; | ||
d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586; | ||
d = (d << 12 | d >>> 20) + a << 0; | ||
c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819; | ||
c = (c << 17 | c >>> 15) + d << 0; | ||
b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330; | ||
b = (b << 22 | b >>> 10) + c << 0; | ||
/* | ||
* Calculate the HMAC-MD5, of a key and some data (raw strings) | ||
*/ | ||
function rstrHMACMD5 (key, data) { | ||
var i; | ||
var bkey = rstr2binl(key); | ||
var ipad = []; | ||
var opad = []; | ||
var hash; | ||
ipad[15] = opad[15] = undefined; | ||
if (bkey.length > 16) { | ||
bkey = binlMD5(bkey, key.length * 8); | ||
} | ||
for (i = 0; i < 16; i += 1) { | ||
ipad[i] = bkey[i] ^ 0x36363636; | ||
opad[i] = bkey[i] ^ 0x5c5c5c5c; | ||
} | ||
hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8); | ||
return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)) | ||
} | ||
a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897; | ||
a = (a << 7 | a >>> 25) + b << 0; | ||
d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426; | ||
d = (d << 12 | d >>> 20) + a << 0; | ||
c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341; | ||
c = (c << 17 | c >>> 15) + d << 0; | ||
b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983; | ||
b = (b << 22 | b >>> 10) + c << 0; | ||
a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416; | ||
a = (a << 7 | a >>> 25) + b << 0; | ||
d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417; | ||
d = (d << 12 | d >>> 20) + a << 0; | ||
c += (b ^ (d & (a ^ b))) + blocks[10] - 42063; | ||
c = (c << 17 | c >>> 15) + d << 0; | ||
b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162; | ||
b = (b << 22 | b >>> 10) + c << 0; | ||
a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682; | ||
a = (a << 7 | a >>> 25) + b << 0; | ||
d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101; | ||
d = (d << 12 | d >>> 20) + a << 0; | ||
c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290; | ||
c = (c << 17 | c >>> 15) + d << 0; | ||
b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329; | ||
b = (b << 22 | b >>> 10) + c << 0; | ||
a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510; | ||
a = (a << 5 | a >>> 27) + b << 0; | ||
d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632; | ||
d = (d << 9 | d >>> 23) + a << 0; | ||
c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713; | ||
c = (c << 14 | c >>> 18) + d << 0; | ||
b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302; | ||
b = (b << 20 | b >>> 12) + c << 0; | ||
a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691; | ||
a = (a << 5 | a >>> 27) + b << 0; | ||
d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083; | ||
d = (d << 9 | d >>> 23) + a << 0; | ||
c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335; | ||
c = (c << 14 | c >>> 18) + d << 0; | ||
b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848; | ||
b = (b << 20 | b >>> 12) + c << 0; | ||
a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438; | ||
a = (a << 5 | a >>> 27) + b << 0; | ||
d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690; | ||
d = (d << 9 | d >>> 23) + a << 0; | ||
c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961; | ||
c = (c << 14 | c >>> 18) + d << 0; | ||
b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501; | ||
b = (b << 20 | b >>> 12) + c << 0; | ||
a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467; | ||
a = (a << 5 | a >>> 27) + b << 0; | ||
d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784; | ||
d = (d << 9 | d >>> 23) + a << 0; | ||
c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473; | ||
c = (c << 14 | c >>> 18) + d << 0; | ||
b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734; | ||
b = (b << 20 | b >>> 12) + c << 0; | ||
bc = b ^ c; | ||
a += (bc ^ d) + blocks[5] - 378558; | ||
a = (a << 4 | a >>> 28) + b << 0; | ||
d += (bc ^ a) + blocks[8] - 2022574463; | ||
d = (d << 11 | d >>> 21) + a << 0; | ||
da = d ^ a; | ||
c += (da ^ b) + blocks[11] + 1839030562; | ||
c = (c << 16 | c >>> 16) + d << 0; | ||
b += (da ^ c) + blocks[14] - 35309556; | ||
b = (b << 23 | b >>> 9) + c << 0; | ||
bc = b ^ c; | ||
a += (bc ^ d) + blocks[1] - 1530992060; | ||
a = (a << 4 | a >>> 28) + b << 0; | ||
d += (bc ^ a) + blocks[4] + 1272893353; | ||
d = (d << 11 | d >>> 21) + a << 0; | ||
da = d ^ a; | ||
c += (da ^ b) + blocks[7] - 155497632; | ||
c = (c << 16 | c >>> 16) + d << 0; | ||
b += (da ^ c) + blocks[10] - 1094730640; | ||
b = (b << 23 | b >>> 9) + c << 0; | ||
bc = b ^ c; | ||
a += (bc ^ d) + blocks[13] + 681279174; | ||
a = (a << 4 | a >>> 28) + b << 0; | ||
d += (bc ^ a) + blocks[0] - 358537222; | ||
d = (d << 11 | d >>> 21) + a << 0; | ||
da = d ^ a; | ||
c += (da ^ b) + blocks[3] - 722521979; | ||
c = (c << 16 | c >>> 16) + d << 0; | ||
b += (da ^ c) + blocks[6] + 76029189; | ||
b = (b << 23 | b >>> 9) + c << 0; | ||
bc = b ^ c; | ||
a += (bc ^ d) + blocks[9] - 640364487; | ||
a = (a << 4 | a >>> 28) + b << 0; | ||
d += (bc ^ a) + blocks[12] - 421815835; | ||
d = (d << 11 | d >>> 21) + a << 0; | ||
da = d ^ a; | ||
c += (da ^ b) + blocks[15] + 530742520; | ||
c = (c << 16 | c >>> 16) + d << 0; | ||
b += (da ^ c) + blocks[2] - 995338651; | ||
b = (b << 23 | b >>> 9) + c << 0; | ||
a += (c ^ (b | ~d)) + blocks[0] - 198630844; | ||
a = (a << 6 | a >>> 26) + b << 0; | ||
d += (b ^ (a | ~c)) + blocks[7] + 1126891415; | ||
d = (d << 10 | d >>> 22) + a << 0; | ||
c += (a ^ (d | ~b)) + blocks[14] - 1416354905; | ||
c = (c << 15 | c >>> 17) + d << 0; | ||
b += (d ^ (c | ~a)) + blocks[5] - 57434055; | ||
b = (b << 21 | b >>> 11) + c << 0; | ||
a += (c ^ (b | ~d)) + blocks[12] + 1700485571; | ||
a = (a << 6 | a >>> 26) + b << 0; | ||
d += (b ^ (a | ~c)) + blocks[3] - 1894986606; | ||
d = (d << 10 | d >>> 22) + a << 0; | ||
c += (a ^ (d | ~b)) + blocks[10] - 1051523; | ||
c = (c << 15 | c >>> 17) + d << 0; | ||
b += (d ^ (c | ~a)) + blocks[1] - 2054922799; | ||
b = (b << 21 | b >>> 11) + c << 0; | ||
a += (c ^ (b | ~d)) + blocks[8] + 1873313359; | ||
a = (a << 6 | a >>> 26) + b << 0; | ||
d += (b ^ (a | ~c)) + blocks[15] - 30611744; | ||
d = (d << 10 | d >>> 22) + a << 0; | ||
c += (a ^ (d | ~b)) + blocks[6] - 1560198380; | ||
c = (c << 15 | c >>> 17) + d << 0; | ||
b += (d ^ (c | ~a)) + blocks[13] + 1309151649; | ||
b = (b << 21 | b >>> 11) + c << 0; | ||
a += (c ^ (b | ~d)) + blocks[4] - 145523070; | ||
a = (a << 6 | a >>> 26) + b << 0; | ||
d += (b ^ (a | ~c)) + blocks[11] - 1120210379; | ||
d = (d << 10 | d >>> 22) + a << 0; | ||
c += (a ^ (d | ~b)) + blocks[2] + 718787259; | ||
c = (c << 15 | c >>> 17) + d << 0; | ||
b += (d ^ (c | ~a)) + blocks[9] - 343485551; | ||
b = (b << 21 | b >>> 11) + c << 0; | ||
if (this.first) { | ||
this.h0 = a + 1732584193 << 0; | ||
this.h1 = b - 271733879 << 0; | ||
this.h2 = c - 1732584194 << 0; | ||
this.h3 = d + 271733878 << 0; | ||
this.first = false; | ||
} else { | ||
this.h0 = this.h0 + a << 0; | ||
this.h1 = this.h1 + b << 0; | ||
this.h2 = this.h2 + c << 0; | ||
this.h3 = this.h3 + d << 0; | ||
/* | ||
* Convert a raw string to a hex string | ||
*/ | ||
function rstr2hex (input) { | ||
var hexTab = '0123456789abcdef'; | ||
var output = ''; | ||
var x; | ||
var i; | ||
for (i = 0; i < input.length; i += 1) { | ||
x = input.charCodeAt(i); | ||
output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); | ||
} | ||
}; | ||
return output | ||
} | ||
/** | ||
* @method hex | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as hex string | ||
* @returns {String} Hex string | ||
* @see {@link md5.hex} | ||
* @example | ||
* hash.hex(); | ||
*/ | ||
Md5.prototype.hex = function () { | ||
this.finalize(); | ||
/* | ||
* Encode a string as utf-8 | ||
*/ | ||
function str2rstrUTF8 (input) { | ||
return unescape(encodeURIComponent(input)) | ||
} | ||
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; | ||
/* | ||
* Take string arguments and return either raw or hex encoded strings | ||
*/ | ||
function rawMD5 (s) { | ||
return rstrMD5(str2rstrUTF8(s)) | ||
} | ||
function hexMD5 (s) { | ||
return rstr2hex(rawMD5(s)) | ||
} | ||
function rawHMACMD5 (k, d) { | ||
return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)) | ||
} | ||
function hexHMACMD5 (k, d) { | ||
return rstr2hex(rawHMACMD5(k, d)) | ||
} | ||
return HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] + | ||
HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] + | ||
HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] + | ||
HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] + | ||
HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] + | ||
HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] + | ||
HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] + | ||
HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] + | ||
HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] + | ||
HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] + | ||
HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] + | ||
HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] + | ||
HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] + | ||
HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] + | ||
HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] + | ||
HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F]; | ||
}; | ||
/** | ||
* @method toString | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as hex string | ||
* @returns {String} Hex string | ||
* @see {@link md5.hex} | ||
* @example | ||
* hash.toString(); | ||
*/ | ||
Md5.prototype.toString = Md5.prototype.hex; | ||
/** | ||
* @method digest | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as bytes array | ||
* @returns {Array} Bytes array | ||
* @see {@link md5.digest} | ||
* @example | ||
* hash.digest(); | ||
*/ | ||
Md5.prototype.digest = function () { | ||
this.finalize(); | ||
var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3; | ||
return [ | ||
h0 & 0xFF, (h0 >> 8) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 24) & 0xFF, | ||
h1 & 0xFF, (h1 >> 8) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 24) & 0xFF, | ||
h2 & 0xFF, (h2 >> 8) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 24) & 0xFF, | ||
h3 & 0xFF, (h3 >> 8) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 24) & 0xFF | ||
]; | ||
}; | ||
/** | ||
* @method array | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as bytes array | ||
* @returns {Array} Bytes array | ||
* @see {@link md5.array} | ||
* @example | ||
* hash.array(); | ||
*/ | ||
Md5.prototype.array = Md5.prototype.digest; | ||
/** | ||
* @method arrayBuffer | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as ArrayBuffer | ||
* @returns {ArrayBuffer} ArrayBuffer | ||
* @see {@link md5.arrayBuffer} | ||
* @example | ||
* hash.arrayBuffer(); | ||
*/ | ||
Md5.prototype.arrayBuffer = function () { | ||
this.finalize(); | ||
var buffer = new ArrayBuffer(16); | ||
var blocks = new Uint32Array(buffer); | ||
blocks[0] = this.h0; | ||
blocks[1] = this.h1; | ||
blocks[2] = this.h2; | ||
blocks[3] = this.h3; | ||
return buffer; | ||
}; | ||
/** | ||
* @method buffer | ||
* @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead. | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as ArrayBuffer | ||
* @returns {ArrayBuffer} ArrayBuffer | ||
* @see {@link md5.buffer} | ||
* @example | ||
* hash.buffer(); | ||
*/ | ||
Md5.prototype.buffer = Md5.prototype.arrayBuffer; | ||
/** | ||
* @method base64 | ||
* @memberof Md5 | ||
* @instance | ||
* @description Output hash as base64 string | ||
* @returns {String} base64 string | ||
* @see {@link md5.base64} | ||
* @example | ||
* hash.base64(); | ||
*/ | ||
Md5.prototype.base64 = function () { | ||
var v1, v2, v3, base64Str = '', bytes = this.array(); | ||
for (var i = 0; i < 15;) { | ||
v1 = bytes[i++]; | ||
v2 = bytes[i++]; | ||
v3 = bytes[i++]; | ||
base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + | ||
BASE64_ENCODE_CHAR[(v1 << 4 | v2 >>> 4) & 63] + | ||
BASE64_ENCODE_CHAR[(v2 << 2 | v3 >>> 6) & 63] + | ||
BASE64_ENCODE_CHAR[v3 & 63]; | ||
function md5 (string, key, raw) { | ||
if (!key) { | ||
if (!raw) { | ||
return hexMD5(string) | ||
} | ||
return rawMD5(string) | ||
} | ||
v1 = bytes[i]; | ||
base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + | ||
BASE64_ENCODE_CHAR[(v1 << 4) & 63] + | ||
'=='; | ||
return base64Str; | ||
}; | ||
if (!raw) { | ||
return hexHMACMD5(key, string) | ||
} | ||
return rawHMACMD5(key, string) | ||
} | ||
var exports = createMethod(); | ||
if (COMMON_JS) { | ||
module.exports = exports; | ||
if (module.exports) { | ||
module.exports = md5; | ||
} else { | ||
/** | ||
* @method md5 | ||
* @description Md5 hash function, export to global in browsers. | ||
* @param {String|Array|Uint8Array|ArrayBuffer} message message to hash | ||
* @returns {String} md5 hashes | ||
* @example | ||
* md5(''); // d41d8cd98f00b204e9800998ecf8427e | ||
* md5('The quick brown fox jumps over the lazy dog'); // 9e107d9d372bb6826bd81d3542a419d6 | ||
* md5('The quick brown fox jumps over the lazy dog.'); // e4d909c290d0fb1ca068ffaddf22cbd0 | ||
* | ||
* // It also supports UTF-8 encoding | ||
* md5('中文'); // a7bac2239fcdcb3a067903d8077c4a07 | ||
* | ||
* // It also supports byte `Array`, `Uint8Array`, `ArrayBuffer` | ||
* md5([]); // d41d8cd98f00b204e9800998ecf8427e | ||
* md5(new Uint8Array([])); // d41d8cd98f00b204e9800998ecf8427e | ||
*/ | ||
root.md5 = exports; | ||
$.md5 = md5; | ||
} | ||
})(); | ||
})(commonjsGlobal); | ||
}); | ||
@@ -701,3 +277,3 @@ | ||
var base = 'https://upload.wikimedia.org/wikipedia/commons'; | ||
var hash = md5.hex(file); | ||
var hash = md5(file); | ||
var ns = (hash[0]) + "/" + (hash[0]) + (hash[1]); | ||
@@ -704,0 +280,0 @@ if (width) { |
@@ -1,1 +0,1 @@ | ||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t["wikimedia-commons-file-path"]=e()}(this,function(){"use strict";var commonjsGlobal="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function createCommonjsModule(t,e){return t(e={exports:{}},e.exports),e.exports}var md5=createCommonjsModule(function(module){!function(){var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_MD5_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_MD5_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=commonjsGlobal:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_MD5_NO_COMMON_JS&&module.exports,ARRAY_BUFFER=!root.JS_MD5_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[128,32768,8388608,-2147483648],SHIFT=[0,8,16,24],OUTPUT_TYPES=["hex","array","digest","buffer","arrayBuffer","base64"],BASE64_ENCODE_CHAR="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),blocks=[],buffer8;if(ARRAY_BUFFER){var buffer=new ArrayBuffer(68);buffer8=new Uint8Array(buffer),blocks=new Uint32Array(buffer)}!root.JS_MD5_NO_NODE_JS&&Array.isArray||(Array.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)}),!ARRAY_BUFFER||!root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(t){return"object"==typeof t&&t.buffer&&t.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e){return function(t){return new Md5(!0).update(t)[e]()}},createMethod=function(){var e=createOutputMethod("hex");NODE_JS&&(e=nodeWrap(e)),e.create=function(){return new Md5},e.update=function(t){return e.create().update(t)};for(var t=0;t<OUTPUT_TYPES.length;++t){var r=OUTPUT_TYPES[t];e[r]=createOutputMethod(r)}return e},nodeWrap=function(method){var crypto=eval("require('crypto')"),Buffer=eval("require('buffer').Buffer"),nodeMethod=function(t){if("string"==typeof t)return crypto.createHash("md5").update(t,"utf8").digest("hex");if(null==t)throw ERROR;return t.constructor===ArrayBuffer&&(t=new Uint8Array(t)),Array.isArray(t)||ArrayBuffer.isView(t)||t.constructor===Buffer?crypto.createHash("md5").update(new Buffer(t)).digest("hex"):method(t)};return nodeMethod};function Md5(t){if(t)blocks[0]=blocks[16]=blocks[1]=blocks[2]=blocks[3]=blocks[4]=blocks[5]=blocks[6]=blocks[7]=blocks[8]=blocks[9]=blocks[10]=blocks[11]=blocks[12]=blocks[13]=blocks[14]=blocks[15]=0,this.blocks=blocks,this.buffer8=buffer8;else if(ARRAY_BUFFER){var e=new ArrayBuffer(68);this.buffer8=new Uint8Array(e),this.blocks=new Uint32Array(e)}else this.blocks=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];this.h0=this.h1=this.h2=this.h3=this.start=this.bytes=this.hBytes=0,this.finalized=this.hashed=!1,this.first=!0}Md5.prototype.update=function(t){var e=this;if(!this.finalized){var r,o=typeof t;if("string"!==o){if("object"!==o)throw ERROR;if(null===t)throw ERROR;if(ARRAY_BUFFER&&t.constructor===ArrayBuffer)t=new Uint8Array(t);else if(!(Array.isArray(t)||ARRAY_BUFFER&&ArrayBuffer.isView(t)))throw ERROR;r=!0}for(var s,i,h=0,f=t.length,n=this.blocks,a=this.buffer8;h<f;){if(e.hashed&&(e.hashed=!1,n[0]=n[16],n[16]=n[1]=n[2]=n[3]=n[4]=n[5]=n[6]=n[7]=n[8]=n[9]=n[10]=n[11]=n[12]=n[13]=n[14]=n[15]=0),r)if(ARRAY_BUFFER)for(i=this.start;h<f&&i<64;++h)a[i++]=t[h];else for(i=this.start;h<f&&i<64;++h)n[i>>2]|=t[h]<<SHIFT[3&i++];else if(ARRAY_BUFFER)for(i=this.start;h<f&&i<64;++h)s=t.charCodeAt(h),a[i++]=s<128?s:(a[i++]=s<2048?192|s>>6:(a[i++]=s<55296||57344<=s?224|s>>12:(s=65536+((1023&s)<<10|1023&t.charCodeAt(++h)),a[i++]=240|s>>18,128|s>>12&63),128|s>>6&63),128|63&s);else for(i=this.start;h<f&&i<64;++h)(s=t.charCodeAt(h))<128?n[i>>2]|=s<<SHIFT[3&i++]:(s<2048?n[i>>2]|=(192|s>>6)<<SHIFT[3&i++]:(s<55296||57344<=s?n[i>>2]|=(224|s>>12)<<SHIFT[3&i++]:(s=65536+((1023&s)<<10|1023&t.charCodeAt(++h)),n[i>>2]|=(240|s>>18)<<SHIFT[3&i++],n[i>>2]|=(128|s>>12&63)<<SHIFT[3&i++]),n[i>>2]|=(128|s>>6&63)<<SHIFT[3&i++]),n[i>>2]|=(128|63&s)<<SHIFT[3&i++]);e.lastByteIndex=i,e.bytes+=i-e.start,64<=i?(e.start=i-64,e.hash(),e.hashed=!0):e.start=i}return 4294967295<this.bytes&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Md5.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var t=this.blocks,e=this.lastByteIndex;t[e>>2]|=EXTRA[3&e],56<=e&&(this.hashed||this.hash(),t[0]=t[16],t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=this.bytes<<3,t[15]=this.hBytes<<3|this.bytes>>>29,this.hash()}},Md5.prototype.hash=function(){var t,e,r,o,s,i,h=this.blocks;e=this.first?((e=((t=((t=h[0]-680876937)<<7|t>>>25)-271733879<<0)^(r=((r=(-271733879^(o=((o=(-1732584194^2004318071&t)+h[1]-117830708)<<12|o>>>20)+t<<0)&(-271733879^t))+h[2]-1126478375)<<17|r>>>15)+o<<0)&(o^t))+h[3]-1316259209)<<22|e>>>10)+r<<0:(t=this.h0,e=this.h1,r=this.h2,((e+=((t=((t+=((o=this.h3)^e&(r^o))+h[0]-680876936)<<7|t>>>25)+e<<0)^(r=((r+=(e^(o=((o+=(r^t&(e^r))+h[1]-389564586)<<12|o>>>20)+t<<0)&(t^e))+h[2]+606105819)<<17|r>>>15)+o<<0)&(o^t))+h[3]-1044525330)<<22|e>>>10)+r<<0),e=((e+=((t=((t+=(o^e&(r^o))+h[4]-176418897)<<7|t>>>25)+e<<0)^(r=((r+=(e^(o=((o+=(r^t&(e^r))+h[5]+1200080426)<<12|o>>>20)+t<<0)&(t^e))+h[6]-1473231341)<<17|r>>>15)+o<<0)&(o^t))+h[7]-45705983)<<22|e>>>10)+r<<0,e=((e+=((t=((t+=(o^e&(r^o))+h[8]+1770035416)<<7|t>>>25)+e<<0)^(r=((r+=(e^(o=((o+=(r^t&(e^r))+h[9]-1958414417)<<12|o>>>20)+t<<0)&(t^e))+h[10]-42063)<<17|r>>>15)+o<<0)&(o^t))+h[11]-1990404162)<<22|e>>>10)+r<<0,e=((e+=((t=((t+=(o^e&(r^o))+h[12]+1804603682)<<7|t>>>25)+e<<0)^(r=((r+=(e^(o=((o+=(r^t&(e^r))+h[13]-40341101)<<12|o>>>20)+t<<0)&(t^e))+h[14]-1502002290)<<17|r>>>15)+o<<0)&(o^t))+h[15]+1236535329)<<22|e>>>10)+r<<0,e=((e+=((o=((o+=(e^r&((t=((t+=(r^o&(e^r))+h[1]-165796510)<<5|t>>>27)+e<<0)^e))+h[6]-1069501632)<<9|o>>>23)+t<<0)^t&((r=((r+=(t^e&(o^t))+h[11]+643717713)<<14|r>>>18)+o<<0)^o))+h[0]-373897302)<<20|e>>>12)+r<<0,e=((e+=((o=((o+=(e^r&((t=((t+=(r^o&(e^r))+h[5]-701558691)<<5|t>>>27)+e<<0)^e))+h[10]+38016083)<<9|o>>>23)+t<<0)^t&((r=((r+=(t^e&(o^t))+h[15]-660478335)<<14|r>>>18)+o<<0)^o))+h[4]-405537848)<<20|e>>>12)+r<<0,e=((e+=((o=((o+=(e^r&((t=((t+=(r^o&(e^r))+h[9]+568446438)<<5|t>>>27)+e<<0)^e))+h[14]-1019803690)<<9|o>>>23)+t<<0)^t&((r=((r+=(t^e&(o^t))+h[3]-187363961)<<14|r>>>18)+o<<0)^o))+h[8]+1163531501)<<20|e>>>12)+r<<0,e=((e+=((o=((o+=(e^r&((t=((t+=(r^o&(e^r))+h[13]-1444681467)<<5|t>>>27)+e<<0)^e))+h[2]-51403784)<<9|o>>>23)+t<<0)^t&((r=((r+=(t^e&(o^t))+h[7]+1735328473)<<14|r>>>18)+o<<0)^o))+h[12]-1926607734)<<20|e>>>12)+r<<0,e=((e+=((i=(o=((o+=((s=e^r)^(t=((t+=(s^o)+h[5]-378558)<<4|t>>>28)+e<<0))+h[8]-2022574463)<<11|o>>>21)+t<<0)^t)^(r=((r+=(i^e)+h[11]+1839030562)<<16|r>>>16)+o<<0))+h[14]-35309556)<<23|e>>>9)+r<<0,e=((e+=((i=(o=((o+=((s=e^r)^(t=((t+=(s^o)+h[1]-1530992060)<<4|t>>>28)+e<<0))+h[4]+1272893353)<<11|o>>>21)+t<<0)^t)^(r=((r+=(i^e)+h[7]-155497632)<<16|r>>>16)+o<<0))+h[10]-1094730640)<<23|e>>>9)+r<<0,e=((e+=((i=(o=((o+=((s=e^r)^(t=((t+=(s^o)+h[13]+681279174)<<4|t>>>28)+e<<0))+h[0]-358537222)<<11|o>>>21)+t<<0)^t)^(r=((r+=(i^e)+h[3]-722521979)<<16|r>>>16)+o<<0))+h[6]+76029189)<<23|e>>>9)+r<<0,e=((e+=((i=(o=((o+=((s=e^r)^(t=((t+=(s^o)+h[9]-640364487)<<4|t>>>28)+e<<0))+h[12]-421815835)<<11|o>>>21)+t<<0)^t)^(r=((r+=(i^e)+h[15]+530742520)<<16|r>>>16)+o<<0))+h[2]-995338651)<<23|e>>>9)+r<<0,e=((e+=((o=((o+=(e^((t=((t+=(r^(e|~o))+h[0]-198630844)<<6|t>>>26)+e<<0)|~r))+h[7]+1126891415)<<10|o>>>22)+t<<0)^((r=((r+=(t^(o|~e))+h[14]-1416354905)<<15|r>>>17)+o<<0)|~t))+h[5]-57434055)<<21|e>>>11)+r<<0,e=((e+=((o=((o+=(e^((t=((t+=(r^(e|~o))+h[12]+1700485571)<<6|t>>>26)+e<<0)|~r))+h[3]-1894986606)<<10|o>>>22)+t<<0)^((r=((r+=(t^(o|~e))+h[10]-1051523)<<15|r>>>17)+o<<0)|~t))+h[1]-2054922799)<<21|e>>>11)+r<<0,e=((e+=((o=((o+=(e^((t=((t+=(r^(e|~o))+h[8]+1873313359)<<6|t>>>26)+e<<0)|~r))+h[15]-30611744)<<10|o>>>22)+t<<0)^((r=((r+=(t^(o|~e))+h[6]-1560198380)<<15|r>>>17)+o<<0)|~t))+h[13]+1309151649)<<21|e>>>11)+r<<0,e=((e+=((o=((o+=(e^((t=((t+=(r^(e|~o))+h[4]-145523070)<<6|t>>>26)+e<<0)|~r))+h[11]-1120210379)<<10|o>>>22)+t<<0)^((r=((r+=(t^(o|~e))+h[2]+718787259)<<15|r>>>17)+o<<0)|~t))+h[9]-343485551)<<21|e>>>11)+r<<0,this.first?(this.h0=t+1732584193<<0,this.h1=e-271733879<<0,this.h2=r-1732584194<<0,this.h3=o+271733878<<0,this.first=!1):(this.h0=this.h0+t<<0,this.h1=this.h1+e<<0,this.h2=this.h2+r<<0,this.h3=this.h3+o<<0)},Md5.prototype.hex=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,o=this.h3;return HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]},Md5.prototype.toString=Md5.prototype.hex,Md5.prototype.digest=function(){this.finalize();var t=this.h0,e=this.h1,r=this.h2,o=this.h3;return[255&t,t>>8&255,t>>16&255,t>>24&255,255&e,e>>8&255,e>>16&255,e>>24&255,255&r,r>>8&255,r>>16&255,r>>24&255,255&o,o>>8&255,o>>16&255,o>>24&255]},Md5.prototype.array=Md5.prototype.digest,Md5.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(16),e=new Uint32Array(t);return e[0]=this.h0,e[1]=this.h1,e[2]=this.h2,e[3]=this.h3,t},Md5.prototype.buffer=Md5.prototype.arrayBuffer,Md5.prototype.base64=function(){for(var t,e,r,o="",s=this.array(),i=0;i<15;)t=s[i++],e=s[i++],r=s[i++],o+=BASE64_ENCODE_CHAR[t>>>2]+BASE64_ENCODE_CHAR[63&(t<<4|e>>>4)]+BASE64_ENCODE_CHAR[63&(e<<2|r>>>6)]+BASE64_ENCODE_CHAR[63&r];return t=s[i],o+=BASE64_ENCODE_CHAR[t>>>2]+BASE64_ENCODE_CHAR[t<<4&63]+"=="};var exports=createMethod();COMMON_JS?module.exports=exports:root.md5=exports}()});function getFilePath(t,e){t=t.replace(/^File:/,"").replace(/\s+/g,"_");var r=encodeURIComponent(t),o="https://upload.wikimedia.org/wikipedia/commons",s=md5.hex(t),i=s[0]+"/"+s[0]+s[1];return e?o+"/thumb/"+i+"/"+r+"/"+e+"px-"+r+(t.match(/tiff?$/i)?".jpg":t.match(/svg$/i)?".png":""):o+"/"+i+"/"+r}return getFilePath}); | ||
!function(n,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):n["wikimedia-commons-file-path"]=e()}(this,function(){"use strict";var n="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};var e,u=(function(u){!function(n){function p(n,e){var t=(65535&n)+(65535&e);return(n>>16)+(e>>16)+(t>>16)<<16|65535&t}function f(n,e,t,r,o,i){return p((u=p(p(e,n),p(r,i)))<<(f=o)|u>>>32-f,t);var u,f}function l(n,e,t,r,o,i,u){return f(e&t|~e&r,n,e,o,i,u)}function h(n,e,t,r,o,i,u){return f(e&r|t&~r,n,e,o,i,u)}function g(n,e,t,r,o,i,u){return f(e^t^r,n,e,o,i,u)}function s(n,e,t,r,o,i,u){return f(t^(e|~r),n,e,o,i,u)}function c(n,e){var t,r,o,i,u;n[e>>5]|=128<<e%32,n[14+(e+64>>>9<<4)]=e;var f=1732584193,c=-271733879,a=-1732584194,d=271733878;for(t=0;t<n.length;t+=16)c=s(c=s(c=s(c=s(c=g(c=g(c=g(c=g(c=h(c=h(c=h(c=h(c=l(c=l(c=l(c=l(o=c,a=l(i=a,d=l(u=d,f=l(r=f,c,a,d,n[t],7,-680876936),c,a,n[t+1],12,-389564586),f,c,n[t+2],17,606105819),d,f,n[t+3],22,-1044525330),a=l(a,d=l(d,f=l(f,c,a,d,n[t+4],7,-176418897),c,a,n[t+5],12,1200080426),f,c,n[t+6],17,-1473231341),d,f,n[t+7],22,-45705983),a=l(a,d=l(d,f=l(f,c,a,d,n[t+8],7,1770035416),c,a,n[t+9],12,-1958414417),f,c,n[t+10],17,-42063),d,f,n[t+11],22,-1990404162),a=l(a,d=l(d,f=l(f,c,a,d,n[t+12],7,1804603682),c,a,n[t+13],12,-40341101),f,c,n[t+14],17,-1502002290),d,f,n[t+15],22,1236535329),a=h(a,d=h(d,f=h(f,c,a,d,n[t+1],5,-165796510),c,a,n[t+6],9,-1069501632),f,c,n[t+11],14,643717713),d,f,n[t],20,-373897302),a=h(a,d=h(d,f=h(f,c,a,d,n[t+5],5,-701558691),c,a,n[t+10],9,38016083),f,c,n[t+15],14,-660478335),d,f,n[t+4],20,-405537848),a=h(a,d=h(d,f=h(f,c,a,d,n[t+9],5,568446438),c,a,n[t+14],9,-1019803690),f,c,n[t+3],14,-187363961),d,f,n[t+8],20,1163531501),a=h(a,d=h(d,f=h(f,c,a,d,n[t+13],5,-1444681467),c,a,n[t+2],9,-51403784),f,c,n[t+7],14,1735328473),d,f,n[t+12],20,-1926607734),a=g(a,d=g(d,f=g(f,c,a,d,n[t+5],4,-378558),c,a,n[t+8],11,-2022574463),f,c,n[t+11],16,1839030562),d,f,n[t+14],23,-35309556),a=g(a,d=g(d,f=g(f,c,a,d,n[t+1],4,-1530992060),c,a,n[t+4],11,1272893353),f,c,n[t+7],16,-155497632),d,f,n[t+10],23,-1094730640),a=g(a,d=g(d,f=g(f,c,a,d,n[t+13],4,681279174),c,a,n[t],11,-358537222),f,c,n[t+3],16,-722521979),d,f,n[t+6],23,76029189),a=g(a,d=g(d,f=g(f,c,a,d,n[t+9],4,-640364487),c,a,n[t+12],11,-421815835),f,c,n[t+15],16,530742520),d,f,n[t+2],23,-995338651),a=s(a,d=s(d,f=s(f,c,a,d,n[t],6,-198630844),c,a,n[t+7],10,1126891415),f,c,n[t+14],15,-1416354905),d,f,n[t+5],21,-57434055),a=s(a,d=s(d,f=s(f,c,a,d,n[t+12],6,1700485571),c,a,n[t+3],10,-1894986606),f,c,n[t+10],15,-1051523),d,f,n[t+1],21,-2054922799),a=s(a,d=s(d,f=s(f,c,a,d,n[t+8],6,1873313359),c,a,n[t+15],10,-30611744),f,c,n[t+6],15,-1560198380),d,f,n[t+13],21,1309151649),a=s(a,d=s(d,f=s(f,c,a,d,n[t+4],6,-145523070),c,a,n[t+11],10,-1120210379),f,c,n[t+2],15,718787259),d,f,n[t+9],21,-343485551),f=p(f,r),c=p(c,o),a=p(a,i),d=p(d,u);return[f,c,a,d]}function a(n){var e,t="",r=32*n.length;for(e=0;e<r;e+=8)t+=String.fromCharCode(n[e>>5]>>>e%32&255);return t}function d(n){var e,t=[];for(t[(n.length>>2)-1]=void 0,e=0;e<t.length;e+=1)t[e]=0;var r=8*n.length;for(e=0;e<r;e+=8)t[e>>5]|=(255&n.charCodeAt(e/8))<<e%32;return t}function r(n){var e,t,r="0123456789abcdef",o="";for(t=0;t<n.length;t+=1)e=n.charCodeAt(t),o+=r.charAt(e>>>4&15)+r.charAt(15&e);return o}function t(n){return unescape(encodeURIComponent(n))}function o(n){return a(c(d(e=t(n)),8*e.length));var e}function i(n,e){return function(n,e){var t,r,o=d(n),i=[],u=[];for(i[15]=u[15]=void 0,16<o.length&&(o=c(o,8*n.length)),t=0;t<16;t+=1)i[t]=909522486^o[t],u[t]=1549556828^o[t];return r=c(i.concat(d(e)),512+8*e.length),a(c(u.concat(r),640))}(t(n),t(e))}function e(n,e,t){return e?t?i(e,n):r(i(e,n)):t?o(n):r(o(n))}u.exports?u.exports=e:n.md5=e}(n)}(e={exports:{}},e.exports),e.exports);return function(n,e){n=n.replace(/^File:/,"").replace(/\s+/g,"_");var t=encodeURIComponent(n),r="https://upload.wikimedia.org/wikipedia/commons",o=u(n),i=o[0]+"/"+o[0]+o[1];return e?r+"/thumb/"+i+"/"+t+"/"+e+"px-"+t+(n.match(/tiff?$/i)?".jpg":n.match(/svg$/i)?".png":""):r+"/"+i+"/"+t}}); |
@@ -1,2 +0,2 @@ | ||
import md5 from 'js-md5'; | ||
import md5 from 'blueimp-md5'; | ||
@@ -8,3 +8,3 @@ // based on https://github.com/derhuerst/commons-photo-url/blob/master/index.js | ||
const base = 'https://upload.wikimedia.org/wikipedia/commons'; | ||
const hash = md5.hex(file); | ||
const hash = md5(file); | ||
const ns = `${hash[0]}/${hash[0]}${hash[1]}`; | ||
@@ -11,0 +11,0 @@ if (width) { |
{ | ||
"name": "wikimedia-commons-file-path", | ||
"version": "1.1.0", | ||
"version": "1.2.0", | ||
"description": "Returns the image/thumbnail file path for Wikimedia Commons", | ||
@@ -40,4 +40,4 @@ "main": "build/wikimedia-commons-file-path.js", | ||
"dependencies": { | ||
"js-md5": "^0.7.3" | ||
"blueimp-md5": "^2.10.0" | ||
} | ||
} |
@@ -13,2 +13,2 @@ # wikimedia-commons-file-path | ||
To compute the MD5 hash, this library uses [`js-md5`](https://www.npmjs.com/package/js-md5). | ||
To compute the MD5 hash, this library uses [`blueimp-md5`](https://www.npmjs.com/package/blueimp-md5). |
import buble from 'rollup-plugin-buble'; | ||
import common from 'rollup-plugin-commonjs'; | ||
import nodeResolve from 'rollup-plugin-node-resolve'; | ||
import {uglify} from 'rollup-plugin-uglify'; | ||
import { uglify } from 'rollup-plugin-uglify'; | ||
import pkg from './package.json'; | ||
@@ -13,3 +13,5 @@ | ||
format: 'umd', | ||
banner: `/* ${pkg.name} ${pkg.version} (${pkg.license}) by ${pkg.author}. ${pkg.homepage} */`, | ||
banner: `/* ${pkg.name} ${pkg.version} (${pkg.license}) by ${pkg.author}. ${ | ||
pkg.homepage | ||
} */`, | ||
name: 'wikimedia-commons-file-path' | ||
@@ -24,4 +26,7 @@ } | ||
plugins: [nodeResolve(), common(), buble(), uglify()], | ||
output: {...shared.output, file: 'build/wikimedia-commons-file-path.min.js'} | ||
output: { | ||
...shared.output, | ||
file: 'build/wikimedia-commons-file-path.min.js' | ||
} | ||
} | ||
]; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
19217
368
1
+ Addedblueimp-md5@^2.10.0
+ Addedblueimp-md5@2.19.0(transitive)
- Removedjs-md5@^0.7.3
- Removedjs-md5@0.7.3(transitive)