From f6c7fd1bd257f44eac24d2a316cd2f575806218c Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 23 Apr 2025 10:08:26 +0530 Subject: [PATCH] update: allow ip-addresses and chrome extension ids. --- src/lib/helpers/string.ts | 7 +++++++ .../overview/platforms/[platform]/web.svelte | 4 ++-- .../overview/platforms/wizard/flutter/step1.svelte | 4 ++-- .../overview/platforms/wizard/web/step1.svelte | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/lib/helpers/string.ts b/src/lib/helpers/string.ts index 4ef014dd5..595286b87 100644 --- a/src/lib/helpers/string.ts +++ b/src/lib/helpers/string.ts @@ -53,3 +53,10 @@ export function formatNum(number: number): string { * Returns a regex to check hostname validity. Supports wildcards too! */ export const hostnameRegex = String.raw`(\*)|(\*\.)?(?!-)[A-Za-z0-9\-]+([\-\.]{1}[a-z0-9]+)*\.[A-Za-z]{2,18}|localhost`; + +/** + * Returns a regex to check hostname validity. + * + * Supports domains, localhost, wildcards, ip-addresses and Chrome extension IDs! + */ +export const extendedHostnameRegex = String.raw`(\*)|(\*\.)?((?!-)[A-Za-z0-9-]+([-.]{1}[a-z0-9]+)*\.[A-Za-z]{2,18}|localhost|(\d{1,3}\.){3}\d{1,3}|[a-z0-9]{32})`; \ No newline at end of file diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/[platform]/web.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/[platform]/web.svelte index 1d1f4520e..3f2c7fbb6 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/[platform]/web.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/[platform]/web.svelte @@ -8,7 +8,7 @@ import { onMount } from 'svelte'; import { project } from '../../../store'; import { platform } from './store'; - import { hostnameRegex } from '$lib/helpers/string'; + import { extendedHostnameRegex } from '$lib/helpers/string'; let hostname: string = null; @@ -50,7 +50,7 @@ id="hostname" label="Hostname" bind:value={hostname} - pattern={hostnameRegex} + pattern={extendedHostnameRegex} patternError="Please enter a valid hostname" placeholder="myapp.com" /> diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/flutter/step1.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/flutter/step1.svelte index d67c3f6d9..bda3e569c 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/flutter/step1.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/flutter/step1.svelte @@ -8,7 +8,7 @@ import { Submit, trackEvent } from '$lib/actions/analytics'; import { PlatformType } from '@appwrite.io/console'; import { isValueOfStringEnum } from '$lib/helpers/types'; - import { hostnameRegex } from '$lib/helpers/string'; + import { extendedHostnameRegex } from '$lib/helpers/string'; // enum Platform { // Android = 'flutter-android', @@ -174,7 +174,7 @@ placeholder={placeholder[platform].hostname} tooltip={placeholder[platform].tooltip} required - pattern={hostnameRegex} + pattern={extendedHostnameRegex} patternError="Please enter a valid hostname" bind:value={$createPlatform.hostname} /> diff --git a/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/web/step1.svelte b/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/web/step1.svelte index 308cd4bc7..1d81e6ebb 100644 --- a/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/web/step1.svelte +++ b/src/routes/(console)/project-[region]-[project]/overview/platforms/wizard/web/step1.svelte @@ -8,7 +8,7 @@ import { createPlatform } from '../store'; import { Submit, trackEvent } from '$lib/actions/analytics'; import { PlatformType } from '@appwrite.io/console'; - import { hostnameRegex } from '$lib/helpers/string'; + import { extendedHostnameRegex } from '$lib/helpers/string'; const projectId = $page.params.project; const suggestions = ['*.vercel.app', '*.netlify.app', '*.gitpod.io']; @@ -60,7 +60,7 @@ placeholder="localhost" tooltip="The hostname that your website will use to interact with the Appwrite APIs in production or development environments. No protocol or port number required." required - pattern={hostnameRegex} + pattern={extendedHostnameRegex} patternError="Please enter a valid hostname" bind:value={$createPlatform.hostname} />