From 0bd0c8e59f416a1cef6daf1bd07fc8b58179cb16 Mon Sep 17 00:00:00 2001 From: Aman Varshney Date: Thu, 13 Feb 2025 16:50:48 +0530 Subject: [PATCH] colorize the prompts --- .changeset/stupid-masks-rest.md | 5 ++ apps/cli/src/{ => helpers}/create-project.ts | 65 ++++++++++++---- apps/cli/src/helpers/db-setup.ts | 10 ++- apps/cli/src/index.ts | 75 ++++++++++++++----- .../utils/generate-reproducible-command.ts | 21 ++++-- bun.lock | 40 ++++++---- 6 files changed, 160 insertions(+), 56 deletions(-) create mode 100644 .changeset/stupid-masks-rest.md rename apps/cli/src/{ => helpers}/create-project.ts (64%) diff --git a/.changeset/stupid-masks-rest.md b/.changeset/stupid-masks-rest.md new file mode 100644 index 0000000..8ce0dd8 --- /dev/null +++ b/.changeset/stupid-masks-rest.md @@ -0,0 +1,5 @@ +--- +"create-better-t-stack": patch +--- + +colorize the prompts diff --git a/apps/cli/src/create-project.ts b/apps/cli/src/helpers/create-project.ts similarity index 64% rename from apps/cli/src/create-project.ts rename to apps/cli/src/helpers/create-project.ts index 72c190d..b7f6d8c 100644 --- a/apps/cli/src/create-project.ts +++ b/apps/cli/src/helpers/create-project.ts @@ -1,13 +1,14 @@ import path from "node:path"; import { confirm, select } from "@inquirer/prompts"; +import chalk from "chalk"; import { $ } from "execa"; import fs from "fs-extra"; import ora from "ora"; -import { DEFAULT_CONFIG } from "./consts"; -import { setupTurso } from "./helpers/db-setup"; -import type { PackageManager, ProjectConfig } from "./types"; -import { getUserPkgManager } from "./utils/get-package-manager"; -import { logger } from "./utils/logger"; +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"; export async function createProject(options: ProjectConfig) { const spinner = ora("Creating project directory...").start(); @@ -16,16 +17,19 @@ export async function createProject(options: ProjectConfig) { try { await fs.ensureDir(projectDir); spinner.succeed(); + console.log(); spinner.start("Cloning template repository..."); await $`npx degit https://github.com/AmanVarshney01/Better-T-Stack.git ${projectDir}`; spinner.succeed(); + console.log(); const initGit = await confirm({ - message: "Initialize a git repository?", + message: chalk.blue.bold("šŸ”„ Initialize a git repository?"), default: true, }).catch((error) => { spinner.stop(); + console.log(); throw error; }); @@ -33,6 +37,7 @@ export async function createProject(options: ProjectConfig) { spinner.start("Initializing git repository..."); await $`git init ${projectDir}`; spinner.succeed(); + console.log(); } let packageManager = options.packageManager; @@ -41,7 +46,11 @@ export async function createProject(options: ProjectConfig) { const detectedPackageManager = getUserPkgManager(); const useDetectedPackageManager = await confirm({ - message: `Use detected package manager (${detectedPackageManager})?`, + message: chalk.blue.bold( + `šŸ“¦ Use detected package manager (${chalk.cyan( + detectedPackageManager, + )})?`, + ), default: true, }).catch((error) => { spinner.stop(); @@ -51,13 +60,34 @@ export async function createProject(options: ProjectConfig) { if (useDetectedPackageManager) { packageManager = detectedPackageManager; } else { + console.log(); packageManager = await select({ - message: "Select package manager:", + message: chalk.blue.bold("šŸ“¦ Select package manager:"), choices: [ - { value: "npm", name: "npm" }, - { value: "yarn", name: "yarn" }, - { value: "pnpm", name: "pnpm" }, - { value: "bun", name: "bun" }, + { + 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(); @@ -66,16 +96,22 @@ export async function createProject(options: ProjectConfig) { } } + console.log(); + const installDeps = await confirm({ - message: `Install dependencies using ${packageManager}?`, + message: chalk.blue.bold( + `šŸ“¦ Install dependencies using ${chalk.cyan(packageManager)}?`, + ), default: true, }).catch((error) => { spinner.stop(); throw error; }); + console.log(); + if (installDeps) { - spinner.start(`Installing dependencies using ${packageManager}...`); + spinner.start(`šŸ“¦ Installing dependencies using ${packageManager}...`); switch (packageManager ?? DEFAULT_CONFIG.packageManager) { case "npm": await $`npm install ${projectDir}`; @@ -93,6 +129,7 @@ export async function createProject(options: ProjectConfig) { throw new Error("Unsupported package manager"); } spinner.succeed(); + console.log(); } if (options.database === "libsql") { diff --git a/apps/cli/src/helpers/db-setup.ts b/apps/cli/src/helpers/db-setup.ts index 2665ff6..f8e63c7 100644 --- a/apps/cli/src/helpers/db-setup.ts +++ b/apps/cli/src/helpers/db-setup.ts @@ -1,6 +1,7 @@ import os from "node:os"; import path from "node:path"; import { confirm, input } from "@inquirer/prompts"; +import chalk from "chalk"; import { $ } from "execa"; import fs from "fs-extra"; import ora, { type Ora } from "ora"; @@ -17,6 +18,7 @@ async function loginToTurso(spinner: Ora) { spinner.start("Logging in to Turso..."); await $`turso auth login`; spinner.succeed("Logged in to Turso successfully!"); + console.log(); } catch (error) { spinner.fail("Failed to log in to Turso"); throw error; @@ -25,6 +27,7 @@ async function loginToTurso(spinner: Ora) { async function installTursoCLI(isMac: boolean, spinner: Ora) { try { + console.log(); spinner.start("Installing Turso CLI..."); if (isMac) { @@ -36,6 +39,7 @@ async function installTursoCLI(isMac: boolean, spinner: Ora) { } spinner.succeed("Turso CLI installed successfully!"); + console.log(); } catch (error) { if (error instanceof Error && error.message.includes("User force closed")) { spinner.stop(); @@ -108,7 +112,7 @@ export async function setupTurso(projectDir: string) { if (!isCliInstalled) { const shouldInstall = await confirm({ - message: "Would you like to install Turso CLI?", + message: chalk.blue.bold("šŸ”§ Would you like to install Turso CLI?"), default: true, }).catch((error) => { spinner.stop(); @@ -130,8 +134,9 @@ export async function setupTurso(projectDir: string) { } const defaultDbName = path.basename(projectDir); + let dbName = await input({ - message: `Enter database name (default: ${defaultDbName}):`, + message: chalk.blue.bold("šŸ’¾ Enter database name:"), default: defaultDbName, }).catch((error) => { spinner.stop(); @@ -141,6 +146,7 @@ export async function setupTurso(projectDir: string) { let success = false; while (!success) { try { + console.log(); spinner.start(`Creating Turso database "${dbName}"...`); const config = await createTursoDatabase(dbName); await writeEnvFile(projectDir, config); diff --git a/apps/cli/src/index.ts b/apps/cli/src/index.ts index 3481732..7665aa6 100644 --- a/apps/cli/src/index.ts +++ b/apps/cli/src/index.ts @@ -2,7 +2,7 @@ import { checkbox, confirm, input, select } from "@inquirer/prompts"; import chalk from "chalk"; import { Command } from "commander"; import { DEFAULT_CONFIG } from "./consts"; -import { createProject } from "./create-project"; +import { createProject } from "./helpers/create-project"; import { renderTitle } from "./render-title"; import type { PackageManager, @@ -36,59 +36,65 @@ async function gatherConfig( config.projectName = flags.projectName ?? (await input({ - message: "Project name:", + 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({ - message: chalk.cyan("Select database:"), + message: chalk.blue.bold("šŸ’¾ Select database:"), choices: [ { value: "libsql", - name: "libSQL", + name: chalk.green("libSQL"), description: chalk.dim( - "(Recommended) - Turso's embedded SQLite database", + "✨ (Recommended) - Turso's embedded SQLite database", ), }, { value: "postgres", - name: "PostgreSQL", - description: chalk.dim("Traditional relational database"), + name: chalk.yellow("PostgreSQL"), + description: chalk.dim("🐘 Traditional relational database"), }, ], }); } + console.log(); + config.auth = flags.auth ?? (await confirm({ - message: "Add authentication with Better-Auth?", + 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({ - message: chalk.cyan("Select additional features:"), + message: chalk.blue.bold("šŸŽÆ Select additional features:"), choices: [ { value: "docker", - name: "Docker setup", - description: chalk.dim("Containerize your application"), + name: chalk.cyan("Docker setup"), + description: chalk.dim("🐳 Containerize your application"), }, { value: "github-actions", - name: "GitHub Actions", - description: chalk.dim("CI/CD workflows"), + name: chalk.magenta("GitHub Actions"), + description: chalk.dim("⚔ CI/CD workflows"), }, { value: "SEO", - name: "Basic SEO setup", - description: chalk.dim("Search engine optimization configuration"), + name: chalk.green("Basic SEO setup"), + description: chalk.dim("šŸ” Search engine optimization configuration"), }, ], }); @@ -100,8 +106,7 @@ async function gatherConfig( async function main() { try { renderTitle(); - logger.info("\nšŸš€ Creating a new Better-T Stack project...\n"); - + logger.info(chalk.bold(" Creating a new Better-T Stack project...\n")); program .name("create-better-t-stack") .description("Create a new Better-T Stack project") @@ -140,8 +145,40 @@ async function main() { : await gatherConfig(flagConfig); if (options.yes) { - logger.info("Using default configuration"); - logger.info(JSON.stringify(config, null, 2)); + logger.info(chalk.blue.bold("\nšŸ“¦ Using default configuration:")); + const colorizedConfig = { + projectName: chalk.green(config.projectName), + database: chalk.yellow(config.database), + auth: chalk.cyan(config.auth), + features: config.features.map((feature) => chalk.magenta(feature)), + git: chalk.cyan(config.git), + }; + + console.log(); + console.log( + chalk.dim("ā”œā”€") + + chalk.blue(" Project Name: ") + + colorizedConfig.projectName, + ); + console.log( + chalk.dim("ā”œā”€") + chalk.blue(" Database: ") + colorizedConfig.database, + ); + console.log( + chalk.dim("ā”œā”€") + + chalk.blue(" Authentication: ") + + colorizedConfig.auth, + ); + console.log( + chalk.dim("ā”œā”€") + + chalk.blue(" Features: ") + + (colorizedConfig.features.length + ? colorizedConfig.features.join(", ") + : chalk.gray("none")), + ); + console.log( + chalk.dim("└─") + chalk.blue(" Git Init: ") + colorizedConfig.git, + ); + console.log(); } await createProject(config); diff --git a/apps/cli/src/utils/generate-reproducible-command.ts b/apps/cli/src/utils/generate-reproducible-command.ts index d674a90..bcce5d3 100644 --- a/apps/cli/src/utils/generate-reproducible-command.ts +++ b/apps/cli/src/utils/generate-reproducible-command.ts @@ -1,3 +1,4 @@ +import chalk from "chalk"; import { DEFAULT_CONFIG } from "../consts"; import type { ProjectConfig } from "../types"; import { getUserPkgManager } from "./get-package-manager"; @@ -7,23 +8,29 @@ export function generateReproducibleCommand(config: ProjectConfig): string { const defaultPackageManager = getUserPkgManager(); if (config.database !== DEFAULT_CONFIG.database) { - flags.push(`--database ${config.database}`); + flags.push(chalk.cyan(`--database ${config.database}`)); } + if (config.auth !== DEFAULT_CONFIG.auth) { - flags.push("--no-auth"); + flags.push(chalk.yellow("--no-auth")); } + if ( config.packageManager && config.packageManager !== defaultPackageManager ) { - flags.push(`--package-manager ${config.packageManager}`); + flags.push(chalk.magenta(`--package-manager ${config.packageManager}`)); } for (const feature of config.features) { - flags.push(`--${feature}`); + flags.push(chalk.green(`--${feature}`)); } - return `npx create-better-t-stack${ - config.projectName ? ` ${config.projectName}` : "" - }${flags.length > 0 ? ` ${flags.join(" ")}` : ""}`; + const baseCommand = chalk.bold("npx create-better-t-stack"); + const projectName = config.projectName + ? chalk.blue(` ${config.projectName}`) + : ""; + const flagString = flags.length > 0 ? ` ${flags.join(" ")}` : ""; + + return `${baseCommand}${projectName}${flagString}`; } diff --git a/bun.lock b/bun.lock index 1bdb7b6..00ca9d0 100644 --- a/bun.lock +++ b/bun.lock @@ -14,7 +14,7 @@ }, "apps/cli": { "name": "create-better-t-stack", - "version": "0.3.1", + "version": "0.3.3", "bin": { "create-better-t-stack": "dist/index.js" }, @@ -498,7 +498,7 @@ "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="], - "@types/node": ["@types/node@20.17.17", "", { "dependencies": { "undici-types": "~6.19.2" } }, "sha512-/WndGO4kIfMicEQLTi/mDANUu/iVUhT7KboZPdEqqHQ4aTS+3qT3U5gIqWDFV+XouorjfgGqvKILJeHhuQgFYg=="], + "@types/node": ["@types/node@20.17.18", "", { "dependencies": { "undici-types": "~6.19.2" } }, "sha512-9kS0opXVV3dJ+C7HPhXfDlOdMu4cjJSZhlSxlDK39IxVRxBbuiYjCkLYSO9d5UYqTd4DApxRK9T1xJiTAkfA0w=="], "@types/react": ["@types/react@19.0.8", "", { "dependencies": { "csstype": "^3.0.2" } }, "sha512-9P/o1IGdfmQxrujGbIMDyYaaCykhLKc0NGCtYcECNUr9UAaDe4gwvV9bR6tvd5Br1SG0j+PBpbKr2UYY8CwqSw=="], @@ -618,7 +618,7 @@ "call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], - "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g=="], + "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], "call-bound": ["call-bound@1.0.3", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "get-intrinsic": "^1.2.6" } }, "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA=="], @@ -756,7 +756,7 @@ "es-set-tostringtag": ["es-set-tostringtag@2.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", "hasown": "^2.0.2" } }, "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA=="], - "es-shim-unscopables": ["es-shim-unscopables@1.0.2", "", { "dependencies": { "hasown": "^2.0.0" } }, "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw=="], + "es-shim-unscopables": ["es-shim-unscopables@1.1.0", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw=="], "es-to-primitive": ["es-to-primitive@1.3.0", "", { "dependencies": { "is-callable": "^1.2.7", "is-date-object": "^1.0.5", "is-symbol": "^1.0.4" } }, "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g=="], @@ -1626,19 +1626,19 @@ "tsup": ["tsup@8.3.6", "", { "dependencies": { "bundle-require": "^5.0.0", "cac": "^6.7.14", "chokidar": "^4.0.1", "consola": "^3.2.3", "debug": "^4.3.7", "esbuild": "^0.24.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.24.0", "source-map": "0.8.0-beta.0", "sucrase": "^3.35.0", "tinyexec": "^0.3.1", "tinyglobby": "^0.2.9", "tree-kill": "^1.2.2" }, "peerDependencies": { "@microsoft/api-extractor": "^7.36.0", "@swc/core": "^1", "postcss": "^8.4.12", "typescript": ">=4.5.0" }, "optionalPeers": ["@microsoft/api-extractor", "@swc/core", "postcss", "typescript"], "bin": { "tsup": "dist/cli-default.js", "tsup-node": "dist/cli-node.js" } }, "sha512-XkVtlDV/58S9Ye0JxUUTcrQk4S+EqlOHKzg6Roa62rdjL1nGWNUstG0xgI4vanHdfIpjP448J8vlN0oK6XOJ5g=="], - "turbo": ["turbo@2.4.1", "", { "optionalDependencies": { "turbo-darwin-64": "2.4.1", "turbo-darwin-arm64": "2.4.1", "turbo-linux-64": "2.4.1", "turbo-linux-arm64": "2.4.1", "turbo-windows-64": "2.4.1", "turbo-windows-arm64": "2.4.1" }, "bin": { "turbo": "bin/turbo" } }, "sha512-XIIHXAhvD3sv34WLaN/969WTHCHYmm3zf0XQ+CrEP1A7ffIQG50cwNcp7Gh96CaGyjEXMh9odoHyggoZQ3Prvw=="], + "turbo": ["turbo@2.4.2", "", { "optionalDependencies": { "turbo-darwin-64": "2.4.2", "turbo-darwin-arm64": "2.4.2", "turbo-linux-64": "2.4.2", "turbo-linux-arm64": "2.4.2", "turbo-windows-64": "2.4.2", "turbo-windows-arm64": "2.4.2" }, "bin": { "turbo": "bin/turbo" } }, "sha512-Qxi0ioQCxMRUCcHKHZkTnYH8e7XCpNfg9QiJcyfWIc+ZXeaCjzV5rCGlbQlTXMAtI8qgfP8fZADv3CFtPwqdPQ=="], - "turbo-darwin-64": ["turbo-darwin-64@2.4.1", "", { "os": "darwin", "cpu": "x64" }, "sha512-oos3Gz5N6ol2/7+ys0wPENhl7ZzeVKIumn2BR7X2oE5dEPxNPDMOpKBwreU9ToCxM94e+uFTzKgjcUJpBqpTHA=="], + "turbo-darwin-64": ["turbo-darwin-64@2.4.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-HFfemyWB60CJtEvVQj9yby5rkkWw9fLAdLtAPGtPQoU3tKh8t/uzCAZKso2aPVbib9vGUuGbPGoGpaRXdVhj5g=="], - "turbo-darwin-arm64": ["turbo-darwin-arm64@2.4.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-NoIQsSSvCJDTShgX+v+doSP/g0kAhHhq5p2fpsEAlougs2wcQvwv/LndeqojzkHbxB39lOQmqBYHJcki46Q3oQ=="], + "turbo-darwin-arm64": ["turbo-darwin-arm64@2.4.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-uwSx1dsBSSFeEC0nxyx2O219FEsS/haiESaWwE9JI8mHkQK61s6w6fN2G586krKxyNam4AIxRltleL+O2Em94g=="], - "turbo-linux-64": ["turbo-linux-64@2.4.1", "", { "os": "linux", "cpu": "x64" }, "sha512-iXIeG8YhluaJF/5KQEudRf8ECBWND8X0yxXDrFIq2wmLLCg4A7gSSzVcBq30rYYeyyU4xMj/sm3HbsAaao3jjg=="], + "turbo-linux-64": ["turbo-linux-64@2.4.2", "", { "os": "linux", "cpu": "x64" }, "sha512-Fy/uL8z/LAYcPbm7a1LwFnTY9pIi5FAi12iuHsgB7zHjdh4eeIKS2NIg4nroAmTcUTUZ0/cVTo4bDOCUcS3aKw=="], - "turbo-linux-arm64": ["turbo-linux-arm64@2.4.1", "", { "os": "linux", "cpu": "arm64" }, "sha512-jd5apBV7lBGn3CnkQN/hEMbwazNgZcrwLt6DIkWy/TSi5xfSQEqcR3k9HxviQ7hKMcr1Q1hN6FHWm8Vw90Ej4A=="], + "turbo-linux-arm64": ["turbo-linux-arm64@2.4.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-AEA0d8h5W/K6iiXfEgiNwWt0yqRL1NpBs8zQCLdc4/L7WeYeJW3sORWX8zt7xhutF/KW9gTm8ehKpiK6cCIsAA=="], - "turbo-windows-64": ["turbo-windows-64@2.4.1", "", { "os": "win32", "cpu": "x64" }, "sha512-4RYRAijohyQ7uetZY4SSikSgGccq+7tmnljdm/XezpK9t0+3gldKA2vHF0++yLZeZr+CFgqmBeGSFi7B+vhc2g=="], + "turbo-windows-64": ["turbo-windows-64@2.4.2", "", { "os": "win32", "cpu": "x64" }, "sha512-CybtIZ9wRgnnNFVN9En9G+rxsO+mwU81fvW4RpE8BWyNEkhQ8J28qYf4PaimueMxGHHp/28i/G7Kcdn2GAWG0g=="], - "turbo-windows-arm64": ["turbo-windows-arm64@2.4.1", "", { "os": "win32", "cpu": "arm64" }, "sha512-4lZB0+AxWB01Adx5xHZhO746FgaHR0T3qzEDF2nf/nx8LAUtN3iwaZQgAsTsblaAKjiM7lxWDI0s/Q3fektsPg=="], + "turbo-windows-arm64": ["turbo-windows-arm64@2.4.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-7V0yneVPL8Y3TgrkUIjw7Odmwu1tHnyIiPHFM7eFcA7U+H6hPXyCxge7nC3wOKfjhKCQqUm+Vf/k6kjmLz5G4g=="], "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], @@ -1728,7 +1728,7 @@ "yoctocolors-cjs": ["yoctocolors-cjs@2.1.2", "", {}, "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA=="], - "zod": ["zod@3.24.1", "", {}, "sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A=="], + "zod": ["zod@3.24.2", "", {}, "sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ=="], "zwitch": ["zwitch@2.0.4", "", {}, "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A=="], @@ -1766,6 +1766,12 @@ "@next/eslint-plugin-next/fast-glob": ["fast-glob@3.3.1", "", { "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", "micromatch": "^4.0.4" } }, "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg=="], + "@types/fs-extra/@types/node": ["@types/node@22.13.1", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew=="], + + "@types/jsonfile/@types/node": ["@types/node@22.13.1", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew=="], + + "@types/through/@types/node": ["@types/node@22.13.1", "", { "dependencies": { "undici-types": "~6.20.0" } }, "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew=="], + "@typescript-eslint/typescript-estree/minimatch": ["minimatch@9.0.5", "", { "dependencies": { "brace-expansion": "^2.0.1" } }, "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow=="], "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.0", "", {}, "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw=="], @@ -1820,7 +1826,7 @@ "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="], - "mlly/pathe": ["pathe@2.0.2", "", {}, "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="], + "mlly/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], @@ -1830,7 +1836,7 @@ "parse-entities/@types/unist": ["@types/unist@2.0.11", "", {}, "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA=="], - "pkg-types/pathe": ["pathe@2.0.2", "", {}, "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w=="], + "pkg-types/pathe": ["pathe@2.0.3", "", {}, "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w=="], "pretty-format/ansi-styles": ["ansi-styles@5.2.0", "", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="], @@ -1918,6 +1924,12 @@ "@next/eslint-plugin-next/fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], + "@types/fs-extra/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], + + "@types/jsonfile/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], + + "@types/through/@types/node/undici-types": ["undici-types@6.20.0", "", {}, "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg=="], + "@typescript-eslint/typescript-estree/minimatch/brace-expansion": ["brace-expansion@2.0.1", "", { "dependencies": { "balanced-match": "^1.0.0" } }, "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA=="], "enquirer/strip-ansi/ansi-regex": ["ansi-regex@5.0.1", "", {}, "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ=="],