@reliverse/rse
Version:
@reliverse/rse is your all-in-one companion for bootstrapping and improving any kind of projects (especially web apps built with frameworks like Next.js) — whether you're kicking off something new or upgrading an existing app. It is also a little AI-power
40 lines (39 loc) • 1.39 kB
JavaScript
import { relinka } from "@reliverse/relinka";
import { inputPrompt } from "@reliverse/rempts";
import { VercelCore } from "@vercel/sdk/core";
import { saveVercelToken } from "../init/use-template/cp-modules/git-deploy-prompts/vercel/vercel-utils.js";
export async function askVercelToken(maskInput, memory) {
if (!memory?.vercelKey) {
const token = await inputPrompt({
title: "Please enter your Vercel personal access token.\n(It will be securely stored on your machine):",
content: "Create one at https://vercel.com/account/settings/tokens",
mode: maskInput ? "password" : "plain",
validate: (value) => {
if (!value?.trim()) return "Token is required";
return true;
}
});
if (!token) {
relinka("error", "No token provided");
return void 0;
}
return token;
}
return memory.vercelKey;
}
export async function initVercelSDK(memory, maskInput) {
let vercelToken = memory?.vercelKey;
if (!vercelToken) {
vercelToken = await askVercelToken(maskInput, memory);
if (!vercelToken) {
relinka("error", "No token provided");
return void 0;
}
}
const vercelInstance = new VercelCore({ bearerToken: vercelToken });
if (!memory.vercelKey) {
await saveVercelToken(vercelToken, memory, vercelInstance);
memory.vercelKey = vercelToken;
}
return [vercelToken, vercelInstance];
}