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.
Files changed (90) hide show
  1. package/README.md +109 -0
  2. package/dist/assembler/index.d.ts +100 -0
  3. package/dist/assembler/index.d.ts.map +1 -0
  4. package/dist/assembler/index.js +198 -0
  5. package/dist/assembler/index.js.map +1 -0
  6. package/dist/assembler/merger.d.ts +14 -0
  7. package/dist/assembler/merger.d.ts.map +1 -0
  8. package/dist/assembler/merger.js +58 -0
  9. package/dist/assembler/merger.js.map +1 -0
  10. package/dist/cli/index.d.ts +57 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +110 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/cli/parser.d.ts +3 -0
  15. package/dist/cli/parser.d.ts.map +1 -0
  16. package/dist/cli/parser.js +50 -0
  17. package/dist/cli/parser.js.map +1 -0
  18. package/dist/cli/prompts.d.ts +24 -0
  19. package/dist/cli/prompts.d.ts.map +1 -0
  20. package/dist/cli/prompts.js +126 -0
  21. package/dist/cli/prompts.js.map +1 -0
  22. package/dist/config/builder.d.ts +42 -0
  23. package/dist/config/builder.d.ts.map +1 -0
  24. package/dist/config/builder.js +113 -0
  25. package/dist/config/builder.js.map +1 -0
  26. package/dist/config/defaults.d.ts +51 -0
  27. package/dist/config/defaults.d.ts.map +1 -0
  28. package/dist/config/defaults.js +41 -0
  29. package/dist/config/defaults.js.map +1 -0
  30. package/dist/config/schema.d.ts +318 -0
  31. package/dist/config/schema.d.ts.map +1 -0
  32. package/dist/config/schema.js +100 -0
  33. package/dist/config/schema.js.map +1 -0
  34. package/dist/dependencies/resolver.d.ts +43 -0
  35. package/dist/dependencies/resolver.d.ts.map +1 -0
  36. package/dist/dependencies/resolver.js +117 -0
  37. package/dist/dependencies/resolver.js.map +1 -0
  38. package/dist/docs/architecture-generator.d.ts +3 -0
  39. package/dist/docs/architecture-generator.d.ts.map +1 -0
  40. package/dist/docs/architecture-generator.js +73 -0
  41. package/dist/docs/architecture-generator.js.map +1 -0
  42. package/dist/docs/index.d.ts +2 -0
  43. package/dist/docs/index.d.ts.map +1 -0
  44. package/dist/docs/index.js +2 -0
  45. package/dist/docs/index.js.map +1 -0
  46. package/dist/generator/index.d.ts +41 -0
  47. package/dist/generator/index.d.ts.map +1 -0
  48. package/dist/generator/index.js +201 -0
  49. package/dist/generator/index.js.map +1 -0
  50. package/dist/index.d.ts +3 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +7 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/lifecycle/index.d.ts +2 -0
  55. package/dist/lifecycle/index.d.ts.map +1 -0
  56. package/dist/lifecycle/index.js +2 -0
  57. package/dist/lifecycle/index.js.map +1 -0
  58. package/dist/lifecycle/installer.d.ts +2 -0
  59. package/dist/lifecycle/installer.d.ts.map +1 -0
  60. package/dist/lifecycle/installer.js +14 -0
  61. package/dist/lifecycle/installer.js.map +1 -0
  62. package/dist/plugins/index.d.ts +4 -0
  63. package/dist/plugins/index.d.ts.map +1 -0
  64. package/dist/plugins/index.js +4 -0
  65. package/dist/plugins/index.js.map +1 -0
  66. package/dist/plugins/loader.d.ts +5 -0
  67. package/dist/plugins/loader.d.ts.map +1 -0
  68. package/dist/plugins/loader.js +16 -0
  69. package/dist/plugins/loader.js.map +1 -0
  70. package/dist/plugins/manager.d.ts +9 -0
  71. package/dist/plugins/manager.d.ts.map +1 -0
  72. package/dist/plugins/manager.js +41 -0
  73. package/dist/plugins/manager.js.map +1 -0
  74. package/dist/plugins/types.d.ts +17 -0
  75. package/dist/plugins/types.d.ts.map +1 -0
  76. package/dist/plugins/types.js +2 -0
  77. package/dist/plugins/types.js.map +1 -0
  78. package/dist/templates/registry.d.ts +108 -0
  79. package/dist/templates/registry.d.ts.map +1 -0
  80. package/dist/templates/registry.js +238 -0
  81. package/dist/templates/registry.js.map +1 -0
  82. package/dist/templates/utils.d.ts +49 -0
  83. package/dist/templates/utils.d.ts.map +1 -0
  84. package/dist/templates/utils.js +103 -0
  85. package/dist/templates/utils.js.map +1 -0
  86. package/dist/testing/configurer.d.ts +29 -0
  87. package/dist/testing/configurer.d.ts.map +1 -0
  88. package/dist/testing/configurer.js +163 -0
  89. package/dist/testing/configurer.js.map +1 -0
  90. package/package.json +84 -0
