create-react-forge 1.0.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 +109 -0
- package/dist/assembler/index.d.ts +100 -0
- package/dist/assembler/index.d.ts.map +1 -0
- package/dist/assembler/index.js +198 -0
- package/dist/assembler/index.js.map +1 -0
- package/dist/assembler/merger.d.ts +14 -0
- package/dist/assembler/merger.d.ts.map +1 -0
- package/dist/assembler/merger.js +58 -0
- package/dist/assembler/merger.js.map +1 -0
- package/dist/cli/index.d.ts +57 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +110 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/parser.d.ts +3 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +50 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/prompts.d.ts +24 -0
- package/dist/cli/prompts.d.ts.map +1 -0
- package/dist/cli/prompts.js +126 -0
- package/dist/cli/prompts.js.map +1 -0
- package/dist/config/builder.d.ts +42 -0
- package/dist/config/builder.d.ts.map +1 -0
- package/dist/config/builder.js +113 -0
- package/dist/config/builder.js.map +1 -0
- package/dist/config/defaults.d.ts +51 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +41 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/schema.d.ts +318 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +100 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/dependencies/resolver.d.ts +43 -0
- package/dist/dependencies/resolver.d.ts.map +1 -0
- package/dist/dependencies/resolver.js +117 -0
- package/dist/dependencies/resolver.js.map +1 -0
- package/dist/docs/architecture-generator.d.ts +3 -0
- package/dist/docs/architecture-generator.d.ts.map +1 -0
- package/dist/docs/architecture-generator.js +73 -0
- package/dist/docs/architecture-generator.js.map +1 -0
- package/dist/docs/index.d.ts +2 -0
- package/dist/docs/index.d.ts.map +1 -0
- package/dist/docs/index.js +2 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/generator/index.d.ts +41 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +201 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/lifecycle/index.d.ts +2 -0
- package/dist/lifecycle/index.d.ts.map +1 -0
- package/dist/lifecycle/index.js +2 -0
- package/dist/lifecycle/index.js.map +1 -0
- package/dist/lifecycle/installer.d.ts +2 -0
- package/dist/lifecycle/installer.d.ts.map +1 -0
- package/dist/lifecycle/installer.js +14 -0
- package/dist/lifecycle/installer.js.map +1 -0
- package/dist/plugins/index.d.ts +4 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +5 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +16 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +9 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +41 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/types.d.ts +17 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/templates/registry.d.ts +108 -0
- package/dist/templates/registry.d.ts.map +1 -0
- package/dist/templates/registry.js +238 -0
- package/dist/templates/registry.js.map +1 -0
- package/dist/templates/utils.d.ts +49 -0
- package/dist/templates/utils.d.ts.map +1 -0
- package/dist/templates/utils.js +103 -0
- package/dist/templates/utils.js.map +1 -0
- package/dist/testing/configurer.d.ts +29 -0
- package/dist/testing/configurer.d.ts.map +1 -0
- package/dist/testing/configurer.js +163 -0
- package/dist/testing/configurer.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template manifest - metadata for each template overlay
|
|
3
|
+
*/
|
|
4
|
+
export interface TemplateManifest {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
description?: string;
|
|
8
|
+
compatibleWith?: string[];
|
|
9
|
+
dependencies?: Record<string, string>;
|
|
10
|
+
devDependencies?: Record<string, string>;
|
|
11
|
+
scripts?: Record<string, string>;
|
|
12
|
+
filePatterns?: {
|
|
13
|
+
include?: string[];
|
|
14
|
+
exclude?: string[];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Template overlay - a composable set of files and configuration
|
|
19
|
+
*/
|
|
20
|
+
export interface TemplateOverlay {
|
|
21
|
+
name: string;
|
|
22
|
+
path: string;
|
|
23
|
+
manifest: TemplateManifest;
|
|
24
|
+
files: Map<string, string>;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Template registry - manages template discovery and loading
|
|
28
|
+
*/
|
|
29
|
+
export declare class TemplateRegistry {
|
|
30
|
+
private loadedTemplates;
|
|
31
|
+
private templatesDir;
|
|
32
|
+
constructor(templatesDir?: string);
|
|
33
|
+
/**
|
|
34
|
+
* Load a template manifest from path
|
|
35
|
+
*/
|
|
36
|
+
loadManifest(manifestPath: string): TemplateManifest;
|
|
37
|
+
/**
|
|
38
|
+
* Load a template overlay from a directory
|
|
39
|
+
*/
|
|
40
|
+
loadTemplate(templatePath: string): TemplateOverlay;
|
|
41
|
+
/**
|
|
42
|
+
* Load and register a template
|
|
43
|
+
*/
|
|
44
|
+
loadAndRegister(templatePath: string): TemplateOverlay;
|
|
45
|
+
/**
|
|
46
|
+
* Register a template overlay
|
|
47
|
+
*/
|
|
48
|
+
register(name: string, overlay: TemplateOverlay): void;
|
|
49
|
+
/**
|
|
50
|
+
* Get a loaded template
|
|
51
|
+
*/
|
|
52
|
+
get(name: string): TemplateOverlay | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* List all loaded templates
|
|
55
|
+
*/
|
|
56
|
+
list(): TemplateOverlay[];
|
|
57
|
+
/**
|
|
58
|
+
* Get templates by category
|
|
59
|
+
*/
|
|
60
|
+
getByCategory(category: 'base' | 'runtime' | 'feature' | 'testing'): TemplateOverlay[];
|
|
61
|
+
/**
|
|
62
|
+
* Load multiple templates for a project configuration
|
|
63
|
+
*/
|
|
64
|
+
loadTemplatesForConfig(config: {
|
|
65
|
+
runtime: 'vite' | 'nextjs';
|
|
66
|
+
styling: {
|
|
67
|
+
solution: string;
|
|
68
|
+
};
|
|
69
|
+
stateManagement: string;
|
|
70
|
+
testing: {
|
|
71
|
+
enabled: boolean;
|
|
72
|
+
unit?: {
|
|
73
|
+
runner: string;
|
|
74
|
+
};
|
|
75
|
+
e2e?: {
|
|
76
|
+
enabled: boolean;
|
|
77
|
+
runner: string;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
dataFetching: {
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
};
|
|
83
|
+
}): TemplateOverlay[];
|
|
84
|
+
/**
|
|
85
|
+
* Get all dependencies from a set of templates
|
|
86
|
+
*/
|
|
87
|
+
getDependencies(templateNames: string[]): {
|
|
88
|
+
dependencies: Record<string, string>;
|
|
89
|
+
devDependencies: Record<string, string>;
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Get merged scripts from templates
|
|
93
|
+
*/
|
|
94
|
+
getScripts(templateNames: string[]): Record<string, string>;
|
|
95
|
+
/**
|
|
96
|
+
* Get all files from loaded templates merged together
|
|
97
|
+
*/
|
|
98
|
+
getMergedFiles(): Map<string, string>;
|
|
99
|
+
/**
|
|
100
|
+
* Get merged dependencies from all loaded templates
|
|
101
|
+
*/
|
|
102
|
+
getMergedDependencies(): {
|
|
103
|
+
dependencies: Record<string, string>;
|
|
104
|
+
devDependencies: Record<string, string>;
|
|
105
|
+
scripts: Record<string, string>;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, statSync } from 'fs';
|
|
2
|
+
import { dirname, join, relative } from 'path';
|
|
3
|
+
import { fileURLToPath } from 'url';
|
|
4
|
+
/**
|
|
5
|
+
* Get the templates directory path
|
|
6
|
+
*/
|
|
7
|
+
function getTemplatesDir() {
|
|
8
|
+
// Handle both ESM and compiled scenarios
|
|
9
|
+
const currentFile = fileURLToPath(import.meta.url);
|
|
10
|
+
const currentDir = dirname(currentFile);
|
|
11
|
+
// Check if we're in dist or src
|
|
12
|
+
if (currentDir.includes('/dist/')) {
|
|
13
|
+
// Running from compiled dist, templates are in src
|
|
14
|
+
return join(currentDir, '../../src/templates/overlays');
|
|
15
|
+
}
|
|
16
|
+
return join(currentDir, 'overlays');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Binary file extensions to skip
|
|
20
|
+
*/
|
|
21
|
+
const BINARY_EXTENSIONS = new Set([
|
|
22
|
+
'.png', '.jpg', '.jpeg', '.gif', '.webp', '.ico', '.svg',
|
|
23
|
+
'.woff', '.woff2', '.ttf', '.eot', '.otf',
|
|
24
|
+
'.mp3', '.mp4', '.wav', '.ogg', '.webm',
|
|
25
|
+
'.zip', '.tar', '.gz', '.rar',
|
|
26
|
+
'.pdf', '.doc', '.docx',
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Check if a file is binary based on extension
|
|
30
|
+
*/
|
|
31
|
+
function isBinaryFile(filePath) {
|
|
32
|
+
const ext = filePath.substring(filePath.lastIndexOf('.')).toLowerCase();
|
|
33
|
+
return BINARY_EXTENSIONS.has(ext);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Recursively read all files in a directory
|
|
37
|
+
*/
|
|
38
|
+
function readDirectoryRecursively(dirPath, basePath = dirPath, exclude = ['manifest.json']) {
|
|
39
|
+
const files = new Map();
|
|
40
|
+
if (!existsSync(dirPath)) {
|
|
41
|
+
return files;
|
|
42
|
+
}
|
|
43
|
+
const entries = readdirSync(dirPath);
|
|
44
|
+
for (const entry of entries) {
|
|
45
|
+
const fullPath = join(dirPath, entry);
|
|
46
|
+
const relativePath = relative(basePath, fullPath);
|
|
47
|
+
// Skip excluded files
|
|
48
|
+
if (exclude.includes(entry) || exclude.includes(relativePath)) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const stat = statSync(fullPath);
|
|
52
|
+
if (stat.isDirectory()) {
|
|
53
|
+
// Recursively read subdirectory
|
|
54
|
+
const subFiles = readDirectoryRecursively(fullPath, basePath, exclude);
|
|
55
|
+
subFiles.forEach((content, path) => files.set(path, content));
|
|
56
|
+
}
|
|
57
|
+
else if (stat.isFile()) {
|
|
58
|
+
// Read file content (skip binary files)
|
|
59
|
+
if (!isBinaryFile(fullPath)) {
|
|
60
|
+
try {
|
|
61
|
+
const content = readFileSync(fullPath, 'utf-8');
|
|
62
|
+
files.set(relativePath, content);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
// Skip files that can't be read as text
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
// For binary files, store a marker to copy them
|
|
70
|
+
files.set(relativePath, `__BINARY__:${fullPath}`);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return files;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Template registry - manages template discovery and loading
|
|
78
|
+
*/
|
|
79
|
+
export class TemplateRegistry {
|
|
80
|
+
constructor(templatesDir) {
|
|
81
|
+
this.loadedTemplates = new Map();
|
|
82
|
+
this.templatesDir = templatesDir || getTemplatesDir();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Load a template manifest from path
|
|
86
|
+
*/
|
|
87
|
+
loadManifest(manifestPath) {
|
|
88
|
+
try {
|
|
89
|
+
const content = readFileSync(manifestPath, 'utf-8');
|
|
90
|
+
return JSON.parse(content);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new Error(`Failed to load manifest from '${manifestPath}': ${error}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Load a template overlay from a directory
|
|
98
|
+
*/
|
|
99
|
+
loadTemplate(templatePath) {
|
|
100
|
+
const fullPath = join(this.templatesDir, templatePath);
|
|
101
|
+
const manifestPath = join(fullPath, 'manifest.json');
|
|
102
|
+
if (!existsSync(manifestPath)) {
|
|
103
|
+
throw new Error(`Template manifest not found: ${manifestPath}`);
|
|
104
|
+
}
|
|
105
|
+
const manifest = this.loadManifest(manifestPath);
|
|
106
|
+
const exclude = ['manifest.json', ...(manifest.filePatterns?.exclude || [])];
|
|
107
|
+
const files = readDirectoryRecursively(fullPath, fullPath, exclude);
|
|
108
|
+
const overlay = {
|
|
109
|
+
name: manifest.name,
|
|
110
|
+
path: templatePath,
|
|
111
|
+
manifest,
|
|
112
|
+
files,
|
|
113
|
+
};
|
|
114
|
+
return overlay;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Load and register a template
|
|
118
|
+
*/
|
|
119
|
+
loadAndRegister(templatePath) {
|
|
120
|
+
const overlay = this.loadTemplate(templatePath);
|
|
121
|
+
this.loadedTemplates.set(templatePath, overlay);
|
|
122
|
+
return overlay;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Register a template overlay
|
|
126
|
+
*/
|
|
127
|
+
register(name, overlay) {
|
|
128
|
+
this.loadedTemplates.set(name, overlay);
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get a loaded template
|
|
132
|
+
*/
|
|
133
|
+
get(name) {
|
|
134
|
+
return this.loadedTemplates.get(name);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* List all loaded templates
|
|
138
|
+
*/
|
|
139
|
+
list() {
|
|
140
|
+
return Array.from(this.loadedTemplates.values());
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get templates by category
|
|
144
|
+
*/
|
|
145
|
+
getByCategory(category) {
|
|
146
|
+
return Array.from(this.loadedTemplates.values()).filter((t) => t.path.includes(`/${category}/`) || t.path.startsWith(`${category}/`) || t.path === category);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Load multiple templates for a project configuration
|
|
150
|
+
*/
|
|
151
|
+
loadTemplatesForConfig(config) {
|
|
152
|
+
const templates = [];
|
|
153
|
+
// Always load base template
|
|
154
|
+
templates.push(this.loadAndRegister('base'));
|
|
155
|
+
// Load runtime template
|
|
156
|
+
templates.push(this.loadAndRegister(`runtime/${config.runtime}`));
|
|
157
|
+
// Load styling template
|
|
158
|
+
if (config.styling.solution === 'tailwind') {
|
|
159
|
+
templates.push(this.loadAndRegister('styling/tailwind'));
|
|
160
|
+
}
|
|
161
|
+
else if (config.styling.solution === 'css-modules') {
|
|
162
|
+
templates.push(this.loadAndRegister('styling/css-modules'));
|
|
163
|
+
}
|
|
164
|
+
// Load state management template
|
|
165
|
+
if (config.stateManagement && config.stateManagement !== 'none') {
|
|
166
|
+
templates.push(this.loadAndRegister(`state/${config.stateManagement}`));
|
|
167
|
+
}
|
|
168
|
+
// Load testing templates
|
|
169
|
+
if (config.testing.enabled) {
|
|
170
|
+
if (config.testing.unit?.runner) {
|
|
171
|
+
templates.push(this.loadAndRegister(`testing/${config.testing.unit.runner}`));
|
|
172
|
+
}
|
|
173
|
+
if (config.testing.e2e?.enabled && config.testing.e2e.runner && config.testing.e2e.runner !== 'none') {
|
|
174
|
+
templates.push(this.loadAndRegister(`testing/${config.testing.e2e.runner}`));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
// Load data fetching template
|
|
178
|
+
if (config.dataFetching.enabled) {
|
|
179
|
+
templates.push(this.loadAndRegister('features/tanstack-query'));
|
|
180
|
+
}
|
|
181
|
+
return templates;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Get all dependencies from a set of templates
|
|
185
|
+
*/
|
|
186
|
+
getDependencies(templateNames) {
|
|
187
|
+
const deps = {};
|
|
188
|
+
const devDeps = {};
|
|
189
|
+
for (const name of templateNames) {
|
|
190
|
+
const template = this.get(name);
|
|
191
|
+
if (!template)
|
|
192
|
+
continue;
|
|
193
|
+
Object.assign(deps, template.manifest.dependencies || {});
|
|
194
|
+
Object.assign(devDeps, template.manifest.devDependencies || {});
|
|
195
|
+
}
|
|
196
|
+
return { dependencies: deps, devDependencies: devDeps };
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get merged scripts from templates
|
|
200
|
+
*/
|
|
201
|
+
getScripts(templateNames) {
|
|
202
|
+
const scripts = {};
|
|
203
|
+
for (const name of templateNames) {
|
|
204
|
+
const template = this.get(name);
|
|
205
|
+
if (!template)
|
|
206
|
+
continue;
|
|
207
|
+
Object.assign(scripts, template.manifest.scripts || {});
|
|
208
|
+
}
|
|
209
|
+
return scripts;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Get all files from loaded templates merged together
|
|
213
|
+
*/
|
|
214
|
+
getMergedFiles() {
|
|
215
|
+
const mergedFiles = new Map();
|
|
216
|
+
for (const template of this.loadedTemplates.values()) {
|
|
217
|
+
template.files.forEach((content, path) => {
|
|
218
|
+
mergedFiles.set(path, content);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
return mergedFiles;
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get merged dependencies from all loaded templates
|
|
225
|
+
*/
|
|
226
|
+
getMergedDependencies() {
|
|
227
|
+
const deps = {};
|
|
228
|
+
const devDeps = {};
|
|
229
|
+
const scripts = {};
|
|
230
|
+
for (const template of this.loadedTemplates.values()) {
|
|
231
|
+
Object.assign(deps, template.manifest.dependencies || {});
|
|
232
|
+
Object.assign(devDeps, template.manifest.devDependencies || {});
|
|
233
|
+
Object.assign(scripts, template.manifest.scripts || {});
|
|
234
|
+
}
|
|
235
|
+
return { dependencies: deps, devDependencies: devDeps, scripts };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/templates/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ProjectConfig } from '../config/schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Utility functions for template operations
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Get template path for a configuration
|
|
7
|
+
*/
|
|
8
|
+
export declare function getTemplatePathForRuntime(runtime: 'vite' | 'nextjs'): string;
|
|
9
|
+
/**
|
|
10
|
+
* Get template path for styling solution
|
|
11
|
+
*/
|
|
12
|
+
export declare function getTemplatePathForStyling(styling: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Get template path for state management
|
|
15
|
+
*/
|
|
16
|
+
export declare function getTemplatePathForState(state: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Get template path for testing setup
|
|
19
|
+
*/
|
|
20
|
+
export declare function getTemplatePathForTesting(runner: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Get template path for data fetching
|
|
23
|
+
*/
|
|
24
|
+
export declare function getTemplatePathForDataFetching(library: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Determine applicable template paths based on configuration
|
|
27
|
+
*/
|
|
28
|
+
export declare function getApplicableTemplatePaths(config: ProjectConfig): string[];
|
|
29
|
+
/**
|
|
30
|
+
* Legacy function for backward compatibility
|
|
31
|
+
* @deprecated Use getApplicableTemplatePaths instead
|
|
32
|
+
*/
|
|
33
|
+
export declare function getApplicableTemplates(config: {
|
|
34
|
+
runtime: string;
|
|
35
|
+
styling: string;
|
|
36
|
+
stateManagement: string;
|
|
37
|
+
testing: {
|
|
38
|
+
unit?: {
|
|
39
|
+
enabled?: boolean;
|
|
40
|
+
};
|
|
41
|
+
e2e?: {
|
|
42
|
+
enabled?: boolean;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
dataFetching?: {
|
|
46
|
+
enabled?: boolean;
|
|
47
|
+
};
|
|
48
|
+
}): string[];
|
|
49
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/templates/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AAEH;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAE5E;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGtE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAuC1E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,GAAG,CAAC,EAAE;YAAE,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAAC;IACvE,YAAY,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtC,GAAG,MAAM,EAAE,CAiBX"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for template operations
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Get template path for a configuration
|
|
6
|
+
*/
|
|
7
|
+
export function getTemplatePathForRuntime(runtime) {
|
|
8
|
+
return `runtime/${runtime}`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get template path for styling solution
|
|
12
|
+
*/
|
|
13
|
+
export function getTemplatePathForStyling(styling) {
|
|
14
|
+
if (styling === 'css')
|
|
15
|
+
return '';
|
|
16
|
+
if (styling === 'tailwind')
|
|
17
|
+
return 'styling/tailwind';
|
|
18
|
+
if (styling === 'css-modules')
|
|
19
|
+
return 'styling/css-modules';
|
|
20
|
+
return `styling/${styling}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get template path for state management
|
|
24
|
+
*/
|
|
25
|
+
export function getTemplatePathForState(state) {
|
|
26
|
+
if (state === 'none')
|
|
27
|
+
return '';
|
|
28
|
+
return `state/${state}`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Get template path for testing setup
|
|
32
|
+
*/
|
|
33
|
+
export function getTemplatePathForTesting(runner) {
|
|
34
|
+
if (runner === 'none')
|
|
35
|
+
return '';
|
|
36
|
+
return `testing/${runner}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get template path for data fetching
|
|
40
|
+
*/
|
|
41
|
+
export function getTemplatePathForDataFetching(library) {
|
|
42
|
+
if (library === 'none')
|
|
43
|
+
return '';
|
|
44
|
+
return 'features/tanstack-query';
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Determine applicable template paths based on configuration
|
|
48
|
+
*/
|
|
49
|
+
export function getApplicableTemplatePaths(config) {
|
|
50
|
+
const templates = [];
|
|
51
|
+
// Always include base template
|
|
52
|
+
templates.push('base');
|
|
53
|
+
// Runtime template
|
|
54
|
+
templates.push(getTemplatePathForRuntime(config.runtime));
|
|
55
|
+
// Styling template
|
|
56
|
+
const stylingPath = getTemplatePathForStyling(config.styling.solution);
|
|
57
|
+
if (stylingPath) {
|
|
58
|
+
templates.push(stylingPath);
|
|
59
|
+
}
|
|
60
|
+
// State management template
|
|
61
|
+
const statePath = getTemplatePathForState(config.stateManagement);
|
|
62
|
+
if (statePath) {
|
|
63
|
+
templates.push(statePath);
|
|
64
|
+
}
|
|
65
|
+
// Testing templates
|
|
66
|
+
if (config.testing.enabled) {
|
|
67
|
+
if (config.testing.unit?.enabled) {
|
|
68
|
+
const unitPath = getTemplatePathForTesting(config.testing.unit.runner);
|
|
69
|
+
if (unitPath)
|
|
70
|
+
templates.push(unitPath);
|
|
71
|
+
}
|
|
72
|
+
if (config.testing.e2e?.enabled && config.testing.e2e.runner !== 'none') {
|
|
73
|
+
const e2ePath = getTemplatePathForTesting(config.testing.e2e.runner);
|
|
74
|
+
if (e2ePath)
|
|
75
|
+
templates.push(e2ePath);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Data fetching template
|
|
79
|
+
if (config.dataFetching.enabled) {
|
|
80
|
+
templates.push(getTemplatePathForDataFetching('tanstack-query'));
|
|
81
|
+
}
|
|
82
|
+
return templates;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Legacy function for backward compatibility
|
|
86
|
+
* @deprecated Use getApplicableTemplatePaths instead
|
|
87
|
+
*/
|
|
88
|
+
export function getApplicableTemplates(config) {
|
|
89
|
+
const templates = ['base', getTemplatePathForRuntime(config.runtime)];
|
|
90
|
+
if (config.styling && config.styling !== 'css') {
|
|
91
|
+
const stylingPath = getTemplatePathForStyling(config.styling);
|
|
92
|
+
if (stylingPath)
|
|
93
|
+
templates.push(stylingPath);
|
|
94
|
+
}
|
|
95
|
+
if (config.stateManagement && config.stateManagement !== 'none') {
|
|
96
|
+
templates.push(getTemplatePathForState(config.stateManagement));
|
|
97
|
+
}
|
|
98
|
+
if (config.dataFetching?.enabled) {
|
|
99
|
+
templates.push(getTemplatePathForDataFetching('tanstack-query'));
|
|
100
|
+
}
|
|
101
|
+
return templates;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/templates/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ProjectConfig } from '../config/schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Testing configuration orchestration
|
|
4
|
+
*/
|
|
5
|
+
export declare class TestingConfigurer {
|
|
6
|
+
private config;
|
|
7
|
+
constructor(config: ProjectConfig);
|
|
8
|
+
/**
|
|
9
|
+
* Get unit test runner based on config and runtime
|
|
10
|
+
*/
|
|
11
|
+
getUnitTestRunner(): 'vitest' | 'jest';
|
|
12
|
+
/**
|
|
13
|
+
* Get E2E test runner
|
|
14
|
+
*/
|
|
15
|
+
getE2ETestRunner(): 'playwright' | 'cypress' | 'none';
|
|
16
|
+
/**
|
|
17
|
+
* Generate test scripts for package.json
|
|
18
|
+
*/
|
|
19
|
+
generateScripts(): Record<string, string>;
|
|
20
|
+
/**
|
|
21
|
+
* Get test configuration files needed
|
|
22
|
+
*/
|
|
23
|
+
getConfigFiles(): Record<string, string>;
|
|
24
|
+
private generateVitestConfig;
|
|
25
|
+
private generateJestConfig;
|
|
26
|
+
private generatePlaywrightConfig;
|
|
27
|
+
private generateCypressConfig;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=configurer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configurer.d.ts","sourceRoot":"","sources":["../../src/testing/configurer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,aAAa;IAIjC;;OAEG;IACH,iBAAiB,IAAI,QAAQ,GAAG,MAAM;IActC;;OAEG;IACH,gBAAgB,IAAI,YAAY,GAAG,SAAS,GAAG,MAAM;IAOrD;;OAEG;IACH,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqCzC;;OAEG;IACH,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAyBxC,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,wBAAwB;IA2BhC,OAAO,CAAC,qBAAqB;CAa9B"}
|