/
home
/
infinitibizsol
/
testingcrm.infinitibizsol.com
/
node_modules
/
fast-redact
/
lib
/
File Upload :
llllll
Current File: /home/infinitibizsol/testingcrm.infinitibizsol.com/node_modules/fast-redact/lib/restorer.js
'use strict' const { groupRestore, nestedRestore } = require('./modifiers') module.exports = restorer function restorer () { return function compileRestore () { if (this.restore) { this.restore.state.secret = this.secret return } const { secret, wcLen } = this const paths = Object.keys(secret) const resetters = resetTmpl(secret, paths) const hasWildcards = wcLen > 0 const state = hasWildcards ? { secret, groupRestore, nestedRestore } : { secret } /* eslint-disable-next-line */ this.restore = Function( 'o', restoreTmpl(resetters, paths, hasWildcards) ).bind(state) this.restore.state = state } } /** * Mutates the original object to be censored by restoring its original values * prior to censoring. * * @param {object} secret Compiled object describing which target fields should * be censored and the field states. * @param {string[]} paths The list of paths to censor as provided at * initialization time. * * @returns {string} String of JavaScript to be used by `Function()`. The * string compiles to the function that does the work in the description. */ function resetTmpl (secret, paths) { return paths.map((path) => { const { circle, escPath, leadingBracket } = secret[path] const delim = leadingBracket ? '' : '.' const reset = circle ? `o.${circle} = secret[${escPath}].val` : `o${delim}${path} = secret[${escPath}].val` const clear = `secret[${escPath}].val = undefined` return ` if (secret[${escPath}].val !== undefined) { try { ${reset} } catch (e) {} ${clear} } ` }).join('') } /** * Creates the body of the restore function * * Restoration of the redacted object happens * backwards, in reverse order of redactions, * so that repeated redactions on the same object * property can be eventually rolled back to the * original value. * * This way dynamic redactions are restored first, * starting from the last one working backwards and * followed by the static ones. * * @returns {string} the body of the restore function */ function restoreTmpl (resetters, paths, hasWildcards) { const dynamicReset = hasWildcards === true ? ` const keys = Object.keys(secret) const len = keys.length for (var i = len - 1; i >= ${paths.length}; i--) { const k = keys[i] const o = secret[k] if (o) { if (o.flat === true) this.groupRestore(o) else this.nestedRestore(o) secret[k] = null } } ` : '' return ` const secret = this.secret ${dynamicReset} ${resetters} return o ` }
Copyright ©2k19 -
Hexid
|
Tex7ure