Chore: Improve typings (#88282)

* remove some type assertions

* some more type assertion fixes

* nicer

* shortcircuit while loop when hitting something that isn't an HTMLElement
This commit is contained in:
Ashley Harrison
2024-05-28 13:20:57 +01:00
committed by GitHub
parent c8ab138dbf
commit f1dbe39533
15 changed files with 67 additions and 105 deletions
+11 -11
View File
@@ -1,11 +1,11 @@
/* eslint-disable id-blacklist, no-restricted-imports, @typescript-eslint/ban-types */
import { lowerCase } from 'lodash';
import moment, { MomentInput } from 'moment-timezone';
import moment from 'moment-timezone';
import { DateTimeOptions, getTimeZone } from './common';
import { parse, isValid } from './datemath';
import { systemDateFormats } from './formats';
import { DateTimeInput, DateTime, isDateTime } from './moment_wrapper';
import { DateTimeInput, DateTime, isDateTime, dateTime, toUtc, dateTimeForTimeZone } from './moment_wrapper';
/**
* The type that describes options that can be passed when parsing a date and time value.
@@ -55,11 +55,11 @@ export const dateTimeParse: DateTimeParser<DateTimeOptionsWhenParsing> = (value,
const parseString = (value: string, options?: DateTimeOptionsWhenParsing): DateTime => {
if (value.indexOf('now') !== -1) {
if (!isValid(value)) {
return moment() as DateTime;
return dateTime();
}
const parsed = parse(value, options?.roundUp, options?.timeZone, options?.fiscalYearStartMonth);
return parsed || (moment() as DateTime);
return parsed || dateTime();
}
const timeZone = getTimeZone(options);
@@ -67,30 +67,30 @@ const parseString = (value: string, options?: DateTimeOptionsWhenParsing): DateT
const format = options?.format ?? systemDateFormats.fullDate;
if (zone && zone.name) {
return moment.tz(value, format, zone.name) as DateTime;
return dateTimeForTimeZone(zone.name, value, format);
}
switch (lowerCase(timeZone)) {
case 'utc':
return moment.utc(value, format) as DateTime;
return toUtc(value, format);
default:
return moment(value, format) as DateTime;
return dateTime(value, format);
}
};
const parseOthers = (value: DateTimeInput, options?: DateTimeOptionsWhenParsing): DateTime => {
const date = value as MomentInput;
const date = value;
const timeZone = getTimeZone(options);
const zone = moment.tz.zone(timeZone);
if (zone && zone.name) {
return moment.tz(date, zone.name) as DateTime;
return dateTimeForTimeZone(zone.name, date);
}
switch (lowerCase(timeZone)) {
case 'utc':
return moment.utc(date) as DateTime;
return toUtc(date);
default:
return moment(date) as DateTime;
return dateTime(date);
}
};