1const crypto = require('crypto') 2const { dirname, basename, resolve } = require('path') 3 4// use sha1 because it's faster, and collisions extremely unlikely anyway 5const pathSafeHash = s => 6 crypto.createHash('sha1') 7 .update(s) 8 .digest('base64') 9 .replace(/[^a-zA-Z0-9]+/g, '') 10 .slice(0, 8) 11 12const retirePath = from => { 13 const d = dirname(from) 14 const b = basename(from) 15 const hash = pathSafeHash(from) 16 return resolve(d, `.${b}-${hash}`) 17} 18 19module.exports = retirePath 20