| 
							
								 | 
							
							'use strict'
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							const validator = require('./lib/validator')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const parse = require('./lib/parse')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const redactor = require('./lib/redactor')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const restorer = require('./lib/restorer')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const { groupRedact, nestedRedact } = require('./lib/modifiers')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const state = require('./lib/state')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const rx = require('./lib/rx')
 | 
						
						
						
						
							 | 
							
								 | 
							
							const validate = validator()
 | 
						
						
						
						
							 | 
							
								 | 
							
							const noop = (o) => o
 | 
						
						
						
						
							 | 
							
								 | 
							
							noop.restore = noop
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							const DEFAULT_CENSOR = '[REDACTED]'
 | 
						
						
						
						
							 | 
							
								 | 
							
							fastRedact.rx = rx
 | 
						
						
						
						
							 | 
							
								 | 
							
							fastRedact.validator = validator
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							module.exports = fastRedact
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							function fastRedact (opts = {}) {
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const paths = Array.from(new Set(opts.paths || []))
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const serialize = 'serialize' in opts ? (
 | 
						
						
						
						
							 | 
							
								 | 
							
							    opts.serialize === false ? opts.serialize
 | 
						
						
						
						
							 | 
							
								 | 
							
							      : (typeof opts.serialize === 'function' ? opts.serialize : JSON.stringify)
 | 
						
						
						
						
							 | 
							
								 | 
							
							  ) : JSON.stringify
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const remove = opts.remove
 | 
						
						
						
						
							 | 
							
								 | 
							
							  if (remove === true && serialize !== JSON.stringify) {
 | 
						
						
						
						
							 | 
							
								 | 
							
							    throw Error('fast-redact – remove option may only be set when serializer is JSON.stringify')
 | 
						
						
						
						
							 | 
							
								 | 
							
							  }
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const censor = remove === true
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ? undefined
 | 
						
						
						
						
							 | 
							
								 | 
							
							    : 'censor' in opts ? opts.censor : DEFAULT_CENSOR
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const isCensorFct = typeof censor === 'function'
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const censorFctTakesPath = isCensorFct && censor.length > 1
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  if (paths.length === 0) return serialize || noop
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  validate({ paths, serialize, censor })
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const { wildcards, wcLen, secret } = parse({ paths, censor })
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const compileRestore = restorer({ secret, wcLen })
 | 
						
						
						
						
							 | 
							
								 | 
							
							  const strict = 'strict' in opts ? opts.strict : true
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							  return redactor({ secret, wcLen, serialize, strict, isCensorFct, censorFctTakesPath }, state({
 | 
						
						
						
						
							 | 
							
								 | 
							
							    secret,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    censor,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    compileRestore,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    serialize,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    groupRedact,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    nestedRedact,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    wildcards,
 | 
						
						
						
						
							 | 
							
								 | 
							
							    wcLen
 | 
						
						
						
						
							 | 
							
								 | 
							
							  }))
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 |