UNPKG

@idris-maps/yyyy-mm-dd

Version:

A date library dealing only with days in the YYYY-MM-DD format

48 lines (47 loc) 1.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var fromJsDate_1 = __importDefault(require("./fromJsDate")); var isString = function (d) { return typeof d === 'string'; }; var isNum = function (n) { return !isNaN(Number(n)); }; var isCorrectFormat = function (d) { var parts = d.split('-'); if (parts.length !== 3) { return false; } var yyyy = parts[0], mm = parts[1], dd = parts[2]; return isNum(yyyy) && yyyy.length === 4 && isNum(mm) && mm.length === 2 && isNum(dd) && dd.length === 2; }; var isADay = function (d) { try { var date = new Date(d); return String(date) !== 'Invalid Date' && d === fromJsDate_1.default(date); } catch (e) { return false; } }; exports.default = (function (day) { var error = { yyyymmddString: function (d) { return d + " is not a \"YYYY-MM-DD\" string"; }, notADay: function (d) { return d + " does not exist"; }, }; if (!isString(day)) { return { valid: false, error: error.yyyymmddString(day) }; } if (!isCorrectFormat(day)) { return { valid: false, error: error.yyyymmddString(day) }; } if (!isADay(day)) { return { valid: false, error: error.notADay(day) }; } return { valid: true }; });