create-better-fullstack 1.4.15 → 1.4.16

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.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { s as createBtsCli } from "./src-D-YGZXlq.mjs";
2
+ import { s as createBtsCli } from "./src-BVbxA2WC.mjs";
3
3
 
4
4
  //#region src/cli.ts
5
5
  createBtsCli().run();
package/dist/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-D-YGZXlq.mjs";
2
+ import { a as builder, c as createVirtual, d as history, f as router, i as add, l as docs, n as TEMPLATE_COUNT, o as create, p as sponsors, r as VirtualFileSystem, s as createBtsCli, t as EMBEDDED_TEMPLATES, u as generateVirtualProject } from "./src-BVbxA2WC.mjs";
3
3
 
4
4
  export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
@@ -9,7 +9,7 @@ import envPaths from "env-paths";
9
9
  import fs from "fs-extra";
10
10
  import path from "node:path";
11
11
  import { fileURLToPath } from "node:url";
12
- import { ECOSYSTEM_GROUPS, EMBEDDED_TEMPLATES, EMBEDDED_TEMPLATES as EMBEDDED_TEMPLATES$1, TEMPLATE_COUNT, VirtualFileSystem, VirtualFileSystem as VirtualFileSystem$1, checkAllVersions, dependencyVersionMap, generateCliReport, generateVirtualProject, generateVirtualProject as generateVirtualProject$1, listEcosystems, processAddonTemplates, processAddonsDeps } from "@better-fullstack/template-generator";
12
+ import { ECOSYSTEM_GROUPS, EMBEDDED_TEMPLATES, EMBEDDED_TEMPLATES as EMBEDDED_TEMPLATES$1, TEMPLATE_COUNT, VirtualFileSystem, VirtualFileSystem as VirtualFileSystem$1, checkAllVersions, dependencyVersionMap, generateCliReport, generateVirtualProject, generateVirtualProject as generateVirtualProject$1, listEcosystems, processAddonTemplates, processAddonsDeps, validatePreflightConfig } from "@better-fullstack/template-generator";
13
13
  import gradient from "gradient-string";
14
14
  import path$1 from "path";
15
15
  import { writeTreeToFilesystem } from "@better-fullstack/template-generator/fs-writer";
@@ -7053,6 +7053,26 @@ function validateConfigCompatibility(config, providedFlags, options) {
7053
7053
  else validateConfigForProgrammaticUse(config);
7054
7054
  }
7055
7055
 
7056
+ //#endregion
7057
+ //#region src/utils/preflight-display.ts
7058
+ function displayPreflightWarnings({ warnings }) {
7059
+ if (warnings.length === 0) return;
7060
+ const count = warnings.length;
7061
+ const lines = [pc.bold(pc.yellow(`${count} feature${count > 1 ? "s" : ""} will not generate templates:`)), ""];
7062
+ warnings.forEach((w, i) => {
7063
+ const selected = Array.isArray(w.selectedValue) ? w.selectedValue.join(", ") : w.selectedValue;
7064
+ lines.push(` ${pc.yellow(`${i + 1}.`)} ${pc.bold(w.featureDisplayName)} ${pc.dim(`(${selected})`)}`);
7065
+ lines.push(` ${w.reason}`);
7066
+ w.suggestions.forEach((s) => lines.push(` ${pc.green("•")} ${s}`));
7067
+ if (i < count - 1) lines.push("");
7068
+ });
7069
+ consola.box({
7070
+ title: pc.yellow("Pre-flight Check"),
7071
+ message: lines.join("\n"),
7072
+ style: { borderColor: "yellow" }
7073
+ });
7074
+ }
7075
+
7056
7076
  //#endregion
7057
7077
  //#region src/utils/file-formatter.ts
