@dotgov/core
Version:
DGS core.
86 lines • 12.3 kB
JavaScript
export class Helper {
static validValue(val) {
const type = typeof val;
if (val === undefined) {
return false;
}
else if (type === 'string') {
return val !== '';
}
else if (type === 'number') {
return Number.isFinite(val);
}
else {
return true;
}
}
/**
* @param _date
* @param showTime Decide if we should show the time as well or not
* @param forControl Decide if should return format dd/mm/yyyy
* @returns YYYY-MM-DD HH:mm
*/
static formatDate(_date, showTime = true, forControl = false) {
if (!_date) {
return;
}
const date = Helper.convertToDate(_date);
const pad = n => (n <= 9 ? `0${n}` : n);
const time = ` ${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
if (forControl) {
return `${pad(date.getDate())}/${pad(date.getMonth() + 1)}/${date.getFullYear()}${showTime ? time : ''}`.trim();
}
// For .post send MM/dd/yyyy HH:mm:ss.
return `${pad(date.getMonth() + 1)}/${pad(date.getDate())}/${date.getFullYear()}${showTime ? time : ''}`.trim();
}
static stringToDate(strDate, dayFirst = false) {
// IE11 fix, if match: "2018-03-14 04:31:56.142"
// Invalid date fix: 01/02/2018 => 01, 02, 2017; 2018-02-01 => 2018, 02, 01
let res = strDate.match(/\d+/gim).map(res => Number(res));
let [MM, dd, YYYY, HH, mm, ss] = res;
if (dayFirst) {
[dd, MM, YYYY] = res;
}
else if (MM > 12) {
// First was year, transforming to correspond.
[YYYY, MM, dd] = res;
}
const sanitize = num => (num !== undefined ? num : 0);
return new Date(sanitize(YYYY), sanitize(Number(MM) - 1), sanitize(dd), sanitize(HH), sanitize(mm), sanitize(ss));
}
static convertToDate(d) {
if (d === undefined || d === null) {
return NaN;
}
const isDate = d.constructor === Date;
const isArray = d.constructor === Array;
const isNum = d.constructor === Number;
const isString = d.constructor === String;
const isObject = typeof d === 'object';
return ((isDate && d) ||
(isArray && new Date(d[0], d[1], d[2])) ||
(isNum && new Date(d)) ||
(isString && Helper.stringToDate(d)) ||
(isObject && new Date(d.year, d.month, d.date)) ||
NaN);
}
static camelize(str) {
const capitalize = _str => _str.charAt(0).toUpperCase() + _str.toLowerCase().slice(1);
const string = str
.toLowerCase()
.replace(/[^A-Za-z0-9]/g, ' ')
.split(' ')
.reduce((result, word) => result + capitalize(word.toLowerCase()));
return string.charAt(0).toLowerCase() + string.slice(1);
}
static isValidUrl(uri) {
try {
new URL(uri);
}
catch (_) {
return false;
}
return true;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zaGFyZWQvaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxNQUFNO0lBQ2pCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRztRQUNuQixNQUFNLElBQUksR0FBRyxPQUFPLEdBQUcsQ0FBQztRQUN4QixJQUFJLEdBQUcsS0FBSyxTQUFTLEVBQUU7WUFDckIsT0FBTyxLQUFLLENBQUM7U0FDZDthQUFNLElBQUksSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM1QixPQUFPLEdBQUcsS0FBSyxFQUFFLENBQUM7U0FDbkI7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDNUIsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxPQUFPLElBQUksQ0FBQztTQUNiO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLFVBQVUsQ0FBQyxLQUFVLEVBQUUsUUFBUSxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsS0FBSztRQUMvRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1YsT0FBTztTQUNSO1FBQ0QsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsRUFB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dGljIHZhbGlkVmFsdWUodmFsKSB7XHJcbiAgICBjb25zdCB0eXBlID0gdHlwZW9mIHZhbDtcclxuICAgIGlmICh2YWwgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHJldHVybiB2YWwgIT09ICcnO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnbnVtYmVyJykge1xyXG4gICAgICByZXR1cm4gTnVtYmVyLmlzRmluaXRlKHZhbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBwYXJhbSBfZGF0ZVxyXG4gICAqIEBwYXJhbSBzaG93VGltZSBEZWNpZGUgaWYgd2Ugc2hvdWxkIHNob3cgdGhlIHRpbWUgYXMgd2VsbCBvciBub3RcclxuICAgKiBAcGFyYW0gZm9yQ29udHJvbCBEZWNpZGUgaWYgc2hvdWxkIHJldHVybiBmb3JtYXQgZGQvbW0veXl5eVxyXG4gICAqIEByZXR1cm5zIFlZWVktTU0tREQgSEg6bW1cclxuICAgKi9cclxuICBzdGF0aWMgZm9ybWF0RGF0ZShfZGF0ZTogYW55LCBzaG93VGltZSA9IHRydWUsIGZvckNvbnRyb2wgPSBmYWxzZSkge1xyXG4gICAgaWYgKCFfZGF0ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBkYXRlID0gSGVscGVyLmNvbnZlcnRUb0RhdGUoX2RhdGUpO1xyXG4gICAgY29uc3QgcGFkID0gbiA9PiAobiA8PSA5ID8gYDAke259YCA6IG4pO1xyXG4gICAgY29uc3QgdGltZSA9IGAgJHtwYWQoZGF0ZS5nZXRIb3VycygpKX06JHtwYWQoZGF0ZS5nZXRNaW51dGVzKCkpfToke3BhZChkYXRlLmdldFNlY29uZHMoKSl9YDtcclxuICAgIGlmIChmb3JDb250cm9sKSB7XHJcbiAgICAgIHJldHVybiBgJHtwYWQoZGF0ZS5nZXREYXRlKCkpfS8ke3BhZChkYXRlLmdldE1vbnRoKCkgKyAxKX0vJHtkYXRlLmdldEZ1bGxZZWFyKCl9JHtcclxuICAgICAgICBzaG93VGltZSA/IHRpbWUgOiAnJ1xyXG4gICAgICB9YC50cmltKCk7XHJcbiAgICB9XHJcbiAgICAvLyBGb3IgLnBvc3Qgc2VuZCBNTS9kZC95eXl5IEhIOm1tOnNzLlxyXG4gICAgcmV0dXJuIGAke3BhZChkYXRlLmdldE1vbnRoKCkgKyAxKX0vJHtwYWQoZGF0ZS5nZXREYXRlKCkpfS8ke2RhdGUuZ2V0RnVsbFllYXIoKX0ke1xyXG4gICAgICBzaG93VGltZSA/IHRpbWUgOiAnJ1xyXG4gICAgfWAudHJpbSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHN0cmluZ1RvRGF0ZShzdHJEYXRlOiBzdHJpbmcsIGRheUZpcnN0OiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIC8vIElFMTEgZml4LCBpZiBtYXRjaDogXCIyMDE4LTAzLTE0IDA0OjMxOjU2LjE0MlwiXHJcbiAgICAvLyBJbnZhbGlkIGRhdGUgZml4OiAwMS8wMi8yMDE4ID0+IDAxLCAwMiwgMjAxNzsgMjAxOC0wMi0wMSA9PiAyMDE4LCAwMiwgMDFcclxuICAgIGxldCByZXMgPSBzdHJEYXRlLm1hdGNoKC9cXGQrL2dpbSkubWFwKHJlcyA9PiBOdW1iZXIocmVzKSk7XHJcbiAgICBsZXQgW01NLCBkZCwgWVlZWSwgSEgsIG1tLCBzc10gPSByZXM7XHJcbiAgICBpZiAoZGF5Rmlyc3QpIHtcclxuICAgICAgW2RkLCBNTSwgWVlZWV0gPSByZXM7XHJcbiAgICB9IGVsc2UgaWYgKE1NID4gMTIpIHtcclxuICAgICAgLy8gRmlyc3Qgd2FzIHllYXIsIHRyYW5zZm9ybWluZyB0byBjb3JyZXNwb25kLlxyXG4gICAgICBbWVlZWSwgTU0sIGRkXSA9IHJlcztcclxuICAgIH1cclxuICAgIGNvbnN0IHNhbml0aXplID0gbnVtID0+IChudW0gIT09IHVuZGVmaW5lZCA/IG51bSA6IDApO1xyXG4gICAgcmV0dXJuIG5ldyBEYXRlKFxyXG4gICAgICBzYW5pdGl6ZShZWVlZKSxcclxuICAgICAgc2FuaXRpemUoTnVtYmVyKE1NKSAtIDEpLFxyXG4gICAgICBzYW5pdGl6ZShkZCksXHJcbiAgICAgIHNhbml0aXplKEhIKSxcclxuICAgICAgc2FuaXRpemUobW0pLFxyXG4gICAgICBzYW5pdGl6ZShzcyksXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGNvbnZlcnRUb0RhdGUoZDogYW55KSB7XHJcbiAgICBpZiAoZCA9PT0gdW5kZWZpbmVkIHx8IGQgPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIE5hTjtcclxuICAgIH1cclxuICAgIGNvbnN0IGlzRGF0ZSA9IGQuY29uc3RydWN0b3IgPT09IERhdGU7XHJcbiAgICBjb25zdCBpc0FycmF5ID0gZC5jb25zdHJ1Y3RvciA9PT0gQXJyYXk7XHJcbiAgICBjb25zdCBpc051bSA9IGQuY29uc3RydWN0b3IgPT09IE51bWJlcjtcclxuICAgIGNvbnN0IGlzU3RyaW5nID0gZC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nO1xyXG4gICAgY29uc3QgaXNPYmplY3QgPSB0eXBlb2YgZCA9PT0gJ29iamVjdCc7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICAoaXNEYXRlICYmIGQpIHx8XHJcbiAgICAgIChpc0FycmF5ICYmIG5ldyBEYXRlKGRbMF0sIGRbMV0sIGRbMl0pKSB8fFxyXG4gICAgICAoaXNOdW0gJiYgbmV3IERhdGUoZCkpIHx8XHJcbiAgICAgIChpc1N0cmluZyAmJiBIZWxwZXIuc3RyaW5nVG9EYXRlKGQpKSB8fFxyXG4gICAgICAoaXNPYmplY3QgJiYgbmV3IERhdGUoZC55ZWFyLCBkLm1vbnRoLCBkLmRhdGUpKSB8fFxyXG4gICAgICBOYU5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2FtZWxpemUoc3RyOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGNhcGl0YWxpemUgPSBfc3RyID0+IF9zdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBfc3RyLnRvTG93ZXJDYXNlKCkuc2xpY2UoMSk7XHJcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJcclxuICAgICAgLnRvTG93ZXJDYXNlKClcclxuICAgICAgLnJlcGxhY2UoL1teQS1aYS16MC05XS9nLCAnICcpXHJcbiAgICAgIC5zcGxpdCgnICcpXHJcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgd29yZCkgPT4gcmVzdWx0ICsgY2FwaXRhbGl6ZSh3b3JkLnRvTG93ZXJDYXNlKCkpKTtcclxuICAgIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XHJcbiAgfVxyXG4gIHN0YXRpYyBpc1ZhbGlkVXJsKHVyaTogc3RyaW5nKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBuZXcgVVJMKHVyaSk7XHJcbiAgICB9IGNhdGNoIChfKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTsgIFxyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxufVxyXG4iXX0=