create-velox-app 0.3.4 → 0.3.5

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.js CHANGED
@@ -6,6 +6,16 @@
6
6
  * Handles command-line arguments and initiates the scaffolding process.
7
7
  */
8
8
  import { CREATE_VERSION, createVeloxApp } from './index.js';
9
+ import { getAvailableTemplates, isValidTemplate, TEMPLATE_METADATA } from './templates/index.js';
10
+ // ============================================================================
11
+ // Constants
12
+ // ============================================================================
13
+ /** Get list of available template names for error messages */
14
+ function getTemplateNames() {
15
+ return getAvailableTemplates()
16
+ .map((t) => t.type)
17
+ .join(', ');
18
+ }
9
19
  // ============================================================================
10
20
  // Help & Version
11
21
  // ============================================================================
@@ -13,17 +23,105 @@ const HELP_TEXT = `
13
23
  create-velox-app v${CREATE_VERSION}
14
24
 
15
25
  Usage:
16
- npx create-velox-app [project-name]
17
- pnpm create velox-app [project-name]
26
+ npx create-velox-app [project-name] [options]
27
+ pnpm create velox-app [project-name] [options]
18
28
 
19
29
  Options:
20
- -h, --help Show this help message
21
- -v, --version Show version number
30
+ -t, --template <name> Template to use (default: "default")
31
+ Available: ${getTemplateNames()}
32
+ -h, --help Show this help message
33
+ -v, --version Show version number
34
+
35
+ Templates:
36
+ default ${TEMPLATE_METADATA.default.description}
37
+ auth ${TEMPLATE_METADATA.auth.description}
22
38
 
23
39
  Examples:
24
- npx create-velox-app my-app
25
- npx create-velox-app # Interactive mode
40
+ npx create-velox-app my-app # Interactive mode
41
+ npx create-velox-app my-app --template=auth # Auth template
42
+ npx create-velox-app # Prompt for name
26
43
  `;
44
+ function parseArgs(args) {
45
+ const result = {
46
+ help: false,
47
+ version: false,
48
+ };
49
+ const unexpectedArgs = [];
50
+ let templateFlagSeen = false;
51
+ for (let i = 0; i < args.length; i++) {
52
+ const arg = args[i];
53
+ // Handle --help / -h
54
+ if (arg === '-h' || arg === '--help') {
55
+ result.help = true;
56
+ continue;
57
+ }
58
+ // Handle --version / -v
59
+ if (arg === '-v' || arg === '--version') {
60
+ result.version = true;
61
+ continue;
62
+ }
63
+ // Handle --template=<value> or -t=<value>
64
+ if (arg.startsWith('--template=') || arg.startsWith('-t=')) {
65
+ // Check for duplicate flag
66
+ if (templateFlagSeen) {
67
+ console.error('Error: --template flag specified multiple times');
68
+ process.exit(1);
69
+ }
70
+ templateFlagSeen = true;
71
+ const value = arg.split('=')[1];
72
+ if (!value) {
73
+ console.error(`Error: --template requires a value. Available: ${getTemplateNames()}`);
74
+ process.exit(1);
75
+ }
76
+ if (isValidTemplate(value)) {
77
+ result.template = value;
78
+ }
79
+ else {
80
+ console.error(`Invalid template: ${value}. Available: ${getTemplateNames()}`);
81
+ process.exit(1);
82
+ }
83
+ continue;
84
+ }
85
+ // Handle --template <value> or -t <value>
86
+ if (arg === '--template' || arg === '-t') {
87
+ // Check for duplicate flag
88
+ if (templateFlagSeen) {
89
+ console.error('Error: --template flag specified multiple times');
90
+ process.exit(1);
91
+ }
92
+ templateFlagSeen = true;
93
+ const value = args[i + 1];
94
+ if (!value || value.startsWith('-')) {
95
+ console.error(`Error: --template requires a value. Available: ${getTemplateNames()}`);
96
+ process.exit(1);
97
+ }
98
+ if (isValidTemplate(value)) {
99
+ result.template = value;
100
+ i++; // Skip next arg
101
+ }
102
+ else {
103
+ console.error(`Invalid template: ${value}. Available: ${getTemplateNames()}`);
104
+ process.exit(1);
105
+ }
106
+ continue;
107
+ }
108
+ // Non-flag argument
109
+ if (!arg.startsWith('-')) {
110
+ if (!result.projectName) {
111
+ result.projectName = arg;
112
+ }
113
+ else {
114
+ // Track unexpected positional arguments
115
+ unexpectedArgs.push(arg);
116
+ }
117
+ }
118
+ }
119
+ // Warn about unexpected arguments
120
+ if (unexpectedArgs.length > 0) {
121
+ console.warn(`Warning: Unexpected arguments ignored: ${unexpectedArgs.join(', ')}`);
122
+ }
123
+ return result;
124
+ }
27
125
  // ============================================================================
