You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							216 lines
						
					
					
						
							6.0 KiB
						
					
					
				
			
		
		
	
	
							216 lines
						
					
					
						
							6.0 KiB
						
					
					
				"use strict"; | 
						|
 | 
						|
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); | 
						|
 | 
						|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); | 
						|
 | 
						|
exports.__esModule = true; | 
						|
exports.default = void 0; | 
						|
 | 
						|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); | 
						|
 | 
						|
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose")); | 
						|
 | 
						|
var _inherits = _interopRequireDefault(require("./util/inherits")); | 
						|
 | 
						|
var _isAbsent = _interopRequireDefault(require("./util/isAbsent")); | 
						|
 | 
						|
var _isSchema = _interopRequireDefault(require("./util/isSchema")); | 
						|
 | 
						|
var _makePath = _interopRequireDefault(require("./util/makePath")); | 
						|
 | 
						|
var _printValue = _interopRequireDefault(require("./util/printValue")); | 
						|
 | 
						|
var _mixed = _interopRequireDefault(require("./mixed")); | 
						|
 | 
						|
var _locale = require("./locale"); | 
						|
 | 
						|
var _runValidations = _interopRequireWildcard(require("./util/runValidations")); | 
						|
 | 
						|
function _templateObject() { | 
						|
  var data = (0, _taggedTemplateLiteralLoose2.default)(["", "[", "]"]); | 
						|
 | 
						|
  _templateObject = function _templateObject() { | 
						|
    return data; | 
						|
  }; | 
						|
 | 
						|
  return data; | 
						|
} | 
						|
 | 
						|
var hasLength = function hasLength(value) { | 
						|
  return !(0, _isAbsent.default)(value) && value.length > 0; | 
						|
}; | 
						|
 | 
						|
var _default = ArraySchema; | 
						|
exports.default = _default; | 
						|
 | 
						|
function ArraySchema(type) { | 
						|
  var _this = this; | 
						|
 | 
						|
  if (!(this instanceof ArraySchema)) return new ArraySchema(type); | 
						|
 | 
						|
  _mixed.default.call(this, { | 
						|
    type: 'array' | 
						|
  }); // `undefined` specifically means uninitialized, as opposed to | 
						|
  // "no subtype" | 
						|
 | 
						|
 | 
						|
  this._subType = undefined; | 
						|
  this.withMutation(function () { | 
						|
    _this.transform(function (values) { | 
						|
      if (typeof values === 'string') try { | 
						|
        values = JSON.parse(values); | 
						|
      } catch (err) { | 
						|
        values = null; | 
						|
      } | 
						|
      return this.isType(values) ? values : null; | 
						|
    }); | 
						|
 | 
						|
    if (type) _this.of(type); | 
						|
  }); | 
						|
} | 
						|
 | 
						|
