From 9afae2cd7c74c8bab02d60c1595b11be153f2cad Mon Sep 17 00:00:00 2001 From: Exelo Date: Mon, 6 Jul 2026 21:58:29 +0200 Subject: [PATCH] fix: change url protocols validation on isIpOrURL validator in network --- .../config/src/validators/is-ip-or-url.validator.ts | 10 ++++++++-- packages/network-client/src/config.client.network.ts | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/config/src/validators/is-ip-or-url.validator.ts b/packages/config/src/validators/is-ip-or-url.validator.ts index 843b61b..d295eff 100644 --- a/packages/config/src/validators/is-ip-or-url.validator.ts +++ b/packages/config/src/validators/is-ip-or-url.validator.ts @@ -9,6 +9,8 @@ import { type ValidationOptions, isIP, isURL, registerDecorator } from "class-va * config properties that represent server hostnames or addresses. * * @param validationOptions - Optional class-validator validation options. + * @param isIPOptions - Optional options for `isIP` validation. + * @param isURLOptions - Optional options for `isURL` validation. * * @example * ```ts @@ -19,7 +21,11 @@ import { type ValidationOptions, isIP, isURL, registerDecorator } from "class-va * } * ``` */ -export const IsIpOrURL = (validationOptions?: ValidationOptions) => { +export const IsIpOrURL = ( + validationOptions?: ValidationOptions, + isIPOptions?: Parameters[1], + isURLOptions?: Parameters[1], +) => { return (object: object, propertyName: string) => { registerDecorator({ target: object.constructor, @@ -28,7 +34,7 @@ export const IsIpOrURL = (validationOptions?: ValidationOptions) => { constraints: [], validator: { validate(value: string) { - return isIP(value) || isURL(value); + return isIP(value, isIPOptions) || isURL(value, isURLOptions); }, defaultMessage() { return `$value must be a valid IP address or URL`; diff --git a/packages/network-client/src/config.client.network.ts b/packages/network-client/src/config.client.network.ts index a47e714..e84edc0 100644 --- a/packages/network-client/src/config.client.network.ts +++ b/packages/network-client/src/config.client.network.ts @@ -42,7 +42,7 @@ export class ClientConfigNetwork { /** Hostname or IP address of the game server. */ @Expose() - @IsIpOrURL() + @IsIpOrURL(undefined, undefined, { protocols: ["ws", "wss", "http", "https"] }) SERVER_ADDRESS!: string; /**