create-velox-app 0.4.3 → 0.4.4
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 +0 -0
- package/dist/index.js +21 -14
- package/dist/index.js.map +1 -1
- package/dist/templates/auth.d.ts +6 -3
- package/dist/templates/auth.d.ts.map +1 -1
- package/dist/templates/auth.js +56 -1112
- package/dist/templates/auth.js.map +1 -1
- package/dist/templates/compiler.d.ts +68 -0
- package/dist/templates/compiler.d.ts.map +1 -0
- package/dist/templates/compiler.js +149 -0
- package/dist/templates/compiler.js.map +1 -0
- package/dist/templates/default.d.ts +5 -2
- package/dist/templates/default.d.ts.map +1 -1
- package/dist/templates/default.js +51 -509
- package/dist/templates/default.js.map +1 -1
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +19 -10
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/placeholders.d.ts +70 -0
- package/dist/templates/placeholders.d.ts.map +1 -0
- package/dist/templates/placeholders.js +145 -0
- package/dist/templates/placeholders.js.map +1 -0
- package/dist/templates/shared/index.d.ts +9 -0
- package/dist/templates/shared/index.d.ts.map +1 -0
- package/dist/templates/shared/index.js +9 -0
- package/dist/templates/shared/index.js.map +1 -0
- package/dist/templates/shared/root.d.ts +14 -0
- package/dist/templates/shared/root.d.ts.map +1 -0
- package/dist/templates/shared/root.js +43 -0
- package/dist/templates/shared/root.js.map +1 -0
- package/dist/templates/shared/web-base.d.ts +18 -0
- package/dist/templates/shared/web-base.d.ts.map +1 -0
- package/dist/templates/shared/web-base.js +63 -0
- package/dist/templates/shared/web-base.js.map +1 -0
- package/dist/templates/shared/web-styles.d.ts +10 -0
- package/dist/templates/shared/web-styles.d.ts.map +1 -0
- package/dist/templates/shared/web-styles.js +26 -0
- package/dist/templates/shared/web-styles.js.map +1 -0
- package/dist/templates/shared.d.ts +2 -13
- package/dist/templates/shared.d.ts.map +1 -1
- package/dist/templates/shared.js +2 -289
- package/dist/templates/shared.js.map +1 -1
- package/dist/templates/source/api/config/app.d.ts +13 -0
- package/dist/templates/source/api/config/app.d.ts.map +1 -0
- package/dist/templates/source/api/config/app.js +14 -0
- package/dist/templates/source/api/config/app.js.map +1 -0
- package/dist/templates/source/api/config/auth.d.ts +34 -0
- package/dist/templates/source/api/config/auth.d.ts.map +1 -0
- package/dist/templates/source/api/config/auth.js +165 -0
- package/dist/templates/source/api/config/auth.js.map +1 -0
- package/dist/templates/source/api/config/index.auth.d.ts +6 -0
- package/dist/templates/source/api/config/index.auth.d.ts.map +1 -0
- package/dist/templates/source/api/config/index.auth.js +6 -0
- package/dist/templates/source/api/config/index.auth.js.map +1 -0
- package/dist/templates/source/api/config/index.default.d.ts +5 -0
- package/dist/templates/source/api/config/index.default.d.ts.map +1 -0
- package/dist/templates/source/api/config/index.default.js +5 -0
- package/dist/templates/source/api/config/index.default.js.map +1 -0
- package/dist/templates/source/api/database/index.d.ts +9 -0
- package/dist/templates/source/api/database/index.d.ts.map +1 -0
- package/dist/templates/source/api/database/index.js +18 -0
- package/dist/templates/source/api/database/index.js.map +1 -0
- package/dist/templates/source/api/index.auth.d.ts +5 -0
- package/dist/templates/source/api/index.auth.d.ts.map +1 -0
- package/dist/templates/source/api/index.auth.js +59 -0
- package/dist/templates/source/api/index.auth.js.map +1 -0
- package/dist/templates/source/api/index.default.d.ts +5 -0
- package/dist/templates/source/api/index.default.d.ts.map +1 -0
- package/dist/templates/source/api/index.default.js +56 -0
- package/dist/templates/source/api/index.default.js.map +1 -0
- package/dist/templates/source/api/prisma.config.d.ts +9 -0
- package/dist/templates/source/api/prisma.config.d.ts.map +1 -0
- package/dist/templates/source/api/prisma.config.js +15 -0
- package/dist/templates/source/api/prisma.config.js.map +1 -0
- package/dist/templates/source/api/procedures/auth.d.ts +14 -0
- package/dist/templates/source/api/procedures/auth.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/auth.js +221 -0
- package/dist/templates/source/api/procedures/auth.js.map +1 -0
- package/dist/templates/source/api/procedures/health.d.ts +5 -0
- package/dist/templates/source/api/procedures/health.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/health.js +21 -0
- package/dist/templates/source/api/procedures/health.js.map +1 -0
- package/dist/templates/source/api/procedures/index.auth.d.ts +7 -0
- package/dist/templates/source/api/procedures/index.auth.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/index.auth.js +7 -0
- package/dist/templates/source/api/procedures/index.auth.js.map +1 -0
- package/dist/templates/source/api/procedures/index.default.d.ts +6 -0
- package/dist/templates/source/api/procedures/index.default.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/index.default.js +6 -0
- package/dist/templates/source/api/procedures/index.default.js.map +1 -0
- package/dist/templates/source/api/procedures/users.auth.d.ts +7 -0
- package/dist/templates/source/api/procedures/users.auth.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/users.auth.js +111 -0
- package/dist/templates/source/api/procedures/users.auth.js.map +1 -0
- package/dist/templates/source/api/procedures/users.default.d.ts +5 -0
- package/dist/templates/source/api/procedures/users.default.d.ts.map +1 -0
- package/dist/templates/source/api/procedures/users.default.js +86 -0
- package/dist/templates/source/api/procedures/users.default.js.map +1 -0
- package/dist/templates/source/api/schemas/index.d.ts +5 -0
- package/dist/templates/source/api/schemas/index.d.ts.map +1 -0
- package/dist/templates/source/api/schemas/index.js +5 -0
- package/dist/templates/source/api/schemas/index.js.map +1 -0
- package/dist/templates/source/api/schemas/user.d.ts +11 -0
- package/dist/templates/source/api/schemas/user.d.ts.map +1 -0
- package/dist/templates/source/api/schemas/user.js +20 -0
- package/dist/templates/source/api/schemas/user.js.map +1 -0
- package/dist/templates/source/api/tsup.config.d.ts +3 -0
- package/dist/templates/source/api/tsup.config.d.ts.map +1 -0
- package/dist/templates/source/api/tsup.config.js +10 -0
- package/dist/templates/source/api/tsup.config.js.map +1 -0
- package/dist/templates/source/web/main.d.ts +9 -0
- package/dist/templates/source/web/main.d.ts.map +1 -0
- package/dist/templates/source/web/main.js +27 -0
- package/dist/templates/source/web/main.js.map +1 -0
- package/dist/templates/source/web/routes/__root.d.ts +2 -0
- package/dist/templates/source/web/routes/__root.d.ts.map +1 -0
- package/dist/templates/source/web/routes/__root.js +28 -0
- package/dist/templates/source/web/routes/__root.js.map +1 -0
- package/dist/templates/source/web/routes/about.d.ts +2 -0
- package/dist/templates/source/web/routes/about.d.ts.map +1 -0
- package/dist/templates/source/web/routes/about.js +33 -0
- package/dist/templates/source/web/routes/about.js.map +1 -0
- package/dist/templates/source/web/routes/index.auth.d.ts +2 -0
- package/dist/templates/source/web/routes/index.auth.d.ts.map +1 -0
- package/dist/templates/source/web/routes/index.auth.js +159 -0
- package/dist/templates/source/web/routes/index.auth.js.map +1 -0
- package/dist/templates/source/web/routes/index.default.d.ts +2 -0
- package/dist/templates/source/web/routes/index.default.d.ts.map +1 -0
- package/dist/templates/source/web/routes/index.default.js +60 -0
- package/dist/templates/source/web/routes/index.default.js.map +1 -0
- package/dist/templates/source/web/vite.config.d.ts +3 -0
- package/dist/templates/source/web/vite.config.d.ts.map +1 -0
- package/dist/templates/source/web/vite.config.js +22 -0
- package/dist/templates/source/web/vite.config.js.map +1 -0
- package/package.json +11 -9
- package/src/templates/source/api/config/app.ts +13 -0
- package/src/templates/source/api/config/auth.ts +202 -0
- package/src/templates/source/api/config/database.ts +22 -0
- package/src/templates/source/api/env.auth +22 -0
- package/src/templates/source/api/env.default +13 -0
- package/src/templates/source/api/index.auth.ts +30 -0
- package/src/templates/source/api/index.default.ts +27 -0
- package/src/templates/source/api/package.auth.json +40 -0
- package/src/templates/source/api/package.default.json +38 -0
- package/src/templates/source/api/prisma/schema.auth.prisma +30 -0
- package/src/templates/source/api/prisma/schema.default.prisma +28 -0
- package/src/templates/source/api/prisma.config.ts +15 -0
- package/src/templates/source/api/procedures/auth.ts +285 -0
- package/src/templates/source/api/procedures/health.ts +24 -0
- package/src/templates/source/api/procedures/users.auth.ts +170 -0
- package/src/templates/source/api/procedures/users.default.ts +119 -0
- package/src/templates/source/api/schemas/user.ts +29 -0
- package/src/templates/source/api/tsconfig.json +12 -0
- package/src/templates/source/api/tsup.config.ts +10 -0
- package/src/templates/source/root/CLAUDE.auth.md +148 -0
- package/src/templates/source/root/CLAUDE.default.md +128 -0
- package/src/templates/source/root/README.md +72 -0
- package/src/templates/source/root/gitignore +37 -0
- package/src/templates/source/root/package.json +17 -0
- package/src/templates/source/root/pnpm-workspace.yaml +2 -0
- package/src/templates/source/root/tsconfig.json +19 -0
- package/src/templates/source/web/App.module.css +282 -0
- package/src/templates/source/web/favicon.svg +12 -0
- package/src/templates/source/web/index.html +13 -0
- package/src/templates/source/web/main.tsx +38 -0
- package/src/templates/source/web/package.json +26 -0
- package/src/templates/source/web/routes/__root.tsx +31 -0
- package/src/templates/source/web/routes/about.tsx +36 -0
- package/src/templates/source/web/routes/index.auth.tsx +230 -0
- package/src/templates/source/web/routes/index.default.tsx +79 -0
- package/src/templates/source/web/styles/global.css +90 -0
- package/src/templates/source/web/tsconfig.json +24 -0
- package/src/templates/source/web/vite.config.ts +22 -0
- package/LICENSE +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/templates/auth.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/templates/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Compiler
|
|
3
|
+
*
|
|
4
|
+
* Reads template source files from disk and applies placeholder replacements.
|
|
5
|
+
* Source files are actual TypeScript/TSX that can be linted and type-checked.
|
|
6
|
+
*/
|
|
7
|
+
import type { TemplateConfig, TemplateFile } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Read a template source file from disk.
|
|
10
|
+
*
|
|
11
|
+
* @param relativePath - Path relative to source/ directory (e.g., 'web/main.tsx')
|
|
12
|
+
* @returns File content as string
|
|
13
|
+
* @throws Error if file not found
|
|
14
|
+
*/
|
|
15
|
+
export declare function readTemplateSource(relativePath: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Read and compile a template source file.
|
|
18
|
+
*
|
|
19
|
+
* 1. Reads the source file
|
|
20
|
+
* 2. Processes conditional blocks
|
|
21
|
+
* 3. Applies placeholder replacements
|
|
22
|
+
*
|
|
23
|
+
* @param relativePath - Path relative to source/ directory
|
|
24
|
+
* @param config - Template configuration
|
|
25
|
+
* @returns Compiled template content
|
|
26
|
+
*/
|
|
27
|
+
export declare function compileTemplate(relativePath: string, config: TemplateConfig): string;
|
|
28
|
+
/**
|
|
29
|
+
* Read and compile a template, returning as a TemplateFile.
|
|
30
|
+
*
|
|
31
|
+
* @param sourcePath - Path relative to source/ directory
|
|
32
|
+
* @param outputPath - Path where the file will be written in the generated project
|
|
33
|
+
* @param config - Template configuration
|
|
34
|
+
* @returns TemplateFile with path and compiled content
|
|
35
|
+
*/
|
|
36
|
+
export declare function compileTemplateFile(sourcePath: string, outputPath: string, config: TemplateConfig): TemplateFile;
|
|
37
|
+
/**
|
|
38
|
+
* Mapping of source path to output path.
|
|
39
|
+
*/
|
|
40
|
+
export interface TemplatePath {
|
|
41
|
+
/** Path relative to source/ directory */
|
|
42
|
+
source: string;
|
|
43
|
+
/** Path where file will be written in generated project */
|
|
44
|
+
output: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Compile multiple template files in batch.
|
|
48
|
+
*
|
|
49
|
+
* @param paths - Array of source/output path mappings
|
|
50
|
+
* @param config - Template configuration
|
|
51
|
+
* @returns Array of compiled TemplateFiles
|
|
52
|
+
*/
|
|
53
|
+
export declare function compileTemplates(paths: TemplatePath[], config: TemplateConfig): TemplateFile[];
|
|
54
|
+
/**
|
|
55
|
+
* Check if a source file exists.
|
|
56
|
+
*
|
|
57
|
+
* @param relativePath - Path relative to source/ directory
|
|
58
|
+
* @returns true if file exists
|
|
59
|
+
*/
|
|
60
|
+
export declare function sourceFileExists(relativePath: string): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* List all files in a source directory.
|
|
63
|
+
*
|
|
64
|
+
* @param relativeDir - Directory path relative to source/
|
|
65
|
+
* @returns Array of file paths relative to source/
|
|
66
|
+
*/
|
|
67
|
+
export declare function listSourceFiles(relativeDir: string): string[];
|
|
68
|
+
//# sourceMappingURL=compiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../../src/templates/compiler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuD/D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAQ/D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,CAIpF;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,cAAc,GACrB,YAAY,CAKd;AAMD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,YAAY,EAAE,EACrB,MAAM,EAAE,cAAc,GACrB,YAAY,EAAE,CAIhB;AAMD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA0B7D"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template Compiler
|
|
3
|
+
*
|
|
4
|
+
* Reads template source files from disk and applies placeholder replacements.
|
|
5
|
+
* Source files are actual TypeScript/TSX that can be linted and type-checked.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
import { applyPlaceholders, processConditionals } from './placeholders.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Path Resolution
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
/** Cached source directory path (memoized for performance) */
|
|
17
|
+
let cachedSourceDir = null;
|
|
18
|
+
/**
|
|
19
|
+
* Get the path to the source directory.
|
|
20
|
+
*
|
|
21
|
+
* Source files are located at:
|
|
22
|
+
* - Development: packages/create/src/templates/source/
|
|
23
|
+
* - Production (npm): packages/create/src/templates/source/ (included via files array)
|
|
24
|
+
*
|
|
25
|
+
* We try multiple paths to handle both development and production scenarios:
|
|
26
|
+
* 1. Relative to compiled dist/templates/compiler.js -> ../../src/templates/source
|
|
27
|
+
* 2. Relative to source (when running ts-node or similar)
|
|
28
|
+
*
|
|
29
|
+
* Result is memoized since the path doesn't change during execution.
|
|
30
|
+
*/
|
|
31
|
+
function getSourceDir() {
|
|
32
|
+
if (cachedSourceDir !== null) {
|
|
33
|
+
return cachedSourceDir;
|
|
34
|
+
}
|
|
35
|
+
// Try path relative to dist (production build)
|
|
36
|
+
const distRelativePath = path.join(__dirname, '..', '..', 'src', 'templates', 'source');
|
|
37
|
+
if (fs.existsSync(distRelativePath)) {
|
|
38
|
+
cachedSourceDir = distRelativePath;
|
|
39
|
+
return cachedSourceDir;
|
|
40
|
+
}
|
|
41
|
+
// Fallback to path relative to src (development with ts-node/tsx)
|
|
42
|
+
const srcRelativePath = path.join(__dirname, 'source');
|
|
43
|
+
if (fs.existsSync(srcRelativePath)) {
|
|
44
|
+
cachedSourceDir = srcRelativePath;
|
|
45
|
+
return cachedSourceDir;
|
|
46
|
+
}
|
|
47
|
+
throw new Error(`Template source directory not found. Checked:\n` +
|
|
48
|
+
` - ${distRelativePath}\n` +
|
|
49
|
+
` - ${srcRelativePath}`);
|
|
50
|
+
}
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// Template Reading
|
|
53
|
+
// ============================================================================
|
|
54
|
+
/**
|
|
55
|
+
* Read a template source file from disk.
|
|
56
|
+
*
|
|
57
|
+
* @param relativePath - Path relative to source/ directory (e.g., 'web/main.tsx')
|
|
58
|
+
* @returns File content as string
|
|
59
|
+
* @throws Error if file not found
|
|
60
|
+
*/
|
|
61
|
+
export function readTemplateSource(relativePath) {
|
|
62
|
+
const sourcePath = path.join(getSourceDir(), relativePath);
|
|
63
|
+
if (!fs.existsSync(sourcePath)) {
|
|
64
|
+
throw new Error(`Template source file not found: ${relativePath}`);
|
|
65
|
+
}
|
|
66
|
+
return fs.readFileSync(sourcePath, 'utf-8');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Read and compile a template source file.
|
|
70
|
+
*
|
|
71
|
+
* 1. Reads the source file
|
|
72
|
+
* 2. Processes conditional blocks
|
|
73
|
+
* 3. Applies placeholder replacements
|
|
74
|
+
*
|
|
75
|
+
* @param relativePath - Path relative to source/ directory
|
|
76
|
+
* @param config - Template configuration
|
|
77
|
+
* @returns Compiled template content
|
|
78
|
+
*/
|
|
79
|
+
export function compileTemplate(relativePath, config) {
|
|
80
|
+
const content = readTemplateSource(relativePath);
|
|
81
|
+
const withConditionals = processConditionals(content, config.template);
|
|
82
|
+
return applyPlaceholders(withConditionals, config);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Read and compile a template, returning as a TemplateFile.
|
|
86
|
+
*
|
|
87
|
+
* @param sourcePath - Path relative to source/ directory
|
|
88
|
+
* @param outputPath - Path where the file will be written in the generated project
|
|
89
|
+
* @param config - Template configuration
|
|
90
|
+
* @returns TemplateFile with path and compiled content
|
|
91
|
+
*/
|
|
92
|
+
export function compileTemplateFile(sourcePath, outputPath, config) {
|
|
93
|
+
return {
|
|
94
|
+
path: outputPath,
|
|
95
|
+
content: compileTemplate(sourcePath, config),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Compile multiple template files in batch.
|
|
100
|
+
*
|
|
101
|
+
* @param paths - Array of source/output path mappings
|
|
102
|
+
* @param config - Template configuration
|
|
103
|
+
* @returns Array of compiled TemplateFiles
|
|
104
|
+
*/
|
|
105
|
+
export function compileTemplates(paths, config) {
|
|
106
|
+
return paths.map(({ source, output }) => compileTemplateFile(source, output, config));
|
|
107
|
+
}
|
|
108
|
+
// ============================================================================
|
|
109
|
+
// Source File Discovery
|
|
110
|
+
// ============================================================================
|
|
111
|
+
/**
|
|
112
|
+
* Check if a source file exists.
|
|
113
|
+
*
|
|
114
|
+
* @param relativePath - Path relative to source/ directory
|
|
115
|
+
* @returns true if file exists
|
|
116
|
+
*/
|
|
117
|
+
export function sourceFileExists(relativePath) {
|
|
118
|
+
const sourcePath = path.join(getSourceDir(), relativePath);
|
|
119
|
+
return fs.existsSync(sourcePath);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* List all files in a source directory.
|
|
123
|
+
*
|
|
124
|
+
* @param relativeDir - Directory path relative to source/
|
|
125
|
+
* @returns Array of file paths relative to source/
|
|
126
|
+
*/
|
|
127
|
+
export function listSourceFiles(relativeDir) {
|
|
128
|
+
const dirPath = path.join(getSourceDir(), relativeDir);
|
|
129
|
+
if (!fs.existsSync(dirPath)) {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
const files = [];
|
|
133
|
+
function walkDir(currentPath, basePath) {
|
|
134
|
+
const entries = fs.readdirSync(currentPath, { withFileTypes: true });
|
|
135
|
+
for (const entry of entries) {
|
|
136
|
+
const fullPath = path.join(currentPath, entry.name);
|
|
137
|
+
const relativePath = path.join(basePath, entry.name);
|
|
138
|
+
if (entry.isDirectory()) {
|
|
139
|
+
walkDir(fullPath, relativePath);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
files.push(relativePath);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
walkDir(dirPath, relativeDir);
|
|
147
|
+
return files;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=compiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compiler.js","sourceRoot":"","sources":["../../src/templates/compiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Default Template (
|
|
2
|
+
* Default Template (Full-Stack)
|
|
3
|
+
*
|
|
4
|
+
* Full-stack workspace template with:
|
|
5
|
+
* - apps/api: REST API with user CRUD operations
|
|
6
|
+
* - apps/web: React frontend with TanStack Router
|
|
3
7
|
*
|
|
4
|
-
* Basic REST API template with user CRUD operations.
|
|
5
8
|
* No authentication - suitable for internal APIs or as a starting point.
|
|
6
9
|
*/
|
|
7
10
|
import type { TemplateConfig, TemplateFile } from './types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/templates/default.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA0D/D,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,YAAY,EAAE,CA8B9E"}
|