hide-secrets
Version:
for when you want to log objects, but hide certain restricted fields, e.g., passwords.
31 lines (25 loc) • 582 B
JavaScript
var traverse = require('traverse')
var defaultBadWords = [
'password',
'pass',
'token',
'auth',
'secret',
'passphrase',
'card'
]
var replacement = '[SECRET]'
module.exports = function (obj, opts) {
opts = opts || {}
opts.badWords = opts.badWords || defaultBadWords
return traverse(obj).map(function (n) {
for (var i = 0, key; (key = this.path[i]) !== undefined; i++) {
if (~opts.badWords.indexOf(key)) {
if (typeof n === 'string') return replaceString(n)
}
}
})
}
function replaceString (str) {
if (str) return replacement
}