@nodesuite/schemas
Version:
A collection of common constants and validation schemas.
35 lines (30 loc) • 749 B
text/typescript
import { z } from "zod"
/**
* Regex for validating IP v4 addresses.
*
* @public
*/
export const IP_V4_REGEX: RegExp =
/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/
/**
* Guard to test if value is a valid IPv4 string.
*
* @param value - String value to test.
*
* @public
*/
export const isIp = (value: string = ""): boolean => !!value.match(IP_V4_REGEX)
/**
* Zod schema for validating IP strings.
*
* @public
*/
export const IpSchema = z.string().regex(IP_V4_REGEX)
/**
* Parse an unknown value as a valid IPv4 string.
*
* @param value - Any value to parse as IPv4 string.
*
* @public
*/
export const parseIp = (value: unknown): string => IpSchema.parse(value)