create-better-t-stack 3.36.1 → 3.36.3
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 +2 -2
- package/dist/index.mjs +1 -1
- package/dist/{src-CAiTgv6S.mjs → src-AlTJbWsW.mjs} +31 -21
- package/package.json +3 -3
package/dist/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { _ as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli, v as getLatestCLIVersion } from "./src-
|
|
2
|
+
import { _ as types_exports, i as SchemaNameSchema, l as create, m as getSchemaResult, s as add, u as createBtsCli, v as getLatestCLIVersion } from "./src-AlTJbWsW.mjs";
|
|
3
3
|
import z from "zod";
|
|
4
4
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
5
5
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
package/dist/index.d.mts
CHANGED
|
@@ -247,7 +247,7 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
|
|
|
247
247
|
}[] | undefined;
|
|
248
248
|
} | undefined;
|
|
249
249
|
ultracite?: {
|
|
250
|
-
linter?: "biome" | "oxlint" |
|
|
250
|
+
linter?: "biome" | "oxlint" | undefined;
|
|
251
251
|
editors?: ("void" | "antigravity" | "cursor" | "vscode" | "zed" | "windsurf" | "trae" | "codebuddy" | "bob" | "kiro")[] | undefined;
|
|
252
252
|
agents?: ("vercel" | "cline" | "codex" | "opencode" | "goose" | "amp" | "pi" | "qoder" | "droid" | "zencoder" | "mcpjam" | "bob" | "universal" | "claude" | "jules" | "replit" | "devin" | "lovable" | "ona" | "openclaw" | "continue" | "snowflake-cortex" | "deepagents" | "kimi-cli" | "mux" | "adal" | "copilot" | "aider" | "firebase-studio" | "open-hands" | "gemini" | "junie" | "augmentcode" | "kilo-code" | "roo-code" | "warp" | "crush" | "qwen" | "amazon-q-cli" | "firebender" | "cursor-cli" | "mistral-vibe")[] | undefined;
|
|
253
253
|
hooks?: ("cursor" | "windsurf" | "codebuddy" | "claude" | "copilot")[] | undefined;
|
|
@@ -357,7 +357,7 @@ declare const router: _$_trpc_server0.TRPCBuiltRouter<{
|
|
|
357
357
|
}[] | undefined;
|
|
358
358
|
} | undefined;
|
|
359
359
|
ultracite?: {
|
|
360
|
-
linter?: "biome" | "oxlint" |
|
|
360
|
+
linter?: "biome" | "oxlint" | undefined;
|
|
361
361
|
editors?: ("void" | "antigravity" | "cursor" | "vscode" | "zed" | "windsurf" | "trae" | "codebuddy" | "bob" | "kiro")[] | undefined;
|
|
362
362
|
agents?: ("vercel" | "cline" | "codex" | "opencode" | "goose" | "amp" | "pi" | "qoder" | "droid" | "zencoder" | "mcpjam" | "bob" | "universal" | "claude" | "jules" | "replit" | "devin" | "lovable" | "ona" | "openclaw" | "continue" | "snowflake-cortex" | "deepagents" | "kimi-cli" | "mux" | "adal" | "copilot" | "aider" | "firebase-studio" | "open-hands" | "gemini" | "junie" | "augmentcode" | "kilo-code" | "roo-code" | "warp" | "crush" | "qwen" | "amazon-q-cli" | "firebender" | "cursor-cli" | "mistral-vibe")[] | undefined;
|
|
363
363
|
hooks?: ("cursor" | "windsurf" | "codebuddy" | "claude" | "copilot")[] | undefined;
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { C as ProjectCreationError, S as DirectoryConflictError, T as ValidationError, a as TEMPLATE_COUNT, b as CompatibilityError, c as builder, d as createVirtual, f as docs, g as sponsors, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, w as UserCancelledError, x as DatabaseSetupError, y as CLIError } from "./src-
|
|
2
|
+
import { C as ProjectCreationError, S as DirectoryConflictError, T as ValidationError, a as TEMPLATE_COUNT, b as CompatibilityError, c as builder, d as createVirtual, f as docs, g as sponsors, h as router, i as SchemaNameSchema, l as create, m as getSchemaResult, n as GeneratorError, o as VirtualFileSystem, p as generate, r as Result, s as add, t as EMBEDDED_TEMPLATES, u as createBtsCli, w as UserCancelledError, x as DatabaseSetupError, y as CLIError } from "./src-AlTJbWsW.mjs";
|
|
3
3
|
export { CLIError, CompatibilityError, DatabaseSetupError, DirectoryConflictError, EMBEDDED_TEMPLATES, GeneratorError, ProjectCreationError, Result, SchemaNameSchema, TEMPLATE_COUNT, UserCancelledError, ValidationError, VirtualFileSystem, add, builder, create, createBtsCli, createVirtual, docs, generate, getSchemaResult, router, sponsors };
|
|
@@ -1256,7 +1256,7 @@ function getAddonDisplay(addon) {
|
|
|
1256
1256
|
break;
|
|
1257
1257
|
case "ultracite":
|
|
1258
1258
|
label = "Ultracite";
|
|
1259
|
-
hint = "Zero-config Biome
|
|
1259
|
+
hint = "Zero-config preset for Biome or Oxlint with AI integration";
|
|
1260
1260
|
break;
|
|
1261
1261
|
case "lefthook":
|
|
1262
1262
|
label = "Lefthook";
|
|
@@ -2895,11 +2895,12 @@ function hasNativeFrontend(frontend) {
|
|
|
2895
2895
|
}
|
|
2896
2896
|
function getRecommendedSourceKeys(config) {
|
|
2897
2897
|
const sources = [];
|
|
2898
|
-
const { frontend, backend, dbSetup, auth, examples, addons, orm } = config;
|
|
2898
|
+
const { frontend, backend, dbSetup, auth, examples, addons, orm, webDeploy, serverDeploy } = config;
|
|
2899
2899
|
if (hasReactBasedFrontend(frontend)) {
|
|
2900
2900
|
sources.push("vercel-labs/agent-skills");
|
|
2901
2901
|
sources.push("shadcn/ui");
|
|
2902
2902
|
}
|
|
2903
|
+
if ((webDeploy === "vercel" || serverDeploy === "vercel") && !sources.includes("vercel-labs/agent-skills")) sources.push("vercel-labs/agent-skills");
|
|
2903
2904
|
if (frontend.includes("next")) sources.push("vercel-labs/next-skills");
|
|
2904
2905
|
if (frontend.includes("nuxt")) sources.push("nuxt/ui");
|
|
2905
2906
|
if (frontend.includes("native-uniwind")) sources.push("heroui-inc/heroui");
|
|
@@ -2922,12 +2923,10 @@ function getRecommendedSourceKeys(config) {
|
|
|
2922
2923
|
}
|
|
2923
2924
|
const CURATED_SKILLS_BY_SOURCE = {
|
|
2924
2925
|
"vercel-labs/agent-skills": (config) => {
|
|
2925
|
-
const skills = [
|
|
2926
|
-
|
|
2927
|
-
"vercel-composition-patterns",
|
|
2928
|
-
"vercel-react-best-practices"
|
|
2929
|
-
];
|
|
2926
|
+
const skills = [];
|
|
2927
|
+
if (hasReactBasedFrontend(config.frontend)) skills.push("web-design-guidelines", "vercel-composition-patterns", "vercel-react-best-practices");
|
|
2930
2928
|
if (hasNativeFrontend(config.frontend)) skills.push("vercel-react-native-skills");
|
|
2929
|
+
if (config.webDeploy === "vercel" || config.serverDeploy === "vercel") skills.push("deploy-to-vercel");
|
|
2931
2930
|
return skills;
|
|
2932
2931
|
},
|
|
2933
2932
|
"vercel/ai": () => ["ai-sdk"],
|
|
@@ -3358,7 +3357,6 @@ async function postProcessTuiWorkspace(tuiDir) {
|
|
|
3358
3357
|
//#region src/helpers/addons/ultracite-setup.ts
|
|
3359
3358
|
const LINTERS = {
|
|
3360
3359
|
biome: { label: "Biome (Recommended)" },
|
|
3361
|
-
eslint: { label: "ESLint + Prettier + Stylelint" },
|
|
3362
3360
|
oxlint: { label: "Oxlint + Oxfmt" }
|
|
3363
3361
|
};
|
|
3364
3362
|
const AGENTS = {
|
|
@@ -3412,26 +3410,27 @@ const HOOKS = {
|
|
|
3412
3410
|
claude: { label: "Claude Code" },
|
|
3413
3411
|
copilot: { label: "GitHub Copilot" }
|
|
3414
3412
|
};
|
|
3413
|
+
const ULTRACITE_VERSION = "7.9.3";
|
|
3415
3414
|
const DEFAULT_LINTER = "biome";
|
|
3416
3415
|
const DEFAULT_EDITORS = ["vscode"];
|
|
3417
3416
|
const DEFAULT_AGENTS = ["universal"];
|
|
3418
3417
|
const DEFAULT_HOOKS = [];
|
|
3419
3418
|
function getFrameworksFromFrontend(frontend) {
|
|
3420
3419
|
const frameworkMap = {
|
|
3421
|
-
"tanstack-router": "react",
|
|
3422
|
-
"react-router": "react",
|
|
3423
|
-
"tanstack-start": "react",
|
|
3424
|
-
next: "next",
|
|
3425
|
-
nuxt: "vue",
|
|
3426
|
-
"native-bare": "react",
|
|
3427
|
-
"native-uniwind": "react",
|
|
3428
|
-
"native-unistyles": "react",
|
|
3429
|
-
svelte: "svelte",
|
|
3430
|
-
solid: "solid",
|
|
3431
|
-
astro: "astro"
|
|
3420
|
+
"tanstack-router": ["react", "tanstack"],
|
|
3421
|
+
"react-router": ["react", "remix"],
|
|
3422
|
+
"tanstack-start": ["react", "tanstack"],
|
|
3423
|
+
next: ["react", "next"],
|
|
3424
|
+
nuxt: ["vue"],
|
|
3425
|
+
"native-bare": ["react"],
|
|
3426
|
+
"native-uniwind": ["react"],
|
|
3427
|
+
"native-unistyles": ["react"],
|
|
3428
|
+
svelte: ["svelte"],
|
|
3429
|
+
solid: ["solid"],
|
|
3430
|
+
astro: ["astro"]
|
|
3432
3431
|
};
|
|
3433
3432
|
const frameworks = /* @__PURE__ */ new Set();
|
|
3434
|
-
for (const f of frontend)
|
|
3433
|
+
for (const f of frontend) for (const framework of frameworkMap[f] ?? []) frameworks.add(framework);
|
|
3435
3434
|
return Array.from(frameworks);
|
|
3436
3435
|
}
|
|
3437
3436
|
function buildUltraciteInitArgs({ packageManager, linter, frameworks, editors, agents, hooks, gitHooks }) {
|
|
@@ -3449,12 +3448,19 @@ function buildUltraciteInitArgs({ packageManager, linter, frameworks, editors, a
|
|
|
3449
3448
|
if (gitHooks.length > 0) ultraciteArgs.push("--integrations", ...gitHooks);
|
|
3450
3449
|
return [
|
|
3451
3450
|
...getPackageRunnerPrefix(packageManager),
|
|
3452
|
-
|
|
3451
|
+
`ultracite@${ULTRACITE_VERSION}`,
|
|
3453
3452
|
...ultraciteArgs,
|
|
3454
3453
|
"--skip-install",
|
|
3455
3454
|
"--quiet"
|
|
3456
3455
|
];
|
|
3457
3456
|
}
|
|
3457
|
+
async function removeHuskySampleHook(projectDir) {
|
|
3458
|
+
const hookPath = path.join(projectDir, ".husky", "pre-commit");
|
|
3459
|
+
if (!await fs.pathExists(hookPath)) return;
|
|
3460
|
+
const content = await fs.readFile(hookPath, "utf-8");
|
|
3461
|
+
const cleaned = content.split("\n").filter((line) => !/^(?:npm|pnpm|yarn|bun|deno)(?: run)? test$/.test(line.trim())).join("\n");
|
|
3462
|
+
if (cleaned !== content) await fs.writeFile(hookPath, cleaned);
|
|
3463
|
+
}
|
|
3458
3464
|
async function setupUltracite(config, gitHooks) {
|
|
3459
3465
|
if (shouldSkipExternalCommands()) return Result.ok(void 0);
|
|
3460
3466
|
const { packageManager, projectDir, frontend } = config;
|
|
@@ -3557,6 +3563,10 @@ async function setupUltracite(config, gitHooks) {
|
|
|
3557
3563
|
cliLog.error(pc.red("Failed to set up Ultracite"));
|
|
3558
3564
|
return initResult;
|
|
3559
3565
|
}
|
|
3566
|
+
if (gitHooks.includes("husky")) await Result.tryPromise({
|
|
3567
|
+
try: () => removeHuskySampleHook(projectDir),
|
|
3568
|
+
catch: (e) => e
|
|
3569
|
+
});
|
|
3560
3570
|
s.stop("Ultracite setup successfully!");
|
|
3561
3571
|
return Result.ok(void 0);
|
|
3562
3572
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-better-t-stack",
|
|
3
|
-
"version": "3.36.
|
|
3
|
+
"version": "3.36.3",
|
|
4
4
|
"description": "A modern CLI tool for scaffolding end-to-end type-safe TypeScript projects with best practices and customizable configurations",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"better-auth",
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
"prepublishOnly": "npm run build"
|
|
70
70
|
},
|
|
71
71
|
"dependencies": {
|
|
72
|
-
"@better-t-stack/template-generator": "^3.36.
|
|
73
|
-
"@better-t-stack/types": "^3.36.
|
|
72
|
+
"@better-t-stack/template-generator": "^3.36.3",
|
|
73
|
+
"@better-t-stack/types": "^3.36.3",
|
|
74
74
|
"@clack/core": "^1.4.1",
|
|
75
75
|
"@clack/prompts": "^1.5.1",
|
|
76
76
|
"@modelcontextprotocol/sdk": "1.29.0",
|