@react-spa-scaffold/mcp 1.2.1 → 2.1.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 +39 -127
- package/dist/features/definitions/api.d.ts.map +1 -1
- package/dist/features/definitions/api.js +1 -11
- package/dist/features/definitions/api.js.map +1 -1
- package/dist/features/definitions/ci.d.ts.map +1 -1
- package/dist/features/definitions/ci.js +0 -11
- package/dist/features/definitions/ci.js.map +1 -1
- package/dist/features/definitions/core.d.ts.map +1 -1
- package/dist/features/definitions/core.js +2 -15
- package/dist/features/definitions/core.js.map +1 -1
- package/dist/features/definitions/devtools.d.ts.map +1 -1
- package/dist/features/definitions/devtools.js +1 -15
- package/dist/features/definitions/devtools.js.map +1 -1
- package/dist/features/definitions/forms.d.ts.map +1 -1
- package/dist/features/definitions/forms.js +1 -10
- package/dist/features/definitions/forms.js.map +1 -1
- package/dist/features/definitions/i18n.d.ts.map +1 -1
- package/dist/features/definitions/i18n.js +2 -15
- package/dist/features/definitions/i18n.js.map +1 -1
- package/dist/features/definitions/mobile.d.ts.map +1 -1
- package/dist/features/definitions/mobile.js +0 -10
- package/dist/features/definitions/mobile.js.map +1 -1
- package/dist/features/definitions/observability.d.ts.map +1 -1
- package/dist/features/definitions/observability.js +2 -13
- package/dist/features/definitions/observability.js.map +1 -1
- package/dist/features/definitions/performance.d.ts.map +1 -1
- package/dist/features/definitions/performance.js +2 -14
- package/dist/features/definitions/performance.js.map +1 -1
- package/dist/features/definitions/routing.d.ts.map +1 -1
- package/dist/features/definitions/routing.js +1 -10
- package/dist/features/definitions/routing.js.map +1 -1
- package/dist/features/definitions/state.d.ts.map +1 -1
- package/dist/features/definitions/state.js +1 -12
- package/dist/features/definitions/state.js.map +1 -1
- package/dist/features/definitions/testing.d.ts.map +1 -1
- package/dist/features/definitions/testing.js +1 -17
- package/dist/features/definitions/testing.js.map +1 -1
- package/dist/features/definitions/theming.d.ts.map +1 -1
- package/dist/features/definitions/theming.js +0 -9
- package/dist/features/definitions/theming.js.map +1 -1
- package/dist/features/definitions/ui.d.ts.map +1 -1
- package/dist/features/definitions/ui.js +2 -16
- package/dist/features/definitions/ui.js.map +1 -1
- package/dist/features/types.d.ts +2 -4
- package/dist/features/types.d.ts.map +1 -1
- package/dist/server.js +6 -6
- package/dist/tools/add-features.d.ts +44 -0
- package/dist/tools/add-features.d.ts.map +1 -0
- package/dist/tools/add-features.js +157 -0
- package/dist/tools/add-features.js.map +1 -0
- package/dist/tools/add-features.test.d.ts +5 -0
- package/dist/tools/add-features.test.d.ts.map +1 -0
- package/dist/tools/add-features.test.js +170 -0
- package/dist/tools/add-features.test.js.map +1 -0
- package/dist/tools/get-features.d.ts +1 -2
- package/dist/tools/get-features.d.ts.map +1 -1
- package/dist/tools/get-features.js +1 -2
- package/dist/tools/get-features.js.map +1 -1
- package/dist/tools/get-features.test.js +6 -2
- package/dist/tools/get-features.test.js.map +1 -1
- package/dist/tools/get-file.d.ts +1 -1
- package/dist/tools/get-file.d.ts.map +1 -1
- package/dist/tools/get-file.js +12 -8
- package/dist/tools/get-file.js.map +1 -1
- package/dist/tools/get-scaffold.d.ts +3 -4
- package/dist/tools/get-scaffold.d.ts.map +1 -1
- package/dist/tools/get-scaffold.js +58 -29
- package/dist/tools/get-scaffold.js.map +1 -1
- package/dist/tools/get-scaffold.test.js +25 -10
- package/dist/tools/get-scaffold.test.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +2 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/registry.js +8 -8
- package/dist/tools/registry.js.map +1 -1
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/scaffold/compute.js +1 -1
- package/dist/utils/scaffold/compute.js.map +1 -1
- package/dist/utils/scaffold/dependencies.d.ts +15 -2
- package/dist/utils/scaffold/dependencies.d.ts.map +1 -1
- package/dist/utils/scaffold/dependencies.js +15 -8
- package/dist/utils/scaffold/dependencies.js.map +1 -1
- package/dist/utils/scaffold/file-structure.d.ts +12 -0
- package/dist/utils/scaffold/file-structure.d.ts.map +1 -1
- package/dist/utils/scaffold/file-structure.js +23 -0
- package/dist/utils/scaffold/file-structure.js.map +1 -1
- package/dist/utils/scaffold/generators.d.ts.map +1 -1
- package/dist/utils/scaffold/generators.js +10 -0
- package/dist/utils/scaffold/generators.js.map +1 -1
- package/dist/utils/scaffold/index.d.ts +3 -2
- package/dist/utils/scaffold/index.d.ts.map +1 -1
- package/dist/utils/scaffold/index.js +1 -1
- package/dist/utils/scaffold/index.js.map +1 -1
- package/package.json +1 -1
- package/templates/e2e/tests/language.spec.ts +2 -1
- package/templates/src/contexts/queryContext.tsx +1 -2
- package/templates/src/lib/storage.ts +1 -1
- package/dist/tools/get-example.d.ts +0 -38
- package/dist/tools/get-example.d.ts.map +0 -1
- package/dist/tools/get-example.js +0 -83
- package/dist/tools/get-example.js.map +0 -1
- package/dist/tools/get-example.test.d.ts +0 -5
- package/dist/tools/get-example.test.d.ts.map +0 -1
- package/dist/tools/get-example.test.js +0 -63
- package/dist/tools/get-example.test.js.map +0 -1
- package/dist/utils/examples/api-patterns.d.ts +0 -3
- package/dist/utils/examples/api-patterns.d.ts.map +0 -1
- package/dist/utils/examples/api-patterns.js +0 -19
- package/dist/utils/examples/api-patterns.js.map +0 -1
- package/dist/utils/examples/component-patterns.d.ts +0 -3
- package/dist/utils/examples/component-patterns.d.ts.map +0 -1
- package/dist/utils/examples/component-patterns.js +0 -71
- package/dist/utils/examples/component-patterns.js.map +0 -1
- package/dist/utils/examples/context-patterns.d.ts +0 -3
- package/dist/utils/examples/context-patterns.d.ts.map +0 -1
- package/dist/utils/examples/context-patterns.js +0 -32
- package/dist/utils/examples/context-patterns.js.map +0 -1
- package/dist/utils/examples/hook-patterns.d.ts +0 -3
- package/dist/utils/examples/hook-patterns.d.ts.map +0 -1
- package/dist/utils/examples/hook-patterns.js +0 -55
- package/dist/utils/examples/hook-patterns.js.map +0 -1
- package/dist/utils/examples/i18n-patterns.d.ts +0 -3
- package/dist/utils/examples/i18n-patterns.d.ts.map +0 -1
- package/dist/utils/examples/i18n-patterns.js +0 -43
- package/dist/utils/examples/i18n-patterns.js.map +0 -1
- package/dist/utils/examples/index.d.ts +0 -12
- package/dist/utils/examples/index.d.ts.map +0 -1
- package/dist/utils/examples/index.js +0 -65
- package/dist/utils/examples/index.js.map +0 -1
- package/dist/utils/examples/mobile-patterns.d.ts +0 -3
- package/dist/utils/examples/mobile-patterns.d.ts.map +0 -1
- package/dist/utils/examples/mobile-patterns.js +0 -38
- package/dist/utils/examples/mobile-patterns.js.map +0 -1
- package/dist/utils/examples/page-patterns.d.ts +0 -3
- package/dist/utils/examples/page-patterns.d.ts.map +0 -1
- package/dist/utils/examples/page-patterns.js +0 -34
- package/dist/utils/examples/page-patterns.js.map +0 -1
- package/dist/utils/examples/patterns.test.d.ts +0 -6
- package/dist/utils/examples/patterns.test.d.ts.map +0 -1
- package/dist/utils/examples/patterns.test.js +0 -75
- package/dist/utils/examples/patterns.test.js.map +0 -1
- package/dist/utils/examples/store-patterns.d.ts +0 -3
- package/dist/utils/examples/store-patterns.d.ts.map +0 -1
- package/dist/utils/examples/store-patterns.js +0 -40
- package/dist/utils/examples/store-patterns.js.map +0 -1
- package/dist/utils/examples/test-patterns.d.ts +0 -3
- package/dist/utils/examples/test-patterns.d.ts.map +0 -1
- package/dist/utils/examples/test-patterns.js +0 -58
- package/dist/utils/examples/test-patterns.js.map +0 -1
- package/dist/utils/examples/types.d.ts +0 -17
- package/dist/utils/examples/types.d.ts.map +0 -1
- package/dist/utils/examples/types.js +0 -2
- package/dist/utils/examples/types.js.map +0 -1
- package/dist/utils/examples/utility-patterns.d.ts +0 -3
- package/dist/utils/examples/utility-patterns.d.ts.map +0 -1
- package/dist/utils/examples/utility-patterns.js +0 -77
- package/dist/utils/examples/utility-patterns.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExG,KAAK,UAAU,qBAAqB;IAClC,MAAM,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,gBAA0B,EAC1B,cAAsB,QAAQ;IAE9B,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAEtE,2DAA2D;IAC3D,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,qBAAqB,EAAE;QACvB,iBAAiB,CAAC,gBAAgB,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAI,iBAAiB,CAAC,OAAkC,IAAI,EAAE,CAAC;IAC5E,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExG,KAAK,UAAU,qBAAqB;IAClC,MAAM,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,gBAA0B,EAC1B,cAAsB,QAAQ;IAE9B,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,gBAAgB,CAAC,CAAC;IAEtE,2DAA2D;IAC3D,MAAM,CAAC,iBAAiB,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,qBAAqB,EAAE;QACvB,iBAAiB,CAAC,gBAAgB,CAAC;KACpC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAI,iBAAiB,CAAC,OAAkC,IAAI,EAAE,CAAC;IAC5E,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC;IAE/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,kBAAkB;IAClB,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC,CAAC,4CAA4C;IACtG,MAAM,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAEzD,0CAA0C;IAC1C,MAAM,WAAW,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAErD,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1E,MAAM,UAAU,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7F,OAAO;QACL,WAAW,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,EAAE;QACnF,SAAS;QACT,WAAW;QACX,aAAa;QACb,QAAQ;QACR,UAAU;QACV,KAAK;QACL,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -2,11 +2,24 @@
|
|
|
2
2
|
* Dependency resolution - merges features and resolves versions from package.json.
|
|
3
3
|
*/
|
|
4
4
|
import type { FeatureId } from '../../features/types.js';
|
|
5
|
+
/** Options for resolving feature dependencies */
|
|
6
|
+
export interface ResolveFeatureDependenciesOptions {
|
|
7
|
+
/**
|
|
8
|
+
* Whether to auto-include the 'core' feature.
|
|
9
|
+
* - true (default): For new projects (get_scaffold)
|
|
10
|
+
* - false: For extending existing projects (add_features)
|
|
11
|
+
*/
|
|
12
|
+
includeCore?: boolean;
|
|
13
|
+
}
|
|
5
14
|
/**
|
|
6
15
|
* Resolves feature dependencies and auto-includes required features.
|
|
7
|
-
*
|
|
16
|
+
* Dependencies declared via `requires` field are resolved recursively.
|
|
17
|
+
*
|
|
18
|
+
* @param selectedFeatures - Features to include
|
|
19
|
+
* @param options - Configuration options
|
|
20
|
+
* @param options.includeCore - Whether to auto-include 'core' feature (default: true)
|
|
8
21
|
*/
|
|
9
|
-
export declare function resolveFeatureDependencies(selectedFeatures: string[]): FeatureId[];
|
|
22
|
+
export declare function resolveFeatureDependencies(selectedFeatures: string[], options?: ResolveFeatureDependenciesOptions): FeatureId[];
|
|
10
23
|
/** Result of merging dependencies with any warnings. */
|
|
11
24
|
export interface MergeDependenciesResult {
|
|
12
25
|
dependencies: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAwBzD
|
|
1
|
+
{"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAwBzD,iDAAiD;AACjD,MAAM,WAAW,iCAAiC;IAChD;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,MAAM,EAAE,EAC1B,OAAO,GAAE,iCAAsC,GAC9C,SAAS,EAAE,CA8Bb;AAED,wDAAwD;AACxD,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAuCjG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAW5E"}
|
|
@@ -20,9 +20,14 @@ async function getSourceDependencies() {
|
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
22
|
* Resolves feature dependencies and auto-includes required features.
|
|
23
|
-
*
|
|
23
|
+
* Dependencies declared via `requires` field are resolved recursively.
|
|
24
|
+
*
|
|
25
|
+
* @param selectedFeatures - Features to include
|
|
26
|
+
* @param options - Configuration options
|
|
27
|
+
* @param options.includeCore - Whether to auto-include 'core' feature (default: true)
|
|
24
28
|
*/
|
|
25
|
-
export function resolveFeatureDependencies(selectedFeatures) {
|
|
29
|
+
export function resolveFeatureDependencies(selectedFeatures, options = {}) {
|
|
30
|
+
const { includeCore = true } = options;
|
|
26
31
|
const resolved = new Set();
|
|
27
32
|
function addWithDeps(featureId) {
|
|
28
33
|
if (resolved.has(featureId))
|
|
@@ -36,8 +41,10 @@ export function resolveFeatureDependencies(selectedFeatures) {
|
|
|
36
41
|
}
|
|
37
42
|
}
|
|
38
43
|
}
|
|
39
|
-
//
|
|
40
|
-
|
|
44
|
+
// Include core first (for new project scaffolding)
|
|
45
|
+
if (includeCore) {
|
|
46
|
+
resolved.add('core');
|
|
47
|
+
}
|
|
41
48
|
// Add selected features with their dependencies
|
|
42
49
|
for (const featureId of selectedFeatures) {
|
|
43
50
|
if (isFeatureId(featureId)) {
|
|
@@ -57,8 +64,8 @@ export async function mergeDependencies(featureIds) {
|
|
|
57
64
|
const sourcePkg = await getSourceDependencies();
|
|
58
65
|
for (const featureId of featureIds) {
|
|
59
66
|
const feature = FEATURES[featureId];
|
|
60
|
-
if (feature.
|
|
61
|
-
for (const name of feature.
|
|
67
|
+
if (feature.dependencies) {
|
|
68
|
+
for (const name of feature.dependencies) {
|
|
62
69
|
if (sourcePkg.dependencies[name]) {
|
|
63
70
|
dependencies[name] = sourcePkg.dependencies[name];
|
|
64
71
|
}
|
|
@@ -67,8 +74,8 @@ export async function mergeDependencies(featureIds) {
|
|
|
67
74
|
}
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
|
-
if (feature.
|
|
71
|
-
for (const name of feature.
|
|
77
|
+
if (feature.devDependencies) {
|
|
78
|
+
for (const name of feature.devDependencies) {
|
|
72
79
|
if (sourcePkg.devDependencies[name]) {
|
|
73
80
|
devDependencies[name] = sourcePkg.devDependencies[name];
|
|
74
81
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAOlD,MAAM,eAAe,GAAG,oBAAoB,EAAc,CAAC;AAE3D,2DAA2D;AAC3D,KAAK,UAAU,qBAAqB;IAClC,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO;YACL,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAA2B;YAChE,eAAe,EAAE,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAA2B;SACvE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;
|
|
1
|
+
{"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,18 @@ import type { FeatureId } from '../../features/types.js';
|
|
|
12
12
|
* their source files.
|
|
13
13
|
*/
|
|
14
14
|
export declare function computeFileStructure(featureIds: FeatureId[]): string[];
|
|
15
|
+
/** Result of collecting feature files */
|
|
16
|
+
export interface CollectFeatureFilesResult {
|
|
17
|
+
/** Source files from all features */
|
|
18
|
+
files: string[];
|
|
19
|
+
/** Test files from all features */
|
|
20
|
+
testFiles: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Collect files and testFiles separately from selected features.
|
|
24
|
+
* Useful for add_features where files and tests are returned separately.
|
|
25
|
+
*/
|
|
26
|
+
export declare function collectFeatureFiles(featureIds: FeatureId[]): CollectFeatureFilesResult;
|
|
15
27
|
/**
|
|
16
28
|
* Get config files needed for selected features
|
|
17
29
|
*/
|
|
@@ -1 +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"}
|
|
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,yCAAyC;AACzC,MAAM,WAAW,yBAAyB;IACxC,qCAAqC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,mCAAmC;IACnC,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,yBAAyB,CAsBtF;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"}
|
|
@@ -31,6 +31,29 @@ export function computeFileStructure(featureIds) {
|
|
|
31
31
|
}
|
|
32
32
|
return Array.from(files).sort();
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Collect files and testFiles separately from selected features.
|
|
36
|
+
* Useful for add_features where files and tests are returned separately.
|
|
37
|
+
*/
|
|
38
|
+
export function collectFeatureFiles(featureIds) {
|
|
39
|
+
const files = new Set();
|
|
40
|
+
const testFiles = new Set();
|
|
41
|
+
for (const featureId of featureIds) {
|
|
42
|
+
const feature = FEATURES[featureId];
|
|
43
|
+
for (const file of feature.files) {
|
|
44
|
+
files.add(file);
|
|
45
|
+
}
|
|
46
|
+
if (feature.testFiles) {
|
|
47
|
+
for (const file of feature.testFiles) {
|
|
48
|
+
testFiles.add(file);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
files: Array.from(files).sort(),
|
|
54
|
+
testFiles: Array.from(testFiles).sort(),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
34
57
|
/**
|
|
35
58
|
* Get config files needed for selected features
|
|
36
59
|
*/
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"file-structure.js","sourceRoot":"","sources":["../../../src/utils/scaffold/file-structure.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CA4ClE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAwE7D;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,CAazC"}
|
|
@@ -8,12 +8,14 @@ export { generateClaudeMd } from './claude-md/index.js';
|
|
|
8
8
|
/** Generate vite-env.d.ts content based on selected features. */
|
|
9
9
|
export function generateViteEnvDts(featureIds) {
|
|
10
10
|
const sections = [];
|
|
11
|
+
// Module declaration for i18n .po files
|
|
11
12
|
if (featureIds.includes(FEATURE.I18N)) {
|
|
12
13
|
sections.push(`declare module '*.po' {
|
|
13
14
|
import type { Messages } from '@lingui/core';
|
|
14
15
|
export const messages: Messages;
|
|
15
16
|
}`);
|
|
16
17
|
}
|
|
18
|
+
// Custom app environment variables
|
|
17
19
|
const envVars = [' readonly VITE_APP_NAME: string;', ' readonly VITE_APP_URL: string;'];
|
|
18
20
|
if (featureIds.includes(FEATURE.API)) {
|
|
19
21
|
envVars.push(' readonly VITE_API_URL: string;');
|
|
@@ -22,6 +24,13 @@ export function generateViteEnvDts(featureIds) {
|
|
|
22
24
|
envVars.push(' readonly VITE_SENTRY_DSN: string;');
|
|
23
25
|
envVars.push(' readonly VITE_SENTRY_ENABLED: string;');
|
|
24
26
|
}
|
|
27
|
+
if (featureIds.includes(FEATURE.PERFORMANCE)) {
|
|
28
|
+
envVars.push(' readonly VITE_PERF_TEST: string;');
|
|
29
|
+
}
|
|
30
|
+
// Vite built-in env vars (always required for TypeScript)
|
|
31
|
+
envVars.push(" readonly MODE: 'development' | 'production' | 'test';");
|
|
32
|
+
envVars.push(' readonly DEV: boolean;');
|
|
33
|
+
envVars.push(' readonly PROD: boolean;');
|
|
25
34
|
sections.push(`/// <reference types="vite/client" />
|
|
26
35
|
|
|
27
36
|
interface ImportMetaEnv {
|
|
@@ -30,6 +39,7 @@ ${envVars.join('\n')}
|
|
|
30
39
|
|
|
31
40
|
interface ImportMeta {
|
|
32
41
|
readonly env: ImportMetaEnv;
|
|
42
|
+
readonly hot?: import('vite/types/hot.d.ts').ViteHotContext;
|
|
33
43
|
}`);
|
|
34
44
|
return sections.join('\n\n') + '\n';
|
|
35
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAErC;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,iEAAiE;AACjE,MAAM,UAAU,kBAAkB,CAAC,UAAuB;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC;;;EAGhB,CAAC,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAa,CAAC,mCAAmC,EAAE,kCAAkC,CAAC,CAAC;IAEpG,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACpD,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;;;EAGd,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC
|
|
1
|
+
{"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../src/utils/scaffold/generators.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Scaffold utilities - re-exports for convenient importing.
|
|
3
3
|
*/
|
|
4
4
|
export { resolveFeatureDependencies, mergeDependencies, mergeScripts } from './dependencies.js';
|
|
5
|
-
export type { MergeDependenciesResult } from './dependencies.js';
|
|
6
|
-
export { computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
|
|
5
|
+
export type { MergeDependenciesResult, ResolveFeatureDependenciesOptions } from './dependencies.js';
|
|
6
|
+
export { collectFeatureFiles, computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
|
|
7
|
+
export type { CollectFeatureFilesResult } from './file-structure.js';
|
|
7
8
|
export { getSetupCommands } from './commands.js';
|
|
8
9
|
export { generateClaudeMd, generateViteEnvDts, generateEnvTs, generateRoutesTs } from './generators.js';
|
|
9
10
|
export { computeScaffold } from './compute.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,YAAY,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChG,YAAY,EAAE,uBAAuB,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACvH,YAAY,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Scaffold utilities - re-exports for convenient importing.
|
|
3
3
|
*/
|
|
4
4
|
export { resolveFeatureDependencies, mergeDependencies, mergeScripts } from './dependencies.js';
|
|
5
|
-
export { computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
|
|
5
|
+
export { collectFeatureFiles, computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
|
|
6
6
|
export { getSetupCommands } from './commands.js';
|
|
7
7
|
export { generateClaudeMd, generateViteEnvDts, generateEnvTs, generateRoutesTs } from './generators.js';
|
|
8
8
|
export { computeScaffold } from './compute.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/scaffold/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/scaffold/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEvH,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxG,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -25,7 +25,8 @@ test.describe('Language Switcher', () => {
|
|
|
25
25
|
// Wait for dropdown to fully appear before clicking
|
|
26
26
|
const menuItem = page.getByRole('menuitem', { name: 'Español' });
|
|
27
27
|
await expect(menuItem).toBeVisible();
|
|
28
|
-
|
|
28
|
+
// Use force:true because language change triggers re-render during click
|
|
29
|
+
await menuItem.click({ force: true });
|
|
29
30
|
|
|
30
31
|
// Dropdown should close - other options not visible
|
|
31
32
|
await expect(page.getByRole('menuitem', { name: 'Deutsch' })).not.toBeVisible();
|
|
@@ -3,8 +3,7 @@ import { type ReactNode, useState } from 'react';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Create QueryClient with optimized defaults.
|
|
6
|
-
* Using a function ensures each provider instance gets its own client
|
|
7
|
-
* which is important for SSR and testing.
|
|
6
|
+
* Using a function ensures each provider instance gets its own client
|
|
8
7
|
*/
|
|
9
8
|
function createQueryClient() {
|
|
10
9
|
return new QueryClient({
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* get_example tool
|
|
3
|
-
*
|
|
4
|
-
* Returns real code examples for specific pattern types.
|
|
5
|
-
* AI agents use this to understand how to generate code
|
|
6
|
-
* that matches react-spa-scaffold conventions.
|
|
7
|
-
*/
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
import type { ToolDefinition } from './types.js';
|
|
10
|
-
/** Zod schema for get_example input - single source of truth. */
|
|
11
|
-
export declare const getExampleSchema: z.ZodObject<{
|
|
12
|
-
pattern: z.ZodEnum<{
|
|
13
|
-
[x: string]: string;
|
|
14
|
-
}>;
|
|
15
|
-
}, z.core.$strip>;
|
|
16
|
-
export type GetExampleInput = z.infer<typeof getExampleSchema>;
|
|
17
|
-
export declare function getExample(input: GetExampleInput): Promise<{
|
|
18
|
-
error: string;
|
|
19
|
-
hint: string;
|
|
20
|
-
pattern?: undefined;
|
|
21
|
-
description?: undefined;
|
|
22
|
-
filePath?: undefined;
|
|
23
|
-
keyPoints?: undefined;
|
|
24
|
-
code?: undefined;
|
|
25
|
-
usage?: undefined;
|
|
26
|
-
} | {
|
|
27
|
-
pattern: string;
|
|
28
|
-
description: string;
|
|
29
|
-
filePath: string;
|
|
30
|
-
keyPoints: string[];
|
|
31
|
-
code: string;
|
|
32
|
-
usage: string;
|
|
33
|
-
error?: undefined;
|
|
34
|
-
hint?: undefined;
|
|
35
|
-
}>;
|
|
36
|
-
/** Tool definition derived from Zod schema (Zod v4 native). */
|
|
37
|
-
export declare const getExampleToolDefinition: ToolDefinition;
|
|
38
|
-
//# sourceMappingURL=get-example.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-example.d.ts","sourceRoot":"","sources":["../../src/tools/get-example.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,iEAAiE;AACjE,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE/D,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe;;;;;;;;;;;;;;;;;;GAoBtD;AAwBD,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,EAAE,cA0BtC,CAAC"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* get_example tool
|
|
3
|
-
*
|
|
4
|
-
* Returns real code examples for specific pattern types.
|
|
5
|
-
* AI agents use this to understand how to generate code
|
|
6
|
-
* that matches react-spa-scaffold conventions.
|
|
7
|
-
*/
|
|
8
|
-
import { z } from 'zod';
|
|
9
|
-
import { getCodeExample, getAvailablePatterns } from '../utils/index.js';
|
|
10
|
-
const AVAILABLE_PATTERNS = getAvailablePatterns();
|
|
11
|
-
/** Zod schema for get_example input - single source of truth. */
|
|
12
|
-
export const getExampleSchema = z.object({
|
|
13
|
-
pattern: z.enum(AVAILABLE_PATTERNS, {
|
|
14
|
-
error: `Invalid pattern. Available: ${AVAILABLE_PATTERNS.join(', ')}`,
|
|
15
|
-
}),
|
|
16
|
-
});
|
|
17
|
-
export async function getExample(input) {
|
|
18
|
-
const { pattern } = input;
|
|
19
|
-
const example = await getCodeExample(pattern);
|
|
20
|
-
if (!example) {
|
|
21
|
-
return {
|
|
22
|
-
error: `Could not load example for pattern: ${pattern}`,
|
|
23
|
-
hint: 'Ensure MCP server is running from react-spa-scaffold directory',
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
return {
|
|
27
|
-
pattern: example.pattern,
|
|
28
|
-
description: example.description,
|
|
29
|
-
filePath: example.filePath,
|
|
30
|
-
keyPoints: example.keyPoints,
|
|
31
|
-
code: example.code,
|
|
32
|
-
usage: generateUsageHint(pattern),
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
function generateUsageHint(pattern) {
|
|
36
|
-
const hints = {
|
|
37
|
-
'component-ui': 'Place in src/components/ui/ with kebab-case filename',
|
|
38
|
-
'component-shared': 'Create subdirectory in src/components/shared/ with index.ts barrel',
|
|
39
|
-
'component-layout': 'Place in src/components/layout/',
|
|
40
|
-
'hook-state': 'Place in src/hooks/ with useXxx.ts naming',
|
|
41
|
-
'hook-query': 'Place in src/hooks/ - define fetchFn outside hook',
|
|
42
|
-
'hook-form': 'Place in src/hooks/ - import schema from lib/validations',
|
|
43
|
-
'hook-effect': 'Place in src/hooks/ - no return value',
|
|
44
|
-
'zustand-store': 'Place in src/stores/ with xxxStore.ts naming',
|
|
45
|
-
'page-component': 'Place in src/pages/ with XxxPage named export',
|
|
46
|
-
'context-provider': 'Place in src/contexts/ - export both Provider and hook',
|
|
47
|
-
'test-component': 'Co-locate with component: ComponentName.test.tsx next to ComponentName.tsx',
|
|
48
|
-
'test-hook': 'Co-locate with hook: useXxx.test.ts next to useXxx.ts',
|
|
49
|
-
'test-store': 'Co-locate with store: xxxStore.test.ts next to xxxStore.ts',
|
|
50
|
-
'msw-handler': 'Place in src/mocks/handlers/',
|
|
51
|
-
'zod-schema': 'Add to src/lib/validations.ts',
|
|
52
|
-
};
|
|
53
|
-
return hints[pattern] || 'Follow the file path shown in the example';
|
|
54
|
-
}
|
|
55
|
-
/** Tool definition derived from Zod schema (Zod v4 native). */
|
|
56
|
-
export const getExampleToolDefinition = {
|
|
57
|
-
name: 'get_example',
|
|
58
|
-
description: `Get real code example for a specific pattern type.
|
|
59
|
-
|
|
60
|
-
Returns actual code from the react-spa-scaffold repository, not templates.
|
|
61
|
-
Use this to understand exact patterns when generating new files.
|
|
62
|
-
|
|
63
|
-
Available patterns:
|
|
64
|
-
- Components: component-ui, component-shared, component-layout
|
|
65
|
-
- Hooks: hook-state, hook-query, hook-form, hook-effect, use-language-hook
|
|
66
|
-
- Store: zustand-store
|
|
67
|
-
- Pages: page-component, lazy-page
|
|
68
|
-
- Context: context-provider, query-provider
|
|
69
|
-
- API: api-client
|
|
70
|
-
- Tests: test-component, test-hook, test-store, msw-handler
|
|
71
|
-
- Validation: zod-schema, form-error-component
|
|
72
|
-
- i18n: trans-component, t-function, language-switcher
|
|
73
|
-
- Utils: storage-utility
|
|
74
|
-
- Theme: theme-toggle
|
|
75
|
-
- SEO: seo-component
|
|
76
|
-
|
|
77
|
-
Each example includes:
|
|
78
|
-
- Actual working code
|
|
79
|
-
- Key points explaining the pattern
|
|
80
|
-
- File path where it should be placed`,
|
|
81
|
-
inputSchema: z.toJSONSchema(getExampleSchema),
|
|
82
|
-
};
|
|
83
|
-
//# sourceMappingURL=get-example.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-example.js","sourceRoot":"","sources":["../../src/tools/get-example.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAGzE,MAAM,kBAAkB,GAAG,oBAAoB,EAA2B,CAAC;AAE3E,iEAAiE;AACjE,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE;QAClC,KAAK,EAAE,+BAA+B,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;KACtE,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,KAAK,EAAE,uCAAuC,OAAO,EAAE;YACvD,IAAI,EAAE,gEAAgE;SACvE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,MAAM,KAAK,GAA2B;QACpC,cAAc,EAAE,sDAAsD;QACtE,kBAAkB,EAAE,oEAAoE;QACxF,kBAAkB,EAAE,iCAAiC;QACrD,YAAY,EAAE,2CAA2C;QACzD,YAAY,EAAE,mDAAmD;QACjE,WAAW,EAAE,0DAA0D;QACvE,aAAa,EAAE,uCAAuC;QACtD,eAAe,EAAE,8CAA8C;QAC/D,gBAAgB,EAAE,+CAA+C;QACjE,kBAAkB,EAAE,wDAAwD;QAC5E,gBAAgB,EAAE,4EAA4E;QAC9F,WAAW,EAAE,uDAAuD;QACpE,YAAY,EAAE,4DAA4D;QAC1E,aAAa,EAAE,8BAA8B;QAC7C,YAAY,EAAE,+BAA+B;KAC9C,CAAC;IAEF,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,2CAA2C,CAAC;AACvE,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GAAmB;IACtD,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;sCAsBuB;IACpC,WAAW,EAAE,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAkC;CAC/E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-example.test.d.ts","sourceRoot":"","sources":["../../src/tools/get-example.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for get_example tool
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect } from 'vitest';
|
|
5
|
-
import { getExample, getExampleSchema } from './get-example.js';
|
|
6
|
-
describe('get_example tool', () => {
|
|
7
|
-
it('rejects unknown pattern via schema', () => {
|
|
8
|
-
const result = getExampleSchema.safeParse({ pattern: 'unknown-pattern' });
|
|
9
|
-
expect(result.success).toBe(false);
|
|
10
|
-
if (!result.success) {
|
|
11
|
-
expect(result.error.message).toContain('Invalid pattern');
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
it('returns code for valid pattern', async () => {
|
|
15
|
-
const result = await getExample({ pattern: 'zustand-store' });
|
|
16
|
-
expect(result).not.toHaveProperty('error');
|
|
17
|
-
expect(result).toHaveProperty('code');
|
|
18
|
-
expect(result).toHaveProperty('filePath');
|
|
19
|
-
expect(result).toHaveProperty('description');
|
|
20
|
-
expect(result).toHaveProperty('keyPoints');
|
|
21
|
-
});
|
|
22
|
-
it('returns usage hint', async () => {
|
|
23
|
-
const result = await getExample({ pattern: 'zustand-store' });
|
|
24
|
-
expect(result).toHaveProperty('usage');
|
|
25
|
-
expect(typeof result.usage).toBe('string');
|
|
26
|
-
});
|
|
27
|
-
it('returns actual code content', async () => {
|
|
28
|
-
const result = await getExample({ pattern: 'hook-state' });
|
|
29
|
-
expect(result.code).toBeTruthy();
|
|
30
|
-
expect(result.code?.length).toBeGreaterThan(50);
|
|
31
|
-
});
|
|
32
|
-
it('works for component patterns', async () => {
|
|
33
|
-
const result = await getExample({ pattern: 'component-ui' });
|
|
34
|
-
expect(result).not.toHaveProperty('error');
|
|
35
|
-
expect(result.code).toContain('export');
|
|
36
|
-
});
|
|
37
|
-
it('works for test patterns', async () => {
|
|
38
|
-
const result = await getExample({ pattern: 'test-component' });
|
|
39
|
-
expect(result).not.toHaveProperty('error');
|
|
40
|
-
expect(result.code).toContain('describe');
|
|
41
|
-
});
|
|
42
|
-
it('works for mobile-context pattern', async () => {
|
|
43
|
-
const result = await getExample({ pattern: 'mobile-context' });
|
|
44
|
-
expect(result).not.toHaveProperty('error');
|
|
45
|
-
expect(result.code).toContain('MobileProvider');
|
|
46
|
-
expect(result.code).toContain('useMobileContext');
|
|
47
|
-
expect(result.filePath).toBe('src/contexts/mobileContext.tsx');
|
|
48
|
-
});
|
|
49
|
-
it('works for use-media-query pattern', async () => {
|
|
50
|
-
const result = await getExample({ pattern: 'use-media-query' });
|
|
51
|
-
expect(result).not.toHaveProperty('error');
|
|
52
|
-
expect(result.code).toContain('BREAKPOINTS');
|
|
53
|
-
expect(result.code).toContain('useMediaQuery');
|
|
54
|
-
expect(result.filePath).toBe('src/hooks/useMediaQuery.ts');
|
|
55
|
-
});
|
|
56
|
-
it('works for use-touch-sizes pattern', async () => {
|
|
57
|
-
const result = await getExample({ pattern: 'use-touch-sizes' });
|
|
58
|
-
expect(result).not.toHaveProperty('error');
|
|
59
|
-
expect(result.code).toContain('useTouchSizes');
|
|
60
|
-
expect(result.filePath).toBe('src/hooks/useTouchSizes.ts');
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
//# sourceMappingURL=get-example.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-example.test.js","sourceRoot":"","sources":["../../src/tools/get-example.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/api-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,WAAW,EAAE,UAiBzB,CAAC"}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export const apiPatterns = {
|
|
2
|
-
'api-client': {
|
|
3
|
-
file: 'src/lib/api.ts',
|
|
4
|
-
description: 'Typed API client with error handling',
|
|
5
|
-
keyPoints: [
|
|
6
|
-
'Custom ApiClientError class',
|
|
7
|
-
'Generic request function',
|
|
8
|
-
'AbortController for timeout',
|
|
9
|
-
'Error parsing from response JSON',
|
|
10
|
-
'Methods object (get, post, put, patch, delete)',
|
|
11
|
-
],
|
|
12
|
-
},
|
|
13
|
-
'use-query-hook': {
|
|
14
|
-
file: 'src/hooks/useExampleQuery.ts',
|
|
15
|
-
description: 'TanStack Query data fetching hook',
|
|
16
|
-
keyPoints: ['useQuery with typed response', 'queryKey for cache management', 'Separate fetch function'],
|
|
17
|
-
},
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=api-patterns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/api-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAe;IACrC,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,sCAAsC;QACnD,SAAS,EAAE;YACT,6BAA6B;YAC7B,0BAA0B;YAC1B,6BAA6B;YAC7B,kCAAkC;YAClC,gDAAgD;SACjD;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,mCAAmC;QAChD,SAAS,EAAE,CAAC,8BAA8B,EAAE,+BAA+B,EAAE,yBAAyB,CAAC;KACxG;CACF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"component-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/component-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,iBAAiB,EAAE,UAqE/B,CAAC"}
|