update
This commit is contained in:
parent
d9becc67b6
commit
9308795b8b
964 changed files with 104265 additions and 16 deletions
38
node_modules/fast-redact/lib/validator.js
generated
vendored
Normal file
38
node_modules/fast-redact/lib/validator.js
generated
vendored
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
'use strict'
|
||||
|
||||
const { createContext, runInContext } = require('vm')
|
||||
|
||||
module.exports = validator
|
||||
|
||||
function validator (opts = {}) {
|
||||
const {
|
||||
ERR_PATHS_MUST_BE_STRINGS = () => 'fast-redact - Paths must be 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 proxy = new Proxy({}, { get: () => proxy, set: () => { throw Error() } })
|
||||
const expr = (s[0] === '[' ? '' : '.') + s.replace(/^\*/, '〇').replace(/\.\*/g, '.〇').replace(/\[\*\]/g, '[〇]')
|
||||
if (/\n|\r|;/.test(expr)) throw Error()
|
||||
if (/\/\*/.test(expr)) throw Error()
|
||||
runInContext(`
|
||||
(function () {
|
||||
'use strict'
|
||||
o${expr}
|
||||
if ([o${expr}].length !== 1) throw Error()
|
||||
})()
|
||||
`, createContext({ o: proxy, 〇: null }), {
|
||||
codeGeneration: { strings: false, wasm: false }
|
||||
})
|
||||
} catch (e) {
|
||||
throw Error(ERR_INVALID_PATH(s))
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue