diff --git a/src/schemas/sms.ts b/src/schemas/sms.ts new file mode 100644 index 0000000..94bff0a --- /dev/null +++ b/src/schemas/sms.ts @@ -0,0 +1,18 @@ +import { z } from 'zod'; + +export const SMS_CHARACTER_REGEX = /^[a-zA-Z0-9\s.,!?'"():;\-_]*$/; +export const SMS_CHARACTER_LIMIT = 160; + +type SmsValidationMessages = Partial<{ + invalidType: string; + regex: string; +}>; + +const zodMessageOrUndefined = (message?: string): { message: string } | undefined => { + return message ? { message: message } : undefined; +}; + +export const createSmsContentSchema = (messages: SmsValidationMessages = {}): z.ZodString => + z + .string(zodMessageOrUndefined(messages.invalidType)) + .regex(SMS_CHARACTER_REGEX, zodMessageOrUndefined(messages.regex));