better-ts-stack 0.1.1 → 1.1.0
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 +12 -6
- package/dist/builder/configGenerator.d.ts.map +1 -1
- package/dist/builder/configGenerator.js +30 -24
- package/dist/builder/configGenerator.js.map +1 -1
- package/dist/builder/dependencyInstaller.d.ts.map +1 -1
- package/dist/builder/dependencyInstaller.js +1 -10
- package/dist/builder/dependencyInstaller.js.map +1 -1
- package/dist/builder/index.d.ts.map +1 -1
- package/dist/builder/index.js +3 -7
- package/dist/builder/index.js.map +1 -1
- package/dist/builder/moduleSelector.d.ts.map +1 -1
- package/dist/builder/moduleSelector.js +1 -1
- package/dist/builder/moduleSelector.js.map +1 -1
- package/dist/builder/templateContext.d.ts +2 -2
- package/dist/builder/templateContext.d.ts.map +1 -1
- package/dist/builder/templateContext.js +1 -3
- package/dist/builder/templateContext.js.map +1 -1
- package/dist/modules/registry.d.ts.map +1 -1
- package/dist/modules/registry.js +2 -5
- package/dist/modules/registry.js.map +1 -1
- package/dist/output/nextSteps.d.ts.map +1 -1
- package/dist/output/nextSteps.js +7 -34
- package/dist/output/nextSteps.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +3 -14
- package/dist/prompts/index.js.map +1 -1
- package/dist/prompts/stack.d.ts +3 -0
- package/dist/prompts/stack.d.ts.map +1 -0
- package/dist/prompts/stack.js +77 -0
- package/dist/prompts/stack.js.map +1 -0
- package/dist/types/index.d.ts +12 -10
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +6 -10
- package/dist/types/index.js.map +1 -1
- package/dist/validators/index.d.ts +1 -1
- package/dist/validators/index.d.ts.map +1 -1
- package/dist/validators/index.js +1 -1
- package/package.json +12 -12
- package/templates/backend/express/config.json +44 -42
- package/templates/backend/express/eslint.config.mjs +40 -31
- package/templates/backend/express/src/index.ts +61 -46
- package/templates/backend/express/src/routes/health.ts +12 -12
- package/templates/backend/express/tsconfig.json +25 -23
- package/templates/frontend/nextjs/config.json +33 -27
- package/templates/frontend/nextjs/eslint.config.mjs +11 -11
- package/templates/frontend/nextjs/proxy.ts.hbs +9 -8
- package/templates/frontend/nextjs/tsconfig.json +34 -21
- package/templates/frontend/tanstack/components.json +18 -0
- package/templates/frontend/tanstack/config.json +49 -0
- package/templates/frontend/tanstack/eslint.config.mjs +23 -0
- package/templates/frontend/tanstack/gitignore +38 -0
- package/templates/frontend/tanstack/public/favicon.svg +7 -0
- package/templates/frontend/tanstack/src/components/ui/button.tsx +51 -0
- package/templates/frontend/tanstack/src/components/ui/card.tsx +60 -0
- package/templates/frontend/tanstack/src/components/ui/field.tsx +67 -0
- package/templates/frontend/tanstack/src/components/ui/input.tsx +18 -0
- package/templates/frontend/tanstack/src/lib/utils.ts +6 -0
- package/templates/frontend/tanstack/src/routeTree.gen.ts +68 -0
- package/templates/frontend/tanstack/src/router.tsx +32 -0
- package/templates/frontend/tanstack/src/routes/__root.tsx +70 -0
- package/templates/frontend/tanstack/src/routes/index.tsx.hbs +102 -0
- package/templates/frontend/tanstack/src/styles/app.css +85 -0
- package/templates/frontend/tanstack/tsconfig.json +22 -0
- package/templates/frontend/tanstack/vite.config.ts +14 -0
- package/templates/modules/auth/express/config.json +26 -1
- package/templates/modules/auth/express/src/routes/auth.ts.hbs +1 -1
- package/templates/modules/auth/express/src/services/userStore.ts.hbs +95 -107
- package/templates/modules/auth/nextjs/config.json +6 -6
- package/templates/modules/auth/nextjs/lib/auth.ts.hbs +34 -32
- package/templates/modules/auth/tanstack/config.json +33 -0
- package/templates/modules/auth/tanstack/src/components/auth/sign-in-form.tsx +135 -0
- package/templates/modules/auth/tanstack/src/components/auth/sign-out-button.tsx +49 -0
- package/templates/modules/auth/tanstack/src/components/auth/sign-up-form.tsx +153 -0
- package/templates/modules/auth/tanstack/src/lib/auth-client.ts +3 -0
- package/templates/modules/auth/tanstack/src/lib/auth-functions.ts +12 -0
- package/templates/modules/auth/tanstack/src/lib/auth-schema.ts +39 -0
- package/templates/modules/auth/tanstack/src/lib/auth.ts.hbs +38 -0
- package/templates/modules/auth/tanstack/src/routeTree.gen.ts +140 -0
- package/templates/modules/auth/tanstack/src/routes/api/auth/$.ts +16 -0
- package/templates/modules/auth/tanstack/src/routes/dashboard.tsx +111 -0
- package/templates/modules/auth/tanstack/src/routes/sign-in.tsx +37 -0
- package/templates/modules/auth/tanstack/src/routes/sign-up.tsx +37 -0
- package/templates/modules/docker/.dockerignore +14 -13
- package/templates/modules/docker/Dockerfile.hbs +64 -9
- package/templates/modules/docker/config.json +19 -16
- package/templates/modules/docker/docker-compose.yml.hbs +9 -9
- package/templates/modules/drizzle/express/config.json +27 -0
- package/templates/modules/drizzle/express/drizzle.config.ts +13 -0
- package/templates/modules/drizzle/express/src/lib/db.ts +13 -0
- package/templates/modules/drizzle/express/src/lib/schema.ts +10 -0
- package/templates/modules/drizzle/nextjs/config.json +27 -19
- package/templates/modules/drizzle/nextjs/lib/db.ts +3 -1
- package/templates/modules/drizzle/nextjs/lib/schema.ts.hbs +84 -84
- package/templates/modules/drizzle/tanstack/config.json +26 -0
- package/templates/modules/drizzle/tanstack/drizzle.config.ts +13 -0
- package/templates/modules/drizzle/tanstack/src/lib/db.ts +13 -0
- package/templates/modules/drizzle/tanstack/src/lib/schema.ts.hbs +84 -0
- package/templates/modules/mongoose/config.json +16 -16
- package/templates/modules/mongoose/src/lib/db.ts.hbs +0 -13
- package/templates/modules/mongoose/src/models/User.ts +48 -47
- package/templates/modules/prisma/express/config.json +27 -21
- package/templates/modules/prisma/express/prisma/schema.prisma +3 -2
- package/templates/modules/prisma/express/prisma.config.ts +12 -13
- package/templates/modules/prisma/express/src/lib/prisma.ts +24 -37
- package/templates/modules/prisma/nextjs/config.json +28 -23
- package/templates/modules/prisma/nextjs/prisma/schema.prisma.hbs +91 -90
- package/templates/modules/prisma/tanstack/config.json +28 -0
- package/templates/modules/prisma/tanstack/prisma/schema.prisma.hbs +91 -0
- package/templates/modules/prisma/tanstack/prisma.config.ts +12 -0
- package/templates/modules/prisma/tanstack/src/lib/prisma.ts +18 -0
- package/dist/prompts/backend/index.d.ts +0 -3
- package/dist/prompts/backend/index.d.ts.map +0 -1
- package/dist/prompts/backend/index.js +0 -128
- package/dist/prompts/backend/index.js.map +0 -1
- package/dist/prompts/frontend/index.d.ts +0 -3
- package/dist/prompts/frontend/index.d.ts.map +0 -1
- package/dist/prompts/frontend/index.js +0 -111
- package/dist/prompts/frontend/index.js.map +0 -1
package/README.md
CHANGED
|
@@ -19,10 +19,10 @@ Run the command, answer the prompts, and the CLI generates a ready-to-work proje
|
|
|
19
19
|
|
|
20
20
|
## What It Can Scaffold
|
|
21
21
|
|
|
22
|
-
| Project type
|
|
23
|
-
|
|
|
24
|
-
| Backend API
|
|
25
|
-
| Full-stack app | Next.js 16 + React 19 + TypeScript | PostgreSQL, MongoDB, Prisma, Better Auth, Docker, git
|
|
22
|
+
| Project type | Stack | Optional setup |
|
|
23
|
+
| -------------- | ---------------------------------- | --------------------------------------------------------------------- |
|
|
24
|
+
| Backend API | Express + TypeScript | PostgreSQL, MongoDB, Prisma, Drizzle, Mongoose, JWT auth, Docker, git |
|
|
25
|
+
| Full-stack app | Next.js 16 + React 19 + TypeScript | PostgreSQL, MongoDB, Prisma, Better Auth, Docker, git |
|
|
26
26
|
|
|
27
27
|
Notes:
|
|
28
28
|
|
|
@@ -42,7 +42,7 @@ You will be guided through:
|
|
|
42
42
|
4. Database: `none`, `PostgreSQL`, or `MongoDB`
|
|
43
43
|
5. ORM/ODM when a database is selected
|
|
44
44
|
- PostgreSQL: `Prisma` or `Drizzle`
|
|
45
|
-
- MongoDB: `
|
|
45
|
+
- MongoDB: `Mongoose`
|
|
46
46
|
6. Package manager: `npm`, `pnpm`, or `bun`
|
|
47
47
|
7. Docker setup
|
|
48
48
|
8. Authentication
|
|
@@ -70,7 +70,7 @@ Every generated project includes the essentials:
|
|
|
70
70
|
|
|
71
71
|
## Requirements
|
|
72
72
|
|
|
73
|
-
- Node.js
|
|
73
|
+
- Node.js 24 or later
|
|
74
74
|
|
|
75
75
|
## Links
|
|
76
76
|
|
|
@@ -81,3 +81,9 @@ Every generated project includes the essentials:
|
|
|
81
81
|
## License
|
|
82
82
|
|
|
83
83
|
MIT
|
|
84
|
+
|
|
85
|
+
## Release 1.0.8
|
|
86
|
+
|
|
87
|
+
Requires Node.js 24+. Dependencies and templates use current stable releases, with TypeScript 6.0.3 held for typescript-eslint compatibility and Node.js types aligned to 24.x. Express and Next.js support PostgreSQL with Prisma or Drizzle and MongoDB with Mongoose. Prisma generation runs before builds; Docker uses Node.js 24 and Compose v2.
|
|
88
|
+
|
|
89
|
+
See [upgrade notes](https://better-ts-stack.abdullahtech.me/docs/upgrade-notes) for compatibility changes and maintainer publishing commands.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configGenerator.d.ts","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"configGenerator.d.ts","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAGlB,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,eAAe,GACvB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAGD,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,YAAY,EAAE,EACvB,OAAO,EAAE,eAAe,GACvB,YAAY,CAuBd;AAGD,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAGD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC,CAgCf"}
|
|
@@ -10,18 +10,18 @@ exports.generateEnvFile = generateEnvFile;
|
|
|
10
10
|
// Utilities for merging module configurations and generating project files
|
|
11
11
|
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
12
12
|
const handlebars_1 = __importDefault(require("handlebars"));
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
13
14
|
const path_1 = __importDefault(require("path"));
|
|
14
15
|
const types_1 = require("../types");
|
|
15
16
|
// Replaces Handlebars variables within script command strings
|
|
16
17
|
function processScriptVariables(scripts, context) {
|
|
17
|
-
const helpers = {
|
|
18
|
-
...context.helpers,
|
|
19
|
-
};
|
|
20
18
|
const processedScripts = {};
|
|
21
19
|
for (const [scriptName, scriptCommand] of Object.entries(scripts)) {
|
|
22
20
|
try {
|
|
23
21
|
const template = handlebars_1.default.compile(scriptCommand, { noEscape: true });
|
|
24
|
-
processedScripts[scriptName] = template(context, {
|
|
22
|
+
processedScripts[scriptName] = template(context, {
|
|
23
|
+
helpers: context.helpers,
|
|
24
|
+
});
|
|
25
25
|
}
|
|
26
26
|
catch (error) {
|
|
27
27
|
throw (0, types_1.buildError)(error, "TEMPLATE_SCRIPT_ERROR", `Failed to process script "${scriptName}"`);
|
|
@@ -34,29 +34,18 @@ function mergeConfigurations(modules, context) {
|
|
|
34
34
|
const merged = {
|
|
35
35
|
dependencies: {},
|
|
36
36
|
devDependencies: {},
|
|
37
|
+
overrides: {},
|
|
37
38
|
scripts: {},
|
|
38
39
|
envVars: {},
|
|
39
40
|
};
|
|
40
41
|
// Merge each module's configuration
|
|
41
42
|
// Later modules override earlier ones
|
|
42
43
|
for (const module of modules) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (module.devDependencies) {
|
|
49
|
-
Object.assign(merged.devDependencies, module.devDependencies);
|
|
50
|
-
}
|
|
51
|
-
// Merge scripts - process variables before merging
|
|
52
|
-
if (module.scripts) {
|
|
53
|
-
const processedScripts = processScriptVariables(module.scripts, context);
|
|
54
|
-
Object.assign(merged.scripts, processedScripts);
|
|
55
|
-
}
|
|
56
|
-
// Merge environment variables
|
|
57
|
-
if (module.envVars) {
|
|
58
|
-
Object.assign(merged.envVars, module.envVars);
|
|
59
|
-
}
|
|
44
|
+
Object.assign(merged.dependencies, module.dependencies);
|
|
45
|
+
Object.assign(merged.devDependencies, module.devDependencies);
|
|
46
|
+
Object.assign(merged.overrides, module.overrides);
|
|
47
|
+
Object.assign(merged.scripts, processScriptVariables(module.scripts, context));
|
|
48
|
+
Object.assign(merged.envVars, module.envVars);
|
|
60
49
|
}
|
|
61
50
|
return merged;
|
|
62
51
|
}
|
|
@@ -64,19 +53,31 @@ function mergeConfigurations(modules, context) {
|
|
|
64
53
|
async function generatePackageJson(targetDir, mergedConfig, config) {
|
|
65
54
|
try {
|
|
66
55
|
const isFullstack = config.applicationType === "fullstack";
|
|
56
|
+
const overrides = Object.keys(mergedConfig.overrides).length
|
|
57
|
+
? mergedConfig.overrides
|
|
58
|
+
: undefined;
|
|
67
59
|
const packageJson = {
|
|
68
60
|
name: config.projectName,
|
|
69
61
|
version: "1.0.0",
|
|
62
|
+
private: true,
|
|
63
|
+
engines: { node: ">=24.0.0" },
|
|
70
64
|
description: `Project created with better-ts-stack using ${config.database !== "none" ? config.database : "no database"}`,
|
|
65
|
+
...(config.framework === "tanstack" ? { type: "module" } : {}),
|
|
71
66
|
...(isFullstack ? {} : { main: "dist/index.js" }),
|
|
72
67
|
scripts: mergedConfig.scripts,
|
|
73
68
|
keywords: isFullstack
|
|
74
|
-
?
|
|
69
|
+
? config.framework === "tanstack"
|
|
70
|
+
? ["tanstack-start", "react", "typescript"]
|
|
71
|
+
: ["nextjs", "react", "typescript"]
|
|
75
72
|
: ["backend", "typescript", "express"],
|
|
76
73
|
author: "",
|
|
77
74
|
license: "MIT",
|
|
78
75
|
dependencies: mergedConfig.dependencies,
|
|
79
76
|
devDependencies: mergedConfig.devDependencies,
|
|
77
|
+
overrides,
|
|
78
|
+
pnpm: config.packageManager === "pnpm" && overrides
|
|
79
|
+
? { overrides }
|
|
80
|
+
: undefined,
|
|
80
81
|
};
|
|
81
82
|
const packageJsonPath = path_1.default.join(targetDir, "package.json");
|
|
82
83
|
await fs_extra_1.default.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2) + "\n", "utf-8");
|
|
@@ -92,16 +93,21 @@ async function generateEnvFile(targetDir, envVars) {
|
|
|
92
93
|
let envContent = "# Environment Variables\n";
|
|
93
94
|
envContent +=
|
|
94
95
|
"# Copy this file to .env and update with your actual values\n\n";
|
|
96
|
+
let localEnvContent = envContent;
|
|
95
97
|
// Add each environment variable
|
|
96
98
|
for (const [key, value] of Object.entries(envVars)) {
|
|
99
|
+
const resolvedValue = ["JWT_SECRET", "BETTER_AUTH_SECRET"].includes(key)
|
|
100
|
+
? (0, node_crypto_1.randomBytes)(32).toString("hex")
|
|
101
|
+
: value;
|
|
97
102
|
envContent += `${key}=${value}\n`;
|
|
103
|
+
localEnvContent += `${key}=${resolvedValue}\n`;
|
|
98
104
|
}
|
|
99
105
|
// Write .env.example
|
|
100
106
|
const envExamplePath = path_1.default.join(targetDir, ".env.example");
|
|
101
107
|
await fs_extra_1.default.writeFile(envExamplePath, envContent, "utf-8");
|
|
102
|
-
//
|
|
108
|
+
// Keep generated secrets out of the shareable example file.
|
|
103
109
|
const envPath = path_1.default.join(targetDir, ".env");
|
|
104
|
-
await fs_extra_1.default.
|
|
110
|
+
await fs_extra_1.default.writeFile(envPath, localEnvContent, "utf-8");
|
|
105
111
|
}
|
|
106
112
|
catch (error) {
|
|
107
113
|
throw (0, types_1.buildError)(error, "ENV_FILE_ERROR", "Failed to generate environment files");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configGenerator.js","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"configGenerator.js","sourceRoot":"","sources":["../../src/builder/configGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyInstaller.d.ts","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"dependencyInstaller.d.ts","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,MAAM,GACV,OAAO,CAyBT"}
|
|
@@ -6,18 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.installDependencies = installDependencies;
|
|
7
7
|
const child_process_1 = require("child_process");
|
|
8
8
|
const consola_1 = __importDefault(require("consola"));
|
|
9
|
-
// Returns the installation command for the given package manager
|
|
10
|
-
function getInstallCommand(packageManager) {
|
|
11
|
-
const commands = {
|
|
12
|
-
npm: "npm install",
|
|
13
|
-
pnpm: "pnpm install",
|
|
14
|
-
bun: "bun install",
|
|
15
|
-
};
|
|
16
|
-
return commands[packageManager];
|
|
17
|
-
}
|
|
18
9
|
// Installs project dependencies in the target directory
|
|
19
10
|
function installDependencies(packageManager, cwd) {
|
|
20
|
-
const command =
|
|
11
|
+
const command = `${packageManager} install`;
|
|
21
12
|
consola_1.default.info(`Installing dependencies with ${packageManager}...`);
|
|
22
13
|
consola_1.default.debug(`Running: ${command}`);
|
|
23
14
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencyInstaller.js","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"dependencyInstaller.js","sourceRoot":"","sources":["../../src/builder/dependencyInstaller.ts"],"names":[],"mappings":";;;;;AAMA,kDA4BC;AAlCD,iDAAyC;AACzC,sDAA8B;AAI9B,wDAAwD;AACxD,SAAgB,mBAAmB,CACjC,cAA8B,EAC9B,GAAW;IAEX,MAAM,OAAO,GAAG,GAAG,cAAc,UAAU,CAAC;IAE5C,iBAAO,CAAC,IAAI,CAAC,gCAAgC,cAAc,KAAK,CAAC,CAAC;IAClE,iBAAO,CAAC,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IAErC,IAAI,CAAC;QACH,IAAA,wBAAQ,EAAC,OAAO,EAAE;YAChB,GAAG;YACH,KAAK,EAAE,SAAS,EAAE,0CAA0C;SAC7D,CAAC,CAAC;QAEH,iBAAO,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,6EAA6E;QAC7E,iBAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,iBAAO,CAAC,KAAK,CACX,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;QACF,iBAAO,CAAC,IAAI,CACV,2DAA2D,OAAO,EAAE,CACrE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,WAAW,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AAchF,wBAAsB,KAAK,CACzB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,WAAW,EAAgB,aAAa,EAAE,MAAM,UAAU,CAAC;AAchF,wBAAsB,KAAK,CACzB,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,WAAW,CAAC,CAyItB"}
|
package/dist/builder/index.js
CHANGED
|
@@ -68,7 +68,7 @@ async function build(config, targetDir) {
|
|
|
68
68
|
// 8. Process Handlebars templates
|
|
69
69
|
consola_1.default.info("Processing template files...");
|
|
70
70
|
try {
|
|
71
|
-
const allTemplateFiles = modules.flatMap((m) => m.config.templateFiles
|
|
71
|
+
const allTemplateFiles = modules.flatMap((m) => m.config.templateFiles);
|
|
72
72
|
if (allTemplateFiles.length > 0) {
|
|
73
73
|
await (0, fileProcessor_1.processTemplateFiles)(targetDir, templateContext, allTemplateFiles);
|
|
74
74
|
consola_1.default.success(`Processed ${allTemplateFiles.length} template file(s)`);
|
|
@@ -82,15 +82,11 @@ async function build(config, targetDir) {
|
|
|
82
82
|
}
|
|
83
83
|
// 9. Generate package.json
|
|
84
84
|
consola_1.default.info("Generating package.json...");
|
|
85
|
-
await (0, configGenerator_1.generatePackageJson)(targetDir, mergedConfig, config)
|
|
86
|
-
throw (0, types_1.buildError)(e, "PACKAGE_JSON_ERROR", "Failed to generate package.json");
|
|
87
|
-
});
|
|
85
|
+
await (0, configGenerator_1.generatePackageJson)(targetDir, mergedConfig, config);
|
|
88
86
|
consola_1.default.success("package.json generated");
|
|
89
87
|
// 10. Generate environment files
|
|
90
88
|
consola_1.default.info("Generating environment files...");
|
|
91
|
-
await (0, configGenerator_1.generateEnvFile)(targetDir, mergedConfig.envVars)
|
|
92
|
-
throw (0, types_1.buildError)(e, "ENV_FILE_ERROR", "Failed to generate environment files");
|
|
93
|
-
});
|
|
89
|
+
await (0, configGenerator_1.generateEnvFile)(targetDir, mergedConfig.envVars);
|
|
94
90
|
consola_1.default.success("Environment files generated");
|
|
95
91
|
// 11. Install dependencies (optional)
|
|
96
92
|
let depsInstalled = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":";;;;;AAmBA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/builder/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleSelector.d.ts","sourceRoot":"","sources":["../../src/builder/moduleSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa;;;
|
|
1
|
+
{"version":3,"file":"moduleSelector.d.ts","sourceRoot":"","sources":["../../src/builder/moduleSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa;;;YAUtB,MAAM;mBAAa,MAAM;;EAqBrD"}
|
|
@@ -4,7 +4,7 @@ exports.selectModules = selectModules;
|
|
|
4
4
|
// Determines which base and feature modules to include based on user configuration
|
|
5
5
|
function selectModules(config) {
|
|
6
6
|
// Determine framework for module integration
|
|
7
|
-
const framework = config.
|
|
7
|
+
const framework = config.framework;
|
|
8
8
|
// Select base template based on app type
|
|
9
9
|
const base = config.applicationType === "backend"
|
|
10
10
|
? `backend/${config.framework}`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleSelector.js","sourceRoot":"","sources":["../../src/builder/moduleSelector.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"moduleSelector.js","sourceRoot":"","sources":["../../src/builder/moduleSelector.ts"],"names":[],"mappings":";;AAGA,sCA+BC;AAhCD,mFAAmF;AACnF,SAAgB,aAAa,CAAC,MAAqB;IACjD,6CAA6C;IAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IAEnC,yCAAyC;IACzC,MAAM,IAAI,GACR,MAAM,CAAC,eAAe,KAAK,SAAS;QAClC,CAAC,CAAC,WAAW,MAAM,CAAC,SAAS,EAAE;QAC/B,CAAC,CAAC,YAAY,MAAM,CAAC,SAAS,EAAE,CAAC;IAErC,MAAM,OAAO,GAA6C,EAAE,CAAC;IAE7D,6GAA6G;IAC7G,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,IAAI,GACR,MAAM,CAAC,QAAQ,KAAK,UAAU;YAC5B,CAAC,CAAC,UAAU;YACZ,CAAC,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,6CAA6C;IAC7C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,SAAS,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAC3B,CAAC"}
|
|
@@ -6,7 +6,7 @@ export declare function buildTemplateContext(config: ProjectConfig): {
|
|
|
6
6
|
projectName: string;
|
|
7
7
|
packageManager: import("../types").PackageManager;
|
|
8
8
|
database: import("../types").DatabaseOption;
|
|
9
|
-
framework: import("../types").BackendFramework | "
|
|
9
|
+
framework: import("../types").BackendFramework | import("../types").FrontendFramework;
|
|
10
10
|
port: number;
|
|
11
11
|
useDocker: boolean;
|
|
12
12
|
useAuth: boolean;
|
|
@@ -15,7 +15,7 @@ export declare function buildTemplateContext(config: ProjectConfig): {
|
|
|
15
15
|
uppercase: typeof uppercase;
|
|
16
16
|
kebabCase: typeof kebabCase;
|
|
17
17
|
eq: (a: string, b: string) => boolean;
|
|
18
|
-
runner: () => "
|
|
18
|
+
runner: () => "bun" | "node";
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
21
|
//# sourceMappingURL=templateContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateContext.d.ts","sourceRoot":"","sources":["../../src/builder/templateContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"templateContext.d.ts","sourceRoot":"","sources":["../../src/builder/templateContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK7C;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,aAAa;;;;;;;;;;;;gBAc5C,MAAM,KAAK,MAAM;;;EAO9B"}
|
|
@@ -20,7 +20,7 @@ function kebabCase(str) {
|
|
|
20
20
|
.toLowerCase();
|
|
21
21
|
}
|
|
22
22
|
function buildTemplateContext(config) {
|
|
23
|
-
const framework = config.
|
|
23
|
+
const framework = config.framework;
|
|
24
24
|
return {
|
|
25
25
|
projectName: config.projectName,
|
|
26
26
|
packageManager: config.packageManager,
|
|
@@ -37,8 +37,6 @@ function buildTemplateContext(config) {
|
|
|
37
37
|
runner: () => {
|
|
38
38
|
if (config.packageManager === "bun")
|
|
39
39
|
return "bun";
|
|
40
|
-
if (config.packageManager === "pnpm")
|
|
41
|
-
return "pnpm";
|
|
42
40
|
return "node";
|
|
43
41
|
},
|
|
44
42
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templateContext.js","sourceRoot":"","sources":["../../src/builder/templateContext.ts"],"names":[],"mappings":";;AAIA,8BAEC;AAGD,8BAEC;AAGD,8BAKC;AAED,
|
|
1
|
+
{"version":3,"file":"templateContext.js","sourceRoot":"","sources":["../../src/builder/templateContext.ts"],"names":[],"mappings":";;AAIA,8BAEC;AAGD,8BAEC;AAGD,8BAKC;AAED,oDAqBC;AAvCD,+BAA+B;AAC/B,SAAgB,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC;AAED,+BAA+B;AAC/B,SAAgB,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;AAC3B,CAAC;AAED,gCAAgC;AAChC,SAAgB,SAAS,CAAC,GAAW;IACnC,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,0BAA0B;SAC9D,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,oCAAoC;SAC5D,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAqB;IACxD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,OAAO;QACL,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM;QACnC,SAAS;QACT,IAAI,EAAE,IAAI,EAAE,eAAe;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,KAAK;QACpC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE;YACP,SAAS;YACT,SAAS;YACT,SAAS;YACT,EAAE,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC;YACrC,MAAM,EAAE,GAAG,EAAE;gBACX,IAAI,MAAM,CAAC,cAAc,KAAK,KAAK;oBAAE,OAAO,KAAK,CAAC;gBAClD,OAAO,MAAM,CAAC;YAChB,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/modules/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/modules/registry.ts"],"names":[],"mappings":"AAKA,OAAO,EAAc,YAAY,EAAE,MAAM,UAAU,CAAC;AA4CpD,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM;;;GAiBzC"}
|
package/dist/modules/registry.js
CHANGED
|
@@ -16,6 +16,7 @@ const moduleConfigSchema = zod_1.z.object({
|
|
|
16
16
|
type: zod_1.z.enum(["base", "database", "feature"]),
|
|
17
17
|
dependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
18
18
|
devDependencies: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
19
|
+
overrides: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
19
20
|
scripts: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
20
21
|
envVars: zod_1.z.record(zod_1.z.string(), zod_1.z.string()).default({}),
|
|
21
22
|
templateFiles: zod_1.z.array(zod_1.z.string()).default([]),
|
|
@@ -26,11 +27,7 @@ function resolveModulePath(id) {
|
|
|
26
27
|
if (id.startsWith("backend/") || id.startsWith("frontend/")) {
|
|
27
28
|
return path_1.default.join(__dirname, `../../templates/${id}`);
|
|
28
29
|
}
|
|
29
|
-
//
|
|
30
|
-
if (id.includes("/")) {
|
|
31
|
-
return path_1.default.join(__dirname, `../../templates/modules/${id}`);
|
|
32
|
-
}
|
|
33
|
-
// Simple module ids: docker, mongoose
|
|
30
|
+
// Feature modules: auth/express, prisma/nextjs, docker, mongoose, etc.
|
|
34
31
|
return path_1.default.join(__dirname, `../../templates/modules/${id}`);
|
|
35
32
|
}
|
|
36
33
|
// Reads and parses a module's config.json file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/modules/registry.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/modules/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextSteps.d.ts","sourceRoot":"","sources":["../../src/output/nextSteps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,OAAO,GACrB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"nextSteps.d.ts","sourceRoot":"","sources":["../../src/output/nextSteps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,aAAa,EAAE,OAAO,GACrB,MAAM,EAAE,CAgDV;AAGD,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EAAE,GACd,MAAM,CAeR"}
|
package/dist/output/nextSteps.js
CHANGED
|
@@ -9,7 +9,7 @@ function generateNextSteps(config, depsInstalled) {
|
|
|
9
9
|
// Step 1: cd into project directory
|
|
10
10
|
steps.push(`cd ${config.projectName}`);
|
|
11
11
|
// Step 2: Set environment variables
|
|
12
|
-
steps.push("
|
|
12
|
+
steps.push("Review the generated .env and set your database connection details");
|
|
13
13
|
if (isFullstack) {
|
|
14
14
|
if (config.useAuth) {
|
|
15
15
|
steps.push("Set BETTER_AUTH_SECRET and BETTER_AUTH_URL in .env");
|
|
@@ -24,51 +24,24 @@ function generateNextSteps(config, depsInstalled) {
|
|
|
24
24
|
}
|
|
25
25
|
// Step 3: Install dependencies if not already done
|
|
26
26
|
if (!depsInstalled) {
|
|
27
|
-
|
|
28
|
-
steps.push(installCmd);
|
|
27
|
+
steps.push(`${config.packageManager} install`);
|
|
29
28
|
}
|
|
30
29
|
// Step 4: Database-specific steps
|
|
31
30
|
if (config.database === "prisma") {
|
|
32
|
-
steps.push(`${
|
|
33
|
-
steps.push(`${
|
|
31
|
+
steps.push(`${config.packageManager} run prisma:generate`);
|
|
32
|
+
steps.push(`${config.packageManager} run prisma:migrate`);
|
|
34
33
|
}
|
|
35
34
|
else if (config.database === "drizzle") {
|
|
36
|
-
steps.push(`${
|
|
37
|
-
steps.push(`${
|
|
35
|
+
steps.push(`${config.packageManager} run db:generate`);
|
|
36
|
+
steps.push(`${config.packageManager} run db:migrate`);
|
|
38
37
|
}
|
|
39
38
|
else if (config.database === "mongoose") {
|
|
40
39
|
steps.push("Ensure MongoDB is running locally or update MONGODB_URI in .env");
|
|
41
40
|
}
|
|
42
41
|
// Step 5: Start dev server
|
|
43
|
-
steps.push(`${
|
|
42
|
+
steps.push(`${config.packageManager} run dev`);
|
|
44
43
|
return steps;
|
|
45
44
|
}
|
|
46
|
-
// Returns the dependency installation command for a package manager
|
|
47
|
-
function getInstallCommand(packageManager) {
|
|
48
|
-
switch (packageManager) {
|
|
49
|
-
case "npm":
|
|
50
|
-
return "npm install";
|
|
51
|
-
case "pnpm":
|
|
52
|
-
return "pnpm install";
|
|
53
|
-
case "bun":
|
|
54
|
-
return "bun install";
|
|
55
|
-
default:
|
|
56
|
-
return "npm install";
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
// Returns the script execution prefix for a package manager
|
|
60
|
-
function getRunCommand(packageManager) {
|
|
61
|
-
switch (packageManager) {
|
|
62
|
-
case "npm":
|
|
63
|
-
return "npm run";
|
|
64
|
-
case "pnpm":
|
|
65
|
-
return "pnpm run";
|
|
66
|
-
case "bun":
|
|
67
|
-
return "bun run";
|
|
68
|
-
default:
|
|
69
|
-
return "npm run";
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
45
|
// Formats the next steps into a success message string
|
|
73
46
|
function displayNextSteps(_projectName, steps) {
|
|
74
47
|
const formattedSteps = steps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nextSteps.js","sourceRoot":"","sources":["../../src/output/nextSteps.ts"],"names":[],"mappings":";;AAGA,
|
|
1
|
+
{"version":3,"file":"nextSteps.js","sourceRoot":"","sources":["../../src/output/nextSteps.ts"],"names":[],"mappings":";;AAGA,8CAmDC;AAGD,4CAkBC;AAzED,iFAAiF;AACjF,SAAgB,iBAAiB,CAC/B,MAAqB,EACrB,aAAsB;IAEtB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,KAAK,WAAW,CAAC;IAE3D,oCAAoC;IACpC,KAAK,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAEvC,oCAAoC;IACpC,KAAK,CAAC,IAAI,CACR,oEAAoE,CACrE,CAAC;IAEF,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;YACjE,KAAK,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;YACzD,KAAK,CAAC,IAAI,CACR,mEAAmE,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,kCAAkC;IAClC,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,sBAAsB,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,qBAAqB,CAAC,CAAC;IAC5D,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,kBAAkB,CAAC,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,iBAAiB,CAAC,CAAC;IACxD,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CACR,iEAAiE,CAClE,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,UAAU,CAAC,CAAC;IAE/C,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uDAAuD;AACvD,SAAgB,gBAAgB,CAC9B,YAAoB,EACpB,KAAe;IAEf,MAAM,cAAc,GAAG,KAAK;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;SAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG;;;;EAIhB,cAAc;;;CAGf,CAAC;IAEA,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACd,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAIL,aAAa,EACd,MAAM,UAAU,CAAC;AAKlB,wBAAsB,kBAAkB,2BAoCvC;AAGD,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBAiC1E"}
|
package/dist/prompts/index.js
CHANGED
|
@@ -9,14 +9,13 @@ const prompts_1 = require("@clack/prompts");
|
|
|
9
9
|
const consola_1 = __importDefault(require("consola"));
|
|
10
10
|
const types_1 = require("../types");
|
|
11
11
|
const validators_1 = require("../validators");
|
|
12
|
-
const
|
|
13
|
-
const frontend_1 = require("./frontend");
|
|
12
|
+
const stack_1 = require("./stack");
|
|
14
13
|
// Collects user input via interactive prompts
|
|
15
14
|
async function collectUserChoices() {
|
|
16
15
|
const projectName = await (0, prompts_1.text)({
|
|
17
16
|
message: "Project name:",
|
|
18
17
|
placeholder: "my-awesome-project",
|
|
19
|
-
validate: (value) => (0, validators_1.validateProjectName)(value),
|
|
18
|
+
validate: (value) => (0, validators_1.validateProjectName)(value ?? ""),
|
|
20
19
|
});
|
|
21
20
|
if ((0, prompts_1.isCancel)(projectName)) {
|
|
22
21
|
(0, prompts_1.cancel)("Operation cancelled.");
|
|
@@ -31,17 +30,7 @@ async function collectUserChoices() {
|
|
|
31
30
|
(0, prompts_1.cancel)("Operation cancelled.");
|
|
32
31
|
process.exit(0);
|
|
33
32
|
}
|
|
34
|
-
|
|
35
|
-
if (applicationType === "backend") {
|
|
36
|
-
userChoices = await (0, backend_1.collectBackendChoices)();
|
|
37
|
-
}
|
|
38
|
-
else if (applicationType === "fullstack") {
|
|
39
|
-
userChoices = await (0, frontend_1.collectFrontendChoices)();
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
(0, prompts_1.cancel)("Invalid application type selected.");
|
|
43
|
-
process.exit(0);
|
|
44
|
-
}
|
|
33
|
+
const userChoices = await (0, stack_1.collectStackChoices)(applicationType);
|
|
45
34
|
// Derive database field from databaseType + orm for backward compatibility
|
|
46
35
|
const database = (0, types_1.deriveDatabase)(userChoices.databaseType, userChoices.orm);
|
|
47
36
|
const choices = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stack.d.ts","sourceRoot":"","sources":["../../src/prompts/stack.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EAaf,aAAa,EACd,MAAM,UAAU,CAAC;AAElB,wBAAsB,mBAAmB,CACvC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAAC,aAAa,CAAC,CA6ExB"}
|