UNPKG

@reliverse/rse-sdk

Version:

@reliverse/rse-sdk without cli. @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
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") }; }