You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					59 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					59 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								"use strict";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, "__esModule", {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.default = void 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * JS Implementation of MurmurHash2
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @author <a href="mailto:gary.court@gmail.com">Gary Court</a>
							 | 
						||
| 
								 | 
							
								 * @see http://github.com/garycourt/murmurhash-js
							 | 
						||
| 
								 | 
							
								 * @author <a href="mailto:aappleby@gmail.com">Austin Appleby</a>
							 | 
						||
| 
								 | 
							
								 * @see http://sites.google.com/site/murmurhash/
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * @param {string} str ASCII only
							 | 
						||
| 
								 | 
							
								 * @return {string} Base 36 encoded hash result
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function murmurhash2_32_gc(str) {
							 | 
						||
| 
								 | 
							
								  let l = str.length;
							 | 
						||
| 
								 | 
							
								  let h = l;
							 | 
						||
| 
								 | 
							
								  let i = 0;
							 | 
						||
| 
								 | 
							
								  let k;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  while (l >= 4) {
							 | 
						||
| 
								 | 
							
								    k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;
							 | 
						||
| 
								 | 
							
								    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);
							 | 
						||
| 
								 | 
							
								    k ^= k >>> 24;
							 | 
						||
| 
								 | 
							
								    k = (k & 0xffff) * 0x5bd1e995 + (((k >>> 16) * 0x5bd1e995 & 0xffff) << 16);
							 | 
						||
| 
								 | 
							
								    h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16) ^ k;
							 | 
						||
| 
								 | 
							
								    l -= 4;
							 | 
						||
| 
								 | 
							
								    ++i;
							 | 
						||
| 
								 | 
							
								  } // forgive existing code
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  /* eslint-disable no-fallthrough */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  switch (l) {
							 | 
						||
| 
								 | 
							
								    case 3:
							 | 
						||
| 
								 | 
							
								      h ^= (str.charCodeAt(i + 2) & 0xff) << 16;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 2:
							 | 
						||
| 
								 | 
							
								      h ^= (str.charCodeAt(i + 1) & 0xff) << 8;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    case 1:
							 | 
						||
| 
								 | 
							
								      h ^= str.charCodeAt(i) & 0xff;
							 | 
						||
| 
								 | 
							
								      h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  /* eslint-enable no-fallthrough */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  h ^= h >>> 13;
							 | 
						||
| 
								 | 
							
								  h = (h & 0xffff) * 0x5bd1e995 + (((h >>> 16) * 0x5bd1e995 & 0xffff) << 16);
							 | 
						||
| 
								 | 
							
								  h ^= h >>> 15;
							 | 
						||
| 
								 | 
							
								  return (h >>> 0).toString(36);
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _default = murmurhash2_32_gc;
							 | 
						||
| 
								 | 
							
								exports.default = _default;
							 |