@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).
105 lines (104 loc) • 3.07 kB
JavaScript
import { relinka } from "@reliverse/relinka";
import { multiselectPrompt } from "@reliverse/rempts";
import { projectsUpdateProject } from "@vercel/sdk/funcs/projectsUpdateProject";
import { experimental } from "../../../../../utils/badgeNotifiers.js";
import { withRateLimit } from "./vercel-api.js";
export async function updateProject(vercelInstance, projectId, config, teamId, teamSlug) {
try {
const res = await withRateLimit(async () => {
return await projectsUpdateProject(vercelInstance, {
idOrName: projectId,
teamId,
slug: teamSlug,
requestBody: config
});
});
if (!res.ok) {
throw res.error;
}
} catch (error) {
relinka(
"warn",
`Could not update project ${projectId}:`,
error instanceof Error ? error.message : String(error)
);
throw error;
}
}
export async function enableAnalytics(vercelInstance, projectId) {
try {
await updateProject(vercelInstance, projectId, {
customerSupportCodeVisibility: true
});
relinka("success", "Analytics enabled successfully");
} catch (error) {
relinka(
"warn",
"Could not enable analytics:",
error instanceof Error ? error.message : String(error)
);
}
}
export async function configureBranchProtection(vercelInstance, projectId) {
try {
await updateProject(vercelInstance, projectId, {
gitForkProtection: true,
enablePreviewFeedback: true
});
relinka("success", "Branch protection configured successfully");
} catch (error) {
relinka(
"warn",
"Could not configure branch protection:",
error instanceof Error ? error.message : String(error)
);
}
}
export async function configureResources(vercelInstance, projectId) {
try {
await updateProject(vercelInstance, projectId, {
serverlessFunctionRegion: "iad1"
});
relinka("success", "Resource configuration updated successfully");
} catch (error) {
relinka(
"warn",
"Could not configure resources:",
error instanceof Error ? error.message : String(error)
);
}
}
export async function getConfigurationOptions() {
const result = await multiselectPrompt({
title: "Select Vercel deployment options:",
options: [
{ value: "env", label: "Upload environment variables" },
{
value: "shared_env",
label: `Get Vercel shared env vars ${experimental}`
},
{
value: "analytics",
label: `Enable analytics ${experimental}`
},
{
value: "protection",
label: `Configure branch protection ${experimental}`
},
{
value: "resources",
label: `Configure serverless resources ${experimental}`
},
{
value: "monitoring",
label: `Show detailed deployment logs ${experimental}`
}
],
defaultValue: ["env"]
});
const selectedOptions = Array.isArray(result) ? result : ["env"];
return {
options: selectedOptions,
useSharedEnvVars: selectedOptions.includes("shared_env")
};
}