create-better-fullstack 1.4.13 → 1.4.14
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 +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.mjs +1 -1
- package/dist/{src-Cmf5RSiE.mjs → src-DkmebgOw.mjs} +28 -4
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
package/dist/index.d.mts
CHANGED
|
@@ -267,6 +267,7 @@ declare const router: {
|
|
|
267
267
|
none: "none";
|
|
268
268
|
ai: "ai";
|
|
269
269
|
"chat-sdk": "chat-sdk";
|
|
270
|
+
"tanstack-showcase": "tanstack-showcase";
|
|
270
271
|
}>>>;
|
|
271
272
|
git: z.ZodOptional<z.ZodBoolean>;
|
|
272
273
|
packageManager: z.ZodOptional<z.ZodEnum<{
|
|
@@ -536,7 +537,7 @@ declare const router: {
|
|
|
536
537
|
runtime: "none" | "bun" | "node" | "workers";
|
|
537
538
|
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
538
539
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer")[];
|
|
539
|
-
examples: ("ai" | "none" | "chat-sdk")[];
|
|
540
|
+
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
540
541
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
541
542
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
542
543
|
git: boolean;
|
|
@@ -622,7 +623,7 @@ declare const router: {
|
|
|
622
623
|
runtime: "none" | "bun" | "node" | "workers";
|
|
623
624
|
frontend: ("none" | "tanstack-router" | "react-router" | "react-vite" | "tanstack-start" | "next" | "nuxt" | "native-bare" | "native-uniwind" | "native-unistyles" | "svelte" | "solid" | "solid-start" | "astro" | "qwik" | "angular" | "redwood" | "fresh")[];
|
|
624
625
|
addons: ("none" | "pwa" | "tauri" | "starlight" | "biome" | "lefthook" | "husky" | "ruler" | "mcp" | "skills" | "turborepo" | "fumadocs" | "ultracite" | "oxlint" | "opentui" | "wxt" | "msw" | "storybook" | "tanstack-query" | "tanstack-table" | "tanstack-virtual" | "tanstack-db" | "tanstack-pacer")[];
|
|
625
|
-
examples: ("ai" | "none" | "chat-sdk")[];
|
|
626
|
+
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
626
627
|
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
627
628
|
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
628
629
|
git: boolean;
|
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-
|
|
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-DkmebgOw.mjs";
|
|
3
3
|
|
|
4
4
|
export { EMBEDDED_TEMPLATES, TEMPLATE_COUNT, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|
|
@@ -835,6 +835,10 @@ function validatePaymentsCompatibility(payments, auth, _backend, frontends = [])
|
|
|
835
835
|
function validateExamplesCompatibility(examples, backend, frontend, runtime, ai) {
|
|
836
836
|
const examplesArr = examples ?? [];
|
|
837
837
|
if (examplesArr.length === 0 || examplesArr.includes("none")) return;
|
|
838
|
+
if (examplesArr.includes("tanstack-showcase")) {
|
|
839
|
+
const showcaseFrontends = ["tanstack-router", "tanstack-start"];
|
|
840
|
+
if (!(frontend ?? []).some((f) => showcaseFrontends.includes(f))) exitWithError("The 'tanstack-showcase' example requires TanStack Router or TanStack Start frontend.");
|
|
841
|
+
}
|
|
838
842
|
if (examplesArr.includes("ai") && (frontend ?? []).includes("solid")) exitWithError("The 'ai' example is not compatible with the Solid frontend.");
|
|
839
843
|
if (examplesArr.includes("ai") && (frontend ?? []).includes("solid-start")) exitWithError("The 'ai' example is not compatible with the SolidStart frontend.");
|
|
840
844
|
if (examplesArr.includes("ai") && backend === "convex") {
|
|
@@ -857,6 +861,24 @@ function validateExamplesCompatibility(examples, backend, frontend, runtime, ai)
|
|
|
857
861
|
}
|
|
858
862
|
}
|
|
859
863
|
/**
|
|
864
|
+
* Validates that TanStack AI is only used with compatible frontends (React or Solid).
|
|
865
|
+
* Server-side @tanstack/ai core works anywhere, but client adapters only exist for React and Solid.
|
|
866
|
+
*/
|
|
867
|
+
function validateAIFrontendCompatibility(ai, frontends = []) {
|
|
868
|
+
if (!ai || ai !== "tanstack-ai") return;
|
|
869
|
+
const compatibleFrontends = [
|
|
870
|
+
"tanstack-router",
|
|
871
|
+
"react-router",
|
|
872
|
+
"react-vite",
|
|
873
|
+
"tanstack-start",
|
|
874
|
+
"next",
|
|
875
|
+
"redwood",
|
|
876
|
+
"solid",
|
|
877
|
+
"solid-start"
|
|
878
|
+
];
|
|
879
|
+
if (!frontends.some((f) => compatibleFrontends.includes(f))) exitWithError("TanStack AI requires React or Solid frontend (no Vue/Svelte/Angular adapter yet). Please use a React-based frontend (Next.js, TanStack Router, React Router, etc.) or Solid.");
|
|
880
|
+
}
|
|
881
|
+
/**
|
|
860
882
|
* Validates that a UI library is compatible with the selected frontend(s)
|
|
861
883
|
*/
|
|
862
884
|
function validateUILibraryFrontendCompatibility(uiLibrary, frontends = [], astroIntegration) {
|
|
@@ -6922,6 +6944,7 @@ function validateFullConfig(config, providedFlags, options) {
|
|
|
6922
6944
|
}
|
|
6923
6945
|
validateExamplesCompatibility(config.examples ?? [], config.backend, config.frontend ?? [], config.runtime, config.ai);
|
|
6924
6946
|
validatePaymentsCompatibility(config.payments, config.auth, config.backend, config.frontend ?? []);
|
|
6947
|
+
validateAIFrontendCompatibility(config.ai, config.frontend ?? []);
|
|
6925
6948
|
validateUILibraryFrontendCompatibility(config.uiLibrary, config.frontend ?? [], config.astroIntegration);
|
|
6926
6949
|
validateUILibraryCSSFrameworkCompatibility(config.uiLibrary, config.cssFramework);
|
|
6927
6950
|
validateShadcnConstraints(config, providedFlags);
|
|
@@ -6936,12 +6959,13 @@ function validateConfigForProgrammaticUse(config) {
|
|
|
6936
6959
|
validatePaymentsCompatibility(config.payments, config.auth, config.backend, config.frontend);
|
|
6937
6960
|
if (config.addons && config.addons.length > 0) validateAddonsAgainstFrontends(config.addons, config.frontend, config.auth);
|
|
6938
6961
|
validateExamplesCompatibility(config.examples ?? [], config.backend, config.frontend ?? [], config.runtime, config.ai);
|
|
6962
|
+
validateAIFrontendCompatibility(config.ai, config.frontend ?? []);
|
|
6939
6963
|
validateUILibraryFrontendCompatibility(config.uiLibrary, config.frontend ?? [], config.astroIntegration);
|
|
6940
6964
|
validateUILibraryCSSFrameworkCompatibility(config.uiLibrary, config.cssFramework);
|
|
6941
6965
|
validatePeerDependencies(config);
|
|
6942
6966
|
} catch (error) {
|
|
6943
6967
|
if (error instanceof Error) throw error;
|
|
6944
|
-
throw new Error(String(error));
|
|
6968
|
+
throw new Error(String(error), { cause: error });
|
|
6945
6969
|
}
|
|
6946
6970
|
}
|
|
6947
6971
|
|
|
@@ -7070,7 +7094,7 @@ async function addEnvVariablesToFile(envPath, variables) {
|
|
|
7070
7094
|
if (variable.condition === false || !variable.key) continue;
|
|
7071
7095
|
keysToAdd.set(variable.key, variable.value);
|
|
7072
7096
|
}
|
|
7073
|
-
|
|
7097
|
+
const foundKeys = /* @__PURE__ */ new Set();
|
|
7074
7098
|
for (const line of existingLines) {
|
|
7075
7099
|
const trimmedLine = line.trim();
|
|
7076
7100
|
let lineProcessed = false;
|
|
@@ -7808,7 +7832,7 @@ async function installTursoCLI(isMac) {
|
|
|
7808
7832
|
if (error instanceof Error && error.message.includes("User force closed")) {
|
|
7809
7833
|
s.stop("Turso CLI installation cancelled");
|
|
7810
7834
|
log.warn(pc.yellow("Turso CLI installation cancelled by user"));
|
|
7811
|
-
throw new Error("Installation cancelled");
|
|
7835
|
+
throw new Error("Installation cancelled", { cause: error });
|
|
7812
7836
|
}
|
|
7813
7837
|
s.stop(pc.red("Failed to install Turso CLI"));
|
|
7814
7838
|
}
|
|
@@ -7866,7 +7890,7 @@ async function createTursoDatabase(dbName, groupName) {
|
|
|
7866
7890
|
s.stop(`Turso database "${dbName}" created`);
|
|
7867
7891
|
} catch (error) {
|
|
7868
7892
|
s.stop(pc.red(`Failed to create database "${dbName}"`));
|
|
7869
|
-
if (error instanceof Error && error.message.includes("already exists")) throw new Error("DATABASE_EXISTS");
|
|
7893
|
+
if (error instanceof Error && error.message.includes("already exists")) throw new Error("DATABASE_EXISTS", { cause: error });
|
|
7870
7894
|
}
|
|
7871
7895
|
s.start("Retrieving database connection details...");
|
|
7872
7896
|
try {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-fullstack",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.14",
|
|
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
6
|
"better-auth",
|
|
@@ -83,8 +83,8 @@
|
|
|
83
83
|
"prepublishOnly": "npm run build"
|
|
84
84
|
},
|
|
85
85
|
"dependencies": {
|
|
86
|
-
"@better-fullstack/template-generator": "^1.4.
|
|
87
|
-
"@better-fullstack/types": "^1.4.
|
|
86
|
+
"@better-fullstack/template-generator": "^1.4.14",
|
|
87
|
+
"@better-fullstack/types": "^1.4.14",
|
|
88
88
|
"@clack/core": "^0.5.0",
|
|
89
89
|
"@clack/prompts": "^1.0.0-alpha.8",
|
|
90
90
|
"@orpc/server": "^1.13.0",
|