const crypto = require('crypto'); exports.strtr = (str, replacements) => str.toString().replace( /{([^}]+)}/g, (match, key) => replacements[key] || match ); const trim = function(str, chars, flags) { if(chars === undefined) chars = " \n\r\t\v\0"; let start = 0, end = str.length; if(flags & 0x01) while(start < end && chars.indexOf(str[start]) >= 0) ++start; if(flags & 0x02) while(end > start && chars.indexOf(str[end - 1]) >= 0) --end; return (start > 0 || end < str.length) ? str.substring(start, end) : str; }; exports.trimStart = (str, chars) => trim(str, chars, 0x01); exports.trimEnd = (str, chars) => trim(str, chars, 0x02); exports.trim = (str, chars) => trim(str, chars, 0x03); exports.shortHash = function(text) { const hash = crypto.createHash('sha256'); hash.update(text); return hash.digest('hex').substring(0, 8); };