28
126
  // Main Entry Point
29
127
  // ============================================================================
@@ -32,30 +130,45 @@ Examples:
32
130
  */
33
131
  async function main() {
34
132
  try {
35
- // Get arguments
36
133
  const args = process.argv.slice(2);
134
+ const parsed = parseArgs(args);
37
135
  // Handle --help
38
- if (args.includes('-h') || args.includes('--help')) {
136
+ if (parsed.help) {
39
137
  console.log(HELP_TEXT);
40
138
  process.exit(0);
41
139
  }
42
140
  // Handle --version
43
- if (args.includes('-v') || args.includes('--version')) {
141
+ if (parsed.version) {
44
142
  console.log(CREATE_VERSION);
45
143
  process.exit(0);
46
144
  }
47
- // Get project name (first non-flag argument)
48
- const projectName = args.find((arg) => !arg.startsWith('-'));
49
145
  // Run scaffolder
50
- await createVeloxApp(projectName);
146
+ await createVeloxApp(parsed.projectName, parsed.template);
51
147
  }
52
148
  catch (error) {
53
- // Handle unexpected errors
149
+ // Handle unexpected errors with actionable guidance
54
150
  if (error instanceof Error) {
55
151
  console.error(`\nError: ${error.message}`);
152
+ // Provide contextual help based on error type
153
+ const msg = error.message.toLowerCase();
154
+ if (msg.includes('eacces') || msg.includes('permission')) {
155
+ console.error('\nTry running with appropriate permissions or choose a different directory.');
156
+ }
157
+ else if (msg.includes('enospc') || msg.includes('no space')) {
158
+ console.error('\nInsufficient disk space. Free up some space and try again.');
159
+ }
160
+ else if (msg.includes('enotfound') ||
161
+ msg.includes('network') ||
162
+ msg.includes('etimedout')) {
163
+ console.error('\nCheck your internet connection and try again.');
164
+ }
165
+ else if (msg.includes('already exists')) {
166
+ console.error('\nChoose a different project name or remove the existing directory.');
167
+ }
56
168
  }
57
169
  else {
58
170
  console.error('\nAn unexpected error occurred');
171
+ console.error('Please report this issue at: https://github.com/veloxts/velox-ts-framework/issues');
59
172
  }
60
173
  process.exit(1);
61
174
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5D,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,SAAS,GAAG;oBACE,cAAc;;;;;;;;;;;;;CAajC,CAAC;AAEF,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,gBAAgB;QAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAEnC,gBAAgB;QAChB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,6CAA6C;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,iBAAiB;QACjB,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,2BAA2B;QAC3B,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,cAAc;AACd,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * create-velox-app - Project scaffolding tool
3
3
  *
4
- * CLI tool for bootstrapping new VeloxTS applications with a default template.
4
+ * CLI tool for bootstrapping new VeloxTS applications with multiple templates.
5
5
  * Provides an interactive setup experience similar to create-next-app.
6
6
  */
7
+ import type { TemplateType } from './templates/index.js';
7
8
  /** Create-velox-app package version */
8
9
  export declare const CREATE_VERSION: string;
9
10
  /**
10
11
  * Main scaffolding function that creates a new VeloxTS project
11
12
  */
12
- export declare function createVeloxApp(initialProjectName?: string): Promise<void>;
13
+ export declare function createVeloxApp(initialProjectName?: string, initialTemplate?: TemplateType): Promise<void>;
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0CH,uCAAuC;AACvC,eAAO,MAAM,cAAc,EAAE,MAA+C,CAAC;AAgB7E;;GAEG;AACH,wBAAsB,cAAc,CAAC,kBAAkB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C/E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAUH,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAezE,uCAAuC;AACvC,eAAO,MAAM,cAAc,EAAE,MAA+C,CAAC;AAiD7E;;GAEG;AACH,wBAAsB,cAAc,CAClC,kBAAkB,CAAC,EAAE,MAAM,EAC3B,eAAe,CAAC,EAAE,YAAY,GAC7B,OAAO,CAAC,IAAI,CAAC,CAgEf"}
package/dist/index.js CHANGED
@@ -1,41 +1,73 @@
1
1
  /**
2
2
  * create-velox-app - Project scaffolding tool
3
3
  *
4
- * CLI tool for bootstrapping new VeloxTS applications with a default template.
4
+ * CLI tool for bootstrapping new VeloxTS applications with multiple templates.
5
5
  * Provides an interactive setup experience similar to create-next-app.
6
6
  */
7
7
  import { execSync } from 'node:child_process';
8
8
  import fs from 'node:fs/promises';
9
+ import { createRequire } from 'node:module';
9
10
  import path from 'node:path';
10
11
  import * as p from '@clack/prompts';
11
12
  import pc from 'picocolors';
12
- import { generateClaudeMd, generateConfigApp, generateConfigIndex, generateDatabaseIndex, generateEnvExample, generateGitignore, generateHealthProcedures, generateIndexHtml, generateIndexTs, generatePackageJson, generatePrismaConfig, generatePrismaSchema, generateProceduresIndex, generateReadme, generateSchemasIndex, generateTsConfig, generateTsupConfig, generateUserProcedures, generateUserSchema, } from './templates.js';
13
+ import { generateTemplateFiles, getAvailableTemplates, getTemplateDirectories, } from './templates/index.js';
13
14
  // ============================================================================
14
15
  // Constants
15
16
  // ============================================================================
16
- import { createRequire } from 'node:module';
17
17
  // Read version from package.json dynamically
18
18
  const require = createRequire(import.meta.url);
19
19
  const packageJson = require('../package.json');
20
20
  /** Create-velox-app package version */
21
21
  export const CREATE_VERSION = packageJson.version ?? '0.0.0-unknown';
22
+ /** Timeout for exec commands (5 minutes) */
23
+ const EXEC_TIMEOUT_MS = 5 * 60 * 1000;
24
+ /** Reserved project names that could cause issues */
25
+ const RESERVED_NAMES = new Set([
26
+ 'node_modules',
27
+ 'test',
28
+ 'tests',
29
+ 'src',
30
+ 'dist',
31
+ 'build',
32
+ 'public',
33
+ 'lib',
34
+ 'package',
35
+ 'npm',
36
+ 'pnpm',
37
+ 'yarn',
38
+ ]);
39
+ // ============================================================================
40
+ // Security Utilities
41
+ // ============================================================================
42
+ /**
43
+ * Check if a file path is safe (no path traversal attacks)
44
+ */
45
+ function isPathSafe(baseDir, targetPath) {
46
+ const resolved = path.resolve(baseDir, targetPath);
47
+ const normalizedBase = path.normalize(baseDir);
48
+ return resolved.startsWith(normalizedBase);
49
+ }
22
50
  // ============================================================================
23
51
  // Main Scaffolder
24
52
  // ============================================================================
25
53
  /**
26
54
  * Main scaffolding function that creates a new VeloxTS project
27
55
  */
28
- export async function createVeloxApp(initialProjectName) {
56
+ export async function createVeloxApp(initialProjectName, initialTemplate) {
29
57
  // Print welcome banner
30
58
  console.log('');
31
59
  p.intro(pc.cyan(pc.bold('create-velox-app')));
60
+ let projectDirectory;
61
+ let projectCreated = false;
32
62
  try {
33
63
  // Collect project configuration
34
- const config = await promptProjectConfig(initialProjectName);
64
+ const config = await promptProjectConfig(initialProjectName, initialTemplate);
65
+ projectDirectory = config.directory;
35
66
  // Validate project directory doesn't exist
36
67
  await validateProjectDirectory(config.directory);
37
68
  // Create project structure
38
69
  await createProjectStructure(config);
70
+ projectCreated = true;
39
71
  // Install dependencies
40
72
  await installDependencies(config);
41
73
  // Generate Prisma client
@@ -49,13 +81,30 @@ export async function createVeloxApp(initialProjectName) {
49
81
  catch (error) {
50
82
  // Handle cancellation
51
83
  if (error === Symbol.for('clack.cancel') || error.message === 'canceled') {
84
+ // Clean up partial project on cancellation
85
+ if (projectCreated && projectDirectory) {
86
+ try {
87
+ await fs.rm(projectDirectory, { recursive: true, force: true });
88
+ }
89
+ catch {
90
+ // Ignore cleanup errors on cancellation
91
+ }
92
+ }
52
93
  p.cancel('Setup cancelled');
53
94
  process.exit(0);
54
95
  }
55
- // Handle other errors
96
+ // Handle other errors - provide recovery instructions
56
97
  p.cancel('Setup failed');
57
98
  if (error instanceof Error) {
58
99
  console.error(pc.red(`\nError: ${error.message}`));
100
+ // If project was created but install failed, provide recovery instructions
101
+ if (projectCreated && projectDirectory) {
102
+ const projectName = path.basename(projectDirectory);
103
+ console.error(pc.yellow('\nTo recover your project:'));
104
+ console.error(pc.dim(` cd ${projectName}`));
105
+ console.error(pc.dim(' npm install'));
106
+ console.error(pc.dim(' npx prisma generate'));
107
+ }
59
108
  }
60
109
  process.exit(1);
61
110
  }
@@ -66,7 +115,7 @@ export async function createVeloxApp(initialProjectName) {
66
115
  /**
67
116
  * Prompt user for project configuration
68
117
  */
69
- async function promptProjectConfig(initialName) {
118
+ async function promptProjectConfig(initialName, initialTemplate) {
70
119
  // Project name
71
120
  const name = initialName
72
121
  ? initialName
@@ -79,15 +128,40 @@ async function promptProjectConfig(initialName) {
79
128
  if (!/^[a-z0-9-]+$/.test(value)) {
80
129
  return 'Use lowercase letters, numbers, and hyphens only';
81
130
  }
131
+ if (RESERVED_NAMES.has(value)) {
132
+ return `"${value}" is a reserved name. Please choose another.`;
133
+ }
82
134
  return undefined;
83
135
  },
84
136
  });
85
137
  if (p.isCancel(name)) {
86
138
  throw new Error('canceled');
87
139
  }
88
- // Validate project name format
89
- if (typeof name === 'string' && !/^[a-z0-9-]+$/.test(name)) {
90
- throw new Error('Project name must use lowercase letters, numbers, and hyphens only');
140
+ // Validate project name format (for CLI-provided names)
141
+ if (typeof name === 'string') {
142
+ if (!/^[a-z0-9-]+$/.test(name)) {
143
+ throw new Error('Project name must use lowercase letters, numbers, and hyphens only');
144
+ }
145
+ if (RESERVED_NAMES.has(name)) {
146
+ throw new Error(`"${name}" is a reserved name. Please choose another.`);
147
+ }
148
+ }
149
+ // Template selection (if not provided via CLI flag)
150
+ let template = initialTemplate;
151
+ if (!template) {
152
+ const templates = getAvailableTemplates();
153
+ const selectedTemplate = await p.select({
154
+ message: 'Choose a template',
155
+ options: templates.map((t) => ({
156
+ value: t.type,
157
+ label: t.label,
158
+ hint: t.hint,
159
+ })),
160
+ });
161
+ if (p.isCancel(selectedTemplate)) {
162
+ throw new Error('canceled');
163
+ }
164
+ template = selectedTemplate;
91
165
  }
92
166
  // Detect package manager
93
167
  const packageManager = detectPackageManager();
@@ -95,6 +169,7 @@ async function promptProjectConfig(initialName) {
95
169
  name: name,
96
170
  directory: path.resolve(process.cwd(), name),
97
171
  packageManager,
172
+ template,
98
173
  };
99
174
  }
100
175
  /**
@@ -131,50 +206,37 @@ async function validateProjectDirectory(directory) {
131
206
  */
132
207
  async function createProjectStructure(config) {
133
208
  const spinner = p.spinner();
134
- spinner.start('Creating project files');
209
+ spinner.start(`Creating project files (template: ${config.template})`);
135
210
  try {
136
211
  // Create directory structure
137
- await fs.mkdir(config.directory, { recursive: true });
138
- await fs.mkdir(path.join(config.directory, 'src'), { recursive: true });
139
- await fs.mkdir(path.join(config.directory, 'src', 'config'), { recursive: true });
140
- await fs.mkdir(path.join(config.directory, 'src', 'database'), { recursive: true });
141
- await fs.mkdir(path.join(config.directory, 'src', 'procedures'), { recursive: true });
142
- await fs.mkdir(path.join(config.directory, 'src', 'schemas'), { recursive: true });
143
- await fs.mkdir(path.join(config.directory, 'prisma'), { recursive: true });
144
- await fs.mkdir(path.join(config.directory, 'public'), { recursive: true });
145
- // Template data
146
- const template = {
212
+ const directories = getTemplateDirectories(config.template);
213
+ for (const dir of directories) {
214
+ // Validate path safety
215
+ if (!isPathSafe(config.directory, dir)) {
216
+ throw new Error(`Invalid directory path detected: ${dir}`);
217
+ }
218
+ await fs.mkdir(path.join(config.directory, dir), { recursive: true });
219
+ }
220
+ // Generate template files
221
+ const templateConfig = {
147
222
  projectName: config.name,
148
223
  packageManager: config.packageManager,
224
+ template: config.template,
149
225
  };
150
- // Write root files
151
- await fs.writeFile(path.join(config.directory, 'package.json'), generatePackageJson(template));
152
- await fs.writeFile(path.join(config.directory, 'tsconfig.json'), generateTsConfig());
153
- await fs.writeFile(path.join(config.directory, 'tsup.config.ts'), generateTsupConfig());
154
- await fs.writeFile(path.join(config.directory, '.env.example'), generateEnvExample());
155
- await fs.writeFile(path.join(config.directory, '.env'), generateEnvExample());
156
- await fs.writeFile(path.join(config.directory, '.gitignore'), generateGitignore());
157
- await fs.writeFile(path.join(config.directory, 'README.md'), generateReadme(config.name));
158
- await fs.writeFile(path.join(config.directory, 'CLAUDE.md'), generateClaudeMd(config.name));
159
- // Write Prisma files
160
- await fs.writeFile(path.join(config.directory, 'prisma', 'schema.prisma'), generatePrismaSchema());
161
- await fs.writeFile(path.join(config.directory, 'prisma.config.ts'), generatePrismaConfig());
162
- // Write source files
163
- await fs.writeFile(path.join(config.directory, 'src', 'index.ts'), generateIndexTs());
164
- // Write config files
165
- await fs.writeFile(path.join(config.directory, 'src', 'config', 'index.ts'), generateConfigIndex());
166
- await fs.writeFile(path.join(config.directory, 'src', 'config', 'app.ts'), generateConfigApp());
167
- // Write database files
168
- await fs.writeFile(path.join(config.directory, 'src', 'database', 'index.ts'), generateDatabaseIndex());
169
- // Write procedure files
170
- await fs.writeFile(path.join(config.directory, 'src', 'procedures', 'index.ts'), generateProceduresIndex());
171
- await fs.writeFile(path.join(config.directory, 'src', 'procedures', 'health.ts'), generateHealthProcedures());
172
- await fs.writeFile(path.join(config.directory, 'src', 'procedures', 'users.ts'), generateUserProcedures());
173
- // Write schema files
174
- await fs.writeFile(path.join(config.directory, 'src', 'schemas', 'index.ts'), generateSchemasIndex());
175
- await fs.writeFile(path.join(config.directory, 'src', 'schemas', 'user.ts'), generateUserSchema());
176
- // Write public files
177
- await fs.writeFile(path.join(config.directory, 'public', 'index.html'), generateIndexHtml());
226
+ const files = generateTemplateFiles(templateConfig);
227
+ // Write all files
228
+ for (const file of files) {
229
+ // Validate path safety to prevent path traversal attacks
230
+ if (!isPathSafe(config.directory, file.path)) {
231
+ throw new Error(`Invalid file path detected: ${file.path}`);
232
+ }
233
+ const filePath = path.join(config.directory, file.path);
234
+ const fileDir = path.dirname(filePath);
235
+ // Ensure directory exists
236
+ await fs.mkdir(fileDir, { recursive: true });
237
+ // Write file
238
+ await fs.writeFile(filePath, file.content);
239
+ }
178
240
  spinner.stop('Project files created');
179
241
  }
180
242
  catch (error) {
@@ -200,11 +262,16 @@ async function installDependencies(config) {
200
262
  execSync(installCommand, {
201
263
  cwd: config.directory,
202
264
  stdio: 'ignore',
265
+ timeout: EXEC_TIMEOUT_MS,
203
266
  });
204
267
  spinner.stop('Dependencies installed');
205
268
  }
206
269
  catch (error) {
207
270
  spinner.stop('Failed to install dependencies');
271
+ // Enhance error message for timeout
272
+ if (error instanceof Error && error.message.includes('ETIMEDOUT')) {
273
+ throw new Error('Dependency installation timed out. Check your network connection.');
274
+ }
208
275
  throw error;
209
276
  }
210
277
  }
@@ -238,6 +305,7 @@ async function generatePrismaClient(config) {
238
305
  execSync('npx prisma generate', {
239
306
  cwd: config.directory,
240
307
  stdio: 'ignore',
308
+ timeout: EXEC_TIMEOUT_MS,
241
309
  });
242
310
  spinner.stop('Prisma client generated');
243
311
  }
@@ -259,20 +327,29 @@ async function initializeGit(config) {
259
327
  execSync('git init', {
260
328
  cwd: config.directory,
261
329
  stdio: 'ignore',
330
+ timeout: 30000, // 30 seconds for git operations
262
331
  });
263
332
  execSync('git add .', {
264
333
  cwd: config.directory,
265
334
  stdio: 'ignore',
335
+ timeout: 30000,
266
336
  });
267
337
  execSync('git commit -m "Initial commit from create-velox-app"', {
268
338
  cwd: config.directory,
269
339
  stdio: 'ignore',
340
+ timeout: 30000,
270
341
  });
271
342
  spinner.stop('Git repository initialized');
272
343
  }
273
- catch (_error) {
274
- // Git init is optional - don't fail if it doesn't work
275
- spinner.stop('Skipped git initialization');
344
+ catch (error) {
345
+ // Git init is optional - provide context on why it was skipped
346
+ const errorMessage = error instanceof Error ? error.message.toLowerCase() : '';
347
+ if (errorMessage.includes('command not found') || errorMessage.includes('not recognized')) {
348
+ spinner.stop('Skipped git initialization (git not installed)');
349
+ }
350
+ else {
351
+ spinner.stop('Skipped git initialization');
352
+ }
276
353
  }
277
354
  }
278
355
  // ============================================================================
@@ -286,7 +363,7 @@ function printSuccessMessage(config) {
286
363
  const devCommand = `${config.packageManager} dev`;
287
364
  const dbCommand = `${config.packageManager} db:push`;
288
365
  console.log('');
289
- console.log(pc.green(` Success! Created ${pc.bold(config.name)}`));
366
+ console.log(pc.green(` Success! Created ${pc.bold(config.name)} with ${config.template} template`));
290
367
  console.log('');
291
368
  console.log(' Next steps:');
292
369
  console.log('');
@@ -299,6 +376,11 @@ function printSuccessMessage(config) {
299
376
  console.log(` ${pc.cyan(devCommand)}${pc.dim(' # Start dev server')}`);
300
377
  console.log('');
301
378
  console.log(` Your app will be available at ${pc.cyan('http://localhost:3210')}`);
379
+ // Auth template specific message
380
+ if (config.template === 'auth') {
381
+ console.log('');
382
+ console.log(pc.yellow(' Note: Set JWT_SECRET and JWT_REFRESH_SECRET in .env for production'));
383
+ }
302
384
  console.log('');
303
385
  }
304
386
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Auth Template
3
+ *
4
+ * Full authentication template with JWT auth, guards, rate limiting,
5
+ * token rotation, and secure password hashing.
6
+ */
7
+ import type { TemplateConfig, TemplateFile } from './types.js';
8
+ export declare function generateAuthTemplate(config: TemplateConfig): TemplateFile[];
9
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/templates/auth.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAonC/D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CA6B3E"}