1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import z from "zod";
- export function isValidCIDR(cidr: string): boolean {
- return z.string().cidr().safeParse(cidr).success;
- }
- export function isValidIP(ip: string): boolean {
- return z.string().ip().safeParse(ip).success;
- }
- export function isValidUrlGlobPattern(pattern: string): boolean {
- // Remove leading slash if present
- pattern = pattern.startsWith("/") ? pattern.slice(1) : pattern;
- // Empty string is not valid
- if (!pattern) {
- return false;
- }
- // Split path into segments
- const segments = pattern.split("/");
- // Check each segment
- for (let i = 0; i < segments.length; i++) {
- const segment = segments[i];
- // Empty segments are not allowed (double slashes)
- if (!segment && i !== segments.length - 1) {
- return false;
- }
- // If segment contains *, it must be exactly *
- if (segment.includes("*") && segment !== "*") {
- return false;
- }
- // Check for invalid characters
- if (!/^[a-zA-Z0-9_*-]*$/.test(segment)) {
- return false;
- }
- }
- return true;
- }
|