@react-spa-scaffold/mcp 1.1.3 → 1.2.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 +19 -15
- package/dist/features/definitions/api.d.ts +3 -0
- package/dist/features/definitions/api.d.ts.map +1 -0
- package/dist/features/definitions/api.js +20 -0
- package/dist/features/definitions/api.js.map +1 -0
- package/dist/features/definitions/ci.d.ts +3 -0
- package/dist/features/definitions/ci.d.ts.map +1 -0
- package/dist/features/definitions/ci.js +25 -0
- package/dist/features/definitions/ci.js.map +1 -0
- package/dist/features/definitions/core.d.ts +3 -0
- package/dist/features/definitions/core.d.ts.map +1 -0
- package/dist/features/definitions/core.js +76 -0
- package/dist/features/definitions/core.js.map +1 -0
- package/dist/features/definitions/devtools.d.ts +3 -0
- package/dist/features/definitions/devtools.d.ts.map +1 -0
- package/dist/features/definitions/devtools.js +53 -0
- package/dist/features/definitions/devtools.js.map +1 -0
- package/dist/features/definitions/forms.d.ts +3 -0
- package/dist/features/definitions/forms.d.ts.map +1 -0
- package/dist/features/definitions/forms.js +32 -0
- package/dist/features/definitions/forms.js.map +1 -0
- package/dist/features/definitions/i18n.d.ts +3 -0
- package/dist/features/definitions/i18n.d.ts.map +1 -0
- package/dist/features/definitions/i18n.js +50 -0
- package/dist/features/definitions/i18n.js.map +1 -0
- package/dist/features/definitions/index.d.ts +15 -0
- package/dist/features/definitions/index.d.ts.map +1 -0
- package/dist/features/definitions/index.js +15 -0
- package/dist/features/definitions/index.js.map +1 -0
- package/dist/features/definitions/mobile.d.ts +3 -0
- package/dist/features/definitions/mobile.d.ts.map +1 -0
- package/dist/features/definitions/mobile.js +19 -0
- package/dist/features/definitions/mobile.js.map +1 -0
- package/dist/features/definitions/observability.d.ts +3 -0
- package/dist/features/definitions/observability.d.ts.map +1 -0
- package/dist/features/definitions/observability.js +21 -0
- package/dist/features/definitions/observability.js.map +1 -0
- package/dist/features/definitions/performance.d.ts +3 -0
- package/dist/features/definitions/performance.d.ts.map +1 -0
- package/dist/features/definitions/performance.js +28 -0
- package/dist/features/definitions/performance.js.map +1 -0
- package/dist/features/definitions/routing.d.ts +3 -0
- package/dist/features/definitions/routing.d.ts.map +1 -0
- package/dist/features/definitions/routing.js +25 -0
- package/dist/features/definitions/routing.js.map +1 -0
- package/dist/features/definitions/state.d.ts +3 -0
- package/dist/features/definitions/state.d.ts.map +1 -0
- package/dist/features/definitions/state.js +27 -0
- package/dist/features/definitions/state.js.map +1 -0
- package/dist/features/definitions/testing.d.ts +3 -0
- package/dist/features/definitions/testing.d.ts.map +1 -0
- package/dist/features/definitions/testing.js +56 -0
- package/dist/features/definitions/testing.js.map +1 -0
- package/dist/features/definitions/theming.d.ts +3 -0
- package/dist/features/definitions/theming.d.ts.map +1 -0
- package/dist/features/definitions/theming.js +26 -0
- package/dist/features/definitions/theming.js.map +1 -0
- package/dist/features/definitions/ui.d.ts +3 -0
- package/dist/features/definitions/ui.d.ts.map +1 -0
- package/dist/features/definitions/ui.js +44 -0
- package/dist/features/definitions/ui.js.map +1 -0
- package/dist/features/index.d.ts +3 -2
- package/dist/features/index.d.ts.map +1 -1
- package/dist/features/index.js +2 -1
- package/dist/features/index.js.map +1 -1
- package/dist/features/registry.d.ts +3 -9
- package/dist/features/registry.d.ts.map +1 -1
- package/dist/features/registry.js +3 -554
- package/dist/features/registry.js.map +1 -1
- package/dist/features/types.d.ts +11 -9
- package/dist/features/types.d.ts.map +1 -1
- package/dist/features/types.js +24 -1
- package/dist/features/types.js.map +1 -1
- package/dist/server.d.ts +2 -7
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +22 -56
- package/dist/server.js.map +1 -1
- package/dist/server.test.d.ts +2 -0
- package/dist/server.test.d.ts.map +1 -0
- package/dist/server.test.js +14 -0
- package/dist/server.test.js.map +1 -0
- package/dist/tools/get-example.test.d.ts +5 -0
- package/dist/tools/get-example.test.d.ts.map +1 -0
- package/dist/tools/get-example.test.js +63 -0
- package/dist/tools/get-example.test.js.map +1 -0
- package/dist/tools/get-features.d.ts +0 -5
- package/dist/tools/get-features.d.ts.map +1 -1
- package/dist/tools/get-features.js +0 -2
- package/dist/tools/get-features.js.map +1 -1
- package/dist/tools/get-features.test.d.ts +5 -0
- package/dist/tools/get-features.test.d.ts.map +1 -0
- package/dist/tools/get-features.test.js +45 -0
- package/dist/tools/get-features.test.js.map +1 -0
- package/dist/tools/get-scaffold.d.ts +2 -2
- package/dist/tools/get-scaffold.test.d.ts +5 -0
- package/dist/tools/get-scaffold.test.d.ts.map +1 -0
- package/dist/tools/get-scaffold.test.js +194 -0
- package/dist/tools/get-scaffold.test.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.d.ts +9 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +29 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/types.d.ts +23 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +5 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/utils/cache.d.ts +21 -0
- package/dist/utils/cache.d.ts.map +1 -0
- package/dist/utils/cache.js +45 -0
- package/dist/utils/cache.js.map +1 -0
- package/dist/utils/docs.test.d.ts +5 -0
- package/dist/utils/docs.test.d.ts.map +1 -0
- package/dist/utils/docs.test.js +37 -0
- package/dist/utils/docs.test.js.map +1 -0
- package/dist/utils/errors.d.ts +8 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +19 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/examples/api-patterns.d.ts +3 -0
- package/dist/utils/examples/api-patterns.d.ts.map +1 -0
- package/dist/utils/examples/api-patterns.js +19 -0
- package/dist/utils/examples/api-patterns.js.map +1 -0
- package/dist/utils/examples/component-patterns.d.ts +3 -0
- package/dist/utils/examples/component-patterns.d.ts.map +1 -0
- package/dist/utils/examples/component-patterns.js +71 -0
- package/dist/utils/examples/component-patterns.js.map +1 -0
- package/dist/utils/examples/context-patterns.d.ts +3 -0
- package/dist/utils/examples/context-patterns.d.ts.map +1 -0
- package/dist/utils/examples/context-patterns.js +32 -0
- package/dist/utils/examples/context-patterns.js.map +1 -0
- package/dist/utils/examples/hook-patterns.d.ts +3 -0
- package/dist/utils/examples/hook-patterns.d.ts.map +1 -0
- package/dist/utils/examples/hook-patterns.js +55 -0
- package/dist/utils/examples/hook-patterns.js.map +1 -0
- package/dist/utils/examples/i18n-patterns.d.ts +3 -0
- package/dist/utils/examples/i18n-patterns.d.ts.map +1 -0
- package/dist/utils/examples/i18n-patterns.js +43 -0
- package/dist/utils/examples/i18n-patterns.js.map +1 -0
- package/dist/utils/examples/index.d.ts +12 -0
- package/dist/utils/examples/index.d.ts.map +1 -0
- package/dist/utils/examples/index.js +69 -0
- package/dist/utils/examples/index.js.map +1 -0
- package/dist/utils/examples/mobile-patterns.d.ts +3 -0
- package/dist/utils/examples/mobile-patterns.d.ts.map +1 -0
- package/dist/utils/examples/mobile-patterns.js +38 -0
- package/dist/utils/examples/mobile-patterns.js.map +1 -0
- package/dist/utils/examples/page-patterns.d.ts +3 -0
- package/dist/utils/examples/page-patterns.d.ts.map +1 -0
- package/dist/utils/examples/page-patterns.js +34 -0
- package/dist/utils/examples/page-patterns.js.map +1 -0
- package/dist/utils/examples/store-patterns.d.ts +3 -0
- package/dist/utils/examples/store-patterns.d.ts.map +1 -0
- package/dist/utils/examples/store-patterns.js +40 -0
- package/dist/utils/examples/store-patterns.js.map +1 -0
- package/dist/utils/examples/test-patterns.d.ts +3 -0
- package/dist/utils/examples/test-patterns.d.ts.map +1 -0
- package/dist/utils/examples/test-patterns.js +58 -0
- package/dist/utils/examples/test-patterns.js.map +1 -0
- package/dist/utils/examples/types.d.ts +17 -0
- package/dist/utils/examples/types.d.ts.map +1 -0
- package/dist/utils/examples/types.js +2 -0
- package/dist/utils/examples/types.js.map +1 -0
- package/dist/utils/examples/utility-patterns.d.ts +3 -0
- package/dist/utils/examples/utility-patterns.d.ts.map +1 -0
- package/dist/utils/examples/utility-patterns.js +77 -0
- package/dist/utils/examples/utility-patterns.js.map +1 -0
- package/dist/utils/index.d.ts +5 -3
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +5 -3
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/paths.d.ts +6 -25
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +11 -40
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/paths.test.d.ts +2 -0
- package/dist/utils/paths.test.d.ts.map +1 -0
- package/dist/utils/paths.test.js +17 -0
- package/dist/utils/paths.test.js.map +1 -0
- package/dist/utils/scaffold/commands.d.ts +11 -0
- package/dist/utils/scaffold/commands.d.ts.map +1 -0
- package/dist/utils/scaffold/commands.js +22 -0
- package/dist/utils/scaffold/commands.js.map +1 -0
- package/dist/utils/scaffold/compute.d.ts +18 -0
- package/dist/utils/scaffold/compute.d.ts.map +1 -0
- package/dist/utils/scaffold/compute.js +78 -0
- package/dist/utils/scaffold/compute.js.map +1 -0
- package/dist/utils/scaffold/dependencies.d.ts +32 -0
- package/dist/utils/scaffold/dependencies.d.ts.map +1 -0
- package/dist/utils/scaffold/dependencies.js +107 -0
- package/dist/utils/scaffold/dependencies.js.map +1 -0
- package/dist/utils/scaffold/file-structure.d.ts +23 -0
- package/dist/utils/scaffold/file-structure.d.ts.map +1 -0
- package/dist/utils/scaffold/file-structure.js +62 -0
- package/dist/utils/scaffold/file-structure.js.map +1 -0
- package/dist/utils/scaffold/generators.d.ts +17 -0
- package/dist/utils/scaffold/generators.d.ts.map +1 -0
- package/dist/utils/{scaffold.js → scaffold/generators.js} +6 -254
- package/dist/utils/scaffold/generators.js.map +1 -0
- package/dist/utils/scaffold/index.d.ts +11 -0
- package/dist/utils/scaffold/index.d.ts.map +1 -0
- package/dist/utils/scaffold/index.js +11 -0
- package/dist/utils/scaffold/index.js.map +1 -0
- package/package.json +1 -1
- package/templates/.github/workflows/release.yml +1 -1
- package/templates/e2e/tests/home.spec.ts +2 -2
- package/templates/e2e/tests/language.spec.ts +7 -3
- package/dist/utils/examples.d.ts +0 -27
- package/dist/utils/examples.d.ts.map +0 -1
- package/dist/utils/examples.js +0 -438
- package/dist/utils/examples.js.map +0 -1
- package/dist/utils/scaffold.d.ts +0 -59
- package/dist/utils/scaffold.d.ts.map +0 -1
- package/dist/utils/scaffold.js.map +0 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup commands utility
|
|
3
|
+
*
|
|
4
|
+
* Generates the npm commands needed to set up a scaffolded project.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Generate setup commands based on selected features
|
|
8
|
+
*/
|
|
9
|
+
export function getSetupCommands(featureIds) {
|
|
10
|
+
const commands = ['npm install'];
|
|
11
|
+
if (featureIds.includes('devtools')) {
|
|
12
|
+
commands.push('npm run prepare'); // Initialize husky
|
|
13
|
+
}
|
|
14
|
+
if (featureIds.includes('testing')) {
|
|
15
|
+
commands.push('npx playwright install chromium'); // Install Playwright browser
|
|
16
|
+
}
|
|
17
|
+
if (featureIds.includes('i18n')) {
|
|
18
|
+
commands.push('npm run i18n:extract'); // Extract initial translations
|
|
19
|
+
}
|
|
20
|
+
return commands;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/utils/scaffold/commands.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,MAAM,QAAQ,GAAa,CAAC,aAAa,CAAC,CAAC;IAE3C,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB;IACvD,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC,CAAC,6BAA6B;IACjF,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,+BAA+B;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold computation orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Coordinates all scaffold components to produce the final scaffold result.
|
|
5
|
+
*/
|
|
6
|
+
import type { ScaffoldResult } from '../../features/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Computes complete scaffold for selected features.
|
|
9
|
+
*
|
|
10
|
+
* Orchestrates dependency resolution, file structure computation,
|
|
11
|
+
* and dynamic content generation to produce a complete project scaffold.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* const scaffold = await computeScaffold(['routing', 'ui'], 'my-app');
|
|
15
|
+
* // Returns: { packageJson, structure, configFiles, claudeMd, ... }
|
|
16
|
+
*/
|
|
17
|
+
export declare function computeScaffold(selectedFeatures: string[], projectName?: string): Promise<ScaffoldResult>;
|
|
18
|
+
//# sourceMappingURL=compute.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAe9D;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,GAAE,MAAiB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA6DzB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold computation orchestrator
|
|
3
|
+
*
|
|
4
|
+
* Coordinates all scaffold components to produce the final scaffold result.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile } from 'fs/promises';
|
|
7
|
+
import { computeDocsContent, computeDocsForFeatures } from '../docs.js';
|
|
8
|
+
import { resolveTemplatePath } from '../paths.js';
|
|
9
|
+
import { resolveFeatureDependencies, mergeDependencies, mergeScripts } from './dependencies.js';
|
|
10
|
+
import { computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
|
|
11
|
+
import { getSetupCommands } from './commands.js';
|
|
12
|
+
import { generateClaudeMd, generateViteEnvDts, generateEnvTs, generateRoutesTs } from './generators.js';
|
|
13
|
+
async function readSourcePackageJson() {
|
|
14
|
+
const path = resolveTemplatePath('package.json');
|
|
15
|
+
const content = await readFile(path, 'utf-8');
|
|
16
|
+
return JSON.parse(content);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Computes complete scaffold for selected features.
|
|
20
|
+
*
|
|
21
|
+
* Orchestrates dependency resolution, file structure computation,
|
|
22
|
+
* and dynamic content generation to produce a complete project scaffold.
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* const scaffold = await computeScaffold(['routing', 'ui'], 'my-app');
|
|
26
|
+
* // Returns: { packageJson, structure, configFiles, claudeMd, ... }
|
|
27
|
+
*/
|
|
28
|
+
export async function computeScaffold(selectedFeatures, projectName = 'my-app') {
|
|
29
|
+
// Resolve all dependencies
|
|
30
|
+
const resolvedFeatures = resolveFeatureDependencies(selectedFeatures);
|
|
31
|
+
// Read engines from source package.json
|
|
32
|
+
const sourcePackageJson = await readSourcePackageJson();
|
|
33
|
+
const engines = sourcePackageJson.engines || {};
|
|
34
|
+
// Merge all dependencies (async to read versions from source package.json)
|
|
35
|
+
const { dependencies, devDependencies } = await mergeDependencies(resolvedFeatures);
|
|
36
|
+
// Merge all scripts
|
|
37
|
+
const scripts = mergeScripts(resolvedFeatures);
|
|
38
|
+
// Get file structure (add CLAUDE.md which is generated, not from patterns)
|
|
39
|
+
// Also add docs based on selected features
|
|
40
|
+
const docPaths = computeDocsForFeatures(resolvedFeatures);
|
|
41
|
+
const structure = [...computeFileStructure(resolvedFeatures), 'CLAUDE.md', ...docPaths];
|
|
42
|
+
// Get config files with actual content read from templates
|
|
43
|
+
const configFiles = {};
|
|
44
|
+
const configPaths = getConfigFiles(resolvedFeatures);
|
|
45
|
+
for (const config of configPaths) {
|
|
46
|
+
configFiles[config] = await readConfigFileContent(config);
|
|
47
|
+
}
|
|
48
|
+
// Get setup commands
|
|
49
|
+
const setupCommands = getSetupCommands(resolvedFeatures);
|
|
50
|
+
// Generate CLAUDE.md content
|
|
51
|
+
const claudeMd = generateClaudeMd(resolvedFeatures, projectName, scripts);
|
|
52
|
+
// Generate vite-env.d.ts content
|
|
53
|
+
const viteEnvDts = generateViteEnvDts(resolvedFeatures);
|
|
54
|
+
// Generate env.ts content
|
|
55
|
+
const envTs = generateEnvTs(resolvedFeatures);
|
|
56
|
+
// Generate routes.ts content (only if routing feature is selected)
|
|
57
|
+
const routesTs = resolvedFeatures.includes('routing') ? generateRoutesTs() : undefined;
|
|
58
|
+
// Get docs with content filtered by features
|
|
59
|
+
const docs = await computeDocsContent(resolvedFeatures);
|
|
60
|
+
return {
|
|
61
|
+
packageJson: {
|
|
62
|
+
name: projectName,
|
|
63
|
+
dependencies,
|
|
64
|
+
devDependencies,
|
|
65
|
+
scripts,
|
|
66
|
+
engines,
|
|
67
|
+
},
|
|
68
|
+
structure,
|
|
69
|
+
configFiles,
|
|
70
|
+
setupCommands,
|
|
71
|
+
claudeMd,
|
|
72
|
+
viteEnvDts,
|
|
73
|
+
envTs,
|
|
74
|
+
routesTs,
|
|
75
|
+
docs,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=compute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency resolution utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles merging dependencies from features and resolving versions
|
|
5
|
+
* from the source package.json at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import type { FeatureId } from '../../features/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Resolves feature dependencies and auto-includes required features.
|
|
10
|
+
*
|
|
11
|
+
* - Core is always included
|
|
12
|
+
* - Theming auto-includes state (for Zustand persistence)
|
|
13
|
+
*
|
|
14
|
+
* @param selectedFeatures - Array of feature IDs selected by user
|
|
15
|
+
* @returns Array of resolved FeatureIds including auto-included dependencies
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveFeatureDependencies(selectedFeatures: string[]): FeatureId[];
|
|
18
|
+
/**
|
|
19
|
+
* Merges dependencies from multiple features.
|
|
20
|
+
*
|
|
21
|
+
* Resolves package versions from the source package.json at runtime.
|
|
22
|
+
* This ensures scaffolded projects always use up-to-date dependency versions.
|
|
23
|
+
*/
|
|
24
|
+
export declare function mergeDependencies(featureIds: FeatureId[]): Promise<{
|
|
25
|
+
dependencies: Record<string, string>;
|
|
26
|
+
devDependencies: Record<string, string>;
|
|
27
|
+
}>;
|
|
28
|
+
/**
|
|
29
|
+
* Merge scripts from multiple features
|
|
30
|
+
*/
|
|
31
|
+
export declare function mergeScripts(featureIds: FeatureId[]): Record<string, string>;
|
|
32
|
+
//# sourceMappingURL=dependencies.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AA4BzD;;;;;;;;GAQG;AACH,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAmBlF;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IACxE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACzC,CAAC,CAwCD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW5E"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency resolution utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles merging dependencies from features and resolving versions
|
|
5
|
+
* from the source package.json at runtime.
|
|
6
|
+
*/
|
|
7
|
+
import { readFile } from 'fs/promises';
|
|
8
|
+
import { FEATURES, isFeatureId } from '../../features/index.js';
|
|
9
|
+
import { resolveTemplatePath } from '../paths.js';
|
|
10
|
+
// Cache for source package.json to avoid repeated file reads
|
|
11
|
+
let cachedSourcePackageJson = null;
|
|
12
|
+
/**
|
|
13
|
+
* Read and cache the source package.json dependencies
|
|
14
|
+
*/
|
|
15
|
+
async function getSourceDependencies() {
|
|
16
|
+
if (!cachedSourcePackageJson) {
|
|
17
|
+
const path = resolveTemplatePath('package.json');
|
|
18
|
+
const content = await readFile(path, 'utf-8');
|
|
19
|
+
const pkg = JSON.parse(content);
|
|
20
|
+
cachedSourcePackageJson = {
|
|
21
|
+
dependencies: (pkg.dependencies || {}),
|
|
22
|
+
devDependencies: (pkg.devDependencies || {}),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
return cachedSourcePackageJson;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolves feature dependencies and auto-includes required features.
|
|
29
|
+
*
|
|
30
|
+
* - Core is always included
|
|
31
|
+
* - Theming auto-includes state (for Zustand persistence)
|
|
32
|
+
*
|
|
33
|
+
* @param selectedFeatures - Array of feature IDs selected by user
|
|
34
|
+
* @returns Array of resolved FeatureIds including auto-included dependencies
|
|
35
|
+
*/
|
|
36
|
+
export function resolveFeatureDependencies(selectedFeatures) {
|
|
37
|
+
const resolved = new Set();
|
|
38
|
+
// Always include core
|
|
39
|
+
resolved.add('core');
|
|
40
|
+
// Add all selected features (no recursive dependency resolution)
|
|
41
|
+
for (const featureId of selectedFeatures) {
|
|
42
|
+
if (isFeatureId(featureId)) {
|
|
43
|
+
resolved.add(featureId);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Theming requires state feature for Zustand persistence
|
|
47
|
+
if (resolved.has('theming') && !resolved.has('state')) {
|
|
48
|
+
resolved.add('state');
|
|
49
|
+
}
|
|
50
|
+
return Array.from(resolved);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Merges dependencies from multiple features.
|
|
54
|
+
*
|
|
55
|
+
* Resolves package versions from the source package.json at runtime.
|
|
56
|
+
* This ensures scaffolded projects always use up-to-date dependency versions.
|
|
57
|
+
*/
|
|
58
|
+
export async function mergeDependencies(featureIds) {
|
|
59
|
+
const dependencies = {};
|
|
60
|
+
const devDependencies = {};
|
|
61
|
+
// Get source package.json for version lookup
|
|
62
|
+
const sourcePkg = await getSourceDependencies();
|
|
63
|
+
for (const featureId of featureIds) {
|
|
64
|
+
const feature = FEATURES[featureId];
|
|
65
|
+
// Look up dependency versions from source package.json
|
|
66
|
+
if (feature.dependencyNames) {
|
|
67
|
+
for (const name of feature.dependencyNames) {
|
|
68
|
+
if (sourcePkg.dependencies[name]) {
|
|
69
|
+
dependencies[name] = sourcePkg.dependencies[name];
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
console.warn(`Dependency "${name}" not found in source package.json`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (feature.devDependencyNames) {
|
|
77
|
+
for (const name of feature.devDependencyNames) {
|
|
78
|
+
if (sourcePkg.devDependencies[name]) {
|
|
79
|
+
devDependencies[name] = sourcePkg.devDependencies[name];
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.warn(`DevDependency "${name}" not found in source package.json`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Sort alphabetically
|
|
88
|
+
const sortObject = (obj) => Object.fromEntries(Object.entries(obj).sort(([a], [b]) => a.localeCompare(b)));
|
|
89
|
+
return {
|
|
90
|
+
dependencies: sortObject(dependencies),
|
|
91
|
+
devDependencies: sortObject(devDependencies),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Merge scripts from multiple features
|
|
96
|
+
*/
|
|
97
|
+
export function mergeScripts(featureIds) {
|
|
98
|
+
const scripts = {};
|
|
99
|
+
for (const featureId of featureIds) {
|
|
100
|
+
const feature = FEATURES[featureId];
|
|
101
|
+
if (feature.scripts) {
|
|
102
|
+
Object.assign(scripts, feature.scripts);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return scripts;
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=dependencies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File structure utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles computing which files to include based on selected features.
|
|
5
|
+
*/
|
|
6
|
+
import type { FeatureId } from '../../features/types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compute file structure for selected features
|
|
9
|
+
*
|
|
10
|
+
* When the 'testing' feature is selected, testFiles from all selected features
|
|
11
|
+
* are also included. This ensures scaffolded projects get tests that match
|
|
12
|
+
* their source files.
|
|
13
|
+
*/
|
|
14
|
+
export declare function computeFileStructure(featureIds: FeatureId[]): string[];
|
|
15
|
+
/**
|
|
16
|
+
* Get config files needed for selected features
|
|
17
|
+
*/
|
|
18
|
+
export declare function getConfigFiles(featureIds: FeatureId[]): string[];
|
|
19
|
+
/**
|
|
20
|
+
* Read config file content from template
|
|
21
|
+
*/
|
|
22
|
+
export declare function readConfigFileContent(configPath: string): Promise<string>;
|
|
23
|
+
//# sourceMappingURL=file-structure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-structure.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/file-structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGzD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAqBtE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAahE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAS/E"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* File structure utilities
|
|
3
|
+
*
|
|
4
|
+
* Handles computing which files to include based on selected features.
|
|
5
|
+
*/
|
|
6
|
+
import { readFile } from 'fs/promises';
|
|
7
|
+
import { FEATURES } from '../../features/index.js';
|
|
8
|
+
import { resolveTemplatePath } from '../paths.js';
|
|
9
|
+
/**
|
|
10
|
+
* Compute file structure for selected features
|
|
11
|
+
*
|
|
12
|
+
* When the 'testing' feature is selected, testFiles from all selected features
|
|
13
|
+
* are also included. This ensures scaffolded projects get tests that match
|
|
14
|
+
* their source files.
|
|
15
|
+
*/
|
|
16
|
+
export function computeFileStructure(featureIds) {
|
|
17
|
+
const files = new Set();
|
|
18
|
+
const includeTests = featureIds.includes('testing');
|
|
19
|
+
for (const featureId of featureIds) {
|
|
20
|
+
const feature = FEATURES[featureId];
|
|
21
|
+
// Always include source files
|
|
22
|
+
for (const file of feature.files) {
|
|
23
|
+
files.add(file);
|
|
24
|
+
}
|
|
25
|
+
// Include test files only when testing feature is selected
|
|
26
|
+
if (includeTests && feature.testFiles) {
|
|
27
|
+
for (const file of feature.testFiles) {
|
|
28
|
+
files.add(file);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return Array.from(files).sort();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get config files needed for selected features
|
|
36
|
+
*/
|
|
37
|
+
export function getConfigFiles(featureIds) {
|
|
38
|
+
const configs = new Set();
|
|
39
|
+
for (const featureId of featureIds) {
|
|
40
|
+
const feature = FEATURES[featureId];
|
|
41
|
+
if (feature.configFiles) {
|
|
42
|
+
for (const config of feature.configFiles) {
|
|
43
|
+
configs.add(config);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return Array.from(configs).sort();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Read config file content from template
|
|
51
|
+
*/
|
|
52
|
+
export async function readConfigFileContent(configPath) {
|
|
53
|
+
const fullPath = resolveTemplatePath(configPath);
|
|
54
|
+
try {
|
|
55
|
+
return await readFile(fullPath, 'utf-8');
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// File might not exist if running outside react-spa-scaffold
|
|
59
|
+
return `// File not found: ${configPath}\n// Run MCP server from within react-spa-scaffold repository`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=file-structure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-structure.js","sourceRoot":"","sources":["../../../src/utils/scaffold/file-structure.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAAuB;IAC1D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEpD,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAEpC,8BAA8B;QAC9B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC;QAED,2DAA2D;QAC3D,IAAI,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;YACtC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACrC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAAuB;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,UAAkB;IAC5D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,6DAA6D;QAC7D,OAAO,sBAAsB,UAAU,+DAA+D,CAAC;IACzG,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content generators for CLAUDE.md, env.ts, routes.ts, etc.
|
|
3
|
+
*/
|
|
4
|
+
import type { FeatureId } from '../../features/types.js';
|
|
5
|
+
/** Generates CLAUDE.md content based on selected features. */
|
|
6
|
+
export declare function generateClaudeMd(featureIds: FeatureId[], projectName: string, scripts: Record<string, string>): string;
|
|
7
|
+
/**
|
|
8
|
+
* Generate vite-env.d.ts content based on selected features
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateViteEnvDts(featureIds: FeatureId[]): string;
|
|
11
|
+
/**
|
|
12
|
+
* Generate env.ts content based on selected features
|
|
13
|
+
*/
|
|
14
|
+
export declare function generateEnvTs(featureIds: FeatureId[]): string;
|
|
15
|
+
/** Generates routes.ts content. */
|
|
16
|
+
export declare function generateRoutesTs(): string;
|
|
17
|
+
//# sourceMappingURL=generators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,SAAS,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CA0RR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAwClE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CA0E7D;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,CAazC"}
|