(0, _inherits.default)(ArraySchema, _mixed.default, { | 
						|
  _typeCheck: function _typeCheck(v) { | 
						|
    return Array.isArray(v); | 
						|
  }, | 
						|
  _cast: function _cast(_value, _opts) { | 
						|
    var _this2 = this; | 
						|
 | 
						|
    var value = _mixed.default.prototype._cast.call(this, _value, _opts); //should ignore nulls here | 
						|
 | 
						|
 | 
						|
    if (!this._typeCheck(value) || !this._subType) return value; | 
						|
    var isChanged = false; | 
						|
    var castArray = value.map(function (v) { | 
						|
      var castElement = _this2._subType.cast(v, _opts); | 
						|
 | 
						|
      if (castElement !== v) { | 
						|
        isChanged = true; | 
						|
      } | 
						|
 | 
						|
      return castElement; | 
						|
    }); | 
						|
    return isChanged ? castArray : value; | 
						|
  }, | 
						|
  _validate: function _validate(_value, options) { | 
						|
    var _this3 = this; | 
						|
 | 
						|
    if (options === void 0) { | 
						|
      options = {}; | 
						|
    } | 
						|
 | 
						|
    var errors = []; | 
						|
    var sync = options.sync; | 
						|
    var path = options.path; | 
						|
    var subType = this._subType; | 
						|
 | 
						|
    var endEarly = this._option('abortEarly', options); | 
						|
 | 
						|
    var recursive = this._option('recursive', options); | 
						|
 | 
						|
    var originalValue = options.originalValue != null ? options.originalValue : _value; | 
						|
    return _mixed.default.prototype._validate.call(this, _value, options).catch((0, _runValidations.propagateErrors)(endEarly, errors)).then(function (value) { | 
						|
      if (!recursive || !subType || !_this3._typeCheck(value)) { | 
						|
        if (errors.length) throw errors[0]; | 
						|
        return value; | 
						|
      } | 
						|
 | 
						|
      originalValue = originalValue || value; | 
						|
      var validations = value.map(function (item, idx) { | 
						|
        var path = (0, _makePath.default)(_templateObject(), options.path, idx); // object._validate note for isStrict explanation | 
						|
 | 
						|
        var innerOptions = (0, _extends2.default)({}, options, { | 
						|
          path: path, | 
						|
          strict: true, | 
						|
          parent: value, | 
						|
          originalValue: originalValue[idx] | 
						|
        }); | 
						|
        if (subType.validate) return subType.validate(item, innerOptions); | 
						|
        return true; | 
						|
      }); | 
						|
      return (0, _runValidations.default)({ | 
						|
        sync: sync, | 
						|
        path: path, | 
						|
        value: value, | 
						|
        errors: errors, | 
						|
        endEarly: endEarly, | 
						|
        validations: validations | 
						|
      }); | 
						|
    }); | 
						|
  }, | 
						|
  of: function of(schema) { | 
						|
    var next = this.clone(); | 
						|
    if (schema !== false && !(0, _isSchema.default)(schema)) throw new TypeError('`array.of()` sub-schema must be a valid yup schema, or `false` to negate a current sub-schema. ' + 'not: ' + (0, _printValue.default)(schema)); | 
						|
    next._subType = schema; | 
						|
    return next; | 
						|
  }, | 
						|
  required: function required(message) { | 
						|
    if (message === void 0) { | 
						|
      message = _locale.mixed.required; | 
						|
    } | 
						|
 | 
						|
    var next = _mixed.default.prototype.required.call(this, message); | 
						|
 | 
						|
    return next.test({ | 
						|
      message: message, | 
						|
      name: 'required', | 
						|
      test: hasLength | 
						|
    }); | 
						|
  }, | 
						|
  min: function min(_min, message) { | 
						|
    message = message || _locale.array.min; | 
						|
    return this.test({ | 
						|
      message: message, | 
						|
      name: 'min', | 
						|
      exclusive: true, | 
						|
      params: { | 
						|
        min: _min | 
						|
      }, | 
						|
      test: function test(value) { | 
						|
        return (0, _isAbsent.default)(value) || value.length >= this.resolve(_min); | 
						|
      } | 
						|
    }); | 
						|
  }, | 
						|
  max: function max(_max, message) { | 
						|
    message = message || _locale.array.max; | 
						|
    return this.test({ | 
						|
      message: message, | 
						|
      name: 'max', | 
						|
      exclusive: true, | 
						|
      params: { | 
						|
        max: _max | 
						|
      }, | 
						|
      test: function test(value) { | 
						|
        return (0, _isAbsent.default)(value) || value.length <= this.resolve(_max); | 
						|
      } | 
						|
    }); | 
						|
  }, | 
						|
  ensure: function ensure() { | 
						|
    var _this4 = this; | 
						|
 | 
						|
    return this.default(function () { | 
						|
      return []; | 
						|
    }).transform(function (val) { | 
						|
      if (_this4.isType(val)) return val; | 
						|
      return val === null ? [] : [].concat(val); | 
						|
    }); | 
						|
  }, | 
						|
  compact: function compact(rejector) { | 
						|
    var reject = !rejector ? function (v) { | 
						|
      return !!v; | 
						|
    } : function (v, i, a) { | 
						|
      return !rejector(v, i, a); | 
						|
    }; | 
						|
    return this.transform(function (values) { | 
						|
      return values != null ? values.filter(reject) : values; | 
						|
    }); | 
						|
  }, | 
						|
  describe: function describe() { | 
						|
    var base = _mixed.default.prototype.describe.call(this); | 
						|
 | 
						|
    if (this._subType) base.innerType = this._subType.describe(); | 
						|
    return base; | 
						|
  } | 
						|
}); | 
						|
module.exports = exports["default"]; |