100 lines
2.4 KiB
JavaScript
100 lines
2.4 KiB
JavaScript
"use strict";
|
|
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
|
|
exports.__esModule = true;
|
|
exports.default = void 0;
|
|
|
|
var _mixed = _interopRequireDefault(require("./mixed"));
|
|
|
|
var _inherits = _interopRequireDefault(require("./util/inherits"));
|
|
|
|
var _isodate = _interopRequireDefault(require("./util/isodate"));
|
|
|
|
var _locale = require("./locale");
|
|
|
|
var _isAbsent = _interopRequireDefault(require("./util/isAbsent"));
|
|
|
|
var _Reference = _interopRequireDefault(require("./Reference"));
|
|
|
|
var invalidDate = new Date('');
|
|
|
|
var isDate = function isDate(obj) {
|
|
return Object.prototype.toString.call(obj) === '[object Date]';
|
|
};
|
|
|
|
var _default = DateSchema;
|
|
exports.default = _default;
|
|
|
|
function DateSchema() {
|
|
var _this = this;
|
|
|
|
if (!(this instanceof DateSchema)) return new DateSchema();
|
|
|
|
_mixed.default.call(this, {
|
|
type: 'date'
|
|
});
|
|
|
|
this.withMutation(function () {
|
|
_this.transform(function (value) {
|
|
if (this.isType(value)) return value;
|
|
value = (0, _isodate.default)(value);
|
|
return value ? new Date(value) : invalidDate;
|
|
});
|
|
});
|
|
}
|
|
|
|
(0, _inherits.default)(DateSchema, _mixed.default, {
|
|
_typeCheck: function _typeCheck(v) {
|
|
return isDate(v) && !isNaN(v.getTime());
|
|
},
|
|
min: function min(_min, message) {
|
|
if (message === void 0) {
|
|
message = _locale.date.min;
|
|
}
|
|
|
|
var limit = _min;
|
|
|
|
if (!_Reference.default.isRef(limit)) {
|
|
limit = this.cast(_min);
|
|
if (!this._typeCheck(limit)) throw new TypeError('`min` must be a Date or a value that can be `cast()` to a Date');
|
|
}
|
|
|
|
return this.test({
|
|
message: message,
|
|
name: 'min',
|
|
exclusive: true,
|
|
params: {
|
|
min: _min
|
|
},
|
|
test: function test(value) {
|
|
return (0, _isAbsent.default)(value) || value >= this.resolve(limit);
|
|
}
|
|
});
|
|
},
|
|
max: function max(_max, message) {
|
|
if (message === void 0) {
|
|
message = _locale.date.max;
|
|
}
|
|
|
|
var limit = _max;
|
|
|
|
if (!_Reference.default.isRef(limit)) {
|
|
limit = this.cast(_max);
|
|
if (!this._typeCheck(limit)) throw new TypeError('`max` must be a Date or a value that can be `cast()` to a Date');
|
|
}
|
|
|
|
return this.test({
|
|
message: message,
|
|
name: 'max',
|
|
exclusive: true,
|
|
params: {
|
|
max: _max
|
|
},
|
|
test: function test(value) {
|
|
return (0, _isAbsent.default)(value) || value <= this.resolve(limit);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
module.exports = exports["default"]; |