create-better-fullstack 1.7.1 → 1.8.1
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/README.md +2 -2
- package/dist/addons-setup-CJwQAWFg.mjs +5 -0
- package/dist/{addons-setup-CGhYT2qC.mjs → addons-setup-CUmA_nra.mjs} +5 -5
- package/dist/{bts-config-bOXo9tbL.mjs → bts-config-YcroedMK.mjs} +45 -0
- package/dist/cli.mjs +1 -1
- package/dist/index.d.mts +258 -30
- package/dist/index.mjs +1084 -54
- package/dist/{mcp-BxEilSGM.mjs → mcp-DoPutOIG.mjs} +1 -1
- package/dist/mcp-entry.mjs +194 -41
- package/package.json +9 -9
- package/dist/addons-setup-BdKQJ1h6.mjs +0 -5
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Configure your stack visually — pick every option from a UI, preview your choi
|
|
|
32
32
|
## Features
|
|
33
33
|
|
|
34
34
|
- **425 options** — frontend, backend, database, auth, payments, AI, DevOps, and more
|
|
35
|
-
- **
|
|
35
|
+
- **7 ecosystems** — TypeScript, React Native, Rust, Python, Go, Java, Elixir
|
|
36
36
|
- **Visual builder** — configure your stack in the browser
|
|
37
37
|
- **Wired for you** — every picked integration is preconfigured and working out of the box
|
|
38
38
|
|
|
@@ -42,7 +42,7 @@ Configure your stack visually — pick every option from a UI, preview your choi
|
|
|
42
42
|
--yes # Accept all defaults
|
|
43
43
|
--yolo # Scaffold a random stack — good for exploring
|
|
44
44
|
--template <name> # Use a preset (t3, mern, pern, uniwind)
|
|
45
|
-
--ecosystem <lang> # Start in typescript, rust, python, go, or
|
|
45
|
+
--ecosystem <lang> # Start in typescript, react-native, rust, python, go, java, or elixir mode
|
|
46
46
|
--version-channel # Dependency channel: stable, latest, beta
|
|
47
47
|
--no-git # Skip git initialization
|
|
48
48
|
--no-install # Skip dependency installation
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { s as dependencyVersionMap, t as readBtsConfig } from "./bts-config-
|
|
2
|
+
import { s as dependencyVersionMap, t as readBtsConfig } from "./bts-config-YcroedMK.mjs";
|
|
3
3
|
import { autocompleteMultiselect, cancel, group, isCancel, log, multiselect, select, spinner } from "@clack/prompts";
|
|
4
4
|
import pc from "picocolors";
|
|
5
5
|
import fs from "fs-extra";
|
|
@@ -377,7 +377,7 @@ function uniqueValues$1(values) {
|
|
|
377
377
|
return Array.from(new Set(values));
|
|
378
378
|
}
|
|
379
379
|
function hasReactBasedFrontend$1(frontend) {
|
|
380
|
-
return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next");
|
|
380
|
+
return frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("tanstack-start") || frontend.includes("next") || frontend.includes("vinext");
|
|
381
381
|
}
|
|
382
382
|
function hasNativeFrontend$1(frontend) {
|
|
383
383
|
return frontend.includes("native-bare") || frontend.includes("native-uniwind") || frontend.includes("native-unistyles");
|
|
@@ -409,7 +409,7 @@ function getRecommendedMcpServers(config) {
|
|
|
409
409
|
name: "shadcn",
|
|
410
410
|
target: "npx -y shadcn@latest mcp"
|
|
411
411
|
});
|
|
412
|
-
if (config.frontend.includes("next")) servers.push({
|
|
412
|
+
if (config.frontend.includes("next") || config.frontend.includes("vinext")) servers.push({
|
|
413
413
|
key: "next-devtools",
|
|
414
414
|
label: "Next Devtools",
|
|
415
415
|
name: "next-devtools",
|
|
@@ -1331,11 +1331,11 @@ async function setupWxt(config) {
|
|
|
1331
1331
|
async function setupAddons(config) {
|
|
1332
1332
|
const warnings = [];
|
|
1333
1333
|
const { addons, frontend, projectDir } = config;
|
|
1334
|
-
const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("next");
|
|
1334
|
+
const hasReactWebFrontend = frontend.includes("react-router") || frontend.includes("react-vite") || frontend.includes("tanstack-router") || frontend.includes("next") || frontend.includes("vinext");
|
|
1335
1335
|
const hasNuxtFrontend = frontend.includes("nuxt");
|
|
1336
1336
|
const hasSvelteFrontend = frontend.includes("svelte");
|
|
1337
1337
|
const hasSolidFrontend = frontend.includes("solid");
|
|
1338
|
-
const hasNextFrontend = frontend.includes("next");
|
|
1338
|
+
const hasNextFrontend = frontend.includes("next") || frontend.includes("vinext");
|
|
1339
1339
|
if (addons.includes("tauri") && (hasReactWebFrontend || hasNuxtFrontend || hasSvelteFrontend || hasSolidFrontend || hasNextFrontend)) await /* @__PURE__ */ setupTauri(config);
|
|
1340
1340
|
const hasUltracite = addons.includes("ultracite");
|
|
1341
1341
|
const hasBiome = addons.includes("biome");
|
|
@@ -47,6 +47,7 @@ const DEFAULT_UI_LIBRARY_BY_FRONTEND = {
|
|
|
47
47
|
"react-vite": "shadcn-ui",
|
|
48
48
|
"tanstack-start": "shadcn-ui",
|
|
49
49
|
next: "shadcn-ui",
|
|
50
|
+
vinext: "shadcn-ui",
|
|
50
51
|
nuxt: "daisyui",
|
|
51
52
|
svelte: "daisyui",
|
|
52
53
|
solid: "daisyui",
|
|
@@ -109,6 +110,13 @@ async function writeBtsConfig(projectConfig) {
|
|
|
109
110
|
observability: projectConfig.observability,
|
|
110
111
|
featureFlags: projectConfig.featureFlags,
|
|
111
112
|
analytics: projectConfig.analytics,
|
|
113
|
+
mobileNavigation: projectConfig.mobileNavigation,
|
|
114
|
+
mobileUI: projectConfig.mobileUI,
|
|
115
|
+
mobileStorage: projectConfig.mobileStorage,
|
|
116
|
+
mobileTesting: projectConfig.mobileTesting,
|
|
117
|
+
mobilePush: projectConfig.mobilePush,
|
|
118
|
+
mobileOTA: projectConfig.mobileOTA,
|
|
119
|
+
mobileDeepLinking: projectConfig.mobileDeepLinking,
|
|
112
120
|
cms: projectConfig.cms,
|
|
113
121
|
caching: projectConfig.caching,
|
|
114
122
|
i18n: projectConfig.i18n,
|
|
@@ -145,6 +153,21 @@ async function writeBtsConfig(projectConfig) {
|
|
|
145
153
|
javaAuth: projectConfig.javaAuth,
|
|
146
154
|
javaLibraries: projectConfig.javaLibraries,
|
|
147
155
|
javaTestingLibraries: projectConfig.javaTestingLibraries,
|
|
156
|
+
elixirWebFramework: projectConfig.elixirWebFramework,
|
|
157
|
+
elixirOrm: projectConfig.elixirOrm,
|
|
158
|
+
elixirAuth: projectConfig.elixirAuth,
|
|
159
|
+
elixirApi: projectConfig.elixirApi,
|
|
160
|
+
elixirRealtime: projectConfig.elixirRealtime,
|
|
161
|
+
elixirJobs: projectConfig.elixirJobs,
|
|
162
|
+
elixirValidation: projectConfig.elixirValidation,
|
|
163
|
+
elixirHttp: projectConfig.elixirHttp,
|
|
164
|
+
elixirJson: projectConfig.elixirJson,
|
|
165
|
+
elixirEmail: projectConfig.elixirEmail,
|
|
166
|
+
elixirCaching: projectConfig.elixirCaching,
|
|
167
|
+
elixirObservability: projectConfig.elixirObservability,
|
|
168
|
+
elixirTesting: projectConfig.elixirTesting,
|
|
169
|
+
elixirQuality: projectConfig.elixirQuality,
|
|
170
|
+
elixirDeploy: projectConfig.elixirDeploy,
|
|
148
171
|
aiDocs: projectConfig.aiDocs
|
|
149
172
|
};
|
|
150
173
|
const baseContent = {
|
|
@@ -184,6 +207,13 @@ async function writeBtsConfig(projectConfig) {
|
|
|
184
207
|
observability: btsConfig.observability,
|
|
185
208
|
featureFlags: btsConfig.featureFlags,
|
|
186
209
|
analytics: btsConfig.analytics,
|
|
210
|
+
mobileNavigation: btsConfig.mobileNavigation,
|
|
211
|
+
mobileUI: btsConfig.mobileUI,
|
|
212
|
+
mobileStorage: btsConfig.mobileStorage,
|
|
213
|
+
mobileTesting: btsConfig.mobileTesting,
|
|
214
|
+
mobilePush: btsConfig.mobilePush,
|
|
215
|
+
mobileOTA: btsConfig.mobileOTA,
|
|
216
|
+
mobileDeepLinking: btsConfig.mobileDeepLinking,
|
|
187
217
|
cms: btsConfig.cms,
|
|
188
218
|
caching: btsConfig.caching,
|
|
189
219
|
i18n: btsConfig.i18n,
|
|
@@ -220,6 +250,21 @@ async function writeBtsConfig(projectConfig) {
|
|
|
220
250
|
javaAuth: btsConfig.javaAuth,
|
|
221
251
|
javaLibraries: btsConfig.javaLibraries,
|
|
222
252
|
javaTestingLibraries: btsConfig.javaTestingLibraries,
|
|
253
|
+
elixirWebFramework: btsConfig.elixirWebFramework,
|
|
254
|
+
elixirOrm: btsConfig.elixirOrm,
|
|
255
|
+
elixirAuth: btsConfig.elixirAuth,
|
|
256
|
+
elixirApi: btsConfig.elixirApi,
|
|
257
|
+
elixirRealtime: btsConfig.elixirRealtime,
|
|
258
|
+
elixirJobs: btsConfig.elixirJobs,
|
|
259
|
+
elixirValidation: btsConfig.elixirValidation,
|
|
260
|
+
elixirHttp: btsConfig.elixirHttp,
|
|
261
|
+
elixirJson: btsConfig.elixirJson,
|
|
262
|
+
elixirEmail: btsConfig.elixirEmail,
|
|
263
|
+
elixirCaching: btsConfig.elixirCaching,
|
|
264
|
+
elixirObservability: btsConfig.elixirObservability,
|
|
265
|
+
elixirTesting: btsConfig.elixirTesting,
|
|
266
|
+
elixirQuality: btsConfig.elixirQuality,
|
|
267
|
+
elixirDeploy: btsConfig.elixirDeploy,
|
|
223
268
|
aiDocs: btsConfig.aiDocs
|
|
224
269
|
};
|
|
225
270
|
let configContent = JSON.stringify(baseContent);
|
package/dist/cli.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
//#region src/cli.ts
|
|
3
|
-
if (process.argv[2] === "mcp" && process.argv.length === 3) import("./mcp-
|
|
3
|
+
if (process.argv[2] === "mcp" && process.argv.length === 3) import("./mcp-DoPutOIG.mjs").then((m) => m.startMcpServer());
|
|
4
4
|
else import("./index.mjs").then((m) => m.createBtsCli().run());
|
|
5
5
|
|
|
6
6
|
//#endregion
|