@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
JavaScript
;
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 };
});