create-nexo 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/LICENSE +21 -0
- package/README.md +185 -0
- package/dist/api/index.d.ts +196 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +390 -0
- package/dist/api/index.js.map +1 -0
- package/dist/bin/nexo.d.ts +3 -0
- package/dist/bin/nexo.d.ts.map +1 -0
- package/dist/bin/nexo.js +427 -0
- package/dist/bin/nexo.js.map +1 -0
- package/dist/configurators/core/framework.d.ts +3 -0
- package/dist/configurators/core/framework.d.ts.map +1 -0
- package/dist/configurators/core/framework.js +56 -0
- package/dist/configurators/core/framework.js.map +1 -0
- package/dist/configurators/core/index.d.ts +4 -0
- package/dist/configurators/core/index.d.ts.map +1 -0
- package/dist/configurators/core/index.js +4 -0
- package/dist/configurators/core/index.js.map +1 -0
- package/dist/configurators/core/language.d.ts +3 -0
- package/dist/configurators/core/language.d.ts.map +1 -0
- package/dist/configurators/core/language.js +59 -0
- package/dist/configurators/core/language.js.map +1 -0
- package/dist/configurators/core/variant.d.ts +3 -0
- package/dist/configurators/core/variant.d.ts.map +1 -0
- package/dist/configurators/core/variant.js +22 -0
- package/dist/configurators/core/variant.js.map +1 -0
- package/dist/configurators/index.d.ts +5 -0
- package/dist/configurators/index.d.ts.map +1 -0
- package/dist/configurators/index.js +6 -0
- package/dist/configurators/index.js.map +1 -0
- package/dist/configurators/project/auth.d.ts +3 -0
- package/dist/configurators/project/auth.d.ts.map +1 -0
- package/dist/configurators/project/auth.js +82 -0
- package/dist/configurators/project/auth.js.map +1 -0
- package/dist/configurators/project/cicd.d.ts +30 -0
- package/dist/configurators/project/cicd.d.ts.map +1 -0
- package/dist/configurators/project/cicd.js +289 -0
- package/dist/configurators/project/cicd.js.map +1 -0
- package/dist/configurators/project/i18n.d.ts +3 -0
- package/dist/configurators/project/i18n.d.ts.map +1 -0
- package/dist/configurators/project/i18n.js +67 -0
- package/dist/configurators/project/i18n.js.map +1 -0
- package/dist/configurators/project/index.d.ts +6 -0
- package/dist/configurators/project/index.d.ts.map +1 -0
- package/dist/configurators/project/index.js +6 -0
- package/dist/configurators/project/index.js.map +1 -0
- package/dist/configurators/project/mandatory.d.ts +3 -0
- package/dist/configurators/project/mandatory.d.ts.map +1 -0
- package/dist/configurators/project/mandatory.js +167 -0
- package/dist/configurators/project/mandatory.js.map +1 -0
- package/dist/configurators/project/structure.d.ts +3 -0
- package/dist/configurators/project/structure.d.ts.map +1 -0
- package/dist/configurators/project/structure.js +34 -0
- package/dist/configurators/project/structure.js.map +1 -0
- package/dist/configurators/state/dataFetching.d.ts +3 -0
- package/dist/configurators/state/dataFetching.d.ts.map +1 -0
- package/dist/configurators/state/dataFetching.js +23 -0
- package/dist/configurators/state/dataFetching.js.map +1 -0
- package/dist/configurators/state/forms.d.ts +3 -0
- package/dist/configurators/state/forms.d.ts.map +1 -0
- package/dist/configurators/state/forms.js +35 -0
- package/dist/configurators/state/forms.js.map +1 -0
- package/dist/configurators/state/index.d.ts +5 -0
- package/dist/configurators/state/index.d.ts.map +1 -0
- package/dist/configurators/state/index.js +5 -0
- package/dist/configurators/state/index.js.map +1 -0
- package/dist/configurators/state/routing.d.ts +3 -0
- package/dist/configurators/state/routing.d.ts.map +1 -0
- package/dist/configurators/state/routing.js +23 -0
- package/dist/configurators/state/routing.js.map +1 -0
- package/dist/configurators/state/state.d.ts +3 -0
- package/dist/configurators/state/state.d.ts.map +1 -0
- package/dist/configurators/state/state.js +91 -0
- package/dist/configurators/state/state.js.map +1 -0
- package/dist/configurators/styling/icons.d.ts +3 -0
- package/dist/configurators/styling/icons.d.ts.map +1 -0
- package/dist/configurators/styling/icons.js +27 -0
- package/dist/configurators/styling/icons.js.map +1 -0
- package/dist/configurators/styling/index.d.ts +4 -0
- package/dist/configurators/styling/index.d.ts.map +1 -0
- package/dist/configurators/styling/index.js +4 -0
- package/dist/configurators/styling/index.js.map +1 -0
- package/dist/configurators/styling/styling.d.ts +3 -0
- package/dist/configurators/styling/styling.d.ts.map +1 -0
- package/dist/configurators/styling/styling.js +62 -0
- package/dist/configurators/styling/styling.js.map +1 -0
- package/dist/configurators/styling/ui.d.ts +3 -0
- package/dist/configurators/styling/ui.d.ts.map +1 -0
- package/dist/configurators/styling/ui.js +188 -0
- package/dist/configurators/styling/ui.js.map +1 -0
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/lazy-loader.d.ts +57 -0
- package/dist/core/lazy-loader.d.ts.map +1 -0
- package/dist/core/lazy-loader.js +231 -0
- package/dist/core/lazy-loader.js.map +1 -0
- package/dist/core/parallel.d.ts +29 -0
- package/dist/core/parallel.d.ts.map +1 -0
- package/dist/core/parallel.js +127 -0
- package/dist/core/parallel.js.map +1 -0
- package/dist/core/presets.d.ts +10 -0
- package/dist/core/presets.d.ts.map +1 -0
- package/dist/core/presets.js +73 -0
- package/dist/core/presets.js.map +1 -0
- package/dist/core/prompts/core.d.ts +18 -0
- package/dist/core/prompts/core.d.ts.map +1 -0
- package/dist/core/prompts/core.js +420 -0
- package/dist/core/prompts/core.js.map +1 -0
- package/dist/core/prompts/filter.d.ts +34 -0
- package/dist/core/prompts/filter.d.ts.map +1 -0
- package/dist/core/prompts/filter.js +48 -0
- package/dist/core/prompts/filter.js.map +1 -0
- package/dist/core/prompts/index.d.ts +10 -0
- package/dist/core/prompts/index.d.ts.map +1 -0
- package/dist/core/prompts/index.js +16 -0
- package/dist/core/prompts/index.js.map +1 -0
- package/dist/core/prompts/optional.d.ts +15 -0
- package/dist/core/prompts/optional.d.ts.map +1 -0
- package/dist/core/prompts/optional.js +228 -0
- package/dist/core/prompts/optional.js.map +1 -0
- package/dist/core/prompts/utils.d.ts +37 -0
- package/dist/core/prompts/utils.d.ts.map +1 -0
- package/dist/core/prompts/utils.js +72 -0
- package/dist/core/prompts/utils.js.map +1 -0
- package/dist/core/prompts.d.ts +6 -0
- package/dist/core/prompts.d.ts.map +1 -0
- package/dist/core/prompts.js +6 -0
- package/dist/core/prompts.js.map +1 -0
- package/dist/core/setup.d.ts +28 -0
- package/dist/core/setup.d.ts.map +1 -0
- package/dist/core/setup.js +96 -0
- package/dist/core/setup.js.map +1 -0
- package/dist/core/wizard.d.ts +39 -0
- package/dist/core/wizard.d.ts.map +1 -0
- package/dist/core/wizard.js +259 -0
- package/dist/core/wizard.js.map +1 -0
- package/dist/errors/index.d.ts +67 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +253 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/messages.d.ts +56 -0
- package/dist/errors/messages.d.ts.map +1 -0
- package/dist/errors/messages.js +234 -0
- package/dist/errors/messages.js.map +1 -0
- package/dist/generators/index.d.ts +86 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/index.js +441 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins/index.d.ts +48 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +49 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/loader.d.ts +38 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +229 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/manager.d.ts +32 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +220 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/types.d.ts +186 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +5 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/security/index.d.ts +59 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +230 -0
- package/dist/security/index.js.map +1 -0
- package/dist/templates/entry.d.ts +9 -0
- package/dist/templates/entry.d.ts.map +1 -0
- package/dist/templates/entry.js +24 -0
- package/dist/templates/entry.js.map +1 -0
- package/dist/templates/index.d.ts +7 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +10 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/main.d.ts +6 -0
- package/dist/templates/main.d.ts.map +1 -0
- package/dist/templates/main.js +72 -0
- package/dist/templates/main.js.map +1 -0
- package/dist/templates/readme.d.ts +3 -0
- package/dist/templates/readme.d.ts.map +1 -0
- package/dist/templates/readme.js +127 -0
- package/dist/templates/readme.js.map +1 -0
- package/dist/templates/styles.d.ts +6 -0
- package/dist/templates/styles.d.ts.map +1 -0
- package/dist/templates/styles.js +212 -0
- package/dist/templates/styles.js.map +1 -0
- package/dist/templates/welcome.d.ts +10 -0
- package/dist/templates/welcome.d.ts.map +1 -0
- package/dist/templates/welcome.js +322 -0
- package/dist/templates/welcome.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/batch-writer.d.ts +101 -0
- package/dist/utils/batch-writer.d.ts.map +1 -0
- package/dist/utils/batch-writer.js +232 -0
- package/dist/utils/batch-writer.js.map +1 -0
- package/dist/utils/cache.d.ts +60 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +119 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/fileTree.d.ts +3 -0
- package/dist/utils/fileTree.d.ts.map +1 -0
- package/dist/utils/fileTree.js +71 -0
- package/dist/utils/fileTree.js.map +1 -0
- package/dist/utils/fs.d.ts +22 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +75 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/helpers.d.ts +91 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +192 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/progress.d.ts +85 -0
- package/dist/utils/progress.d.ts.map +1 -0
- package/dist/utils/progress.js +142 -0
- package/dist/utils/progress.js.map +1 -0
- package/dist/utils/spinner.d.ts +9 -0
- package/dist/utils/spinner.d.ts.map +1 -0
- package/dist/utils/spinner.js +56 -0
- package/dist/utils/spinner.js.map +1 -0
- package/dist/validation/index.d.ts +63 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +262 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { authConfigurator, cicdConfigurator, dataFetchingConfigurator, formsConfigurator, frameworkConfigurator, i18nConfigurator, iconsConfigurator, languageConfigurator, mandatoryConfigurator, routingConfigurator, stateConfigurator, structureConfigurator, stylingConfigurator, uiConfigurator, variantConfigurator, } from '../configurators/index.js';
|
|
3
|
+
import { createEntryFiles, createReadme, createStyles } from '../templates/index.js';
|
|
4
|
+
import { createProjectDir, spinner } from '../utils/index.js';
|
|
5
|
+
import { executeParallel } from './parallel.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create steps with dependency information for parallel execution
|
|
8
|
+
*/
|
|
9
|
+
const createSteps = ({ ctx, cicd = false }) => [
|
|
10
|
+
// Phase 1: Project setup (sequential)
|
|
11
|
+
{ name: 'Creating project directory', fn: () => createProjectDir(ctx) },
|
|
12
|
+
{ name: 'Setting up framework', fn: () => frameworkConfigurator(ctx), dependencies: ['Creating project directory'] },
|
|
13
|
+
{ name: 'Configuring build variant', fn: () => variantConfigurator(ctx), dependencies: ['Setting up framework'] },
|
|
14
|
+
{ name: 'Setting up language', fn: () => languageConfigurator(ctx), dependencies: ['Configuring build variant'] },
|
|
15
|
+
// Phase 2: Independent configurators (can run in parallel)
|
|
16
|
+
{ name: 'Configuring styling', fn: () => stylingConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
17
|
+
{ name: 'Setting up forms', fn: () => formsConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
18
|
+
{ name: 'Configuring state management', fn: () => stateConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
19
|
+
{ name: 'Setting up routing', fn: () => routingConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
20
|
+
{ name: 'Configuring data fetching', fn: () => dataFetchingConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
21
|
+
{ name: 'Adding icon library', fn: () => iconsConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
22
|
+
{ name: 'Creating project structure', fn: () => structureConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
23
|
+
{ name: 'Setting up internationalization', fn: () => i18nConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
24
|
+
{ name: 'Configuring authentication', fn: () => authConfigurator(ctx), dependencies: ['Setting up language'] },
|
|
25
|
+
// Phase 3: UI (depends on styling for Tailwind check)
|
|
26
|
+
{ name: 'Adding UI library', fn: () => uiConfigurator(ctx), dependencies: ['Configuring styling'] },
|
|
27
|
+
// Phase 4: Finalization
|
|
28
|
+
{
|
|
29
|
+
name: 'Adding mandatory features',
|
|
30
|
+
fn: () => mandatoryConfigurator(ctx),
|
|
31
|
+
dependencies: [
|
|
32
|
+
'Configuring styling', 'Setting up forms', 'Configuring state management',
|
|
33
|
+
'Setting up routing', 'Configuring data fetching', 'Adding icon library',
|
|
34
|
+
'Creating project structure', 'Setting up internationalization', 'Configuring authentication'
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: 'Creating entry files',
|
|
39
|
+
fn: () => createEntryFiles(ctx),
|
|
40
|
+
dependencies: ['Adding mandatory features', 'Adding UI library']
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Creating styles',
|
|
44
|
+
fn: () => createStyles(ctx),
|
|
45
|
+
dependencies: ['Adding mandatory features']
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'Generating documentation',
|
|
49
|
+
fn: () => createReadme(ctx),
|
|
50
|
+
dependencies: ['Creating entry files', 'Creating styles']
|
|
51
|
+
},
|
|
52
|
+
// Optional: CI/CD configuration
|
|
53
|
+
...(cicd ? [{
|
|
54
|
+
name: 'Setting up CI/CD',
|
|
55
|
+
fn: () => cicdConfigurator(ctx),
|
|
56
|
+
dependencies: ['Generating documentation']
|
|
57
|
+
}] : []),
|
|
58
|
+
];
|
|
59
|
+
/**
|
|
60
|
+
* Execute setup with sequential spinner display
|
|
61
|
+
*/
|
|
62
|
+
const executeSequential = async (steps) => {
|
|
63
|
+
for (const step of steps) {
|
|
64
|
+
const s = spinner(step.name);
|
|
65
|
+
try {
|
|
66
|
+
await step.fn();
|
|
67
|
+
s.succeed();
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
s.fail();
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Main setup function
|
|
77
|
+
*/
|
|
78
|
+
export const setup = async ({ selections, targetDir, parallel = false, cicd = false }) => {
|
|
79
|
+
const projectPath = path.resolve(targetDir, selections.projectName);
|
|
80
|
+
const ctx = {
|
|
81
|
+
projectPath,
|
|
82
|
+
selections,
|
|
83
|
+
};
|
|
84
|
+
const steps = createSteps({ ctx, cicd });
|
|
85
|
+
if (parallel) {
|
|
86
|
+
// Use parallel execution for better performance
|
|
87
|
+
await executeParallel(steps, { verbose: true, maxConcurrency: 4 });
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Use sequential execution with spinner (default for better UX)
|
|
91
|
+
await executeSequential(steps);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
// Export for testing
|
|
95
|
+
export { createSteps, executeSequential };
|
|
96
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/core/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXO CLI - Wizard Mode
|
|
3
|
+
*
|
|
4
|
+
* A simplified, guided mode for beginners that automatically
|
|
5
|
+
* recommends configurations based on project type.
|
|
6
|
+
*/
|
|
7
|
+
import type { UserSelections } from '../types/index.js';
|
|
8
|
+
export type ProjectType = 'webapp' | 'dashboard' | 'landing' | 'api-client' | 'portfolio' | 'ecommerce';
|
|
9
|
+
export interface WizardResult {
|
|
10
|
+
projectName: string;
|
|
11
|
+
projectType: ProjectType;
|
|
12
|
+
selections: UserSelections;
|
|
13
|
+
useRecommended: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface ProjectTypeConfig {
|
|
16
|
+
name: string;
|
|
17
|
+
description: string;
|
|
18
|
+
icon: string;
|
|
19
|
+
recommendations: Partial<UserSelections>;
|
|
20
|
+
features: string[];
|
|
21
|
+
}
|
|
22
|
+
export declare const projectTypes: Record<ProjectType, ProjectTypeConfig>;
|
|
23
|
+
/**
|
|
24
|
+
* Run the wizard mode
|
|
25
|
+
*/
|
|
26
|
+
export declare const runWizard: () => Promise<WizardResult | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Get recommendations for a project type
|
|
29
|
+
*/
|
|
30
|
+
export declare const getRecommendationsFor: (type: ProjectType) => ProjectTypeConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Get all project types
|
|
33
|
+
*/
|
|
34
|
+
export declare const getProjectTypes: () => Array<{
|
|
35
|
+
value: ProjectType;
|
|
36
|
+
config: ProjectTypeConfig;
|
|
37
|
+
}>;
|
|
38
|
+
export default runWizard;
|
|
39
|
+
//# sourceMappingURL=wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/core/wizard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,YAAY,GACZ,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,cAAc,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACzC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAmJ/D,CAAC;AAaF;;GAEG;AACH,eAAO,MAAM,SAAS,QAAa,OAAO,CAAC,YAAY,GAAG,IAAI,CAmF7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,KAAG,iBAEzD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,QAAO,KAAK,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,CAKzF,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NEXO CLI - Wizard Mode
|
|
3
|
+
*
|
|
4
|
+
* A simplified, guided mode for beginners that automatically
|
|
5
|
+
* recommends configurations based on project type.
|
|
6
|
+
*/
|
|
7
|
+
import * as p from '@clack/prompts';
|
|
8
|
+
import pc from 'picocolors';
|
|
9
|
+
// ============================================
|
|
10
|
+
// Project Type Configurations
|
|
11
|
+
// ============================================
|
|
12
|
+
export const projectTypes = {
|
|
13
|
+
webapp: {
|
|
14
|
+
name: 'Web Application',
|
|
15
|
+
description: 'Interactive web application with forms and state',
|
|
16
|
+
icon: '🌐',
|
|
17
|
+
recommendations: {
|
|
18
|
+
variant: 'ts',
|
|
19
|
+
styling: 'tailwind',
|
|
20
|
+
ui: 'shadcn',
|
|
21
|
+
forms: 'rhf-zod',
|
|
22
|
+
state: 'zustand',
|
|
23
|
+
routing: 'react-router',
|
|
24
|
+
dataFetching: 'tanstack-query',
|
|
25
|
+
icons: 'lucide',
|
|
26
|
+
structure: 'feature-based',
|
|
27
|
+
},
|
|
28
|
+
features: [
|
|
29
|
+
'TypeScript for type safety',
|
|
30
|
+
'Tailwind CSS + shadcn/ui',
|
|
31
|
+
'Form handling with validation',
|
|
32
|
+
'State management',
|
|
33
|
+
'Client-side routing',
|
|
34
|
+
'Data fetching with caching',
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
dashboard: {
|
|
38
|
+
name: 'Admin Dashboard',
|
|
39
|
+
description: 'Data-rich admin panel with charts and tables',
|
|
40
|
+
icon: '📊',
|
|
41
|
+
recommendations: {
|
|
42
|
+
variant: 'ts',
|
|
43
|
+
styling: 'tailwind',
|
|
44
|
+
ui: 'shadcn',
|
|
45
|
+
forms: 'rhf-zod',
|
|
46
|
+
state: 'redux',
|
|
47
|
+
routing: 'react-router',
|
|
48
|
+
dataFetching: 'tanstack-query',
|
|
49
|
+
icons: 'lucide',
|
|
50
|
+
structure: 'fsd',
|
|
51
|
+
},
|
|
52
|
+
features: [
|
|
53
|
+
'TypeScript for type safety',
|
|
54
|
+
'Tailwind CSS + shadcn/ui',
|
|
55
|
+
'Redux for complex state',
|
|
56
|
+
'FSD architecture',
|
|
57
|
+
'Data fetching with caching',
|
|
58
|
+
'Ready for charts integration',
|
|
59
|
+
],
|
|
60
|
+
},
|
|
61
|
+
landing: {
|
|
62
|
+
name: 'Landing Page',
|
|
63
|
+
description: 'Fast, SEO-optimized marketing page',
|
|
64
|
+
icon: '🚀',
|
|
65
|
+
recommendations: {
|
|
66
|
+
variant: 'ts',
|
|
67
|
+
styling: 'tailwind',
|
|
68
|
+
ui: 'none',
|
|
69
|
+
forms: 'none',
|
|
70
|
+
state: 'none',
|
|
71
|
+
routing: 'none',
|
|
72
|
+
dataFetching: 'none',
|
|
73
|
+
icons: 'lucide',
|
|
74
|
+
structure: 'simple',
|
|
75
|
+
},
|
|
76
|
+
features: [
|
|
77
|
+
'TypeScript for type safety',
|
|
78
|
+
'Tailwind CSS for styling',
|
|
79
|
+
'Minimal dependencies',
|
|
80
|
+
'Fast load times',
|
|
81
|
+
'Simple structure',
|
|
82
|
+
'Easy to customize',
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
'api-client': {
|
|
86
|
+
name: 'API Client',
|
|
87
|
+
description: 'Application consuming external APIs',
|
|
88
|
+
icon: '🔌',
|
|
89
|
+
recommendations: {
|
|
90
|
+
variant: 'ts',
|
|
91
|
+
styling: 'tailwind',
|
|
92
|
+
ui: 'mantine',
|
|
93
|
+
forms: 'rhf-zod',
|
|
94
|
+
state: 'zustand',
|
|
95
|
+
routing: 'react-router',
|
|
96
|
+
dataFetching: 'tanstack-query',
|
|
97
|
+
icons: 'lucide',
|
|
98
|
+
structure: 'feature-based',
|
|
99
|
+
},
|
|
100
|
+
features: [
|
|
101
|
+
'TypeScript for type safety',
|
|
102
|
+
'TanStack Query for API calls',
|
|
103
|
+
'Zustand for client state',
|
|
104
|
+
'Mantine UI components',
|
|
105
|
+
'Form handling',
|
|
106
|
+
'Feature-based structure',
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
portfolio: {
|
|
110
|
+
name: 'Portfolio Website',
|
|
111
|
+
description: 'Personal portfolio or showcase site',
|
|
112
|
+
icon: '👤',
|
|
113
|
+
recommendations: {
|
|
114
|
+
variant: 'ts',
|
|
115
|
+
styling: 'tailwind',
|
|
116
|
+
ui: 'none',
|
|
117
|
+
forms: 'none',
|
|
118
|
+
state: 'none',
|
|
119
|
+
routing: 'react-router',
|
|
120
|
+
dataFetching: 'none',
|
|
121
|
+
icons: 'lucide',
|
|
122
|
+
structure: 'simple',
|
|
123
|
+
},
|
|
124
|
+
features: [
|
|
125
|
+
'TypeScript for type safety',
|
|
126
|
+
'Tailwind CSS for styling',
|
|
127
|
+
'Client-side routing',
|
|
128
|
+
'Lucide icons',
|
|
129
|
+
'Simple structure',
|
|
130
|
+
'Easy to personalize',
|
|
131
|
+
],
|
|
132
|
+
},
|
|
133
|
+
ecommerce: {
|
|
134
|
+
name: 'E-Commerce',
|
|
135
|
+
description: 'Online store with cart and checkout',
|
|
136
|
+
icon: '🛒',
|
|
137
|
+
recommendations: {
|
|
138
|
+
variant: 'ts',
|
|
139
|
+
styling: 'tailwind',
|
|
140
|
+
ui: 'shadcn',
|
|
141
|
+
forms: 'rhf-zod',
|
|
142
|
+
state: 'zustand',
|
|
143
|
+
routing: 'tanstack-router',
|
|
144
|
+
dataFetching: 'tanstack-query',
|
|
145
|
+
icons: 'lucide',
|
|
146
|
+
structure: 'fsd',
|
|
147
|
+
auth: 'jwt',
|
|
148
|
+
},
|
|
149
|
+
features: [
|
|
150
|
+
'TypeScript for type safety',
|
|
151
|
+
'Tailwind CSS + shadcn/ui',
|
|
152
|
+
'Zustand for cart state',
|
|
153
|
+
'TanStack Router (type-safe)',
|
|
154
|
+
'TanStack Query for products',
|
|
155
|
+
'JWT authentication ready',
|
|
156
|
+
'FSD architecture',
|
|
157
|
+
],
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
// ============================================
|
|
161
|
+
// Wizard Functions
|
|
162
|
+
// ============================================
|
|
163
|
+
/**
|
|
164
|
+
* Format features list for display
|
|
165
|
+
*/
|
|
166
|
+
const formatFeatures = (features) => {
|
|
167
|
+
return features.map(f => ` ${pc.green('✓')} ${f}`).join('\n');
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* Run the wizard mode
|
|
171
|
+
*/
|
|
172
|
+
export const runWizard = async () => {
|
|
173
|
+
console.log(pc.cyan('\n🧙 Welcome to NEXO Wizard!\n'));
|
|
174
|
+
console.log(pc.dim('Let me help you set up your project.\n'));
|
|
175
|
+
// Step 1: Project name
|
|
176
|
+
const projectName = await p.text({
|
|
177
|
+
message: 'What is your project name?',
|
|
178
|
+
placeholder: 'my-awesome-app',
|
|
179
|
+
defaultValue: 'my-app',
|
|
180
|
+
validate: (value) => {
|
|
181
|
+
const v = value || 'my-app';
|
|
182
|
+
if (!/^[a-z0-9-_]+$/i.test(v)) {
|
|
183
|
+
return 'Project name can only contain letters, numbers, hyphens, and underscores';
|
|
184
|
+
}
|
|
185
|
+
return undefined;
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
if (p.isCancel(projectName)) {
|
|
189
|
+
p.cancel('Wizard cancelled.');
|
|
190
|
+
return null;
|
|
191
|
+
}
|
|
192
|
+
// Step 2: Project type
|
|
193
|
+
const projectType = await p.select({
|
|
194
|
+
message: 'What are you building?',
|
|
195
|
+
options: Object.entries(projectTypes).map(([value, config]) => ({
|
|
196
|
+
value: value,
|
|
197
|
+
label: `${config.icon} ${config.name}`,
|
|
198
|
+
hint: config.description,
|
|
199
|
+
})),
|
|
200
|
+
});
|
|
201
|
+
if (p.isCancel(projectType)) {
|
|
202
|
+
p.cancel('Wizard cancelled.');
|
|
203
|
+
return null;
|
|
204
|
+
}
|
|
205
|
+
const selectedType = projectTypes[projectType];
|
|
206
|
+
// Step 3: Show recommendations
|
|
207
|
+
console.log();
|
|
208
|
+
p.note(`${pc.bold('Recommended stack for ' + selectedType.name + ':')}\n\n${formatFeatures(selectedType.features)}`, '📦 Configuration');
|
|
209
|
+
// Step 4: Confirm or customize
|
|
210
|
+
const useRecommended = await p.confirm({
|
|
211
|
+
message: 'Use these recommended settings?',
|
|
212
|
+
initialValue: true,
|
|
213
|
+
});
|
|
214
|
+
if (p.isCancel(useRecommended)) {
|
|
215
|
+
p.cancel('Wizard cancelled.');
|
|
216
|
+
return null;
|
|
217
|
+
}
|
|
218
|
+
// Build selections
|
|
219
|
+
const recommendations = selectedType.recommendations;
|
|
220
|
+
const selections = {
|
|
221
|
+
projectName: projectName,
|
|
222
|
+
framework: 'react',
|
|
223
|
+
variant: recommendations.variant || 'ts',
|
|
224
|
+
language: (recommendations.variant || 'ts').startsWith('ts') ? 'typescript' : 'javascript',
|
|
225
|
+
styling: recommendations.styling || 'tailwind',
|
|
226
|
+
ui: recommendations.ui || 'none',
|
|
227
|
+
forms: recommendations.forms || 'none',
|
|
228
|
+
state: recommendations.state || 'none',
|
|
229
|
+
routing: recommendations.routing || 'none',
|
|
230
|
+
dataFetching: recommendations.dataFetching || 'none',
|
|
231
|
+
icons: recommendations.icons || 'none',
|
|
232
|
+
structure: recommendations.structure || 'simple',
|
|
233
|
+
i18n: recommendations.i18n || 'none',
|
|
234
|
+
auth: recommendations.auth || 'none',
|
|
235
|
+
};
|
|
236
|
+
return {
|
|
237
|
+
projectName: projectName,
|
|
238
|
+
projectType: projectType,
|
|
239
|
+
selections,
|
|
240
|
+
useRecommended: useRecommended,
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Get recommendations for a project type
|
|
245
|
+
*/
|
|
246
|
+
export const getRecommendationsFor = (type) => {
|
|
247
|
+
return projectTypes[type];
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* Get all project types
|
|
251
|
+
*/
|
|
252
|
+
export const getProjectTypes = () => {
|
|
253
|
+
return Object.entries(projectTypes).map(([value, config]) => ({
|
|
254
|
+
value: value,
|
|
255
|
+
config,
|
|
256
|
+
}));
|
|
257
|
+
};
|
|
258
|
+
export default runWizard;
|
|
259
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/core/wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base error class for all NEXO errors
|
|
3
|
+
*/
|
|
4
|
+
export declare class NexoError extends Error {
|
|
5
|
+
code: string;
|
|
6
|
+
context?: Record<string, unknown> | undefined;
|
|
7
|
+
constructor(message: string, code: string, context?: Record<string, unknown> | undefined);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Validation errors - invalid user input or selections
|
|
11
|
+
*/
|
|
12
|
+
export declare class ValidationError extends NexoError {
|
|
13
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* File system errors - file operations failed
|
|
17
|
+
*/
|
|
18
|
+
export declare class FileSystemError extends NexoError {
|
|
19
|
+
constructor(message: string, filePath: string, originalError?: Error);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Configurator errors - configuration step failed
|
|
23
|
+
*/
|
|
24
|
+
export declare class ConfiguratorError extends NexoError {
|
|
25
|
+
constructor(configuratorName: string, message: string, originalError?: Error);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Dependency errors - package installation/resolution failed
|
|
29
|
+
*/
|
|
30
|
+
export declare class DependencyError extends NexoError {
|
|
31
|
+
constructor(dependency: string, message: string);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Compatibility errors - incompatible selections
|
|
35
|
+
*/
|
|
36
|
+
export declare class CompatibilityError extends NexoError {
|
|
37
|
+
constructor(message: string, selections: Record<string, string>);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Security errors - security violation detected
|
|
41
|
+
*/
|
|
42
|
+
export declare class SecurityError extends NexoError {
|
|
43
|
+
constructor(message: string, context?: Record<string, unknown>);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Format and display an error with helpful information
|
|
47
|
+
*/
|
|
48
|
+
export declare const formatError: (error: unknown, context?: Record<string, unknown>) => void;
|
|
49
|
+
/**
|
|
50
|
+
* Global error handler - use at CLI entry point
|
|
51
|
+
*/
|
|
52
|
+
export declare const handleError: (error: unknown, context?: Record<string, unknown>) => never;
|
|
53
|
+
/**
|
|
54
|
+
* Wrap an async function with error handling
|
|
55
|
+
*/
|
|
56
|
+
export declare const withErrorHandling: <T extends unknown[], R>(fn: (...args: T) => Promise<R>, errorContext?: Record<string, unknown>) => (...args: T) => Promise<R>;
|
|
57
|
+
/**
|
|
58
|
+
* Try to execute a function and return a result object
|
|
59
|
+
*/
|
|
60
|
+
export interface Result<T> {
|
|
61
|
+
success: boolean;
|
|
62
|
+
data?: T;
|
|
63
|
+
error?: NexoError;
|
|
64
|
+
}
|
|
65
|
+
export declare const tryExecute: <T>(fn: () => Promise<T>, errorClass?: new (message: string, ...args: unknown[]) => NexoError, ...errorArgs: unknown[]) => Promise<Result<T>>;
|
|
66
|
+
export * from './messages.js';
|
|
67
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAGzB,IAAI,EAAE,MAAM;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFxC,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAM3C;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAOrE;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,SAAS;gBAClC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK;CAO7E;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS;gBACnC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAIhE;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,SAAS;gBAC9B,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAI/D;AAoFD;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,IAyE/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,OAAO,OAAO,EAAE,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,KAG/E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,OAAO,EAAE,EAAE,CAAC,EACtD,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9B,eAAe,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAExB,GAAG,MAAM,CAAC,KAAG,OAAO,CAAC,CAAC,CAQrC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,eAAO,MAAM,UAAU,GAAU,CAAC,EAChC,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,aAAY,KAAK,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,SAA+E,EACxI,GAAG,WAAW,OAAO,EAAE,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAWnB,CAAC;AAGF,cAAc,eAAe,CAAC"}
|