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
			| 
								 
											4 years ago
										 
									 | 
							
								"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"];
							 |