refractor: migrate inquirer to @clack/prompts

This commit is contained in:
Aman Varshney
2025-02-13 19:05:21 +05:30
parent 8245d18528
commit 76a14ea26e
7 changed files with 264 additions and 350 deletions

View File

@@ -0,0 +1,5 @@
---
"create-better-t-stack": minor
---
refractor: migrate inquirer to @clack/prompts

View File

@@ -18,7 +18,7 @@
}, },
"files": ["dist", "templates"], "files": ["dist", "templates"],
"dependencies": { "dependencies": {
"@inquirer/prompts": "^7.3.1", "@clack/prompts": "^0.10.0",
"chalk": "^5.3.0", "chalk": "^5.3.0",
"commander": "^13.1.0", "commander": "^13.1.0",
"execa": "^8.0.1", "execa": "^8.0.1",

View File

@@ -1,164 +1,96 @@
import path from "node:path"; import path from "node:path";
import { confirm, select } from "@inquirer/prompts"; import { cancel, confirm, isCancel, log, spinner, tasks } from "@clack/prompts";
import chalk from "chalk"; import chalk from "chalk";
import { $ } from "execa"; import { $ } from "execa";
import fs from "fs-extra"; import fs from "fs-extra";
import ora from "ora"; import type { ProjectConfig } from "../types";
import { DEFAULT_CONFIG } from "../consts";
import type { PackageManager, ProjectConfig } from "../types";
import { getUserPkgManager } from "../utils/get-package-manager";
import { logger } from "../utils/logger";
import { setupTurso } from "./db-setup"; import { setupTurso } from "./db-setup";
export async function createProject(options: ProjectConfig) { export async function createProject(options: ProjectConfig) {
const spinner = ora("Creating project directory...").start(); const s = spinner();
const projectDir = path.resolve(process.cwd(), options.projectName); const projectDir = path.resolve(process.cwd(), options.projectName);
let shouldInstallDeps = false;
try { try {
await fs.ensureDir(projectDir); await tasks([
spinner.succeed(); {
console.log(); title: "Creating project directory",
task: async () => {
await fs.ensureDir(projectDir);
},
},
{
title: "Cloning template repository",
task: async () => {
try {
await $`npx degit AmanVarshney01/Better-T-Stack ${projectDir}`;
} catch (error) {
log.error("Failed to clone template repository");
if (error instanceof Error) {
log.error(error.message);
}
throw error;
}
},
},
{
title: "Initializing git repository",
task: async () => {
if (options.git) {
await $`git init ${projectDir}`;
}
},
},
]);
spinner.start("Cloning template repository..."); const installDepsResponse = await confirm({
await $`npx degit https://github.com/AmanVarshney01/Better-T-Stack.git ${projectDir}`; message: `📦 Install dependencies using ${options.packageManager}?`,
spinner.succeed();
console.log();
let shouldInitGit = options.git;
if (!options.yes && shouldInitGit) {
shouldInitGit = await confirm({
message: chalk.blue.bold("🔄 Initialize a git repository?"),
default: true,
}).catch((error) => {
spinner.stop();
console.log();
throw error;
});
}
if (shouldInitGit) {
spinner.start("Initializing git repository...");
await $`git init ${projectDir}`;
spinner.succeed();
}
const detectedPackageManager = getUserPkgManager();
let packageManager = options.packageManager ?? detectedPackageManager;
if (!options.yes) {
const useDetectedPackageManager = await confirm({
message: chalk.blue.bold(
`📦 Use detected package manager (${chalk.cyan(
detectedPackageManager,
)})?`,
),
default: true,
}).catch((error) => {
spinner.stop();
throw error;
});
if (!useDetectedPackageManager) {
console.log();
packageManager = await select<PackageManager>({
message: chalk.blue.bold("📦 Select package manager:"),
choices: [
{
value: "npm",
name: chalk.yellow("npm"),
description: chalk.dim("Node Package Manager"),
},
{
value: "yarn",
name: chalk.blue("yarn"),
description: chalk.dim(
"Fast, reliable, and secure dependency management",
),
},
{
value: "pnpm",
name: chalk.magenta("pnpm"),
description: chalk.dim(
"Fast, disk space efficient package manager",
),
},
{
value: "bun",
name: chalk.cyan("bun"),
description: chalk.dim("All-in-one JavaScript runtime & toolkit"),
},
],
}).catch((error) => {
spinner.stop();
throw error;
});
}
}
const installDeps = await confirm({
message: chalk.blue.bold(
`📦 Install dependencies using ${chalk.cyan(packageManager)}?`,
),
default: true,
}).catch((error) => {
spinner.stop();
throw error;
}); });
console.log(); if (isCancel(installDepsResponse)) {
cancel("Operation cancelled");
process.exit(0);
}
if (installDeps) { shouldInstallDeps = installDepsResponse;
spinner.start(`📦 Installing dependencies using ${packageManager}...`);
switch (packageManager ?? DEFAULT_CONFIG.packageManager) { if (shouldInstallDeps) {
case "npm": s.start(`Installing dependencies using ${options.packageManager}...`);
await $`cd ${projectDir} && npm install`; try {
break; await $({
case "yarn": cwd: projectDir,
await $`cd ${projectDir} && yarn install`; stdio: "inherit",
break; })`${options.packageManager} install`;
case "pnpm": s.stop("Dependencies installed successfully");
await $`cd ${projectDir} && pnpm install`; } catch (error) {
break; s.stop("Failed to install dependencies");
case "bun": if (error instanceof Error) {
await $`cd ${projectDir} && bun install`; log.error(`Installation error: ${error.message}`);
break; }
default: throw error;
throw new Error("Unsupported package manager");
} }
spinner.succeed();
console.log();
} }
if (options.database === "libsql") { if (options.database === "libsql") {
await setupTurso(projectDir); await setupTurso(projectDir);
} }
logger.success("\n✨ Project created successfully!\n"); log.success("✨ Project created successfully!\n");
logger.info("Next steps:"); log.info(chalk.dim("Next steps:"));
logger.info(` cd ${options.projectName}`); log.info(` cd ${options.projectName}`);
if (!installDeps) { if (!shouldInstallDeps) {
logger.info(` ${packageManager} install`); log.info(` ${options.packageManager} install`);
} }
logger.info( log.info(
` ${packageManager === "npm" ? "npm run" : packageManager} dev`, ` ${
options.packageManager === "npm" ? "npm run" : options.packageManager
} dev`,
); );
} catch (error) { } catch (error) {
spinner.stop(); s.stop("Failed");
if (error instanceof Error) {
if ( log.error(`Error during project creation: ${error.message}`);
error instanceof Error && process.exit(1);
(error.name === "ExitPromptError" ||
error.message.includes("User force closed"))
) {
console.log("\n");
logger.warn("Operation cancelled");
process.exit(0);
return;
} }
spinner.fail("Failed to create project");
logger.error("Error during project creation:", error);
process.exit(1);
} }
} }

View File

@@ -1,11 +1,8 @@
import os from "node:os"; import os from "node:os";
import path from "node:path"; import path from "node:path";
import { confirm, input } from "@inquirer/prompts"; import * as p from "@clack/prompts";
import chalk from "chalk";
import { $ } from "execa"; import { $ } from "execa";
import fs from "fs-extra"; import fs from "fs-extra";
import ora, { type Ora } from "ora";
import { logger } from "../utils/logger";
import { isTursoInstalled, isTursoLoggedIn } from "../utils/turso-cli"; import { isTursoInstalled, isTursoLoggedIn } from "../utils/turso-cli";
interface TursoConfig { interface TursoConfig {
@@ -13,21 +10,21 @@ interface TursoConfig {
authToken: string; authToken: string;
} }
async function loginToTurso(spinner: Ora) { async function loginToTurso() {
const spinner = p.spinner();
try { try {
spinner.start("Logging in to Turso..."); spinner.start("Logging in to Turso...");
await $`turso auth login`; await $`turso auth login`;
spinner.succeed("Logged in to Turso successfully!"); spinner.stop("Logged in to Turso successfully!");
console.log();
} catch (error) { } catch (error) {
spinner.fail("Failed to log in to Turso"); spinner.stop("Failed to log in to Turso");
throw error; throw error;
} }
} }
async function installTursoCLI(isMac: boolean, spinner: Ora) { async function installTursoCLI(isMac: boolean) {
const spinner = p.spinner();
try { try {
console.log();
spinner.start("Installing Turso CLI..."); spinner.start("Installing Turso CLI...");
if (isMac) { if (isMac) {
@@ -38,15 +35,14 @@ async function installTursoCLI(isMac: boolean, spinner: Ora) {
await $`bash -c '${installScript}'`; await $`bash -c '${installScript}'`;
} }
spinner.succeed("Turso CLI installed successfully!"); spinner.stop("Turso CLI installed successfully!");
console.log();
} catch (error) { } catch (error) {
if (error instanceof Error && error.message.includes("User force closed")) { if (error instanceof Error && error.message.includes("User force closed")) {
spinner.stop(); spinner.stop();
logger.warn("\nTurso CLI installation cancelled by user"); p.log.warn("Turso CLI installation cancelled by user");
throw new Error("Installation cancelled"); throw new Error("Installation cancelled");
} }
spinner.fail("Failed to install Turso CLI"); spinner.stop("Failed to install Turso CLI");
throw error; throw error;
} }
} }
@@ -62,7 +58,6 @@ async function createTursoDatabase(dbName: string): Promise<TursoConfig> {
} }
const { stdout: dbUrl } = await $`turso db show ${dbName} --url`; const { stdout: dbUrl } = await $`turso db show ${dbName} --url`;
const { stdout: authToken } = await $`turso db tokens create ${dbName}`; const { stdout: authToken } = await $`turso db tokens create ${dbName}`;
return { return {
@@ -83,27 +78,28 @@ TURSO_AUTH_TOKEN=`;
} }
function displayManualSetupInstructions() { function displayManualSetupInstructions() {
logger.info("\n📝 Manual Turso Setup Instructions:"); p.log.info("📝 Manual Turso Setup Instructions:");
logger.info("1. Visit https://turso.tech and create an account"); p.log.info("1. Visit https://turso.tech and create an account");
logger.info("2. Create a new database from the dashboard"); p.log.info("2. Create a new database from the dashboard");
logger.info("3. Get your database URL and authentication token"); p.log.info("3. Get your database URL and authentication token");
logger.info( p.log.info(
"4. Add these credentials to the .env file in packages/server/.env", "4. Add these credentials to the .env file in packages/server/.env",
); );
logger.info("\nThe .env file has been created with placeholder variables:"); p.log.info("\nThe .env file has been created with placeholder variables:");
logger.info("TURSO_DATABASE_URL=your_database_url"); p.log.info("TURSO_DATABASE_URL=your_database_url");
logger.info("TURSO_AUTH_TOKEN=your_auth_token"); p.log.info("TURSO_AUTH_TOKEN=your_auth_token");
} }
export async function setupTurso(projectDir: string) { export async function setupTurso(projectDir: string) {
const spinner = ora(); p.intro("Setting up Turso...");
const platform = os.platform(); const platform = os.platform();
const isMac = platform === "darwin"; const isMac = platform === "darwin";
const canInstallCLI = platform !== "win32"; const canInstallCLI = platform !== "win32";
try { try {
if (!canInstallCLI) { if (!canInstallCLI) {
logger.warn("\nAutomatic Turso setup is not supported on Windows."); p.log.warn("Automatic Turso setup is not supported on Windows.");
await writeEnvFile(projectDir); await writeEnvFile(projectDir);
displayManualSetupInstructions(); displayManualSetupInstructions();
return; return;
@@ -112,78 +108,68 @@ export async function setupTurso(projectDir: string) {
const isCliInstalled = await isTursoInstalled(); const isCliInstalled = await isTursoInstalled();
if (!isCliInstalled) { if (!isCliInstalled) {
const shouldInstall = await confirm({ const shouldInstall = await p.confirm({
message: chalk.blue.bold("🔧 Would you like to install Turso CLI?"), message: "Would you like to install Turso CLI?",
default: true,
}).catch((error) => {
spinner.stop();
throw error;
}); });
if (p.isCancel(shouldInstall)) {
p.cancel("Operation cancelled");
process.exit(0);
}
if (!shouldInstall) { if (!shouldInstall) {
await writeEnvFile(projectDir); await writeEnvFile(projectDir);
displayManualSetupInstructions(); displayManualSetupInstructions();
return; return;
} }
await installTursoCLI(isMac, spinner); await installTursoCLI(isMac);
} }
const isLoggedIn = await isTursoLoggedIn(); const isLoggedIn = await isTursoLoggedIn();
if (!isLoggedIn) { if (!isLoggedIn) {
await loginToTurso(spinner); await loginToTurso();
} }
const defaultDbName = path.basename(projectDir);
let dbName = await input({
message: chalk.blue.bold("💾 Enter database name:"),
default: defaultDbName,
}).catch((error) => {
spinner.stop();
throw error;
});
let success = false; let success = false;
let dbName = "";
let suggestedName = path.basename(projectDir);
while (!success) { while (!success) {
const dbNameResponse = await p.text({
message: "Enter database name:",
defaultValue: suggestedName,
});
if (p.isCancel(dbNameResponse)) {
p.cancel("Operation cancelled");
process.exit(0);
}
dbName = dbNameResponse as string;
const spinner = p.spinner();
try { try {
console.log();
spinner.start(`Creating Turso database "${dbName}"...`); spinner.start(`Creating Turso database "${dbName}"...`);
const config = await createTursoDatabase(dbName); const config = await createTursoDatabase(dbName);
await writeEnvFile(projectDir, config); await writeEnvFile(projectDir, config);
spinner.succeed("Turso database configured successfully!"); spinner.stop("Turso database configured successfully!");
success = true; success = true;
} catch (error) { } catch (error) {
if (error instanceof Error && error.message === "DATABASE_EXISTS") { if (error instanceof Error && error.message === "DATABASE_EXISTS") {
spinner.warn(`Database "${dbName}" already exists`); spinner.stop(`Database "${dbName}" already exists`);
dbName = await input({ suggestedName = `${dbName}-${Math.floor(Math.random() * 1000)}`;
message: "Please enter a different database name:",
default: `${dbName}-${Math.floor(Math.random() * 1000)}`,
}).catch((error) => {
spinner.stop();
throw error;
});
} else { } else {
throw error; throw error;
} }
} }
} }
p.outro("Turso setup completed successfully!");
} catch (error) { } catch (error) {
spinner.stop(); p.log.error(`Error during Turso setup: ${error}`);
if (
error instanceof Error &&
(error.name === "ExitPromptError" ||
error.message.includes("User force closed"))
) {
logger.warn("\nTurso setup cancelled");
await writeEnvFile(projectDir);
displayManualSetupInstructions();
return;
}
logger.error("Error during Turso setup:", error);
await writeEnvFile(projectDir); await writeEnvFile(projectDir);
displayManualSetupInstructions(); displayManualSetupInstructions();
p.outro("Setup completed with manual configuration required.");
} }
} }

View File

@@ -1,4 +1,15 @@
import { checkbox, confirm, input, select } from "@inquirer/prompts"; import {
cancel,
confirm,
group,
intro,
isCancel,
multiselect,
outro,
select,
spinner,
text,
} from "@clack/prompts";
import chalk from "chalk"; import chalk from "chalk";
import { Command } from "commander"; import { Command } from "commander";
import { DEFAULT_CONFIG } from "./consts"; import { DEFAULT_CONFIG } from "./consts";
@@ -11,6 +22,7 @@ import type {
ProjectFeature, ProjectFeature,
} from "./types"; } from "./types";
import { generateReproducibleCommand } from "./utils/generate-reproducible-command"; import { generateReproducibleCommand } from "./utils/generate-reproducible-command";
import { getUserPkgManager } from "./utils/get-package-manager";
import { getVersion } from "./utils/get-version"; import { getVersion } from "./utils/get-version";
import { logger } from "./utils/logger"; import { logger } from "./utils/logger";
@@ -25,88 +37,110 @@ const program = new Command();
async function gatherConfig( async function gatherConfig(
flags: Partial<ProjectConfig>, flags: Partial<ProjectConfig>,
): Promise<ProjectConfig> { ): Promise<ProjectConfig> {
const config: ProjectConfig = { const result = await group({
projectName: "", projectName: () =>
database: "libsql", text({
auth: true, message: "📝 Project name",
features: [], placeholder: "my-better-t-app",
validate: (value) => {
if (!value) return "Project name is required";
},
}),
database: () =>
!flags.database
? select<ProjectDatabase>({
message: "💾 Select database",
options: [
{
value: "libsql",
label: "libSQL",
hint: "✨ (Recommended) - Turso's embedded SQLite database",
},
{
value: "postgres",
label: "PostgreSQL",
hint: "🐘 Traditional relational database",
},
],
})
: Promise.resolve(flags.database),
auth: () =>
flags.auth === undefined
? confirm({
message: "🔐 Add authentication with Better-Auth?",
})
: Promise.resolve(flags.auth),
features: () =>
!flags.features
? multiselect<ProjectFeature>({
message: "🎯 Select additional features",
options: [
{
value: "docker",
label: "Docker setup",
hint: "🐳 Containerize your application",
},
{
value: "github-actions",
label: "GitHub Actions",
hint: "⚡ CI/CD workflows",
},
{
value: "SEO",
label: "Basic SEO setup",
hint: "🔍 Search engine optimization configuration",
},
],
})
: Promise.resolve(flags.features),
packageManager: async () => {
const detectedPackageManager = getUserPkgManager();
const useDetected = await confirm({
message: `📦 Use detected package manager (${detectedPackageManager})?`,
});
if (useDetected) return detectedPackageManager;
return select<PackageManager>({
message: "📦 Select package manager",
options: [
{ value: "npm", label: "npm", hint: "Node Package Manager" },
{
value: "yarn",
label: "yarn",
hint: "Fast, reliable, and secure dependency management",
},
{
value: "pnpm",
label: "pnpm",
hint: "Fast, disk space efficient package manager",
},
{
value: "bun",
label: "bun",
hint: "All-in-one JavaScript runtime & toolkit",
},
],
});
},
});
return {
projectName: result.projectName as string,
database: (result.database as ProjectDatabase) ?? "libsql",
auth: (result.auth as boolean) ?? true,
features: (result.features as ProjectFeature[]) ?? [],
git: flags.git ?? true, git: flags.git ?? true,
packageManager: (result.packageManager as PackageManager) ?? "npm",
}; };
config.projectName =
flags.projectName ??
(await input({
message: chalk.blue.bold("📝 Project name:"),
default: "my-better-t-app",
}));
console.log();
if (flags.database) {
config.database = flags.database;
} else {
config.database = await select<ProjectDatabase>({
message: chalk.blue.bold("💾 Select database:"),
choices: [
{
value: "libsql",
name: chalk.green("libSQL"),
description: chalk.dim(
"✨ (Recommended) - Turso's embedded SQLite database",
),
},
{
value: "postgres",
name: chalk.yellow("PostgreSQL"),
description: chalk.dim("🐘 Traditional relational database"),
},
],
});
}
console.log();
config.auth =
flags.auth ??
(await confirm({
message: chalk.blue.bold("🔐 Add authentication with Better-Auth?"),
default: true,
}));
console.log();
if (flags.features) {
config.features = flags.features;
} else {
config.features = await checkbox<ProjectFeature>({
message: chalk.blue.bold("🎯 Select additional features:"),
choices: [
{
value: "docker",
name: chalk.cyan("Docker setup"),
description: chalk.dim("🐳 Containerize your application"),
},
{
value: "github-actions",
name: chalk.magenta("GitHub Actions"),
description: chalk.dim("⚡ CI/CD workflows"),
},
{
value: "SEO",
name: chalk.green("Basic SEO setup"),
description: chalk.dim("🔍 Search engine optimization configuration"),
},
],
});
}
return config;
} }
async function main() { async function main() {
const s = spinner();
try { try {
renderTitle(); renderTitle();
logger.info(chalk.bold(" Creating a new Better-T Stack project...\n")); intro(chalk.bold("Creating a new Better-T Stack project"));
program program
.name("create-better-t-stack") .name("create-better-t-stack")
.description("Create a new Better-T Stack project") .description("Create a new Better-T Stack project")
@@ -161,7 +195,7 @@ async function main() {
: await gatherConfig(flagConfig); : await gatherConfig(flagConfig);
if (options.yes) { if (options.yes) {
logger.info(chalk.blue.bold("\n📦 Using default configuration:")); s.start("Using default configuration");
const colorizedConfig = { const colorizedConfig = {
projectName: chalk.green(config.projectName), projectName: chalk.green(config.projectName),
database: chalk.yellow(config.database), database: chalk.yellow(config.database),
@@ -195,25 +229,26 @@ async function main() {
chalk.dim("└─") + chalk.blue(" Git Init: ") + colorizedConfig.git, chalk.dim("└─") + chalk.blue(" Git Init: ") + colorizedConfig.git,
); );
console.log(); console.log();
s.stop("Configuration loaded");
} }
await createProject(config); await createProject(config);
logger.info("\n📋 To reproduce this setup, run:"); console.log();
logger.success(chalk.cyan(generateReproducibleCommand(config))); console.log(
} catch (error) { chalk.dim("🔄 You can reproduce this setup with the following command:"),
if ( );
error instanceof Error && console.log();
(error.name === "ExitPromptError" || console.log(chalk.dim(" ") + generateReproducibleCommand(config));
error.message.includes("User force closed")) console.log();
) {
console.log("\n");
logger.warn("Operation cancelled");
process.exit(0);
}
logger.error("An unexpected error occurred:", error); outro("Project created successfully! 🎉");
process.exit(1); } catch (error) {
s.stop("Failed");
if (error instanceof Error) {
cancel("An unexpected error occurred");
process.exit(1);
}
} }
} }

View File

@@ -8,7 +8,7 @@ export type ProjectConfig = {
git: boolean; git: boolean;
database: ProjectDatabase; database: ProjectDatabase;
auth: boolean; auth: boolean;
packageManager?: PackageManager; packageManager: PackageManager;
features: ProjectFeature[]; features: ProjectFeature[];
}; };

View File

@@ -14,12 +14,12 @@
}, },
"apps/cli": { "apps/cli": {
"name": "create-better-t-stack", "name": "create-better-t-stack",
"version": "0.3.3", "version": "0.3.4",
"bin": { "bin": {
"create-better-t-stack": "dist/index.js" "create-better-t-stack": "dist/index.js"
}, },
"dependencies": { "dependencies": {
"@inquirer/prompts": "^7.3.1", "@clack/prompts": "^0.10.0",
"chalk": "^5.3.0", "chalk": "^5.3.0",
"commander": "^13.1.0", "commander": "^13.1.0",
"execa": "^8.0.1", "execa": "^8.0.1",
@@ -118,6 +118,10 @@
"@changesets/write": ["@changesets/write@0.3.2", "", { "dependencies": { "@changesets/types": "^6.0.0", "fs-extra": "^7.0.1", "human-id": "^1.0.2", "prettier": "^2.7.1" } }, "sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw=="], "@changesets/write": ["@changesets/write@0.3.2", "", { "dependencies": { "@changesets/types": "^6.0.0", "fs-extra": "^7.0.1", "human-id": "^1.0.2", "prettier": "^2.7.1" } }, "sha512-kDxDrPNpUgsjDbWBvUo27PzKX4gqeKOlhibaOXDJA6kuBisGqNHv/HwGJrAu8U/dSf8ZEFIeHIPtvSlZI1kULw=="],
"@clack/core": ["@clack/core@0.4.1", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-Pxhij4UXg8KSr7rPek6Zowm+5M22rbd2g1nfojHJkxp5YkFqiZ2+YLEM/XGVIzvGOcM0nqjIFxrpDwWRZYWYjA=="],
"@clack/prompts": ["@clack/prompts@0.10.0", "", { "dependencies": { "@clack/core": "0.4.1", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-H3rCl6CwW1NdQt9rE3n373t7o5cthPv7yUoxF2ytZvyvlJv89C5RYMJu83Hed8ODgys5vpBU0GKxIRG83jd8NQ=="],
"@emnapi/runtime": ["@emnapi/runtime@1.3.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw=="], "@emnapi/runtime": ["@emnapi/runtime@1.3.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw=="],
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="], "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.24.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA=="],
@@ -232,34 +236,6 @@
"@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="], "@img/sharp-win32-x64": ["@img/sharp-win32-x64@0.33.5", "", { "os": "win32", "cpu": "x64" }, "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg=="],
"@inquirer/checkbox": ["@inquirer/checkbox@4.1.1", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/figures": "^1.0.10", "@inquirer/type": "^3.0.4", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-os5kFd/52gZTl/W6xqMfhaKVJHQM8V/U1P8jcSaQJ/C4Qhdrf2jEXdA/HaxfQs9iiUA/0yzYhk5d3oRHTxGDDQ=="],
"@inquirer/confirm": ["@inquirer/confirm@5.1.5", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-ZB2Cz8KeMINUvoeDi7IrvghaVkYT2RB0Zb31EaLWOE87u276w4wnApv0SH2qWaJ3r0VSUa3BIuz7qAV2ZvsZlg=="],
"@inquirer/core": ["@inquirer/core@10.1.6", "", { "dependencies": { "@inquirer/figures": "^1.0.10", "@inquirer/type": "^3.0.4", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", "signal-exit": "^4.1.0", "wrap-ansi": "^6.2.0", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Bwh/Zk6URrHwZnSSzAZAKH7YgGYi0xICIBDFOqBQoXNNAzBHw/bgXgLmChfp+GyR3PnChcTbiCTZGC6YJNJkMA=="],
"@inquirer/editor": ["@inquirer/editor@4.2.6", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4", "external-editor": "^3.1.0" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-l0smvr8g/KAVdXx4I92sFxZiaTG4kFc06cFZw+qqwTirwdUHMFLnouXBB9OafWhpO3cfEkEz2CdPoCmor3059A=="],
"@inquirer/expand": ["@inquirer/expand@4.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-k0ouAC6L+0Yoj/j0ys2bat0fYcyFVtItDB7h+pDFKaDDSFJey/C/YY1rmIOqkmFVZ5rZySeAQuS8zLcKkKRLmg=="],
"@inquirer/figures": ["@inquirer/figures@1.0.10", "", {}, "sha512-Ey6176gZmeqZuY/W/nZiUyvmb1/qInjcpiZjXWi6nON+nxJpD1bxtSoBxNliGISae32n6OwbY+TSXPZ1CfS4bw=="],
"@inquirer/input": ["@inquirer/input@4.1.5", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-bB6wR5wBCz5zbIVBPnhp94BHv/G4eKbUEjlpCw676pI2chcvzTx1MuwZSCZ/fgNOdqDlAxkhQ4wagL8BI1D3Zg=="],
"@inquirer/number": ["@inquirer/number@3.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-CTKs+dT1gw8dILVWATn8Ugik1OHLkkfY82J+Musb57KpmF6EKyskv8zmMiEJPzOnLTZLo05X/QdMd8VH9oulXw=="],
"@inquirer/password": ["@inquirer/password@4.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4", "ansi-escapes": "^4.3.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-MgA+Z7o3K1df2lGY649fyOBowHGfrKRz64dx3+b6c1w+h2W7AwBoOkHhhF/vfhbs5S4vsKNCuDzS3s9r5DpK1g=="],
"@inquirer/prompts": ["@inquirer/prompts@7.3.1", "", { "dependencies": { "@inquirer/checkbox": "^4.1.1", "@inquirer/confirm": "^5.1.5", "@inquirer/editor": "^4.2.6", "@inquirer/expand": "^4.0.8", "@inquirer/input": "^4.1.5", "@inquirer/number": "^3.0.8", "@inquirer/password": "^4.0.8", "@inquirer/rawlist": "^4.0.8", "@inquirer/search": "^3.0.8", "@inquirer/select": "^4.0.8" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-r1CiKuDV86BDpvj9DRFR+V+nIjsVBOsa2++dqdPqLYAef8kgHYvmQ8ySdP/ZeAIOWa27YGJZRkENdP3dK0H3gg=="],
"@inquirer/rawlist": ["@inquirer/rawlist@4.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/type": "^3.0.4", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-hl7rvYW7Xl4un8uohQRUgO6uc2hpn7PKqfcGkCOWC0AA4waBxAv6MpGOFCEDrUaBCP+pXPVqp4LmnpWmn1E1+g=="],
"@inquirer/search": ["@inquirer/search@3.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/figures": "^1.0.10", "@inquirer/type": "^3.0.4", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-ihSE9D3xQAupNg/aGDZaukqoUSXG2KfstWosVmFCG7jbMQPaj2ivxWtsB+CnYY/T4D6LX1GHKixwJLunNCffww=="],
"@inquirer/select": ["@inquirer/select@4.0.8", "", { "dependencies": { "@inquirer/core": "^10.1.6", "@inquirer/figures": "^1.0.10", "@inquirer/type": "^3.0.4", "ansi-escapes": "^4.3.2", "yoctocolors-cjs": "^2.1.2" }, "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-Io2prxFyN2jOCcu4qJbVoilo19caiD3kqkD3WR0q3yDA5HUCo83v4LrRtg55ZwniYACW64z36eV7gyVbOfORjA=="],
"@inquirer/type": ["@inquirer/type@3.0.4", "", { "peerDependencies": { "@types/node": ">=18" }, "optionalPeers": ["@types/node"] }, "sha512-2MNFrDY8jkFYc9Il9DgLsHhMzuHnOYM1+CUYVWbzu9oT0hC7V7EcYvdCKeoll/Fcci04A+ERZ9wcc7cQ8lTkIA=="],
"@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="], "@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA=="],
"@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="], "@jest/schemas": ["@jest/schemas@29.6.3", "", { "dependencies": { "@sinclair/typebox": "^0.27.8" } }, "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA=="],
@@ -548,7 +524,7 @@
"ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="], "ansi-colors": ["ansi-colors@4.1.3", "", {}, "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw=="],
"ansi-escapes": ["ansi-escapes@4.3.2", "", { "dependencies": { "type-fest": "^0.21.3" } }, "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ=="], "ansi-escapes": ["ansi-escapes@7.0.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw=="],
"ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="], "ansi-regex": ["ansi-regex@6.1.0", "", {}, "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA=="],
@@ -656,8 +632,6 @@
"cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="], "cli-truncate": ["cli-truncate@4.0.0", "", { "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^7.0.0" } }, "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA=="],
"cli-width": ["cli-width@4.1.0", "", {}, "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ=="],
"client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="],
"clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="],
@@ -1268,8 +1242,6 @@
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"mute-stream": ["mute-stream@2.0.0", "", {}, "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA=="],
"mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="], "mz": ["mz@2.7.0", "", { "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", "thenify-all": "^1.0.0" } }, "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q=="],
"nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="], "nanoid": ["nanoid@3.3.8", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w=="],
@@ -1506,6 +1478,8 @@
"simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="], "simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
"slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="], "slash": ["slash@3.0.0", "", {}, "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="],
"slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="], "slice-ansi": ["slice-ansi@5.0.0", "", { "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" } }, "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ=="],
@@ -1726,8 +1700,6 @@
"yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="], "yocto-queue": ["yocto-queue@1.1.1", "", {}, "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g=="],
"yoctocolors-cjs": ["yoctocolors-cjs@2.1.2", "", {}, "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA=="],
"zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="], "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="],
"zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="],
@@ -1746,8 +1718,6 @@
"@changesets/write/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="], "@changesets/write/fs-extra": ["fs-extra@7.0.1", "", { "dependencies": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", "universalify": "^0.1.0" } }, "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw=="],
"@inquirer/core/wrap-ansi": ["wrap-ansi@6.2.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA=="],
"@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="], "@isaacs/cliui/string-width": ["string-width@5.1.2", "", { "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", "strip-ansi": "^7.0.1" } }, "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA=="],
"@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="], "@isaacs/cliui/wrap-ansi": ["wrap-ansi@8.1.0", "", { "dependencies": { "ansi-styles": "^6.1.0", "string-width": "^5.0.1", "strip-ansi": "^7.0.1" } }, "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ=="],
@@ -1778,8 +1748,6 @@
"@vitest/runner/p-limit": ["p-limit@5.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ=="], "@vitest/runner/p-limit": ["p-limit@5.0.0", "", { "dependencies": { "yocto-queue": "^1.0.0" } }, "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ=="],
"ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="],
"cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "cli-truncate/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="],
"enquirer/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="], "enquirer/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
@@ -1816,8 +1784,6 @@
"import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
"log-update/ansi-escapes": ["ansi-escapes@7.0.0", "", { "dependencies": { "environment": "^1.0.0" } }, "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw=="],
"log-update/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="], "log-update/cli-cursor": ["cli-cursor@5.0.0", "", { "dependencies": { "restore-cursor": "^5.0.0" } }, "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw=="],
"log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="], "log-update/slice-ansi": ["slice-ansi@7.1.0", "", { "dependencies": { "ansi-styles": "^6.2.1", "is-fullwidth-code-point": "^5.0.0" } }, "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg=="],
@@ -1904,10 +1870,6 @@
"@changesets/write/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="], "@changesets/write/fs-extra/universalify": ["universalify@0.1.2", "", {}, "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="],
"@inquirer/core/wrap-ansi/string-width": ["string-width@4.2.3", "", { "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" } }, "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g=="],
"@inquirer/core/wrap-ansi/strip-ansi": ["strip-ansi@6.0.1", "", { "dependencies": { "ansi-regex": "^5.0.1" } }, "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A=="],
"@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], "@isaacs/cliui/string-width/emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
"@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="], "@isaacs/cliui/wrap-ansi/ansi-styles": ["ansi-styles@6.2.1", "", {}, "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug=="],
@@ -2008,12 +1970,6 @@
"wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="], "wrap-ansi-cjs/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
"@inquirer/core/wrap-ansi/string-width/emoji-regex": ["emoji-regex@8.0.0", "", {}, "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A=="],
"@inquirer/core/wrap-ansi/string-width/is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="],
"@inquirer/core/wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],
"@manypkg/find-root/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="], "@manypkg/find-root/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="],
"log-update/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="], "log-update/cli-cursor/restore-cursor/onetime": ["onetime@7.0.0", "", { "dependencies": { "mimic-function": "^5.0.0" } }, "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ=="],