* fix: Hotfix in change from @spammer.com to spammer.com * Test fixes + string * Removed redundant test, fixed error message * Comment fixup
29 lines
980 B
TypeScript
29 lines
980 B
TypeScript
import { z } from "zod";
|
|
|
|
/** @see https://github.com/colinhacks/zod/issues/3155#issuecomment-2060045794 */
|
|
|
|
export const emailRegex =
|
|
/* eslint-disable-next-line no-useless-escape */
|
|
/^(?!\.)(?!.*\.\.)([A-Z0-9_+-\.']*)[A-Z0-9_+'-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i;
|
|
|
|
/**
|
|
* Domain regex for watchlist entries
|
|
* Supports international domains with Unicode characters
|
|
* Examples: example.com, münchen.de, example.co.uk
|
|
*/
|
|
export const domainRegex =
|
|
/^[a-zA-Z0-9\u00a1-\uffff]([a-zA-Z0-9\u00a1-\uffff-]*[a-zA-Z0-9\u00a1-\uffff])?(\.[a-zA-Z0-9\u00a1-\uffff]([a-zA-Z0-9\u00a1-\uffff-]*[a-zA-Z0-9\u00a1-\uffff])?)*$/;
|
|
|
|
/**
|
|
* RFC 5321 Section 4.5.3.1.3 specifies:
|
|
* - Maximum email address length: 254 characters
|
|
* - Local part (before @): max 64 characters
|
|
* - Domain part (after @): max 253 characters
|
|
*/
|
|
const MAX_EMAIL_LENGTH = 254;
|
|
|
|
export const emailSchema = z
|
|
.string()
|
|
.max(MAX_EMAIL_LENGTH, { message: "Email address is too long" })
|
|
.regex(emailRegex);
|