constants.ts (1304B)
1 import { MINUTE, SECOND } from "$std/datetime/constants.ts"; 2 3 /** 4 * Email address 5 */ 6 export const EMAIL_REGEX = 7 /^(?=[^@]{1,64}@)([a-z0-9!#$%&\'*+\/=?^_`{|}~-]+\.?)+@(?=.{1,255}$)[a-z0-9-]+(\.[a-z0-9-]+)+$/i; 8 9 /** 10 * Token 11 */ 12 export const TOKEN_BYTES = 24; 13 export const TOKEN_LENGTH_MIN = Math.floor(TOKEN_BYTES * 8 / Math.log2(58)); 14 export const TOKEN_LENGTH_MAX = Math.ceil(TOKEN_BYTES * 8 / Math.log2(58)); 15 export const TOKEN_REGEX = new RegExp( 16 `^[A-HJ-NP-Za-km-z1-9]{${TOKEN_LENGTH_MIN},${TOKEN_LENGTH_MAX}}$`, 17 ); 18 19 /** 20 * Password 21 */ 22 export const PASSWORD_ATTEMPT_LIMIT = 1; 23 export const PASSWORD_ATTEMPT_TTL = SECOND; 24 25 /** 26 * Session Token 27 */ 28 export const SESSION_TOKEN_TTL = 30 * MINUTE; 29 30 /** 31 * Access Token 32 */ 33 export const AUTH_CODE_TTL = 5 * MINUTE; 34 export const ACCESS_TOKEN_TTL = 30 * MINUTE; 35 36 /** 37 * Code 38 */ 39 export const CODE_DIGITS = 6; 40 export const CODE_REGEX = new RegExp(`^[0-9]{${CODE_DIGITS}}$`); 41 42 export const EMAIL_CHALLENGE_TTL = 5 * MINUTE; 43 export const EMAIL_CHALLENGE_REQUEST_LIMIT = 2; 44 export const EMAIL_CHALLENGE_ATTEMPT_LIMIT = 3; 45 46 export const SMS_CHALLENGE_TTL = 5 * MINUTE; 47 export const SMS_CHALLENGE_REQUEST_LIMIT = 2; 48 export const SMS_CHALLENGE_ATTEMPT_LIMIT = 3; 49 50 /** 51 * RateLimit 52 */ 53 export const RATE_LIMIT = 10; 54 export const RATE_LIMIT_TTL = 30 * MINUTE;