'use strict' const rx = require('./rx') module.exports = parse function parse ({ paths }) { const wildcards = [] var wcLen = 0 const secret = paths.reduce(function (o, strPath, ix) { var path = strPath.match(rx).map((p) => p.replace(/'|"|`/g, '')) const leadingBracket = strPath[0] === '[' path = path.map((p) => { if (p[0] === '[') return p.substr(1, p.length - 2) else return p }) const star = path.indexOf('*') if (star > -1) { const before = path.slice(0, star) const beforeStr = before.join('.') const after = path.slice(star + 1, path.length) if (after.indexOf('*') > -1) throw Error('fast-redact – Only one wildcard per path is supported') const nested = after.length > 0 wcLen++ wildcards.push({ before, beforeStr, after, nested }) } else { o[strPath] = { path: path, val: undefined, precensored: false, circle: '', escPath: JSON.stringify(strPath), leadingBracket: leadingBracket } } return o }, {}) return { wildcards, wcLen, secret } }