Migrate url tooling to twenty-shared (#10440)

Migrate and unify URL tooling in twenty-shared.

We now have:
- isValidHostname which follows our own business rules
- a zod schema that can be re-used in different context and leverages is
isValidHostname
- isValidUrl on top of the zod schema
- a getAbsoluteURl and getHostname on top of the zod schema

I have added a LOT of tests to cover all the cases I've found

Also fixes: https://github.com/twentyhq/twenty/issues/10147
This commit is contained in:
Charles Bochet
2025-02-24 18:01:51 +01:00
committed by GitHub
parent d4bdae562f
commit 9046a9ac16
28 changed files with 280 additions and 158 deletions

View File

@ -0,0 +1,16 @@
import { absoluteUrlSchema } from 'src/utils/url/absoluteUrlSchema';
export const getUrlHostnameOrThrow = (url: string): string => {
const result = absoluteUrlSchema.safeParse(url);
if (!result.success) {
throw new Error('Invalid URL');
}
try {
const url = new URL(result.data);
return url.hostname;
} catch {
throw new Error('Invalid URL');
}
};