create-better-fullstack 1.5.1 → 1.5.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/addons-setup-Bll5VFJd.mjs +1373 -0
- package/dist/addons-setup-CWGwxN68.mjs +5 -0
- package/dist/bts-config-BYD8mHt-.mjs +311 -0
- package/dist/cli.mjs +2 -3
- package/dist/index.d.mts +204 -7
- package/dist/index.mjs +8072 -1
- package/dist/mcp-CRjipp-w.mjs +5 -0
- package/dist/mcp-entry.d.mts +1 -0
- package/dist/mcp-entry.mjs +841 -0
- package/package.json +11 -6
- package/dist/src-hfdQPH0o.mjs +0 -9536
- /package/dist/{chunk-DPg_XC7m.mjs → chunk-CCII7kTE.mjs} +0 -0
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { dependencyVersionMap } from "@better-fullstack/template-generator";
|
|
6
|
+
import * as JSONC from "jsonc-parser";
|
|
7
|
+
|
|
8
|
+
//#region src/utils/get-package-manager.ts
|
|
9
|
+
const getUserPkgManager = () => {
|
|
10
|
+
const userAgent = process.env.npm_config_user_agent;
|
|
11
|
+
if (userAgent?.startsWith("pnpm")) return "pnpm";
|
|
12
|
+
if (userAgent?.startsWith("bun")) return "bun";
|
|
13
|
+
return "npm";
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/constants.ts
|
|
18
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
19
|
+
const distPath = path.dirname(__filename);
|
|
20
|
+
const PKG_ROOT = path.join(distPath, "../");
|
|
21
|
+
const DEFAULT_CONFIG_BASE = {
|
|
22
|
+
projectName: "my-app",
|
|
23
|
+
relativePath: "my-app",
|
|
24
|
+
ecosystem: "typescript",
|
|
25
|
+
frontend: ["tanstack-router"],
|
|
26
|
+
database: "sqlite",
|
|
27
|
+
orm: "drizzle",
|
|
28
|
+
auth: "better-auth",
|
|
29
|
+
payments: "none",
|
|
30
|
+
email: "none",
|
|
31
|
+
fileUpload: "none",
|
|
32
|
+
effect: "none",
|
|
33
|
+
stateManagement: "none",
|
|
34
|
+
validation: "zod",
|
|
35
|
+
forms: "react-hook-form",
|
|
36
|
+
testing: "vitest",
|
|
37
|
+
ai: "none",
|
|
38
|
+
realtime: "none",
|
|
39
|
+
jobQueue: "none",
|
|
40
|
+
caching: "none",
|
|
41
|
+
search: "none",
|
|
42
|
+
fileStorage: "none",
|
|
43
|
+
animation: "none",
|
|
44
|
+
logging: "none",
|
|
45
|
+
observability: "none",
|
|
46
|
+
featureFlags: "none",
|
|
47
|
+
analytics: "none",
|
|
48
|
+
cms: "none",
|
|
49
|
+
addons: ["turborepo"],
|
|
50
|
+
examples: [],
|
|
51
|
+
git: true,
|
|
52
|
+
install: true,
|
|
53
|
+
versionChannel: "stable",
|
|
54
|
+
dbSetup: "none",
|
|
55
|
+
backend: "hono",
|
|
56
|
+
runtime: "bun",
|
|
57
|
+
api: "trpc",
|
|
58
|
+
webDeploy: "none",
|
|
59
|
+
serverDeploy: "none",
|
|
60
|
+
cssFramework: "tailwind",
|
|
61
|
+
uiLibrary: "shadcn-ui",
|
|
62
|
+
shadcnBase: "radix",
|
|
63
|
+
shadcnStyle: "nova",
|
|
64
|
+
shadcnIconLibrary: "lucide",
|
|
65
|
+
shadcnColorTheme: "neutral",
|
|
66
|
+
shadcnBaseColor: "neutral",
|
|
67
|
+
shadcnFont: "inter",
|
|
68
|
+
shadcnRadius: "default",
|
|
69
|
+
rustWebFramework: "none",
|
|
70
|
+
rustFrontend: "none",
|
|
71
|
+
rustOrm: "none",
|
|
72
|
+
rustApi: "none",
|
|
73
|
+
rustCli: "none",
|
|
74
|
+
rustLibraries: [],
|
|
75
|
+
rustLogging: "tracing",
|
|
76
|
+
pythonWebFramework: "fastapi",
|
|
77
|
+
pythonOrm: "sqlalchemy",
|
|
78
|
+
pythonValidation: "pydantic",
|
|
79
|
+
pythonAi: [],
|
|
80
|
+
pythonTaskQueue: "none",
|
|
81
|
+
pythonQuality: "ruff",
|
|
82
|
+
goWebFramework: "gin",
|
|
83
|
+
goOrm: "gorm",
|
|
84
|
+
goApi: "none",
|
|
85
|
+
goCli: "none",
|
|
86
|
+
goLogging: "zap",
|
|
87
|
+
aiDocs: ["claude-md"]
|
|
88
|
+
};
|
|
89
|
+
function getDefaultConfig() {
|
|
90
|
+
return {
|
|
91
|
+
...DEFAULT_CONFIG_BASE,
|
|
92
|
+
projectDir: path.resolve(process.cwd(), DEFAULT_CONFIG_BASE.projectName),
|
|
93
|
+
packageManager: getUserPkgManager(),
|
|
94
|
+
frontend: [...DEFAULT_CONFIG_BASE.frontend],
|
|
95
|
+
addons: [...DEFAULT_CONFIG_BASE.addons],
|
|
96
|
+
examples: [...DEFAULT_CONFIG_BASE.examples],
|
|
97
|
+
rustLibraries: [...DEFAULT_CONFIG_BASE.rustLibraries],
|
|
98
|
+
pythonAi: [...DEFAULT_CONFIG_BASE.pythonAi],
|
|
99
|
+
aiDocs: [...DEFAULT_CONFIG_BASE.aiDocs]
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
const DEFAULT_CONFIG = getDefaultConfig();
|
|
103
|
+
/**
|
|
104
|
+
* Default UI library for each frontend framework
|
|
105
|
+
* Falls back based on what's compatible
|
|
106
|
+
*/
|
|
107
|
+
const DEFAULT_UI_LIBRARY_BY_FRONTEND = {
|
|
108
|
+
"tanstack-router": "shadcn-ui",
|
|
109
|
+
"react-router": "shadcn-ui",
|
|
110
|
+
"react-vite": "shadcn-ui",
|
|
111
|
+
"tanstack-start": "shadcn-ui",
|
|
112
|
+
next: "shadcn-ui",
|
|
113
|
+
nuxt: "daisyui",
|
|
114
|
+
svelte: "daisyui",
|
|
115
|
+
solid: "daisyui",
|
|
116
|
+
"solid-start": "daisyui",
|
|
117
|
+
astro: "daisyui",
|
|
118
|
+
qwik: "daisyui",
|
|
119
|
+
angular: "daisyui",
|
|
120
|
+
redwood: "daisyui",
|
|
121
|
+
fresh: "daisyui",
|
|
122
|
+
"native-bare": "none",
|
|
123
|
+
"native-uniwind": "none",
|
|
124
|
+
"native-unistyles": "none",
|
|
125
|
+
none: "none"
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
//#endregion
|
|
129
|
+
//#region src/utils/get-latest-cli-version.ts
|
|
130
|
+
const getLatestCLIVersion = () => {
|
|
131
|
+
const packageJsonPath = path.join(PKG_ROOT, "package.json");
|
|
132
|
+
return fs.readJSONSync(packageJsonPath).version ?? "1.0.0";
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
//#endregion
|
|
136
|
+
//#region src/utils/bts-config.ts
|
|
137
|
+
const BTS_CONFIG_FILE = "bts.jsonc";
|
|
138
|
+
async function writeBtsConfig(projectConfig) {
|
|
139
|
+
const btsConfig = {
|
|
140
|
+
version: getLatestCLIVersion(),
|
|
141
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
142
|
+
ecosystem: projectConfig.ecosystem,
|
|
143
|
+
database: projectConfig.database,
|
|
144
|
+
orm: projectConfig.orm,
|
|
145
|
+
backend: projectConfig.backend,
|
|
146
|
+
runtime: projectConfig.runtime,
|
|
147
|
+
frontend: projectConfig.frontend,
|
|
148
|
+
addons: projectConfig.addons,
|
|
149
|
+
examples: projectConfig.examples,
|
|
150
|
+
auth: projectConfig.auth,
|
|
151
|
+
payments: projectConfig.payments,
|
|
152
|
+
email: projectConfig.email,
|
|
153
|
+
fileUpload: projectConfig.fileUpload,
|
|
154
|
+
effect: projectConfig.effect,
|
|
155
|
+
ai: projectConfig.ai,
|
|
156
|
+
stateManagement: projectConfig.stateManagement,
|
|
157
|
+
validation: projectConfig.validation,
|
|
158
|
+
forms: projectConfig.forms,
|
|
159
|
+
testing: projectConfig.testing,
|
|
160
|
+
packageManager: projectConfig.packageManager,
|
|
161
|
+
versionChannel: projectConfig.versionChannel,
|
|
162
|
+
dbSetup: projectConfig.dbSetup,
|
|
163
|
+
api: projectConfig.api,
|
|
164
|
+
webDeploy: projectConfig.webDeploy,
|
|
165
|
+
serverDeploy: projectConfig.serverDeploy,
|
|
166
|
+
cssFramework: projectConfig.cssFramework,
|
|
167
|
+
uiLibrary: projectConfig.uiLibrary,
|
|
168
|
+
realtime: projectConfig.realtime,
|
|
169
|
+
jobQueue: projectConfig.jobQueue,
|
|
170
|
+
animation: projectConfig.animation,
|
|
171
|
+
logging: projectConfig.logging,
|
|
172
|
+
observability: projectConfig.observability,
|
|
173
|
+
featureFlags: projectConfig.featureFlags,
|
|
174
|
+
analytics: projectConfig.analytics,
|
|
175
|
+
cms: projectConfig.cms,
|
|
176
|
+
caching: projectConfig.caching,
|
|
177
|
+
search: projectConfig.search,
|
|
178
|
+
fileStorage: projectConfig.fileStorage,
|
|
179
|
+
rustWebFramework: projectConfig.rustWebFramework,
|
|
180
|
+
rustFrontend: projectConfig.rustFrontend,
|
|
181
|
+
rustOrm: projectConfig.rustOrm,
|
|
182
|
+
rustApi: projectConfig.rustApi,
|
|
183
|
+
rustCli: projectConfig.rustCli,
|
|
184
|
+
rustLibraries: projectConfig.rustLibraries,
|
|
185
|
+
rustLogging: projectConfig.rustLogging,
|
|
186
|
+
pythonWebFramework: projectConfig.pythonWebFramework,
|
|
187
|
+
pythonOrm: projectConfig.pythonOrm,
|
|
188
|
+
pythonValidation: projectConfig.pythonValidation,
|
|
189
|
+
pythonAi: projectConfig.pythonAi,
|
|
190
|
+
pythonTaskQueue: projectConfig.pythonTaskQueue,
|
|
191
|
+
pythonQuality: projectConfig.pythonQuality,
|
|
192
|
+
goWebFramework: projectConfig.goWebFramework,
|
|
193
|
+
goOrm: projectConfig.goOrm,
|
|
194
|
+
goApi: projectConfig.goApi,
|
|
195
|
+
goCli: projectConfig.goCli,
|
|
196
|
+
goLogging: projectConfig.goLogging,
|
|
197
|
+
aiDocs: projectConfig.aiDocs
|
|
198
|
+
};
|
|
199
|
+
const baseContent = {
|
|
200
|
+
$schema: "https://better-fullstack-web.vercel.app/schema.json",
|
|
201
|
+
version: btsConfig.version,
|
|
202
|
+
createdAt: btsConfig.createdAt,
|
|
203
|
+
ecosystem: btsConfig.ecosystem,
|
|
204
|
+
database: btsConfig.database,
|
|
205
|
+
orm: btsConfig.orm,
|
|
206
|
+
backend: btsConfig.backend,
|
|
207
|
+
runtime: btsConfig.runtime,
|
|
208
|
+
frontend: btsConfig.frontend,
|
|
209
|
+
addons: btsConfig.addons,
|
|
210
|
+
examples: btsConfig.examples,
|
|
211
|
+
auth: btsConfig.auth,
|
|
212
|
+
payments: btsConfig.payments,
|
|
213
|
+
email: btsConfig.email,
|
|
214
|
+
fileUpload: btsConfig.fileUpload,
|
|
215
|
+
effect: btsConfig.effect,
|
|
216
|
+
ai: btsConfig.ai,
|
|
217
|
+
stateManagement: btsConfig.stateManagement,
|
|
218
|
+
validation: btsConfig.validation,
|
|
219
|
+
forms: btsConfig.forms,
|
|
220
|
+
testing: btsConfig.testing,
|
|
221
|
+
packageManager: btsConfig.packageManager,
|
|
222
|
+
versionChannel: btsConfig.versionChannel,
|
|
223
|
+
dbSetup: btsConfig.dbSetup,
|
|
224
|
+
api: btsConfig.api,
|
|
225
|
+
webDeploy: btsConfig.webDeploy,
|
|
226
|
+
serverDeploy: btsConfig.serverDeploy,
|
|
227
|
+
cssFramework: btsConfig.cssFramework,
|
|
228
|
+
uiLibrary: btsConfig.uiLibrary,
|
|
229
|
+
realtime: btsConfig.realtime,
|
|
230
|
+
jobQueue: btsConfig.jobQueue,
|
|
231
|
+
animation: btsConfig.animation,
|
|
232
|
+
logging: btsConfig.logging,
|
|
233
|
+
observability: btsConfig.observability,
|
|
234
|
+
featureFlags: btsConfig.featureFlags,
|
|
235
|
+
analytics: btsConfig.analytics,
|
|
236
|
+
cms: btsConfig.cms,
|
|
237
|
+
caching: btsConfig.caching,
|
|
238
|
+
search: btsConfig.search,
|
|
239
|
+
fileStorage: btsConfig.fileStorage,
|
|
240
|
+
rustWebFramework: btsConfig.rustWebFramework,
|
|
241
|
+
rustFrontend: btsConfig.rustFrontend,
|
|
242
|
+
rustOrm: btsConfig.rustOrm,
|
|
243
|
+
rustApi: btsConfig.rustApi,
|
|
244
|
+
rustCli: btsConfig.rustCli,
|
|
245
|
+
rustLibraries: btsConfig.rustLibraries,
|
|
246
|
+
rustLogging: btsConfig.rustLogging,
|
|
247
|
+
pythonWebFramework: btsConfig.pythonWebFramework,
|
|
248
|
+
pythonOrm: btsConfig.pythonOrm,
|
|
249
|
+
pythonValidation: btsConfig.pythonValidation,
|
|
250
|
+
pythonAi: btsConfig.pythonAi,
|
|
251
|
+
pythonTaskQueue: btsConfig.pythonTaskQueue,
|
|
252
|
+
pythonQuality: btsConfig.pythonQuality,
|
|
253
|
+
goWebFramework: btsConfig.goWebFramework,
|
|
254
|
+
goOrm: btsConfig.goOrm,
|
|
255
|
+
goApi: btsConfig.goApi,
|
|
256
|
+
goCli: btsConfig.goCli,
|
|
257
|
+
goLogging: btsConfig.goLogging,
|
|
258
|
+
aiDocs: btsConfig.aiDocs
|
|
259
|
+
};
|
|
260
|
+
let configContent = JSON.stringify(baseContent);
|
|
261
|
+
const formatResult = JSONC.format(configContent, void 0, {
|
|
262
|
+
tabSize: 2,
|
|
263
|
+
insertSpaces: true,
|
|
264
|
+
eol: "\n"
|
|
265
|
+
});
|
|
266
|
+
configContent = JSONC.applyEdits(configContent, formatResult);
|
|
267
|
+
const finalContent = `// Better Fullstack configuration file
|
|
268
|
+
// safe to delete
|
|
269
|
+
|
|
270
|
+
${configContent}`;
|
|
271
|
+
const configPath = path.join(projectConfig.projectDir, BTS_CONFIG_FILE);
|
|
272
|
+
await fs.writeFile(configPath, finalContent, "utf-8");
|
|
273
|
+
}
|
|
274
|
+
async function readBtsConfig(projectDir) {
|
|
275
|
+
try {
|
|
276
|
+
const configPath = path.join(projectDir, BTS_CONFIG_FILE);
|
|
277
|
+
if (!await fs.pathExists(configPath)) return null;
|
|
278
|
+
const configContent = await fs.readFile(configPath, "utf-8");
|
|
279
|
+
const errors = [];
|
|
280
|
+
const config = JSONC.parse(configContent, errors, {
|
|
281
|
+
allowTrailingComma: true,
|
|
282
|
+
disallowComments: false
|
|
283
|
+
});
|
|
284
|
+
if (errors.length > 0) {
|
|
285
|
+
console.warn("Warning: Found errors parsing bts.jsonc:", errors);
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
return config;
|
|
289
|
+
} catch {
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
async function updateBtsConfig(projectDir, updates) {
|
|
294
|
+
try {
|
|
295
|
+
const configPath = path.join(projectDir, BTS_CONFIG_FILE);
|
|
296
|
+
if (!await fs.pathExists(configPath)) return;
|
|
297
|
+
let modifiedContent = await fs.readFile(configPath, "utf-8");
|
|
298
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
299
|
+
const editResult = JSONC.modify(modifiedContent, [key], value, { formattingOptions: {
|
|
300
|
+
tabSize: 2,
|
|
301
|
+
insertSpaces: true,
|
|
302
|
+
eol: "\n"
|
|
303
|
+
} });
|
|
304
|
+
modifiedContent = JSONC.applyEdits(modifiedContent, editResult);
|
|
305
|
+
}
|
|
306
|
+
await fs.writeFile(configPath, modifiedContent, "utf-8");
|
|
307
|
+
} catch {}
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
//#endregion
|
|
311
|
+
export { DEFAULT_CONFIG as a, getDefaultConfig as c, getLatestCLIVersion as i, getUserPkgManager as l, updateBtsConfig as n, DEFAULT_UI_LIBRARY_BY_FRONTEND as o, writeBtsConfig as r, dependencyVersionMap as s, readBtsConfig as t };
|
package/dist/cli.mjs
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { s as createBtsCli } from "./src-hfdQPH0o.mjs";
|
|
3
|
-
|
|
4
2
|
//#region src/cli.ts
|
|
5
|
-
|
|
3
|
+
if (process.argv[2] === "mcp" && process.argv.length === 3) import("./mcp-CRjipp-w.mjs").then((m) => m.startMcpServer());
|
|
4
|
+
else import("./index.mjs").then((m) => m.createBtsCli().run());
|
|
6
5
|
|
|
7
6
|
//#endregion
|
|
8
7
|
export { };
|
package/dist/index.d.mts
CHANGED
|
@@ -14,6 +14,7 @@ interface AddResult {
|
|
|
14
14
|
addedAddons: types_d_exports.Addons[];
|
|
15
15
|
projectDir: string;
|
|
16
16
|
error?: string;
|
|
17
|
+
setupWarnings?: string[];
|
|
17
18
|
}
|
|
18
19
|
//#endregion
|
|
19
20
|
//#region src/index.d.ts
|
|
@@ -29,6 +30,7 @@ declare const router: {
|
|
|
29
30
|
yes: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
30
31
|
yolo: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
31
32
|
verbose: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
33
|
+
dryRun: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
32
34
|
ecosystem: z.ZodOptional<z.ZodEnum<{
|
|
33
35
|
typescript: "typescript";
|
|
34
36
|
rust: "rust";
|
|
@@ -206,6 +208,8 @@ declare const router: {
|
|
|
206
208
|
none: "none";
|
|
207
209
|
meilisearch: "meilisearch";
|
|
208
210
|
typesense: "typesense";
|
|
211
|
+
elasticsearch: "elasticsearch";
|
|
212
|
+
algolia: "algolia";
|
|
209
213
|
}>>;
|
|
210
214
|
fileStorage: z.ZodOptional<z.ZodEnum<{
|
|
211
215
|
none: "none";
|
|
@@ -470,10 +474,16 @@ declare const router: {
|
|
|
470
474
|
"tokio-test": "tokio-test";
|
|
471
475
|
mockall: "mockall";
|
|
472
476
|
}>>>;
|
|
477
|
+
rustLogging: z.ZodOptional<z.ZodEnum<{
|
|
478
|
+
none: "none";
|
|
479
|
+
tracing: "tracing";
|
|
480
|
+
"env-logger": "env-logger";
|
|
481
|
+
}>>;
|
|
473
482
|
pythonWebFramework: z.ZodOptional<z.ZodEnum<{
|
|
474
483
|
none: "none";
|
|
475
484
|
fastapi: "fastapi";
|
|
476
485
|
django: "django";
|
|
486
|
+
flask: "flask";
|
|
477
487
|
}>>;
|
|
478
488
|
pythonOrm: z.ZodOptional<z.ZodEnum<{
|
|
479
489
|
none: "none";
|
|
@@ -505,6 +515,7 @@ declare const router: {
|
|
|
505
515
|
none: "none";
|
|
506
516
|
gin: "gin";
|
|
507
517
|
echo: "echo";
|
|
518
|
+
fiber: "fiber";
|
|
508
519
|
}>>;
|
|
509
520
|
goOrm: z.ZodOptional<z.ZodEnum<{
|
|
510
521
|
none: "none";
|
|
@@ -573,7 +584,90 @@ declare const router: {
|
|
|
573
584
|
analytics: "none" | "plausible" | "umami";
|
|
574
585
|
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
575
586
|
caching: "none" | "upstash-redis";
|
|
576
|
-
search: "none" | "meilisearch" | "typesense";
|
|
587
|
+
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
588
|
+
fileStorage: "none" | "s3" | "r2";
|
|
589
|
+
rustWebFramework: "none" | "axum" | "actix-web";
|
|
590
|
+
rustFrontend: "none" | "leptos" | "dioxus";
|
|
591
|
+
rustOrm: "none" | "sea-orm" | "sqlx";
|
|
592
|
+
rustApi: "none" | "tonic" | "async-graphql";
|
|
593
|
+
rustCli: "none" | "clap" | "ratatui";
|
|
594
|
+
rustLibraries: ("none" | "serde" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall")[];
|
|
595
|
+
rustLogging: "none" | "tracing" | "env-logger";
|
|
596
|
+
pythonWebFramework: "none" | "fastapi" | "django" | "flask";
|
|
597
|
+
pythonOrm: "none" | "sqlalchemy" | "sqlmodel";
|
|
598
|
+
pythonValidation: "none" | "pydantic";
|
|
599
|
+
pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai")[];
|
|
600
|
+
pythonTaskQueue: "none" | "celery";
|
|
601
|
+
pythonQuality: "none" | "ruff";
|
|
602
|
+
goWebFramework: "none" | "gin" | "echo" | "fiber";
|
|
603
|
+
goOrm: "none" | "gorm" | "sqlc";
|
|
604
|
+
goApi: "none" | "grpc-go";
|
|
605
|
+
goCli: "none" | "cobra" | "bubbletea";
|
|
606
|
+
goLogging: "none" | "zap";
|
|
607
|
+
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
608
|
+
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
609
|
+
shadcnBase?: "radix" | "base" | undefined;
|
|
610
|
+
shadcnStyle?: "vega" | "nova" | "maia" | "lyra" | "mira" | undefined;
|
|
611
|
+
shadcnIconLibrary?: "lucide" | "tabler" | "hugeicons" | "phosphor" | "remixicon" | undefined;
|
|
612
|
+
shadcnColorTheme?: "neutral" | "stone" | "zinc" | "gray" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow" | undefined;
|
|
613
|
+
shadcnBaseColor?: "neutral" | "stone" | "zinc" | "gray" | undefined;
|
|
614
|
+
shadcnFont?: "inter" | "geist" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono" | "geist-mono" | undefined;
|
|
615
|
+
shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
|
|
616
|
+
};
|
|
617
|
+
reproducibleCommand: string;
|
|
618
|
+
timeScaffolded: string;
|
|
619
|
+
elapsedTimeMs: number;
|
|
620
|
+
projectDirectory: string;
|
|
621
|
+
relativePath: string;
|
|
622
|
+
dryRun: boolean;
|
|
623
|
+
fileCount: number;
|
|
624
|
+
directoryCount: number;
|
|
625
|
+
files: string[];
|
|
626
|
+
error?: undefined;
|
|
627
|
+
} | {
|
|
628
|
+
success: boolean;
|
|
629
|
+
projectConfig: {
|
|
630
|
+
projectName: string;
|
|
631
|
+
projectDir: string;
|
|
632
|
+
relativePath: string;
|
|
633
|
+
ecosystem: "typescript" | "rust" | "python" | "go";
|
|
634
|
+
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
635
|
+
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
636
|
+
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
637
|
+
runtime: "none" | "bun" | "node" | "workers";
|
|
638
|
+
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")[];
|
|
639
|
+
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")[];
|
|
640
|
+
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
641
|
+
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
642
|
+
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
643
|
+
git: boolean;
|
|
644
|
+
packageManager: "bun" | "npm" | "pnpm" | "yarn";
|
|
645
|
+
versionChannel: "stable" | "latest" | "beta";
|
|
646
|
+
install: boolean;
|
|
647
|
+
dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
|
|
648
|
+
api: "none" | "trpc" | "orpc" | "ts-rest" | "garph";
|
|
649
|
+
webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst";
|
|
650
|
+
serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst";
|
|
651
|
+
ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai";
|
|
652
|
+
effect: "effect" | "none" | "effect-full";
|
|
653
|
+
stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
|
|
654
|
+
forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
|
|
655
|
+
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
656
|
+
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
657
|
+
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
658
|
+
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "base-ui" | "ark-ui" | "react-aria";
|
|
659
|
+
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
660
|
+
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
661
|
+
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
662
|
+
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
663
|
+
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
664
|
+
logging: "none" | "pino" | "winston";
|
|
665
|
+
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
666
|
+
featureFlags: "none" | "growthbook" | "posthog";
|
|
667
|
+
analytics: "none" | "plausible" | "umami";
|
|
668
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
669
|
+
caching: "none" | "upstash-redis";
|
|
670
|
+
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
577
671
|
fileStorage: "none" | "s3" | "r2";
|
|
578
672
|
rustWebFramework: "none" | "axum" | "actix-web";
|
|
579
673
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
@@ -581,13 +675,14 @@ declare const router: {
|
|
|
581
675
|
rustApi: "none" | "tonic" | "async-graphql";
|
|
582
676
|
rustCli: "none" | "clap" | "ratatui";
|
|
583
677
|
rustLibraries: ("none" | "serde" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall")[];
|
|
584
|
-
|
|
678
|
+
rustLogging: "none" | "tracing" | "env-logger";
|
|
679
|
+
pythonWebFramework: "none" | "fastapi" | "django" | "flask";
|
|
585
680
|
pythonOrm: "none" | "sqlalchemy" | "sqlmodel";
|
|
586
681
|
pythonValidation: "none" | "pydantic";
|
|
587
682
|
pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai")[];
|
|
588
683
|
pythonTaskQueue: "none" | "celery";
|
|
589
684
|
pythonQuality: "none" | "ruff";
|
|
590
|
-
goWebFramework: "none" | "gin" | "echo";
|
|
685
|
+
goWebFramework: "none" | "gin" | "echo" | "fiber";
|
|
591
686
|
goOrm: "none" | "gorm" | "sqlc";
|
|
592
687
|
goApi: "none" | "grpc-go";
|
|
593
688
|
goCli: "none" | "cobra" | "bubbletea";
|
|
@@ -607,6 +702,10 @@ declare const router: {
|
|
|
607
702
|
elapsedTimeMs: number;
|
|
608
703
|
projectDirectory: string;
|
|
609
704
|
relativePath: string;
|
|
705
|
+
dryRun?: undefined;
|
|
706
|
+
fileCount?: undefined;
|
|
707
|
+
directoryCount?: undefined;
|
|
708
|
+
files?: undefined;
|
|
610
709
|
error?: undefined;
|
|
611
710
|
} | {
|
|
612
711
|
success: boolean;
|
|
@@ -617,6 +716,10 @@ declare const router: {
|
|
|
617
716
|
elapsedTimeMs: number;
|
|
618
717
|
projectDirectory: string;
|
|
619
718
|
relativePath: string;
|
|
719
|
+
dryRun?: undefined;
|
|
720
|
+
fileCount?: undefined;
|
|
721
|
+
directoryCount?: undefined;
|
|
722
|
+
files?: undefined;
|
|
620
723
|
} | undefined, {
|
|
621
724
|
success: boolean;
|
|
622
725
|
projectConfig: {
|
|
@@ -660,7 +763,90 @@ declare const router: {
|
|
|
660
763
|
analytics: "none" | "plausible" | "umami";
|
|
661
764
|
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
662
765
|
caching: "none" | "upstash-redis";
|
|
663
|
-
search: "none" | "meilisearch" | "typesense";
|
|
766
|
+
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
767
|
+
fileStorage: "none" | "s3" | "r2";
|
|
768
|
+
rustWebFramework: "none" | "axum" | "actix-web";
|
|
769
|
+
rustFrontend: "none" | "leptos" | "dioxus";
|
|
770
|
+
rustOrm: "none" | "sea-orm" | "sqlx";
|
|
771
|
+
rustApi: "none" | "tonic" | "async-graphql";
|
|
772
|
+
rustCli: "none" | "clap" | "ratatui";
|
|
773
|
+
rustLibraries: ("none" | "serde" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall")[];
|
|
774
|
+
rustLogging: "none" | "tracing" | "env-logger";
|
|
775
|
+
pythonWebFramework: "none" | "fastapi" | "django" | "flask";
|
|
776
|
+
pythonOrm: "none" | "sqlalchemy" | "sqlmodel";
|
|
777
|
+
pythonValidation: "none" | "pydantic";
|
|
778
|
+
pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai")[];
|
|
779
|
+
pythonTaskQueue: "none" | "celery";
|
|
780
|
+
pythonQuality: "none" | "ruff";
|
|
781
|
+
goWebFramework: "none" | "gin" | "echo" | "fiber";
|
|
782
|
+
goOrm: "none" | "gorm" | "sqlc";
|
|
783
|
+
goApi: "none" | "grpc-go";
|
|
784
|
+
goCli: "none" | "cobra" | "bubbletea";
|
|
785
|
+
goLogging: "none" | "zap";
|
|
786
|
+
aiDocs: ("none" | "claude-md" | "agents-md" | "cursorrules")[];
|
|
787
|
+
astroIntegration?: "none" | "svelte" | "solid" | "react" | "vue" | undefined;
|
|
788
|
+
shadcnBase?: "radix" | "base" | undefined;
|
|
789
|
+
shadcnStyle?: "vega" | "nova" | "maia" | "lyra" | "mira" | undefined;
|
|
790
|
+
shadcnIconLibrary?: "lucide" | "tabler" | "hugeicons" | "phosphor" | "remixicon" | undefined;
|
|
791
|
+
shadcnColorTheme?: "neutral" | "stone" | "zinc" | "gray" | "amber" | "blue" | "cyan" | "emerald" | "fuchsia" | "green" | "indigo" | "lime" | "orange" | "pink" | "purple" | "red" | "rose" | "sky" | "teal" | "violet" | "yellow" | undefined;
|
|
792
|
+
shadcnBaseColor?: "neutral" | "stone" | "zinc" | "gray" | undefined;
|
|
793
|
+
shadcnFont?: "inter" | "geist" | "noto-sans" | "nunito-sans" | "figtree" | "roboto" | "raleway" | "dm-sans" | "public-sans" | "outfit" | "jetbrains-mono" | "geist-mono" | undefined;
|
|
794
|
+
shadcnRadius?: "default" | "none" | "small" | "medium" | "large" | undefined;
|
|
795
|
+
};
|
|
796
|
+
reproducibleCommand: string;
|
|
797
|
+
timeScaffolded: string;
|
|
798
|
+
elapsedTimeMs: number;
|
|
799
|
+
projectDirectory: string;
|
|
800
|
+
relativePath: string;
|
|
801
|
+
dryRun: boolean;
|
|
802
|
+
fileCount: number;
|
|
803
|
+
directoryCount: number;
|
|
804
|
+
files: string[];
|
|
805
|
+
error?: undefined;
|
|
806
|
+
} | {
|
|
807
|
+
success: boolean;
|
|
808
|
+
projectConfig: {
|
|
809
|
+
projectName: string;
|
|
810
|
+
projectDir: string;
|
|
811
|
+
relativePath: string;
|
|
812
|
+
ecosystem: "typescript" | "rust" | "python" | "go";
|
|
813
|
+
database: "none" | "sqlite" | "postgres" | "mysql" | "mongodb" | "edgedb" | "redis";
|
|
814
|
+
orm: "none" | "drizzle" | "prisma" | "mongoose" | "typeorm" | "kysely" | "mikroorm" | "sequelize";
|
|
815
|
+
backend: "none" | "hono" | "express" | "fastify" | "elysia" | "fets" | "nestjs" | "adonisjs" | "nitro" | "encore" | "convex" | "self";
|
|
816
|
+
runtime: "none" | "bun" | "node" | "workers";
|
|
817
|
+
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")[];
|
|
818
|
+
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")[];
|
|
819
|
+
examples: ("ai" | "none" | "chat-sdk" | "tanstack-showcase")[];
|
|
820
|
+
auth: "none" | "better-auth" | "go-better-auth" | "clerk" | "nextauth" | "stack-auth" | "supabase-auth" | "auth0";
|
|
821
|
+
payments: "none" | "polar" | "stripe" | "lemon-squeezy" | "paddle" | "dodo";
|
|
822
|
+
git: boolean;
|
|
823
|
+
packageManager: "bun" | "npm" | "pnpm" | "yarn";
|
|
824
|
+
versionChannel: "stable" | "latest" | "beta";
|
|
825
|
+
install: boolean;
|
|
826
|
+
dbSetup: "none" | "turso" | "neon" | "prisma-postgres" | "planetscale" | "mongodb-atlas" | "supabase" | "upstash" | "d1" | "docker";
|
|
827
|
+
api: "none" | "trpc" | "orpc" | "ts-rest" | "garph";
|
|
828
|
+
webDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst";
|
|
829
|
+
serverDeploy: "none" | "docker" | "cloudflare" | "fly" | "railway" | "sst";
|
|
830
|
+
ai: "none" | "langgraph" | "langchain" | "llamaindex" | "vercel-ai" | "mastra" | "voltagent" | "openai-agents" | "google-adk" | "modelfusion" | "tanstack-ai";
|
|
831
|
+
effect: "effect" | "none" | "effect-full";
|
|
832
|
+
stateManagement: "none" | "zustand" | "jotai" | "nanostores" | "redux-toolkit" | "mobx" | "xstate" | "valtio" | "tanstack-store" | "legend-state";
|
|
833
|
+
forms: "none" | "tanstack-form" | "react-hook-form" | "formik" | "final-form" | "conform" | "modular-forms";
|
|
834
|
+
testing: "none" | "vitest" | "playwright" | "vitest-playwright" | "jest" | "cypress";
|
|
835
|
+
email: "none" | "react-email" | "resend" | "nodemailer" | "postmark" | "sendgrid" | "aws-ses" | "mailgun" | "plunk";
|
|
836
|
+
cssFramework: "none" | "tailwind" | "scss" | "less" | "postcss-only";
|
|
837
|
+
uiLibrary: "none" | "shadcn-ui" | "daisyui" | "radix-ui" | "headless-ui" | "park-ui" | "chakra-ui" | "nextui" | "mantine" | "base-ui" | "ark-ui" | "react-aria";
|
|
838
|
+
validation: "none" | "zod" | "valibot" | "arktype" | "typebox" | "typia" | "runtypes" | "effect-schema";
|
|
839
|
+
realtime: "none" | "socket-io" | "partykit" | "ably" | "pusher" | "liveblocks" | "yjs";
|
|
840
|
+
jobQueue: "none" | "bullmq" | "trigger-dev" | "inngest" | "temporal";
|
|
841
|
+
animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
|
|
842
|
+
fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
|
|
843
|
+
logging: "none" | "pino" | "winston";
|
|
844
|
+
observability: "none" | "opentelemetry" | "sentry" | "grafana";
|
|
845
|
+
featureFlags: "none" | "growthbook" | "posthog";
|
|
846
|
+
analytics: "none" | "plausible" | "umami";
|
|
847
|
+
cms: "none" | "payload" | "sanity" | "strapi" | "tinacms";
|
|
848
|
+
caching: "none" | "upstash-redis";
|
|
849
|
+
search: "none" | "meilisearch" | "typesense" | "elasticsearch" | "algolia";
|
|
664
850
|
fileStorage: "none" | "s3" | "r2";
|
|
665
851
|
rustWebFramework: "none" | "axum" | "actix-web";
|
|
666
852
|
rustFrontend: "none" | "leptos" | "dioxus";
|
|
@@ -668,13 +854,14 @@ declare const router: {
|
|
|
668
854
|
rustApi: "none" | "tonic" | "async-graphql";
|
|
669
855
|
rustCli: "none" | "clap" | "ratatui";
|
|
670
856
|
rustLibraries: ("none" | "serde" | "validator" | "jsonwebtoken" | "argon2" | "tokio-test" | "mockall")[];
|
|
671
|
-
|
|
857
|
+
rustLogging: "none" | "tracing" | "env-logger";
|
|
858
|
+
pythonWebFramework: "none" | "fastapi" | "django" | "flask";
|
|
672
859
|
pythonOrm: "none" | "sqlalchemy" | "sqlmodel";
|
|
673
860
|
pythonValidation: "none" | "pydantic";
|
|
674
861
|
pythonAi: ("none" | "langgraph" | "langchain" | "llamaindex" | "openai-sdk" | "anthropic-sdk" | "crewai")[];
|
|
675
862
|
pythonTaskQueue: "none" | "celery";
|
|
676
863
|
pythonQuality: "none" | "ruff";
|
|
677
|
-
goWebFramework: "none" | "gin" | "echo";
|
|
864
|
+
goWebFramework: "none" | "gin" | "echo" | "fiber";
|
|
678
865
|
goOrm: "none" | "gorm" | "sqlc";
|
|
679
866
|
goApi: "none" | "grpc-go";
|
|
680
867
|
goCli: "none" | "cobra" | "bubbletea";
|
|
@@ -694,6 +881,10 @@ declare const router: {
|
|
|
694
881
|
elapsedTimeMs: number;
|
|
695
882
|
projectDirectory: string;
|
|
696
883
|
relativePath: string;
|
|
884
|
+
dryRun?: undefined;
|
|
885
|
+
fileCount?: undefined;
|
|
886
|
+
directoryCount?: undefined;
|
|
887
|
+
files?: undefined;
|
|
697
888
|
error?: undefined;
|
|
698
889
|
} | {
|
|
699
890
|
success: boolean;
|
|
@@ -704,6 +895,10 @@ declare const router: {
|
|
|
704
895
|
elapsedTimeMs: number;
|
|
705
896
|
projectDirectory: string;
|
|
706
897
|
relativePath: string;
|
|
898
|
+
dryRun?: undefined;
|
|
899
|
+
fileCount?: undefined;
|
|
900
|
+
directoryCount?: undefined;
|
|
901
|
+
files?: undefined;
|
|
707
902
|
} | undefined>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
708
903
|
sponsors: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
709
904
|
docs: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
@@ -771,6 +966,7 @@ declare const router: {
|
|
|
771
966
|
ecosystem: z.ZodOptional<z.ZodString>;
|
|
772
967
|
"list-ecosystems": z.ZodDefault<z.ZodBoolean>;
|
|
773
968
|
}, z.core.$strip>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
969
|
+
mcp: _orpc_server0.Procedure<_orpc_server0.MergedInitialContext<Record<never, never>, Record<never, never>, Record<never, never>>, Record<never, never>, _orpc_server0.Schema<unknown, unknown>, _orpc_server0.Schema<void, void>, _orpc_server0.MergedErrorMap<Record<never, never>, Record<never, never>>, Record<never, never>>;
|
|
774
970
|
};
|
|
775
971
|
declare function createBtsCli(): trpc_cli0.TrpcCli;
|
|
776
972
|
/**
|
|
@@ -873,10 +1069,11 @@ type RustApi = import__better_fullstack_types.RustApi;
|
|
|
873
1069
|
type RustCli = import__better_fullstack_types.RustCli;
|
|
874
1070
|
type RustFrontend = import__better_fullstack_types.RustFrontend;
|
|
875
1071
|
type RustLibraries = import__better_fullstack_types.RustLibraries;
|
|
1072
|
+
type RustLogging = import__better_fullstack_types.RustLogging;
|
|
876
1073
|
type RustOrm = import__better_fullstack_types.RustOrm;
|
|
877
1074
|
type RustWebFramework = import__better_fullstack_types.RustWebFramework;
|
|
878
1075
|
type ServerDeploy = import__better_fullstack_types.ServerDeploy;
|
|
879
1076
|
type Template = import__better_fullstack_types.Template;
|
|
880
1077
|
type UILibrary = import__better_fullstack_types.UILibrary;
|
|
881
1078
|
type WebDeploy = import__better_fullstack_types.WebDeploy;
|
|
882
|
-
export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|
|
1079
|
+
export { type API, type AddInput, type AddResult, type Addons, type AiDocs, type Analytics, type Animation, type Auth, type Backend, type BetterTStackConfig, type CMS, type CSSFramework, type Caching, type CreateInput, type Database, type DatabaseSetup, type DirectoryConflict, EMBEDDED_TEMPLATES, type Ecosystem, type Effect, type Examples, type Frontend, type GeneratorOptions, type GeneratorResult, type GoApi, type GoCli, type GoLogging, type GoOrm, type GoWebFramework, type InitResult, type Logging, type ORM, type PackageManager, type Payments, type PythonAi, type PythonOrm, type PythonQuality, type PythonTaskQueue, type PythonValidation, type PythonWebFramework, type Realtime, type Runtime, type RustApi, type RustCli, type RustFrontend, type RustLibraries, type RustLogging, type RustOrm, type RustWebFramework, type ServerDeploy, TEMPLATE_COUNT, type Template, type UILibrary, type VirtualDirectory, type VirtualFile, VirtualFileSystem, type VirtualFileTree, type VirtualNode, type WebDeploy, add, builder, create, createBtsCli, createVirtual, docs, generateVirtualProject, history, router, sponsors };
|