Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
validate( path, input) {
// The state is updated by widgets, but isn't always synchronous so we check _pendingState first
var state = this._pendingState || this.state
// `reach()` pulls out a child schema so we can test a single path
var field = yup.reach(schema, path)
// we also need the specific value for this path
var value = getter(path)(state);
return field.validate(value, { strict: true })
.then(() => void 0) // if valid return nothing
.catch(err => err.errors) // if invalid return the errors for this field
},
createHandler(path){
var self = this
, setpath = setter(path)
return function(val){
var s = self.state; // copy state so we can update without mutating
if( val && val.target) // in case we got a `SyntheticEvent` object
val = val.target.value
setpath(s, val === null ? undefined : val) // i don't want to allow nullable values so coerce to undefined
self.setState(s)
}
},
return val => {
if (val && val.target) // in case we got a `SyntheticEvent` object; react-widgets pass the value directly to onChange
val = val.target.value
setter(path)(this.state, val)
this.setState(this.state, () => this._runValidations())
}
}
return val => {
if (val && val.target) // in case we got a `SyntheticEvent` object; react-widgets pass the value directly to onChange
val = val.target.value
setter(path)(this.state, val)
this.setState(this.state, () => this._runValidations())
}
}
export function getIn(schema, path, value, context) {
let parent, lastPart, lastPartDebug;
// if only one "value" arg then use it for both
context = context || value;
if (!path)
return {
parent,
parentPath: path,
schema,
};
forEach(path, (_part, isBracket, isArray) => {
let part = isBracket ? trim(_part) : _part;
if (isArray || has(schema, '_subType')) {
// we skipped an array: foo[].bar
let idx = isArray ? parseInt(part, 10) : 0;
schema = schema.resolve({ context, parent, value })._subType;
if (value) {
if (isArray && idx >= value.length) {
throw new Error(
`Yup.reach cannot resolve an array item at index: ${_part}, in the path: ${path}. ` +
`because there is no value at that index. `,
);
}
export function inPath(basePath, childPath) {
if (basePath === childPath) return true
var partsA = prop.split(basePath) || []
, partsB = prop.split(childPath) || []
if (partsA.length > partsB.length)
return false
return partsA.every(
(part, idx) => clean(part) === clean(partsB[idx]))
}
module.exports = function update(model, path, value) {
var parts = prop.split(path)
, newModel = copy(model)
, part, islast;
if ( newModel === undefined )
newModel = IS_ARRAY.test(parts[0]) ? [] : {}
var current = newModel
for (var idx = 0; idx < parts.length; idx++) {
islast = idx === (parts.length - 1)
part = paths.clean(parts[idx])
if ( islast )
current[part] = value
else {
fields[key]._deps && fields[key]._deps.forEach(function (node) {
//eslint-disable-line no-loop-func
node = split(node)[0];
if (! ~nodes.indexOf(node)) nodes.push(node);
if (! ~excludes.indexOf('' + key + '-' + node)) edges.push([key, node]);
});
}
export default function update(model, path, value) {
var parts = prop.split(path)
, newModel = copy(model)
, part, islast;
if (newModel == null)
newModel = IS_ARRAY.test(parts[0]) ? [] : {}
var current = newModel
for (var idx = 0; idx < parts.length; idx++) {
islast = idx === (parts.length - 1)
part = clean(parts[idx])
if (islast)
current[part] = value
else {
function addNode(depPath, key) {
var node = split(depPath)[0];
if (!~nodes.indexOf(node)) nodes.push(node);
if (!~excludes.indexOf(`${key}-${node}`)) edges.push([key, node]);
}