UNPKG

@sprucelabs/schema

Version:

Static and dynamic binding plus runtime validation and transformation to ensure your app is sound. 🤓

55 lines (54 loc) • 1.81 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateDateValue = validateDateValue; const getStartOfDay_1 = __importDefault(require("../utilities/getStartOfDay")); const isUndefinedOrNull_1 = __importDefault(require("../utilities/isUndefinedOrNull")); const AbstractField_1 = __importDefault(require("./AbstractField")); class DateField extends AbstractField_1.default { static generateTemplateDetails(options) { return { valueType: `${options.importAs}.DateFieldValue${options.definition.isArray ? '[]' : ''}`, }; } validate(value, options) { const errors = super.validate(value, options); if (errors.length > 0) { return errors; } return validateDateValue({ value, isRequired: this.isRequired, name: this.name, }); } toValueType(value) { return value ? (0, getStartOfDay_1.default)(+value) : value; } } DateField.description = 'Date and time support.'; exports.default = DateField; function validateDateValue(options) { const { value, isRequired, name } = options; if ((0, isUndefinedOrNull_1.default)(value) && !isRequired) { return []; } if (typeof value === 'number' || value instanceof Date) { return []; } else if (typeof value === 'string') { const date = new Date(value); if (date.toString() !== 'Invalid Date') { return []; } } return [ { name, code: 'INVALID_PARAMETER', friendlyMessage: `This doesn't look like a date to me!`, }, ]; }