32 lines
		
	
	
		
			870 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			32 lines
		
	
	
		
			870 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | "use strict"; | ||
|  | Object.defineProperty(exports, "__esModule", { value: true }); | ||
|  | var crypto_1 = require("crypto"); | ||
|  | exports.cache = Object.create(null); | ||
|  | function sha1() { | ||
|  |     var data = []; | ||
|  |     for (var _i = 0; _i < arguments.length; _i++) { | ||
|  |         data[_i] = arguments[_i]; | ||
|  |     } | ||
|  |     var canCache = data.length === 1 && typeof data[0] === 'string'; | ||
|  |     var cacheKey; | ||
|  |     if (canCache) { | ||
|  |         cacheKey = data[0]; | ||
|  |         if (cacheKey in exports.cache) { | ||
|  |             return exports.cache[cacheKey]; | ||
|  |         } | ||
|  |     } | ||
|  |     var hash = crypto_1.createHash('sha1'); | ||
|  |     data.forEach(function (item) { | ||
|  |         if (typeof item === 'string') | ||
|  |             hash.update(item, 'utf8'); | ||
|  |         else | ||
|  |             hash.update(item); | ||
|  |     }); | ||
|  |     var res = hash.digest('hex').toString(); | ||
|  |     if (canCache) { | ||
|  |         exports.cache[cacheKey] = res; | ||
|  |     } | ||
|  |     return res; | ||
|  | } | ||
|  | exports.sha1 = sha1; |