betterstart-cli 0.0.54 → 0.0.55

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -22232,18 +22232,11 @@ async function promptPresets(cwd, options = {}) {
22232
22232
 
22233
22233
  // adapters/next/init/prompts/project.ts
22234
22234
  import * as p13 from "@clack/prompts";
22235
- import pc2 from "picocolors";
22236
22235
  async function promptProject(defaultName) {
22237
22236
  const projectName = await p13.text({
22238
- message: [
22239
- "What is your project name?",
22240
- `${pc2.cyan("\u2502")} ${pc2.dim("If you don't want a directory created with the project name, just press `")}${pc2.bold(
22241
- pc2.cyan(".")
22242
- )}${pc2.dim("` and hit enter.")}`,
22243
- pc2.cyan("\u2502")
22244
- ].join("\n"),
22245
- placeholder: defaultName ?? "my-app",
22246
- defaultValue: defaultName ?? "my-app",
22237
+ message: "Enter the project name",
22238
+ placeholder: defaultName ?? "(Leave blank to skip directory creation)",
22239
+ defaultValue: defaultName ?? ".",
22247
22240
  validate: (value) => {
22248
22241
  if (!value?.trim()) return "Project name is required";
22249
22242
  if (value.trim() === ".") return void 0;
@@ -24101,11 +24094,11 @@ function scaffoldTsconfig(cwd, config) {
24101
24094
 
24102
24095
  // adapters/next/init/vercel/flow.ts
24103
24096
  import * as p17 from "@clack/prompts";
24104
- import pc6 from "picocolors";
24097
+ import pc5 from "picocolors";
24105
24098
 
24106
24099
  // adapters/next/init/vercel/auth.ts
24107
24100
  import * as p14 from "@clack/prompts";
24108
- import pc3 from "picocolors";
24101
+ import pc2 from "picocolors";
24109
24102
 
24110
24103
  // adapters/next/init/vercel/runner.ts
24111
24104
  import { spawn as spawn3 } from "child_process";
@@ -24330,7 +24323,7 @@ async function ensureVercelAuth(runner, cwd, options) {
24330
24323
  return { authed: false, reason: "login-failed" };
24331
24324
  }
24332
24325
  checkSpinner.clear();
24333
- const signInMessage = `Sign in to Vercel to continue ${pc3.dim("(or press Ctrl-C to enter a connection string manually)")}`;
24326
+ const signInMessage = `Sign in to Vercel to continue ${pc2.dim("(or press Ctrl-C to enter a connection string manually)")}`;
24334
24327
  const signInRows = clackLogRows(signInMessage);
24335
24328
  p14.log.info(signInMessage);
24336
24329
  let streamedRows = 0;
@@ -24360,12 +24353,12 @@ async function ensureVercelAuth(runner, cwd, options) {
24360
24353
  return { authed: false, reason: "login-failed" };
24361
24354
  }
24362
24355
  function signedInMessage(username) {
24363
- return username ? `Signed in to Vercel as ${pc3.cyan(username)}` : "Signed in to Vercel";
24356
+ return username ? `Signed in to Vercel as ${pc2.cyan(username)}` : "Signed in to Vercel";
24364
24357
  }
24365
24358
 
24366
24359
  // adapters/next/init/vercel/blob.ts
24367
24360
  import * as p15 from "@clack/prompts";
24368
- import pc4 from "picocolors";
24361
+ import pc3 from "picocolors";
24369
24362
 
24370
24363
  // adapters/next/init/vercel/env-pull.ts
24371
24364
  import fs34 from "fs";
@@ -24568,7 +24561,7 @@ async function provisionBlobStoreInteractive(runner, cwd, options) {
24568
24561
  terminalFallbackRan = true;
24569
24562
  quietSpinner.clear();
24570
24563
  p15.log.info(
24571
- `Create your Blob store in the Vercel prompts below ${pc4.dim(
24564
+ `Create your Blob store in the Vercel prompts below ${pc3.dim(
24572
24565
  "(connect it to all environments)."
24573
24566
  )}`
24574
24567
  );
@@ -24865,7 +24858,7 @@ function guardEnvLocal(cwd) {
24865
24858
 
24866
24859
  // adapters/next/init/vercel/neon.ts
24867
24860
  import * as p16 from "@clack/prompts";
24868
- import pc5 from "picocolors";
24861
+ import pc4 from "picocolors";
24869
24862
  var PROVISION_TIMEOUT_MS2 = 18e4;
24870
24863
  var INTERACTIVE_PROVISION_TIMEOUT_MS2 = 6e5;
24871
24864
  async function provisionNeonInteractive(runner, cwd, options) {
@@ -24883,7 +24876,7 @@ async function provisionNeonInteractive(runner, cwd, options) {
24883
24876
  }
24884
24877
  quietSpinner.clear();
24885
24878
  p16.log.info(
24886
- `Create your Neon database in the Vercel prompts below ${pc5.dim(
24879
+ `Create your Neon database in the Vercel prompts below ${pc4.dim(
24887
24880
  "(the Free plan is recommended)."
24888
24881
  )}`
24889
24882
  );
@@ -24963,7 +24956,7 @@ async function runVercelNeonFlow(options) {
24963
24956
  const neon = await provisionNeonForMode(runner, options);
24964
24957
  if (neon.failure) {
24965
24958
  p17.log.warn(neonFailureMessage(neon.failure));
24966
- if (neon.detail) p17.log.message(pc6.dim(neon.detail));
24959
+ if (neon.detail) p17.log.message(pc5.dim(neon.detail));
24967
24960
  return { ok: false };
24968
24961
  }
24969
24962
  const databaseUrl = await pullNeonDatabaseUrl(runner, options.cwd, env);
@@ -25001,7 +24994,7 @@ async function runVercelBlobFlow(options) {
25001
24994
  const blob = await provisionBlobForMode(runner, options);
25002
24995
  if (blob.failure || !blob.token) {
25003
24996
  p17.log.warn(blobFailureMessage(blob.failure));
25004
- if (blob.detail) p17.log.message(pc6.dim(blob.detail));
24997
+ if (blob.detail) p17.log.message(pc5.dim(blob.detail));
25005
24998
  return { ok: false };
25006
24999
  }
25007
25000
  return {
@@ -25039,7 +25032,7 @@ async function runVercelDeployFlow(options) {
25039
25032
  envSpinner.clear();
25040
25033
  for (const key of sync.failed) {
25041
25034
  p17.log.warn(
25042
- `Could not set ${pc6.cyan(key)} on Vercel \u2014 add it in the project's environment settings.`
25035
+ `Could not set ${pc5.cyan(key)} on Vercel \u2014 add it in the project's environment settings.`
25043
25036
  );
25044
25037
  }
25045
25038
  ensureVercelJsonFramework(options.cwd);
@@ -25054,7 +25047,7 @@ async function runVercelDeployFlow(options) {
25054
25047
  }
25055
25048
  for (const dep of packageGuard.localSpecDeps) {
25056
25049
  p17.log.warn(
25057
- `Dependency ${pc6.cyan(dep)} uses a local spec that cannot install on Vercel \u2014 the remote build may fail.`
25050
+ `Dependency ${pc5.cyan(dep)} uses a local spec that cannot install on Vercel \u2014 the remote build may fail.`
25058
25051
  );
25059
25052
  }
25060
25053
  const deploySpinner = spinner2();
@@ -25069,13 +25062,13 @@ async function runVercelDeployFlow(options) {
25069
25062
  packageGuard.restore();
25070
25063
  }
25071
25064
  if (deploy.failure) {
25072
- deploySpinner.stop(`${pc6.yellow("\u25B2")} ${deployFailureMessage(deploy.failure)}`);
25073
- if (deploy.detail) p17.log.message(pc6.dim(deploy.detail));
25065
+ deploySpinner.stop(`${pc5.yellow("\u25B2")} ${deployFailureMessage(deploy.failure)}`);
25066
+ if (deploy.detail) p17.log.message(pc5.dim(deploy.detail));
25074
25067
  printManualDeployHint();
25075
25068
  return { ok: false };
25076
25069
  }
25077
25070
  const url = deploy.url;
25078
- deploySpinner.stop(url ? `Deployed ${pc6.cyan(url)}` : "Deployed to Vercel");
25071
+ deploySpinner.stop(url ? `Deployed ${pc5.cyan(url)}` : "Deployed to Vercel");
25079
25072
  return { ok: true, url, syncedEnvKeys: sync.synced };
25080
25073
  } catch (error) {
25081
25074
  p17.log.warn(`Vercel deploy failed: ${error instanceof Error ? error.message : String(error)}`);
@@ -25086,12 +25079,12 @@ async function runVercelDeployFlow(options) {
25086
25079
  }
25087
25080
  }
25088
25081
  function printManualDeployHint() {
25089
- p17.log.info(`You can deploy manually: ${pc6.cyan("vercel deploy --prod")}`);
25082
+ p17.log.info(`You can deploy manually: ${pc5.cyan("vercel deploy --prod")}`);
25090
25083
  }
25091
25084
  async function ensureLinkedProject(runner, cwd, projectName, env, scope) {
25092
25085
  if (readLinkedProjectId(cwd)) return;
25093
25086
  const projectSpinner = spinner2();
25094
- projectSpinner.start(`Creating a Vercel project ${pc6.cyan(projectName)}`);
25087
+ projectSpinner.start(`Creating a Vercel project ${pc5.cyan(projectName)}`);
25095
25088
  const project2 = await createVercelProject(runner, cwd, projectName, { env, scope });
25096
25089
  projectSpinner.clear();
25097
25090
  if (!project2.linked || !project2.projectId) {
@@ -25103,7 +25096,7 @@ async function pullNeonDatabaseUrl(runner, cwd, env) {
25103
25096
  neonSpinner.start("Retrieving DATABASE_URL from Vercel");
25104
25097
  const databaseUrl = await pullVercelEnvValue(runner, cwd, readDbUrlFromDotenv, env);
25105
25098
  if (!databaseUrl) {
25106
- neonSpinner.stop(`${pc6.yellow("\u25B2")} No DATABASE_URL came back from Vercel`);
25099
+ neonSpinner.stop(`${pc5.yellow("\u25B2")} No DATABASE_URL came back from Vercel`);
25107
25100
  return void 0;
25108
25101
  }
25109
25102
  neonSpinner.clear();
@@ -25163,7 +25156,7 @@ function neonFailureMessage(reason) {
25163
25156
  }
25164
25157
 
25165
25158
  // adapters/next/commands/init.ts
25166
- import pc7 from "picocolors";
25159
+ import pc6 from "picocolors";
25167
25160
 
25168
25161
  // adapters/next/commands/seed.ts
25169
25162
  import fs38 from "fs";
@@ -25600,22 +25593,22 @@ async function runInitCommand(name, options) {
25600
25593
  if (forceMode) {
25601
25594
  const nuked = removeExistingAdminPaths(cwd, await resolveForceInitNamespaces(cwd, namespace));
25602
25595
  if (nuked > 0) {
25603
- p18.log.warn(`${pc7.yellow("Force mode:")} removed ${nuked} existing admin paths`);
25596
+ p18.log.warn(`${pc6.yellow("Force mode:")} removed ${nuked} existing admin paths`);
25604
25597
  }
25605
25598
  project2 = detectProject(cwd, namespace);
25606
25599
  } else if (project2.conflicts.length > 0) {
25607
- const conflictLines = project2.conflicts.map((c) => `${pc7.yellow("\u25B2")} ${c}`);
25600
+ const conflictLines = project2.conflicts.map((c) => `${pc6.yellow("\u25B2")} ${c}`);
25608
25601
  conflictLines.push(
25609
25602
  "",
25610
- pc7.dim(`Use ${pc7.bold("--force")} to remove existing admin files before scaffolding.`)
25603
+ pc6.dim(`Use ${pc6.bold("--force")} to remove existing admin files before scaffolding.`)
25611
25604
  );
25612
- p18.note(conflictLines.join("\n"), pc7.yellow("Conflicts"));
25605
+ p18.note(conflictLines.join("\n"), pc6.yellow("Conflicts"));
25613
25606
  if (!options.yes) {
25614
25607
  const proceed = await p18.confirm({
25615
25608
  message: [
25616
- `Continue with ${pc7.bold(pc7.cyan("--force"))}?`,
25617
- `${pc7.cyan("\u2502")} ${pc7.dim("This will force overwrite the existing admin code.")}`,
25618
- pc7.cyan("\u2502")
25609
+ `Continue with ${pc6.bold(pc6.cyan("--force"))}?`,
25610
+ `${pc6.cyan("\u2502")} ${pc6.dim("This will force overwrite the existing admin code.")}`,
25611
+ pc6.cyan("\u2502")
25619
25612
  ].join("\n"),
25620
25613
  initialValue: true
25621
25614
  });
@@ -25629,13 +25622,12 @@ async function runInitCommand(name, options) {
25629
25622
  await resolveForceInitNamespaces(cwd, namespace)
25630
25623
  );
25631
25624
  if (nuked > 0) {
25632
- p18.log.warn(`${pc7.yellow("Force mode:")} removed ${nuked} existing admin paths`);
25625
+ p18.log.warn(`${pc6.yellow("Force mode:")} removed ${nuked} existing admin paths`);
25633
25626
  }
25634
25627
  project2 = detectProject(cwd, namespace);
25635
25628
  }
25636
25629
  }
25637
25630
  } else {
25638
- p18.log.info("No Next.js app found \u2014 Running the fresh project mode...");
25639
25631
  let projectPrompt;
25640
25632
  try {
25641
25633
  projectPrompt = options.yes ? resolveNonInteractiveProject(name) : await promptProject(name);
@@ -25692,8 +25684,8 @@ async function runInitCommand(name, options) {
25692
25684
  p18.log.error(createNextAppResult.error);
25693
25685
  p18.log.info(
25694
25686
  `You can create the project manually:
25695
- ${pc7.cyan(`npx create-next-app@latest ${projectPrompt.projectName} --typescript --tailwind --app`)}
25696
- Then run ${pc7.cyan("betterstart init")} inside it.`
25687
+ ${pc6.cyan(`npx create-next-app@latest ${projectPrompt.projectName} --typescript --tailwind --app`)}
25688
+ Then run ${pc6.cyan("betterstart init")} inside it.`
25697
25689
  );
25698
25690
  process.exit(1);
25699
25691
  }
@@ -25710,13 +25702,13 @@ async function runInitCommand(name, options) {
25710
25702
  const manualCmd = `npx create-next-app@latest ${projectPrompt.projectName} --typescript --tailwind --app`;
25711
25703
  p18.log.info(
25712
25704
  `Create the project manually:
25713
- ${pc7.cyan(manualCmd)}
25714
- Then run ${pc7.cyan("betterstart init")} inside it.`
25705
+ ${pc6.cyan(manualCmd)}
25706
+ Then run ${pc6.cyan("betterstart init")} inside it.`
25715
25707
  );
25716
25708
  process.exit(1);
25717
25709
  }
25718
25710
  const installedNextVersion = detectInstalledNextVersion(cwd);
25719
- const nextVersionSuffix = installedNextVersion ? `${pc7.cyan(`v${installedNextVersion}`)}` : "";
25711
+ const nextVersionSuffix = installedNextVersion ? `${pc6.cyan(`v${installedNextVersion}`)}` : "";
25720
25712
  createNextAppSpinner.stop(`Created a Next.js ${nextVersionSuffix} app in ${displayName}`);
25721
25713
  project2 = detectProject(cwd, namespace);
25722
25714
  isFreshProject = true;
@@ -25728,7 +25720,7 @@ async function runInitCommand(name, options) {
25728
25720
  if (options.databaseUrl) {
25729
25721
  if (!isValidDbUrl(options.databaseUrl)) {
25730
25722
  p18.log.error(
25731
- `Invalid database URL. Must start with ${pc7.cyan("postgres://")} or ${pc7.cyan("postgresql://")}`
25723
+ `Invalid database URL. Must start with ${pc6.cyan("postgres://")} or ${pc6.cyan("postgresql://")}`
25732
25724
  );
25733
25725
  process.exit(1);
25734
25726
  }
@@ -25751,11 +25743,11 @@ async function runInitCommand(name, options) {
25751
25743
  const resourceUrl = flow.dashboardUrl ?? flow.resourceUrl;
25752
25744
  if (resourceUrl) {
25753
25745
  p18.log.info(
25754
- `Open ${pc7.cyan(resourceUrl)} to copy DATABASE_URL, then rerun ${pc7.cyan("betterstart init --database-url <url> --yes")}.`
25746
+ `Open ${pc6.cyan(resourceUrl)} to copy DATABASE_URL, then rerun ${pc6.cyan("betterstart init --database-url <url> --yes")}.`
25755
25747
  );
25756
25748
  } else {
25757
25749
  p18.log.info(
25758
- `Rerun ${pc7.cyan("betterstart init --database-url <url> --yes")} with a Postgres connection string.`
25750
+ `Rerun ${pc6.cyan("betterstart init --database-url <url> --yes")} with a Postgres connection string.`
25759
25751
  );
25760
25752
  }
25761
25753
  } else {
@@ -25764,7 +25756,7 @@ async function runInitCommand(name, options) {
25764
25756
  }
25765
25757
  } else if (existingDbUrl) {
25766
25758
  const masked = maskDbUrl(existingDbUrl);
25767
- p18.log.info(`Using the existing DATABASE_URL from .env.local ${pc7.dim(`(${masked})`)}`);
25759
+ p18.log.info(`Using the existing DATABASE_URL from .env.local ${pc6.dim(`(${masked})`)}`);
25768
25760
  databaseUrl = existingDbUrl;
25769
25761
  } else {
25770
25762
  const servicesResult = await promptServices({ allowVercel: options.vercel !== false });
@@ -25956,8 +25948,8 @@ async function runInitCommand(name, options) {
25956
25948
  p18.log.warning(depsResult.error ?? "Unknown error");
25957
25949
  p18.log.info(
25958
25950
  `You can install them manually:
25959
- ${pc7.cyan(`${pm} add ${depsResult.dependencies.join(" ")}`)}
25960
- ${pc7.cyan(`${pm} add -D ${depsResult.devDeps.join(" ")}`)}`
25951
+ ${pc6.cyan(`${pm} add ${depsResult.dependencies.join(" ")}`)}
25952
+ ${pc6.cyan(`${pm} add -D ${depsResult.devDeps.join(" ")}`)}`
25961
25953
  );
25962
25954
  }
25963
25955
  if (depsInstalled) {
@@ -26025,7 +26017,7 @@ async function runInitCommand(name, options) {
26025
26017
  }
26026
26018
  let dbPushed = false;
26027
26019
  if (depsResult.success && options.skipMigration && hasDbUrl(cwd)) {
26028
- p18.log.info(`Skipping database schema push ${pc7.dim("(--skip-migration)")}`);
26020
+ p18.log.info(`Skipping database schema push ${pc6.dim("(--skip-migration)")}`);
26029
26021
  } else if (depsResult.success && hasDbUrl(cwd)) {
26030
26022
  let driverReady = hasDrizzleKitPostgresDriverDependency(cwd);
26031
26023
  if (!driverReady) {
@@ -26042,11 +26034,11 @@ async function runInitCommand(name, options) {
26042
26034
  s.stop("Database push failed");
26043
26035
  p18.log.warning(driverResult.error ?? `Failed to install ${DRIZZLE_KIT_POSTGRES_DRIVER_DEP}`);
26044
26036
  p18.log.info(
26045
- `Install ${DRIZZLE_KIT_POSTGRES_DRIVER_DEP} manually, then run: ${pc7.cyan(drizzlePushCommand(pm))}`
26037
+ `Install ${DRIZZLE_KIT_POSTGRES_DRIVER_DEP} manually, then run: ${pc6.cyan(drizzlePushCommand(pm))}`
26046
26038
  );
26047
26039
  } else {
26048
26040
  driverReady = hasDrizzleKitPostgresDriverDependency(cwd);
26049
- s.stop(`${pc7.green("\u2713")} Drizzle Kit Postgres driver dependency installed`);
26041
+ s.stop(`${pc6.green("\u2713")} Drizzle Kit Postgres driver dependency installed`);
26050
26042
  }
26051
26043
  }
26052
26044
  if (driverReady) {
@@ -26088,7 +26080,7 @@ async function runInitCommand(name, options) {
26088
26080
  p18.log.error("Database was not reachable. Aborting setup.");
26089
26081
  process.exit(1);
26090
26082
  }
26091
- p18.log.info(`You can run it manually: ${pc7.cyan(drizzlePushCommand(pm))}`);
26083
+ p18.log.info(`You can run it manually: ${pc6.cyan(drizzlePushCommand(pm))}`);
26092
26084
  }
26093
26085
  }
26094
26086
  }
@@ -26098,7 +26090,7 @@ async function runInitCommand(name, options) {
26098
26090
  let adminAccountReady = false;
26099
26091
  if (dbPushed && options.skipAdminCreation) {
26100
26092
  p18.log.info(
26101
- `Skipping admin user creation ${pc7.dim(`(use ${betterstartExecCommand(pm, "seed")} later)`)}`
26093
+ `Skipping admin user creation ${pc6.dim(`(use ${betterstartExecCommand(pm, "seed")} later)`)}`
26102
26094
  );
26103
26095
  }
26104
26096
  if (dbPushed && !options.yes && !options.skipAdminCreation) {
@@ -26109,7 +26101,7 @@ async function runInitCommand(name, options) {
26109
26101
  const adminCheck = await checkExistingAdmin(cwd, adminDir, authBasePath);
26110
26102
  s.clear();
26111
26103
  if (adminCheck.error) {
26112
- p18.log.warning(`Could not verify existing admin account ${pc7.dim(`(${adminCheck.error})`)}`);
26104
+ p18.log.warning(`Could not verify existing admin account ${pc6.dim(`(${adminCheck.error})`)}`);
26113
26105
  if (isDatabaseReachabilityError(adminCheck.error)) {
26114
26106
  p18.log.error("Database was not reachable. Aborting setup.");
26115
26107
  process.exit(1);
@@ -26136,7 +26128,7 @@ async function runInitCommand(name, options) {
26136
26128
  }
26137
26129
  if (adminAction === "skip") {
26138
26130
  adminAccountReady = true;
26139
- p18.log.info(`Keeping existing admin account ${pc7.dim(`(${existingAdminLabel})`)}`);
26131
+ p18.log.info(`Keeping existing admin account ${pc6.dim(`(${existingAdminLabel})`)}`);
26140
26132
  } else {
26141
26133
  replaceExistingAdmin = true;
26142
26134
  }
@@ -26178,7 +26170,7 @@ async function runInitCommand(name, options) {
26178
26170
  seedOverwriteMode
26179
26171
  );
26180
26172
  if (seedResult.existingUser) {
26181
- s.stop(`${pc7.yellow("\u25B2")} An account already exists for ${credentials.email}`);
26173
+ s.stop(`${pc6.yellow("\u25B2")} An account already exists for ${credentials.email}`);
26182
26174
  const replace = await p18.confirm({
26183
26175
  message: "Replace the existing account with this email?",
26184
26176
  initialValue: false
@@ -26198,17 +26190,17 @@ async function runInitCommand(name, options) {
26198
26190
  }
26199
26191
  if (seedResult.success) {
26200
26192
  s.stop(
26201
- seedOverwriteMode === "admin" ? `${pc7.green("\u2713")} Admin user replaced` : `${pc7.green("\u2713")} Admin user created`
26193
+ seedOverwriteMode === "admin" ? `${pc6.green("\u2713")} Admin user replaced` : `${pc6.green("\u2713")} Admin user created`
26202
26194
  );
26203
26195
  seedSuccess = true;
26204
26196
  adminAccountReady = true;
26205
26197
  } else if (seedResult.error) {
26206
- s.stop(`${pc7.red("\u2717")} Failed to create admin user`);
26198
+ s.stop(`${pc6.red("\u2717")} Failed to create admin user`);
26207
26199
  p18.note(
26208
- `${pc7.red(seedResult.error)}
26200
+ `${pc6.red(seedResult.error)}
26209
26201
 
26210
- Run manually: ${pc7.cyan(betterstartExecCommand(pm, "seed"))}`,
26211
- pc7.red("Seed failed")
26202
+ Run manually: ${pc6.cyan(betterstartExecCommand(pm, "seed"))}`,
26203
+ pc6.red("Seed failed")
26212
26204
  );
26213
26205
  if (isDatabaseReachabilityError(seedResult.error)) {
26214
26206
  p18.log.error("Database was not reachable. Aborting setup.");
@@ -26638,10 +26630,10 @@ function stripAnsi2(value) {
26638
26630
  return value.replace(ANSI_ESCAPE_PATTERN2, "");
26639
26631
  }
26640
26632
  function printAdminReadyNote(state) {
26641
- const lines = [`Admin: ${pc7.cyan(state.adminLoginUrl)}`];
26633
+ const lines = [`Admin: ${pc6.cyan(state.adminLoginUrl)}`];
26642
26634
  if (state.adminEmail && state.adminPassword) {
26643
- lines.unshift(`Password: ${pc7.cyan(state.adminPassword)}`);
26644
- lines.unshift(`Admin user: ${pc7.cyan(state.adminEmail)}`);
26635
+ lines.unshift(`Password: ${pc6.cyan(state.adminPassword)}`);
26636
+ lines.unshift(`Admin user: ${pc6.cyan(state.adminEmail)}`);
26645
26637
  }
26646
26638
  p18.note(lines.join("\n"), "Admin ready");
26647
26639
  }
@@ -27011,7 +27003,7 @@ async function runRemoveSchemaCommand(schemaName, options) {
27011
27003
  import fs42 from "fs";
27012
27004
  import path55 from "path";
27013
27005
  import * as p22 from "@clack/prompts";
27014
- import pc8 from "picocolors";
27006
+ import pc7 from "picocolors";
27015
27007
 
27016
27008
  // adapters/next/commands/uninstall-cleaners.ts
27017
27009
  import fs41 from "fs";
@@ -27297,7 +27289,7 @@ function buildUninstallPlan(cwd, namespaceValue) {
27297
27289
  }
27298
27290
  async function runUninstallCommand(options) {
27299
27291
  const cwd = options.cwd ? path55.resolve(options.cwd) : process.cwd();
27300
- p22.intro(pc8.bgRed(pc8.white(" BetterStart Uninstall ")));
27292
+ p22.intro(pc7.bgRed(pc7.white(" BetterStart Uninstall ")));
27301
27293
  let namespace = DEFAULT_ADMIN_NAMESPACE;
27302
27294
  try {
27303
27295
  const config = await resolveConfig(cwd);
@@ -27306,14 +27298,14 @@ async function runUninstallCommand(options) {
27306
27298
  }
27307
27299
  const steps = buildUninstallPlan(cwd, namespace);
27308
27300
  if (steps.length === 0) {
27309
- p22.log.success(`${pc8.green("\u2713")} Nothing to remove \u2014 project is already clean.`);
27301
+ p22.log.success(`${pc7.green("\u2713")} Nothing to remove \u2014 project is already clean.`);
27310
27302
  p22.outro("Done");
27311
27303
  return;
27312
27304
  }
27313
27305
  const planLines = steps.map((step) => {
27314
27306
  const names = step.items.join(" ");
27315
- const countLabel = pc8.dim(`${step.count} ${step.unit}`);
27316
- return `${pc8.red("\xD7")} ${names} ${countLabel}`;
27307
+ const countLabel = pc7.dim(`${step.count} ${step.unit}`);
27308
+ return `${pc7.red("\xD7")} ${names} ${countLabel}`;
27317
27309
  });
27318
27310
  p22.note(planLines.join("\n"), "Uninstall plan");
27319
27311
  if (!options.force) {
@@ -27334,7 +27326,7 @@ async function runUninstallCommand(options) {
27334
27326
  }
27335
27327
  const parts = steps.map((step) => `${step.count} ${step.unit}`);
27336
27328
  s.stop(`Removed ${parts.join(", ")}`);
27337
- p22.note(pc8.dim("Database tables were NOT dropped \u2014 drop them manually if needed."), "Next steps");
27329
+ p22.note(pc7.dim("Database tables were NOT dropped \u2014 drop them manually if needed."), "Next steps");
27338
27330
  p22.outro("Uninstall complete");
27339
27331
  }
27340
27332