From 16f97513731495a84a0446d0fddf7940e3bfd5c7 Mon Sep 17 00:00:00 2001 From: Exelo Date: Sun, 5 Jul 2026 22:03:54 +0200 Subject: [PATCH] fix: change check for address from fqdn to url --- .../config/interfaces/config-registry.type.ts | 2 +- packages/config/README.md | 4 ++-- packages/config/src/validators/index.ts | 2 +- ...fqdn.validator.ts => is-ip-or-url.validator.ts} | 14 +++++++------- .../network-client/src/config.client.network.ts | 4 ++-- .../network-server/src/config.server.network.ts | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) rename packages/config/src/validators/{is-ip-or-fqdn.validator.ts => is-ip-or-url.validator.ts} (62%) diff --git a/packages/common/src/library/config/interfaces/config-registry.type.ts b/packages/common/src/library/config/interfaces/config-registry.type.ts index 875e31a9..bbd4e24e 100644 --- a/packages/common/src/library/config/interfaces/config-registry.type.ts +++ b/packages/common/src/library/config/interfaces/config-registry.type.ts @@ -5,7 +5,7 @@ * @remarks * An instance is available in `InitContext.config`. Configuration * classes must be decorated with `class-transformer` (`@Expose`, `@Default`) - * and `class-validator` (`@IsPort`, `@IsIpOrFQDN`, etc.) decorators from + * and `class-validator` (`@IsPort`, `@IsIpOrURL`, etc.) decorators from * `@nanoforge-dev/config`. * * @example diff --git a/packages/config/README.md b/packages/config/README.md index 9f9e3d26..470d71de 100644 --- a/packages/config/README.md +++ b/packages/config/README.md @@ -101,7 +101,7 @@ import { Default, Expose, IsByteLength, - IsIpOrFQDN, + IsIpOrURL, IsOptional, IsPort, } from "@nanoforge-dev/config"; @@ -120,7 +120,7 @@ export class ClientConfigNetwork { // This var must be ip address or fqdn (it cannot be undefined) @Expose() - @IsIpOrFQDN() + @IsIpOrURL() SERVER_ADDRESS?: string; // This var must be a byte length between 2 and 64. It can be undefined as it as a default value. diff --git a/packages/config/src/validators/index.ts b/packages/config/src/validators/index.ts index ce4c51e3..3887243a 100644 --- a/packages/config/src/validators/index.ts +++ b/packages/config/src/validators/index.ts @@ -1 +1 @@ -export { IsIpOrFQDN } from "./is-ip-or-fqdn.validator"; +export { IsIpOrURL } from "./is-ip-or-url.validator"; diff --git a/packages/config/src/validators/is-ip-or-fqdn.validator.ts b/packages/config/src/validators/is-ip-or-url.validator.ts similarity index 62% rename from packages/config/src/validators/is-ip-or-fqdn.validator.ts rename to packages/config/src/validators/is-ip-or-url.validator.ts index c7e5d4de..843b61bd 100644 --- a/packages/config/src/validators/is-ip-or-fqdn.validator.ts +++ b/packages/config/src/validators/is-ip-or-url.validator.ts @@ -1,11 +1,11 @@ -import { type ValidationOptions, isFQDN, isIP, registerDecorator } from "class-validator"; +import { type ValidationOptions, isIP, isURL, registerDecorator } from "class-validator"; /** * Property decorator that validates whether the value is a valid IPv4/IPv6 - * address or a fully qualified domain name (FQDN). + * address or a fully qualified domain name (URL). * * @remarks - * Built on top of `class-validator`'s `isIP` and `isFQDN` helpers. Use on + * Built on top of `class-validator`'s `isIP` and `isURL` helpers. Use on * config properties that represent server hostnames or addresses. * * @param validationOptions - Optional class-validator validation options. @@ -14,12 +14,12 @@ import { type ValidationOptions, isFQDN, isIP, registerDecorator } from "class-v * ```ts * class MyConfig { * \@Expose() - * \@IsIpOrFQDN() + * \@IsIpOrURL() * SERVER_ADDRESS!: string; * } * ``` */ -export const IsIpOrFQDN = (validationOptions?: ValidationOptions) => { +export const IsIpOrURL = (validationOptions?: ValidationOptions) => { return (object: object, propertyName: string) => { registerDecorator({ target: object.constructor, @@ -28,10 +28,10 @@ export const IsIpOrFQDN = (validationOptions?: ValidationOptions) => { constraints: [], validator: { validate(value: string) { - return isIP(value) || isFQDN(value); + return isIP(value) || isURL(value); }, defaultMessage() { - return `$value must be a valid IP address or FQDN`; + 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 5ce77966..a47e7140 100644 --- a/packages/network-client/src/config.client.network.ts +++ b/packages/network-client/src/config.client.network.ts @@ -3,7 +3,7 @@ import { Expose, IsBoolean, IsByteLength, - IsIpOrFQDN, + IsIpOrURL, IsOptional, IsPort, TransformToBoolean, @@ -42,7 +42,7 @@ export class ClientConfigNetwork { /** Hostname or IP address of the game server. */ @Expose() - @IsIpOrFQDN() + @IsIpOrURL() SERVER_ADDRESS!: string; /** diff --git a/packages/network-server/src/config.server.network.ts b/packages/network-server/src/config.server.network.ts index b70914df..ec8c6ede 100644 --- a/packages/network-server/src/config.server.network.ts +++ b/packages/network-server/src/config.server.network.ts @@ -2,7 +2,7 @@ import { Default, Expose, IsByteLength, - IsIpOrFQDN, + IsIpOrURL, IsOptional, IsPort, IsString, @@ -46,7 +46,7 @@ export class ServerConfigNetwork { */ @Expose() @Default("0.0.0.0") - @IsIpOrFQDN() + @IsIpOrURL() LISTENING_INTERFACE!: string; /**