@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).
37 lines (36 loc) • 1.08 kB
JavaScript
import { relinka } from "@reliverse/relinka";
import { projectsGetProjectEnv } from "@vercel/sdk/funcs/projectsGetProjectEnv";
const MAX_RETRIES = 3;
const RETRY_DELAY = 5e3;
export async function getVercelEnvVar(vercelInstance, projectId, envVarId) {
try {
const res = await projectsGetProjectEnv(vercelInstance, {
idOrName: projectId,
id: envVarId
});
if (!res.ok) {
throw res.error;
}
const envVar = res.value;
return envVar;
} catch (error) {
relinka(
"error",
"Error getting Vercel env var:",
error instanceof Error ? error.message : String(error)
);
return void 0;
}
}
export async function withRateLimit(fn, retries = MAX_RETRIES) {
try {
return await fn();
} catch (error) {
if (error instanceof Error && error.message.includes("rate limit") && retries > 0) {
relinka("info", `Rate limit hit, retrying in ${RETRY_DELAY / 1e3}s...`);
await new Promise((resolve) => setTimeout(resolve, RETRY_DELAY));
return withRateLimit(fn, retries - 1);
}
throw error;
}
}