@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).
81 lines (80 loc) • 2.14 kB
JavaScript
import { relinka } from "@reliverse/relinka";
import { teamsGetTeam } from "@vercel/sdk/funcs/teamsGetTeam";
import { teamsGetTeams } from "@vercel/sdk/funcs/teamsGetTeams";
import { getOrCreateReliverseMemory } from "../../../../../utils/reliverseMemory.js";
export async function getPrimaryVercelTeam(vercelInstance, memory) {
try {
if (memory.vercelTeamId && memory.vercelTeamSlug) {
const isTeamValid = await verifyTeam(
vercelInstance,
memory.vercelTeamId,
memory.vercelTeamSlug
);
if (isTeamValid) {
const teams2 = await getVercelTeams(vercelInstance);
const memoryTeam = teams2.find(
(team) => team.id === memory.vercelTeamId
);
if (memoryTeam) {
return memoryTeam;
}
}
}
const teams = await getVercelTeams(vercelInstance);
if (teams?.length > 0 && teams[0]) {
const team = teams[0];
memory.vercelTeamId = team.id;
memory.vercelTeamSlug = team.slug;
await getOrCreateReliverseMemory();
return team;
}
return void 0;
} catch (error) {
relinka(
"warn",
"Error getting primary Vercel team:",
error instanceof Error ? error.message : String(error)
);
return void 0;
}
}
export async function verifyTeam(vercelInstance, teamId, teamSlug) {
try {
const res = await teamsGetTeam(vercelInstance, {
teamId,
slug: teamSlug
});
if (!res.ok) {
relinka(
"warn",
"Failed to verify team:",
res.error?.message ?? "Unknown error"
);
return false;
}
return true;
} catch (error) {
relinka(
"warn",
"Error verifying team:",
error instanceof Error ? error.message : String(error)
);
return false;
}
}
export async function getVercelTeams(vercelInstance) {
const res = await teamsGetTeams(vercelInstance, {
limit: 10
});
if (!res.ok) {
throw res.error;
}
const { teams } = res.value;
return teams.filter(
(team) => team.name !== null
).map((team) => ({
id: team.id,
slug: team.slug,
name: team.name
}));
}