Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | 27x 27x 26x 26x 26x 26x 27x 26x 27x | import crypto from 'crypto';
/**
* Create a NON-CRYPTOGRAPHIC (INSECURE) hash of some pipeline content.
* Hash algorithm should be strong enough to use for caching, but does not need to be cryptographically secure.
* This may be called many times by the pipeline, so the algorithm used should be reasonably fast as well.
*
* Standard implementation uses MD5 as provided by the Node.JS Crypto module.
* Override to change implementation
*
* @param content Content to hash. Should be a UTF-8 string.
* @returns Returns a hash of content as a Base64 string
*/
export function hashMD5(content: string): string {
// create hash instance
const md5 = crypto.createHash('md5');
// load the content
md5.update(content, 'utf8');
// calculate the hash
const b64 = md5.digest('base64');
// Convert to path-safe Base64
return base64ToPathSafeBase64(b64);
}
export function base64ToPathSafeBase64(base64: string): string {
return base64.replace(/\//g, '_');
}
export function pathSafeBas64ToBase64(pathSafeBase64: string): string {
return pathSafeBase64.replace(/_/g, '/');
} |