Spaces:
Runtime error
Runtime error
| module.exports = validator | |
| function validator (opts = {}) { | |
| const { | |
| ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be (non-empty) strings', | |
| ERR_INVALID_PATH = (s) => `fast-redact β Invalid path (${s})` | |
| } = opts | |
| return function validate ({ paths }) { | |
| paths.forEach((s) => { | |
| if (typeof s !== 'string') { | |
| throw Error(ERR_PATHS_MUST_BE_STRINGS()) | |
| } | |
| try { | |
| if (/γ/.test(s)) throw Error() | |
| const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\*/, 'γ').replace(/\.\*/g, '.γ').replace(/\[\*\]/g, '[γ]') | |
| if (/\n|\r|;/.test(expr)) throw Error() | |
| if (/\/\*/.test(expr)) throw Error() | |
| /* eslint-disable-next-line */ | |
| Function(` | |
| 'use strict' | |
| const o = new Proxy({}, { get: () => o, set: () => { throw Error() } }); | |
| const γ = null; | |
| o${expr} | |
| if ([o${expr}].length !== 1) throw Error()`)() | |
| } catch (e) { | |
| throw Error(ERR_INVALID_PATH(s)) | |
| } | |
| }) | |
| } | |
| } | |