From c1c25d7c08c9dad73c95d7200b96fbeb347e14b0 Mon Sep 17 00:00:00 2001 From: "P. Reis" Date: Wed, 9 Oct 2024 14:57:28 -0300 Subject: [PATCH] feat: create localeSchema --- src/schema.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/schema.ts b/src/schema.ts index 9adcffdd..a9dd56e3 100644 --- a/src/schema.ts +++ b/src/schema.ts @@ -42,7 +42,7 @@ const fileSchema = z.custom((value) => value instanceof File); const percentageSchema = z.coerce.number().int().gte(1).lte(100); const languageSchema = z.string().transform((val, ctx) => { - val = (val.toLowerCase()).split('-')[0]; // pt-BR -> pt + val = val.toLowerCase(); if (!ISO6391.validate(val)) { ctx.addIssue({ code: z.ZodIssueCode.custom, @@ -53,6 +53,18 @@ const languageSchema = z.string().transform((val, ctx) => { return val as LanguageCode; }); +const localeSchema = z.string().transform((val, ctx) => { + try { + return new Intl.Locale(val); + } catch { + ctx.addIssue({ + code: z.ZodIssueCode.custom, + message: 'Invalid locale', + }); + return z.NEVER; + } +}); + export { booleanParamSchema, decode64Schema, @@ -60,6 +72,7 @@ export { filteredArray, hashtagSchema, languageSchema, + localeSchema, percentageSchema, safeUrlSchema, };