From d05cc8874877bd8aa9b23c46b55b1ee1bf660ceb Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Sun, 19 May 2024 13:19:04 +0200 Subject: [PATCH] refactor: unify time constants --- apps/server/src/utils/time.ts | 28 ++++++++----------- packages/utils/index.ts | 6 ++-- .../utils/src/date-utils/conversionUtils.ts | 3 ++ .../src/date-utils/timeFormatting.test.ts | 3 +- packages/utils/src/timeConstants.ts | 9 ------ .../src/validate-times/validateTimes.test.ts | 2 +- .../utils/src/validate-times/validateTimes.ts | 2 +- 7 files changed, 20 insertions(+), 33 deletions(-) delete mode 100644 packages/utils/src/timeConstants.ts diff --git a/apps/server/src/utils/time.ts b/apps/server/src/utils/time.ts index 34feb90f9..7b91b82cc 100644 --- a/apps/server/src/utils/time.ts +++ b/apps/server/src/utils/time.ts @@ -1,10 +1,6 @@ -import { MILLIS_PER_MINUTE } from 'ontime-utils'; +import { MILLIS_PER_HOUR, MILLIS_PER_MINUTE, MILLIS_PER_SECOND } from 'ontime-utils'; import { isISO8601 } from '../../../../packages/utils/src/date-utils/isTimeString.js'; -const mts = 1000; // millis to seconds -const mtm = 1000 * 60; // millis to minutes -const mth = 1000 * 60 * 60; // millis to hours - export const timeFormat = 'HH:mm'; export const timeFormatSeconds = 'HH:mm:ss'; @@ -20,7 +16,7 @@ export const dateToMillis = (date: Date): number => { const m = date.getMinutes(); const s = date.getSeconds(); - return h * mth + m * mtm + s * mts; + return h * MILLIS_PER_HOUR + m * MILLIS_PER_MINUTE + s * MILLIS_PER_SECOND; }; /** @@ -60,7 +56,7 @@ export const forgivingStringToMillis = (value: string): number => { //if past noon indicated add 12 hours if (pastNoon) { - millis = mth * 12; + millis = MILLIS_PER_HOUR * 12; } // split string at known separators : , . const separatorRegex = /[\s,:.]+/; @@ -68,9 +64,9 @@ export const forgivingStringToMillis = (value: string): number => { if (first != null && second != null && third != null) { // if string has three sections, treat as [hours] [minutes] [seconds] - millis += parse(first) * mth; - millis += parse(second) * mtm; - millis += parse(third) * mts; + millis += parse(first) * MILLIS_PER_HOUR; + millis += parse(second) * MILLIS_PER_MINUTE; + millis += parse(third) * MILLIS_PER_SECOND; } else if (first != null && second == null && third == null) { // if string has one section, // could be a complete string like 121010 - 12:10:10 @@ -78,18 +74,18 @@ export const forgivingStringToMillis = (value: string): number => { const hours = first.substring(0, 2); const minutes = first.substring(2, 4); const seconds = first.substring(4); - millis += parse(hours) * mth; - millis += parse(minutes) * mtm; - millis += parse(seconds) * mts; + millis += parse(hours) * MILLIS_PER_HOUR; + millis += parse(minutes) * MILLIS_PER_MINUTE; + millis += parse(seconds) * MILLIS_PER_SECOND; } else { // otherwise lets treat as [minutes] - millis += parse(first) * mtm; + millis += parse(first) * MILLIS_PER_MINUTE; } } if (first != null && second != null && third == null) { // if string has two sections treat as [hours] [minutes] - millis += parse(first) * mth; - millis += parse(second) * mtm; + millis += parse(first) * MILLIS_PER_HOUR; + millis += parse(second) * MILLIS_PER_MINUTE; } return millis; }; diff --git a/packages/utils/index.ts b/packages/utils/index.ts index 46a0012da..599baeb1e 100644 --- a/packages/utils/index.ts +++ b/packages/utils/index.ts @@ -26,8 +26,9 @@ export { swapEventData, } from './src/rundown-utils/rundownUtils.js'; -// format utils +// time format utils export { + dayInMs, MILLIS_PER_HOUR, MILLIS_PER_MINUTE, MILLIS_PER_SECOND, @@ -46,9 +47,6 @@ export { export { isAlphanumeric } from './src/regex-utils/isAlphanumeric.js'; export { isColourHex } from './src/regex-utils/isColourHex.js'; -// time utils -export { dayInMs, mts } from './src/timeConstants.js'; - // helpers from externals export { deepmerge } from './src/externals/deepmerge.js'; diff --git a/packages/utils/src/date-utils/conversionUtils.ts b/packages/utils/src/date-utils/conversionUtils.ts index 316049bc0..91e2ab2bc 100644 --- a/packages/utils/src/date-utils/conversionUtils.ts +++ b/packages/utils/src/date-utils/conversionUtils.ts @@ -4,6 +4,9 @@ export const MILLIS_PER_SECOND = 1000; export const MILLIS_PER_MINUTE = 1000 * 60; export const MILLIS_PER_HOUR = 1000 * 60 * 60; +export const dayInMs = 86400000; +export const maxDuration = dayInMs - MILLIS_PER_SECOND; + function convertMillis(millis: MaybeNumber, conversion: number) { if (!millis) { return 0; diff --git a/packages/utils/src/date-utils/timeFormatting.test.ts b/packages/utils/src/date-utils/timeFormatting.test.ts index 6213efc80..3fd4cfd3f 100644 --- a/packages/utils/src/date-utils/timeFormatting.test.ts +++ b/packages/utils/src/date-utils/timeFormatting.test.ts @@ -1,5 +1,4 @@ -import { dayInMs } from '../timeConstants'; -import { MILLIS_PER_HOUR } from './conversionUtils'; +import { dayInMs, MILLIS_PER_HOUR } from './conversionUtils'; import { formatFromMillis, millisToString, removeLeadingZero } from './timeFormatting'; describe('millisToString()', () => { diff --git a/packages/utils/src/timeConstants.ts b/packages/utils/src/timeConstants.ts deleted file mode 100644 index e3e7e2f47..000000000 --- a/packages/utils/src/timeConstants.ts +++ /dev/null @@ -1,9 +0,0 @@ -/** - * Milliseconds in a second - */ -export const mts = 1000; - -/** - * Milliseconds in a day - */ -export const dayInMs = 86400000; diff --git a/packages/utils/src/validate-times/validateTimes.test.ts b/packages/utils/src/validate-times/validateTimes.test.ts index 3de084a2f..724808f4a 100644 --- a/packages/utils/src/validate-times/validateTimes.test.ts +++ b/packages/utils/src/validate-times/validateTimes.test.ts @@ -1,7 +1,7 @@ import type { OntimeEvent } from 'ontime-types'; import { TimeStrategy } from 'ontime-types'; -import { dayInMs } from '../timeConstants'; +import { dayInMs } from '../date-utils/conversionUtils'; import { calculateDuration, getLinkedTimes, validateTimes } from './validateTimes'; describe('validateTimes()', () => { diff --git a/packages/utils/src/validate-times/validateTimes.ts b/packages/utils/src/validate-times/validateTimes.ts index 4630f1b60..6c487ca96 100644 --- a/packages/utils/src/validate-times/validateTimes.ts +++ b/packages/utils/src/validate-times/validateTimes.ts @@ -1,7 +1,7 @@ import type { OntimeEvent } from 'ontime-types'; import { TimeStrategy } from 'ontime-types'; -import { dayInMs } from '../timeConstants.js'; +import { dayInMs } from '../date-utils/conversionUtils.js'; import { validateTimeStrategy } from '../validate-events/validateEvent.js'; export function getLinkedTimes(