diff options
Diffstat (limited to 'services/docker/mail-server/relay/util.ts')
-rw-r--r-- | services/docker/mail-server/relay/util.ts | 46 |
1 files changed, 11 insertions, 35 deletions
diff --git a/services/docker/mail-server/relay/util.ts b/services/docker/mail-server/relay/util.ts index 29cda8b..3f7f989 100644 --- a/services/docker/mail-server/relay/util.ts +++ b/services/docker/mail-server/relay/util.ts @@ -1,25 +1,17 @@ -function getZonedDateTime(instant?: Temporal.Instant | Date) { - if (instant == null) { - instant = Temporal.Now.instant(); - } else if (instant instanceof Date) { - instant = instant.toTemporalInstant(); +declare global { + interface Date { + toFileNameString(dateOnly?: boolean): string; } - - return instant.toZonedDateTimeISO("UTC"); } -export function generateTimeStringForFileName( - instant?: Temporal.Instant | Date, - dateOnly: boolean = false, -): string { - const time = getZonedDateTime(instant); - - if (dateOnly) { - return time.toPlainDate().toString(); - } else { - return time.toPlainDateTime().toString().replaceAll(/:|\./g, "-"); - } -} +Object.defineProperty(Date.prototype, "toFileNameString", { + value: function (dateOnly?: boolean) { + const str = (this as Date).toISOString(); + return dateOnly === true + ? str.slice(0, str.indexOf("T")) + : str.replaceAll(/:|\./g, "-"); + }, +}); export function transformProperties<T extends object, N>( object: T, @@ -32,22 +24,6 @@ export function transformProperties<T extends object, N>( ) as { [k in keyof T]: N }; } -export function createSingleton<T>( - name: string, -): [() => T, (v: T | null) => void] { - let singleton: T | null = null; - - return [ - () => { - if (singleton == null) { - throw new Error(`Singleton ${name} is not set now.`); - } - return singleton; - }, - (newValue: T | null) => singleton = newValue, - ]; -} - export function withDefaults<T extends object>( partial: Partial<T> | null | undefined, defaults: T, |