const crypto = require('crypto'); module.exports.templateTags = [ { name: 'hash', displayName: 'Hash', description: 'apply hash to a value', args: [ { displayName: 'Algorithm', type: 'enum', options: [ { displayName: 'MD5', value: 'md5' }, { displayName: 'SHA1', value: 'sha1' }, { displayName: 'SHA256', value: 'sha256' }, { displayName: 'SHA512', value: 'sha512' }, ], }, { displayName: 'Digest Encoding', description: 'The encoding of the output', type: 'enum', options: [ { displayName: 'Hexadecimal', value: 'hex' }, { displayName: 'Base64', value: 'base64' }, ], }, { displayName: 'Input', type: 'string', placeholder: 'Value to hash', }, ], run(context, algorithm, encoding, value = '') { if (encoding !== 'hex' && encoding !== 'latin1' && encoding !== 'base64') { throw new Error(`Invalid encoding ${encoding}. Choices are hex, latin1, base64`); } const valueType = typeof value; if (valueType !== 'string') { throw new Error(`Cannot hash value of type "${valueType}"`); } const hash = crypto.createHash(algorithm); hash.update(value || '', 'utf8'); return hash.digest(encoding); }, }, ];