7058
7078
  const formatOptions = {
@@ -8342,8 +8362,9 @@ async function displayPostInstallInstructions(config) {
8342
8362
  if (polarInstructions) output += `\n${polarInstructions.trim()}\n`;
8343
8363
  if (noOrmWarning) output += `\n${noOrmWarning.trim()}\n`;
8344
8364
  if (bunWebNativeWarning) output += `\n${bunWebNativeWarning.trim()}\n`;
8345
- output += `\n${pc.bold("Like Better Fullstack?")} Please consider giving us a star\n on GitHub:\n`;
8346
- output += pc.cyan("https://github.com/Marve10s/Better-Fullstack");
8365
+ output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow star the repo!\n`;
8366
+ output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
8367
+ output += pc.dim("Your star helps other developers discover the project.");
8347
8368
  consola$1.box(output);
8348
8369
  }
8349
8370
  function getNativeInstructions(isConvex, isBackendSelf, frontend, runCmd) {
@@ -8481,8 +8502,9 @@ function displayRustInstructions(config) {
8481
8502
  output += `${pc.cyan("•")} Check: cargo check\n`;
8482
8503
  output += `${pc.cyan("•")} Format: cargo fmt\n`;
8483
8504
  output += `${pc.cyan("•")} Lint: cargo clippy\n`;
8484
- output += `\n${pc.bold("Like Better Fullstack?")} Please consider giving us a star\n on GitHub:\n`;
8485
- output += pc.cyan("https://github.com/Marve10s/Better-Fullstack");
8505
+ output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow star the repo!\n`;
8506
+ output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
8507
+ output += pc.dim("Your star helps other developers discover the project.");
8486
8508
  consola$1.box(output);
8487
8509
  }
8488
8510
  function displayGoInstructions(config) {
@@ -8517,8 +8539,9 @@ function displayGoInstructions(config) {
8517
8539
  output += `\n${pc.bold("Your project will be available at:")}\n`;
8518
8540
  output += `${pc.cyan("•")} API: http://localhost:8080\n`;
8519
8541
  if (goApi === "grpc-go") output += `${pc.cyan("•")} gRPC: localhost:50051\n`;
8520
- output += `\n${pc.bold("Like Better Fullstack?")} Please consider giving us a star\n on GitHub:\n`;
8521
- output += pc.cyan("https://github.com/Marve10s/Better-Fullstack");
8542
+ output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow star the repo!\n`;
8543
+ output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
8544
+ output += pc.dim("Your star helps other developers discover the project.");
8522
8545
  consola$1.box(output);
8523
8546
  }
8524
8547
  function displayPythonInstructions(config) {
@@ -8562,8 +8585,9 @@ function displayPythonInstructions(config) {
8562
8585
  output += `${pc.cyan("•")} Lint: uv run ruff check .\n`;
8563
8586
  output += `\n${pc.bold("Your project will be available at:")}\n`;
8564
8587
  output += `${pc.cyan("•")} API: http://localhost:8000\n`;
8565
- output += `\n${pc.bold("Like Better Fullstack?")} Please consider giving us a star\n on GitHub:\n`;
8566
- output += pc.cyan("https://github.com/Marve10s/Better-Fullstack");
8588
+ output += `\n${pc.bold("Enjoying Better Fullstack?")} Help us grow star the repo!\n`;
8589
+ output += `${pc.cyan("https://github.com/Marve10s/Better-Fullstack")}\n`;
8590
+ output += pc.dim("Your star helps other developers discover the project.");
8567
8591
  consola$1.box(output);
8568
8592
  }
8569
8593
 
@@ -8770,6 +8794,8 @@ async function createProjectHandler(input, options = {}) {
8770
8794
  relativePath: finalPathInput
8771
8795
  };
8772
8796
  validateConfigCompatibility(config, providedFlags, cliInput);
8797
+ const yesPreflight = validatePreflightConfig(config);
8798
+ if (yesPreflight.hasWarnings && !isSilent()) displayPreflightWarnings(yesPreflight);
8773
8799
  if (!isSilent()) {
8774
8800
  log.info(pc.yellow("Using default/flag options (config prompts skipped):"));
8775
8801
  log.message(displayConfig(config));
@@ -8784,6 +8810,8 @@ async function createProjectHandler(input, options = {}) {
8784
8810
  }
8785
8811
  config = await gatherConfig(flagConfig, finalBaseName, finalResolvedPath, finalPathInput);
8786
8812
  }
8813
+ const preflight = validatePreflightConfig(config);
8814
+ if (preflight.hasWarnings && !isSilent()) displayPreflightWarnings(preflight);
8787
8815
  await createProject(config, { manualDb: cliInput.manualDb ?? input.manualDb });
8788
8816
  const reproducibleCommand = generateReproducibleCommand(config);
8789
8817
  if (!isSilent()) log.success(pc.blue(`You can reproduce this setup with the following command:\n${reproducibleCommand}`));
package/package.json CHANGED
@@ -1,30 +1,51 @@
1
1
  {
2
2
  "name": "create-better-fullstack",
3
- "version": "1.4.15",
3
+ "version": "1.4.16",
4
4
  "description": "Scaffold production-ready fullstack apps in seconds. Pick your stack from 270+ options — the CLI wires everything together.",
5
5
  "keywords": [
6
+ "angular",
7
+ "astro",
8
+ "authentication",
6
9
  "better-auth",
7
10
  "better-fullstack",
8
11
  "biome",
9
12
  "boilerplate",
13
+ "bun",
10
14
  "cli",
15
+ "create",
16
+ "create-app",
17
+ "desktop",
18
+ "developer-tools",
19
+ "docker",
11
20
  "drizzle",
12
21
  "elysia",
13
22
  "expo",
23
+ "fastapi",
14
24
  "fullstack",
15
25
  "go",
16
26
  "golang",
17
27
  "hono",
28
+ "mobile",
18
29
  "monorepo",
30
+ "nextjs",
31
+ "nuxt",
32
+ "payments",
33
+ "pnpm",
19
34
  "prisma",
35
+ "project-generator",
20
36
  "pwa",
21
37
  "python",
22
38
  "react",
23
39
  "react-native",
24
40
  "rust",
41
+ "scaffold",
25
42
  "scaffolding",
26
43
  "shadcn",
44
+ "solid",
27
45
  "starter",
46
+ "starter-kit",
47
+ "svelte",
48
+ "sveltekit",
28
49
  "tailwind",
29
50
  "tanstack",
30
51
  "tauri",
@@ -33,6 +54,9 @@
33
54
  "turborepo",
34
55
  "type-safety",
35
56
  "typescript",
57
+ "vite",
58
+ "vue",
59
+ "web-app",
36
60
  "yarn"
37
61
  ],
38
62
  "homepage": "https://better-fullstack.dev/",
@@ -75,7 +99,8 @@
75
99
  "test:watch": "bun test --watch",
76
100
  "test:coverage": "bun test --coverage",
77
101
  "test:ci": "CI=1 bun test --bail=5",
78
- "test:e2e": "E2E=1 bun test test/e2e/e2e.e2e.ts",
102
+ "test:e2e": "E2E=1 bun test test/e2e/e2e.e2e.ts --timeout 600000",
103
+ "test:integration": "bun test test/e2e/cli-interaction.test.ts test/e2e/cli-binary.test.ts",
79
104
  "test:astro-combos": "bun run scripts/test-astro-combinations.ts",
80
105
  "test:matrix": "MATRIX_MODE=batched bun test ./test/matrix/matrix-test.test.ts",
81
106
  "test:matrix:fast": "MATRIX_MODE=sample MATRIX_SAMPLE=0.1 bun test ./test/matrix/matrix-test.test.ts",
@@ -83,11 +108,11 @@
83
108
  "prepublishOnly": "npm run build"
84
109
  },
85
110
  "dependencies": {
86
- "@better-fullstack/template-generator": "^1.4.15",
87
- "@better-fullstack/types": "^1.4.15",
111
+ "@better-fullstack/template-generator": "^1.4.16",
112
+ "@better-fullstack/types": "^1.4.16",
88
113
  "@clack/core": "^0.5.0",
89
114
  "@clack/prompts": "^1.1.0",
90
- "@orpc/server": "^1.13.7",
115
+ "@orpc/server": "^1.13.9",
91
116
  "consola": "^3.4.2",
92
117
  "env-paths": "^4.0.0",
93
118
  "execa": "^9.6.1",
@@ -100,11 +125,11 @@
100
125
  "tinyglobby": "^0.2.15",
101
126
  "trpc-cli": "^0.12.1",
102
127
  "ts-morph": "^27.0.2",
103
- "yaml": "^2.8.2",
128
+ "yaml": "^2.8.3",
104
129
  "zod": "^4.3.6"
105
130
  },
106
131
  "devDependencies": {
107
- "@types/bun": "^1.3.10",
132
+ "@types/bun": "^1.3.11",
108
133
  "@types/fs-extra": "^11.0.4",
109
134
  "@types/node": "^25.5.0",
110
135
  "publint": "^0.3.18",