@@ -0,0 +1,73 @@
1
+ export function generateArchitectureDoc(config) {
2
+ const { runtime, language, styling, stateManagement, dataFetching, testing } = config;
3
+ return `# Project Architecture
4
+
5
+ ## Overview
6
+
7
+ This project was bootstrapped with \`react-setup\` using:
8
+
9
+ - **Runtime**: ${runtime === 'vite' ? 'Vite (SPA)' : 'Next.js (App Router)'}
10
+ - **Language**: ${language === 'typescript' ? 'TypeScript' : 'JavaScript'}
11
+ - **Styling**: ${styling.solution}
12
+ - **State Management**: ${stateManagement}
13
+ - **Data Fetching**: ${dataFetching.enabled ? dataFetching.library : 'None'}
14
+ - **Testing**: ${testing.enabled ? 'Enabled' : 'Disabled'}
15
+
16
+ ## Directory Structure
17
+
18
+ \`\`\`
19
+ src/
20
+ ├── components/ # Reusable UI components
21
+ │ └── ui/ # Base UI primitives
22
+ ├── features/ # Feature-based modules
23
+ ├── hooks/ # Custom React hooks
24
+ ${dataFetching.enabled ? '├── lib/ # Third-party library configs\n' : ''}├── providers/ # React context providers
25
+ ${stateManagement !== 'none' ? '├── stores/ # State management stores\n' : ''}├── types/ # TypeScript type definitions
26
+ └── utils/ # Utility functions
27
+ \`\`\`
28
+
29
+ ## Naming Conventions
30
+
31
+ ### Files
32
+ - **Components**: PascalCase (e.g., \`UserProfile.tsx\`)
33
+ - **Hooks**: camelCase with \`use\` prefix (e.g., \`useAuth.ts\`)
34
+ - **Utilities**: camelCase (e.g., \`formatDate.ts\`)
35
+ - **Constants**: SCREAMING_SNAKE_CASE (e.g., \`constants.ts\`)
36
+
37
+ ### Code
38
+ - **Components**: PascalCase
39
+ - **Functions**: camelCase
40
+ - **Variables**: camelCase
41
+ - **Constants**: SCREAMING_SNAKE_CASE
42
+ - **Types/Interfaces**: PascalCase
43
+
44
+ ## Testing Strategy
45
+
46
+ ${testing.enabled ? `
47
+ - **Unit Tests**: ${testing.unit.runner}
48
+ - **Component Tests**: ${testing.component.library}
49
+ ${testing.e2e.enabled ? `- **E2E Tests**: ${testing.e2e.runner}` : ''}
50
+
51
+ Run tests:
52
+ \`\`\`bash
53
+ npm run test
54
+ \`\`\`
55
+ ` : 'Testing is currently disabled.'}
56
+
57
+ ## Data Fetching
58
+
59
+ ${dataFetching.enabled ? `
60
+ We use **${dataFetching.library}** for server state management.
61
+
62
+ - **Queries**: Located in \`features/*/api/*.queries.ts\` or \`hooks/queries/*.ts\`
63
+ - **Mutations**: Co-located with queries
64
+ ` : 'Standard \`fetch\` or \`axios\` is used for data fetching.'}
65
+
66
+ ## State Management
67
+
68
+ ${stateManagement !== 'none' ? `
69
+ We use **${stateManagement}** for global client state.
70
+ ` : 'Local state (`useState`) is preferred. Global state is managed via Context API if needed.'}
71
+ `;
72
+ }
73
+ //# sourceMappingURL=architecture-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architecture-generator.js","sourceRoot":"","sources":["../../src/docs/architecture-generator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CAAC,MAAqB;IAC3D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;IAEtF,OAAO;;;;;;iBAMQ,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,sBAAsB;kBACzD,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY;iBACxD,OAAO,CAAC,QAAQ;0BACP,eAAe;uBAClB,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;iBAC1D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU;;;;;;;;;;EAUvD,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,0DAA0D,CAAC,CAAC,CAAC,EAAE;EACtF,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,sDAAsD,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;;;;;;;;;;;;EAqBxF,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBACA,OAAO,CAAC,IAAI,CAAC,MAAM;yBACd,OAAO,CAAC,SAAS,CAAC,OAAO;EAChD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;;CAMpE,CAAC,CAAC,CAAC,gCAAgC;;;;EAIlC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;WACd,YAAY,CAAC,OAAO;;;;CAI9B,CAAC,CAAC,CAAC,4DAA4D;;;;EAI9D,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC;WACpB,eAAe;CACzB,CAAC,CAAC,CAAC,2FAA2F;CAC9F,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './architecture-generator.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './architecture-generator.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,41 @@
1
+ import type { ProjectConfig } from '../config/schema.js';
2
+ /**
3
+ * Project generation result
4
+ */
5
+ export interface GenerationResult {
6
+ success: boolean;
7
+ projectPath: string;
8
+ filesWritten: number;
9
+ errors: string[];
10
+ warnings: string[];
11
+ }
12
+ /**
13
+ * Project generator - orchestrates the entire generation flow
14
+ */
15
+ export declare class ProjectGenerator {
16
+ private config;
17
+ private registry;
18
+ private assembler;
19
+ constructor(config: ProjectConfig);
20
+ /**
21
+ * Generate the project
22
+ */
23
+ generate(): Promise<GenerationResult>;
24
+ /**
25
+ * Initialize git repository
26
+ */
27
+ private initializeGit;
28
+ /**
29
+ * Get the install command based on package manager
30
+ */
31
+ private getInstallCommand;
32
+ /**
33
+ * Get the dev command based on package manager
34
+ */
35
+ private getDevCommand;
36
+ }
37
+ /**
38
+ * Generate a project from configuration
39
+ */
40
+ export declare function generateProject(config: ProjectConfig): Promise<GenerationResult>;
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKzD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,SAAS,CAAmB;gBAExB,MAAM,EAAE,aAAa;IAMjC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmG3C;;OAEG;IACH,OAAO,CAAC,aAAa;IA+DrB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,aAAa;CAQtB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGtF"}
@@ -0,0 +1,201 @@
1
+ import { execSync } from 'child_process';
2
+ import { existsSync } from 'fs';
3
+ import ora from 'ora';
4
+ import chalk from 'chalk';
5
+ import { ProjectAssembler } from '../assembler/index.js';
6
+ import { TemplateRegistry } from '../templates/registry.js';
7
+ import { generateArchitectureDoc } from '../docs/architecture-generator.js';
8
+ /**
9
+ * Project generator - orchestrates the entire generation flow
10
+ */
11
+ export class ProjectGenerator {
12
+ constructor(config) {
13
+ this.config = config;
14
+ this.registry = new TemplateRegistry();
15
+ this.assembler = new ProjectAssembler(config.path, config);
16
+ }
17
+ /**
18
+ * Generate the project
19
+ */
20
+ async generate() {
21
+ const result = {
22
+ success: false,
23
+ projectPath: this.config.path,
24
+ filesWritten: 0,
25
+ errors: [],
26
+ warnings: [],
27
+ };
28
+ const spinner = ora();
29
+ try {
30
+ // Step 1: Check if directory already exists
31
+ if (existsSync(this.config.path)) {
32
+ result.errors.push(`Directory already exists: ${this.config.path}`);
33
+ return result;
34
+ }
35
+ // Step 2: Load templates
36
+ spinner.start('Loading templates...');
37
+ const templates = this.registry.loadTemplatesForConfig({
38
+ runtime: this.config.runtime,
39
+ styling: this.config.styling,
40
+ stateManagement: this.config.stateManagement,
41
+ testing: {
42
+ enabled: this.config.testing.enabled,
43
+ unit: this.config.testing.unit,
44
+ e2e: this.config.testing.e2e,
45
+ },
46
+ dataFetching: this.config.dataFetching,
47
+ });
48
+ spinner.succeed(`Loaded ${templates.length} templates`);
49
+ // Step 3: Merge all template files
50
+ spinner.start('Assembling project files...');
51
+ const mergedFiles = this.registry.getMergedFiles();
52
+ this.assembler.addFiles(mergedFiles);
53
+ // Add Architecture Documentation
54
+ const archDoc = generateArchitectureDoc(this.config);
55
+ this.assembler.addFile('ARCHITECTURE.md', archDoc);
56
+ // Step 4: Merge dependencies
57
+ const { dependencies, devDependencies, scripts } = this.registry.getMergedDependencies();
58
+ this.assembler.mergeTemplateDeps({ dependencies, devDependencies, scripts });
59
+ // Add TypeScript if configured
60
+ if (this.config.language === 'typescript') {
61
+ this.assembler.addDevDependencies({
62
+ 'typescript': '^5.3.0',
63
+ });
64
+ }
65
+ spinner.succeed(`Assembled ${mergedFiles.size} files`);
66
+ // Step 5: Write files to disk
67
+ spinner.start('Writing files...');
68
+ const writeResult = this.assembler.writeFiles();
69
+ result.filesWritten = writeResult.filesWritten;
70
+ if (writeResult.errors.length > 0) {
71
+ result.errors.push(...writeResult.errors);
72
+ spinner.warn(`Written ${writeResult.filesWritten} files with ${writeResult.errors.length} errors`);
73
+ }
74
+ else {
75
+ spinner.succeed(`Written ${writeResult.filesWritten} files`);
76
+ }
77
+ // Step 6: Initialize git if configured
78
+ if (this.config.git.init) {
79
+ spinner.start('Initializing git repository...');
80
+ try {
81
+ this.initializeGit();
82
+ spinner.succeed('Git repository initialized');
83
+ }
84
+ catch (error) {
85
+ result.warnings.push(`Git initialization failed: ${error}`);
86
+ spinner.warn('Git initialization failed');
87
+ }
88
+ }
89
+ // Step 7: Install dependencies if user confirms
90
+ // (We'll skip automatic installation for now and let user do it)
91
+ console.log();
92
+ console.log(chalk.green('✓ Project created successfully!'));
93
+ console.log();
94
+ console.log(chalk.cyan('Next steps:'));
95
+ console.log(chalk.gray(` cd ${this.config.name}`));
96
+ console.log(chalk.gray(` ${this.getInstallCommand()}`));
97
+ console.log(chalk.gray(` ${this.getDevCommand()}`));
98
+ console.log();
99
+ result.success = result.errors.length === 0;
100
+ return result;
101
+ }
102
+ catch (error) {
103
+ spinner.fail('Generation failed');
104
+ result.errors.push(`Generation error: ${error}`);
105
+ return result;
106
+ }
107
+ }
108
+ /**
109
+ * Initialize git repository
110
+ */
111
+ initializeGit() {
112
+ execSync('git init', {
113
+ cwd: this.config.path,
114
+ stdio: 'ignore',
115
+ });
116
+ // Create .gitignore if it doesn't exist
117
+ const gitignoreContent = `# Dependencies
118
+ node_modules/
119
+
120
+ # Build output
121
+ dist/
122
+ build/
123
+ .next/
124
+ out/
125
+
126
+ # Environment
127
+ .env
128
+ .env.local
129
+ .env.*.local
130
+
131
+ # IDE
132
+ .idea/
133
+ .vscode/
134
+ *.swp
135
+ *.swo
136
+
137
+ # OS
138
+ .DS_Store
139
+ Thumbs.db
140
+
141
+ # Test coverage
142
+ coverage/
143
+
144
+ # Logs
145
+ *.log
146
+ npm-debug.log*
147
+ yarn-debug.log*
148
+ yarn-error.log*
149
+
150
+ # Playwright
151
+ test-results/
152
+ playwright-report/
153
+ `;
154
+ this.assembler.addFile('.gitignore', gitignoreContent);
155
+ if (this.config.git.initialCommit) {
156
+ try {
157
+ execSync('git add -A', {
158
+ cwd: this.config.path,
159
+ stdio: 'ignore',
160
+ });
161
+ execSync('git commit -m "Initial commit from react-setup"', {
162
+ cwd: this.config.path,
163
+ stdio: 'ignore',
164
+ });
165
+ }
166
+ catch {
167
+ // Git commit may fail if git user is not configured
168
+ }
169
+ }
170
+ }
171
+ /**
172
+ * Get the install command based on package manager
173
+ */
174
+ getInstallCommand() {
175
+ const commands = {
176
+ npm: 'npm install',
177
+ yarn: 'yarn',
178
+ pnpm: 'pnpm install',
179
+ };
180
+ return commands[this.config.packageManager] || 'npm install';
181
+ }
182
+ /**
183
+ * Get the dev command based on package manager
184
+ */
185
+ getDevCommand() {
186
+ const commands = {
187
+ npm: 'npm run dev',
188
+ yarn: 'yarn dev',
189
+ pnpm: 'pnpm dev',
190
+ };
191
+ return commands[this.config.packageManager] || 'npm run dev';
192
+ }
193
+ }
194
+ /**
195
+ * Generate a project from configuration
196
+ */
197
+ export async function generateProject(config) {
198
+ const generator = new ProjectGenerator(config);
199
+ return generator.generate();
200
+ }
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env node
2
+ import { main } from './cli/index.js';
3
+ main().catch((error) => {
4
+ console.error(error);
5
+ process.exit(1);
6
+ });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAEtC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './installer.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './installer.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lifecycle/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function installDependencies(cwd: string, pm: 'npm' | 'yarn' | 'pnpm'): Promise<void>;
2
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/lifecycle/installer.ts"],"names":[],"mappings":"AAGA,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CASjG"}
@@ -0,0 +1,14 @@
1
+ import { execa } from 'execa';
2
+ import ora from 'ora';
3
+ export async function installDependencies(cwd, pm) {
4
+ const spinner = ora(`Installing dependencies with ${pm}...`).start();
5
+ try {
6
+ await execa(pm, ['install'], { cwd });
7
+ spinner.succeed('Dependencies installed');
8
+ }
9
+ catch (error) {
10
+ spinner.fail('Failed to install dependencies');
11
+ throw error;
12
+ }
13
+ }
14
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/lifecycle/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW,EAAE,EAA2B;IAChF,MAAM,OAAO,GAAG,GAAG,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './loader.js';
3
+ export * from './manager.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './loader.js';
3
+ export * from './manager.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ReactSetupPlugin } from './types.js';
2
+ export declare class PluginLoader {
3
+ loadPlugin(path: string): Promise<ReactSetupPlugin>;
4
+ }
5
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,YAAY;IACjB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAU1D"}
@@ -0,0 +1,16 @@
1
+ import { resolve } from 'path';
2
+ import { pathToFileURL } from 'url';
3
+ export class PluginLoader {
4
+ async loadPlugin(path) {
5
+ try {
6
+ // dynamic import requires file URL
7
+ const pluginUrl = pathToFileURL(resolve(path)).href;
8
+ const module = await import(pluginUrl);
9
+ return module.default || module;
10
+ }
11
+ catch (error) {
12
+ throw new Error(`Failed to load plugin at ${path}: ${error}`);
13
+ }
14
+ }
15
+ }
16
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,OAAO,YAAY;IACvB,KAAK,CAAC,UAAU,CAAC,IAAY;QAC3B,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;YACvC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,9 @@
1
+ import type { ProjectConfig } from '../config/schema.js';
2
+ import type { ReactSetupPlugin, PluginContext } from './types.js';
3
+ export declare class PluginManager {
4
+ private plugins;
5
+ register(plugin: ReactSetupPlugin): void;
6
+ runHook(hookName: keyof NonNullable<ReactSetupPlugin['hooks']>, context: PluginContext): Promise<void>;
7
+ runBeforeCreate(config: ProjectConfig): Promise<ProjectConfig>;
8
+ }
9
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAElE,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA0B;IAEzC,QAAQ,CAAC,MAAM,EAAE,gBAAgB;IAI3B,OAAO,CACX,QAAQ,EAAE,MAAM,WAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EACtD,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC;IAeV,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAgBrE"}
@@ -0,0 +1,41 @@
1
+ export class PluginManager {
2
+ constructor() {
3
+ this.plugins = [];
4
+ }
5
+ register(plugin) {
6
+ this.plugins.push(plugin);
7
+ }
8
+ async runHook(hookName, context) {
9
+ for (const plugin of this.plugins) {
10
+ const hook = plugin.hooks?.[hookName];
11
+ if (hook) {
12
+ try {
13
+ // Type assertion needed because TypeScript doesn't correlate the hookName with the specific hook signature
14
+ // efficiently in this generic context without more complex types
15
+ await hook(context);
16
+ }
17
+ catch (error) {
18
+ console.warn(`Plugin ${plugin.name} failed at hook ${hookName}:`, error);
19
+ }
20
+ }
21
+ }
22
+ }
23
+ async runBeforeCreate(config) {
24
+ let currentConfig = { ...config };
25
+ for (const plugin of this.plugins) {
26
+ if (plugin.hooks?.beforeCreate) {
27
+ try {
28
+ const result = await plugin.hooks.beforeCreate(currentConfig);
29
+ if (result) {
30
+ currentConfig = result;
31
+ }
32
+ }
33
+ catch (error) {
34
+ console.warn(`Plugin ${plugin.name} failed at hook beforeCreate:`, error);
35
+ }
36
+ }
37
+ }
38
+ return currentConfig;
39
+ }
40
+ }
41
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/plugins/manager.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,aAAa;IAA1B;QACU,YAAO,GAAuB,EAAE,CAAC;IAwC3C,CAAC;IAtCC,QAAQ,CAAC,MAAwB;QAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,OAAO,CACX,QAAsD,EACtD,OAAsB;QAEtB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC;oBACH,2GAA2G;oBAC3G,iEAAiE;oBACjE,MAAO,IAAiB,CAAC,OAAO,CAAC,CAAC;gBACpC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,mBAAmB,QAAQ,GAAG,EAAE,KAAK,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAqB;QACzC,IAAI,aAAa,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;QAClC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;oBAC9D,IAAI,MAAM,EAAE,CAAC;wBACX,aAAa,GAAG,MAAM,CAAC;oBACzB,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACd,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,+BAA+B,EAAE,KAAK,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { ProjectAssembler } from '../assembler/index.js';
2
+ import type { ProjectConfig } from '../config/schema.js';
3
+ export interface PluginContext {
4
+ config: ProjectConfig;
5
+ assembler?: ProjectAssembler;
6
+ }
7
+ export interface ReactSetupPlugin {
8
+ name: string;
9
+ version: string;
10
+ hooks?: {
11
+ beforeCreate?: (config: ProjectConfig) => Promise<ProjectConfig | void>;
12
+ afterTemplateApply?: (context: PluginContext) => Promise<void>;
13
+ beforeInstall?: (context: PluginContext) => Promise<void>;
14
+ afterInstall?: (context: PluginContext) => Promise<void>;
15
+ };
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;QACxE,kBAAkB,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1D,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KAC1D,CAAC;CACH"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}