46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { WEBAPP_URL } from "@calcom/lib/constants";
|
|
|
|
// Define which hostnames are expected for the app
|
|
export const appHostnames = [
|
|
"cal.com",
|
|
"cal.dev",
|
|
"cal-staging.com",
|
|
"cal.community",
|
|
"cal.local:3000",
|
|
// ⬇️ Prevents 404 error for normal localhost development, makes it backwards compatible
|
|
"localhost:3000",
|
|
];
|
|
|
|
/**
|
|
* return the org slug
|
|
* @param hostname
|
|
*/
|
|
export function getOrgDomain(hostname: string) {
|
|
// Find which hostname is being currently used
|
|
const currentHostname = appHostnames.find((ahn) => {
|
|
const url = new URL(WEBAPP_URL);
|
|
const testHostname = `${url.hostname}${url.port ? `:${url.port}` : ""}`;
|
|
return testHostname.endsWith(`.${ahn}`);
|
|
});
|
|
if (currentHostname) {
|
|
// Define which is the current domain/subdomain
|
|
const slug = hostname.replace(`.${currentHostname}` ?? "", "");
|
|
return slug.indexOf(".") === -1 ? slug : null;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
export function orgDomainConfig(hostname: string) {
|
|
const currentOrgDomain = getOrgDomain(hostname);
|
|
return {
|
|
currentOrgDomain,
|
|
isValidOrgDomain:
|
|
currentOrgDomain !== null && currentOrgDomain !== "app" && !appHostnames.includes(currentOrgDomain),
|
|
};
|
|
}
|
|
|
|
export function subdomainSuffix() {
|
|
const urlSplit = WEBAPP_URL.replace("https://", "")?.replace("http://", "").split(".");
|
|
return urlSplit.length === 3 ? urlSplit.slice(1).join(".") : urlSplit.join(".");
|
|
}
|