0ecfd78e47
* fix: Update timeZoneSchema to handle +00:00 timezone case and maintain IANA compliance * fix: Use superRefine to properly handle +00:00 timezone and transform to UTC Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> * feat: Add logging for non-IANA timezone cases Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> * refactor: Simplify timeZoneSchema to use .refine() instead of superRefine Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> * chore: Remove warn log for +00:00 timezone to avoid spam Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> * chore: Remove logger from timeZone schema Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
21 lines
805 B
TypeScript
21 lines
805 B
TypeScript
import { z } from "zod";
|
|
|
|
import { isSupportedTimeZone } from "./index";
|
|
|
|
// Schema for validating IANA timezone strings compatible with Intl.DateTimeFormat
|
|
// Browserstack and some automations return +00:00 as the timezone which isn't a valid IANA timezone
|
|
// @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/resolvedOptions#timezone
|
|
export const timeZoneSchema = z
|
|
.string()
|
|
.refine(
|
|
(timeZone) => {
|
|
// Allow +00:00 as a special case - it will be transformed to UTC
|
|
if (timeZone === "+00:00") {
|
|
return true;
|
|
}
|
|
return isSupportedTimeZone(timeZone);
|
|
},
|
|
{ message: "Invalid timezone. Must be a valid IANA timezone string." }
|
|
)
|
|
.transform((timeZone) => (timeZone === "+00:00" ? "UTC" : timeZone));
|