@reliverse/rse-sdk
Version:
@reliverse/rse-sdk allows you to create new plugins for @reliverse/rse CLI, interact with reliverse.org, and even extend your own CLI functionality (you may also try @reliverse/dler-sdk for this case).
45 lines (44 loc) • 1.68 kB
JavaScript
import { relinka } from "@reliverse/relinka";
import { projectsGetProjectDomains } from "@vercel/sdk/funcs/projectsGetProjectDomains";
export async function getVercelProjectDomain(vercelInstance, vercelToken, projectName) {
try {
if (!vercelToken) {
throw new Error("No Vercel token provided");
}
const res = await projectsGetProjectDomains(vercelInstance, {
idOrName: projectName
});
if (!res.ok) {
throw res.error;
}
const { domains } = res.value;
const defaultDomain = `${projectName}.vercel.app`;
if (!Array.isArray(domains) || domains.length === 0) {
return { domains: [defaultDomain], primary: defaultDomain };
}
const validDomains = domains.filter((domain) => domain?.name).map((domain) => domain.name);
const domainMap = /* @__PURE__ */ new Map();
validDomains.forEach((domain) => {
const baseDomain = domain.startsWith("www.") ? domain.slice(4) : domain;
const group = domainMap.get(baseDomain) ?? [];
group.push(domain);
domainMap.set(baseDomain, group);
});
const effectiveDomains = Array.from(domainMap.values()).map((group) => {
const nonWww = group.find((d) => !d.startsWith("www."));
return nonWww ?? group[0];
}).filter((domain) => domain !== void 0);
return {
domains: effectiveDomains,
primary: effectiveDomains[0] ?? defaultDomain
};
} catch (error) {
relinka(
"warn",
"Failed to get Vercel domain:",
error instanceof Error ? error.message : String(error)
);
const defaultDomain = `${projectName}.vercel.app`;
return { domains: [defaultDomain], primary: defaultDomain };
}
}