@react-spa-scaffold/mcp 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/README.md +36 -123
  2. package/dist/constants.d.ts +35 -0
  3. package/dist/constants.d.ts.map +1 -0
  4. package/dist/constants.js +35 -0
  5. package/dist/constants.js.map +1 -0
  6. package/dist/features/definitions/api.d.ts.map +1 -1
  7. package/dist/features/definitions/api.js +0 -1
  8. package/dist/features/definitions/api.js.map +1 -1
  9. package/dist/features/definitions/ci.d.ts.map +1 -1
  10. package/dist/features/definitions/ci.js +0 -1
  11. package/dist/features/definitions/ci.js.map +1 -1
  12. package/dist/features/definitions/core.d.ts.map +1 -1
  13. package/dist/features/definitions/core.js +0 -1
  14. package/dist/features/definitions/core.js.map +1 -1
  15. package/dist/features/definitions/devtools.d.ts.map +1 -1
  16. package/dist/features/definitions/devtools.js +0 -1
  17. package/dist/features/definitions/devtools.js.map +1 -1
  18. package/dist/features/definitions/forms.d.ts.map +1 -1
  19. package/dist/features/definitions/forms.js +0 -1
  20. package/dist/features/definitions/forms.js.map +1 -1
  21. package/dist/features/definitions/i18n.d.ts.map +1 -1
  22. package/dist/features/definitions/i18n.js +0 -1
  23. package/dist/features/definitions/i18n.js.map +1 -1
  24. package/dist/features/definitions/mobile.d.ts.map +1 -1
  25. package/dist/features/definitions/mobile.js +0 -1
  26. package/dist/features/definitions/mobile.js.map +1 -1
  27. package/dist/features/definitions/observability.d.ts.map +1 -1
  28. package/dist/features/definitions/observability.js +0 -1
  29. package/dist/features/definitions/observability.js.map +1 -1
  30. package/dist/features/definitions/performance.d.ts.map +1 -1
  31. package/dist/features/definitions/performance.js +0 -1
  32. package/dist/features/definitions/performance.js.map +1 -1
  33. package/dist/features/definitions/routing.d.ts.map +1 -1
  34. package/dist/features/definitions/routing.js +0 -1
  35. package/dist/features/definitions/routing.js.map +1 -1
  36. package/dist/features/definitions/state.d.ts.map +1 -1
  37. package/dist/features/definitions/state.js +0 -1
  38. package/dist/features/definitions/state.js.map +1 -1
  39. package/dist/features/definitions/testing.d.ts.map +1 -1
  40. package/dist/features/definitions/testing.js +0 -3
  41. package/dist/features/definitions/testing.js.map +1 -1
  42. package/dist/features/definitions/theming.js +2 -2
  43. package/dist/features/definitions/theming.js.map +1 -1
  44. package/dist/features/definitions/ui.d.ts.map +1 -1
  45. package/dist/features/definitions/ui.js +0 -1
  46. package/dist/features/definitions/ui.js.map +1 -1
  47. package/dist/features/types.d.ts +14 -20
  48. package/dist/features/types.d.ts.map +1 -1
  49. package/dist/features/types.js +4 -21
  50. package/dist/features/types.js.map +1 -1
  51. package/dist/features/types.test.d.ts +5 -0
  52. package/dist/features/types.test.d.ts.map +1 -0
  53. package/dist/features/types.test.js +32 -0
  54. package/dist/features/types.test.js.map +1 -0
  55. package/dist/resources/docs.d.ts +2 -8
  56. package/dist/resources/docs.d.ts.map +1 -1
  57. package/dist/resources/docs.js +27 -49
  58. package/dist/resources/docs.js.map +1 -1
  59. package/dist/server.d.ts.map +1 -1
  60. package/dist/server.js +9 -8
  61. package/dist/server.js.map +1 -1
  62. package/dist/tools/get-features.d.ts +15 -9
  63. package/dist/tools/get-features.d.ts.map +1 -1
  64. package/dist/tools/get-features.js +12 -0
  65. package/dist/tools/get-features.js.map +1 -1
  66. package/dist/tools/get-file.d.ts +23 -0
  67. package/dist/tools/get-file.d.ts.map +1 -0
  68. package/dist/tools/get-file.js +57 -0
  69. package/dist/tools/get-file.js.map +1 -0
  70. package/dist/tools/get-file.test.d.ts +5 -0
  71. package/dist/tools/get-file.test.d.ts.map +1 -0
  72. package/dist/tools/get-file.test.js +63 -0
  73. package/dist/tools/get-file.test.js.map +1 -0
  74. package/dist/tools/get-scaffold.d.ts +11 -33
  75. package/dist/tools/get-scaffold.d.ts.map +1 -1
  76. package/dist/tools/get-scaffold.js +31 -44
  77. package/dist/tools/get-scaffold.js.map +1 -1
  78. package/dist/tools/get-scaffold.test.js +29 -22
  79. package/dist/tools/get-scaffold.test.js.map +1 -1
  80. package/dist/tools/index.d.ts +2 -2
  81. package/dist/tools/index.d.ts.map +1 -1
  82. package/dist/tools/index.js +1 -1
  83. package/dist/tools/index.js.map +1 -1
  84. package/dist/tools/registry.d.ts +4 -0
  85. package/dist/tools/registry.d.ts.map +1 -1
  86. package/dist/tools/registry.js +26 -16
  87. package/dist/tools/registry.js.map +1 -1
  88. package/dist/tools/types.d.ts +24 -6
  89. package/dist/tools/types.d.ts.map +1 -1
  90. package/dist/tools/types.js +3 -0
  91. package/dist/tools/types.js.map +1 -1
  92. package/dist/utils/cache.d.ts +9 -5
  93. package/dist/utils/cache.d.ts.map +1 -1
  94. package/dist/utils/cache.js +21 -5
  95. package/dist/utils/cache.js.map +1 -1
  96. package/dist/utils/docs.d.ts +1 -3
  97. package/dist/utils/docs.d.ts.map +1 -1
  98. package/dist/utils/docs.js +3 -8
  99. package/dist/utils/docs.js.map +1 -1
  100. package/dist/utils/index.d.ts +0 -1
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/index.js +0 -1
  103. package/dist/utils/index.js.map +1 -1
  104. package/dist/utils/paths.d.ts +9 -0
  105. package/dist/utils/paths.d.ts.map +1 -1
  106. package/dist/utils/paths.js +19 -1
  107. package/dist/utils/paths.js.map +1 -1
  108. package/dist/utils/paths.test.js +22 -1
  109. package/dist/utils/paths.test.js.map +1 -1
  110. package/dist/utils/scaffold/claude-md/index.d.ts +7 -0
  111. package/dist/utils/scaffold/claude-md/index.d.ts.map +1 -0
  112. package/dist/utils/scaffold/claude-md/index.js +23 -0
  113. package/dist/utils/scaffold/claude-md/index.js.map +1 -0
  114. package/dist/utils/scaffold/claude-md/sections.d.ts +16 -0
  115. package/dist/utils/scaffold/claude-md/sections.d.ts.map +1 -0
  116. package/dist/utils/scaffold/claude-md/sections.js +269 -0
  117. package/dist/utils/scaffold/claude-md/sections.js.map +1 -0
  118. package/dist/utils/scaffold/commands.d.ts +2 -6
  119. package/dist/utils/scaffold/commands.d.ts.map +1 -1
  120. package/dist/utils/scaffold/commands.js +9 -12
  121. package/dist/utils/scaffold/commands.js.map +1 -1
  122. package/dist/utils/scaffold/compute.d.ts +5 -8
  123. package/dist/utils/scaffold/compute.d.ts.map +1 -1
  124. package/dist/utils/scaffold/compute.js +26 -41
  125. package/dist/utils/scaffold/compute.js.map +1 -1
  126. package/dist/utils/scaffold/dependencies.d.ts +10 -17
  127. package/dist/utils/scaffold/dependencies.d.ts.map +1 -1
  128. package/dist/utils/scaffold/dependencies.js +28 -34
  129. package/dist/utils/scaffold/dependencies.js.map +1 -1
  130. package/dist/utils/scaffold/generators.d.ts +3 -11
  131. package/dist/utils/scaffold/generators.d.ts.map +1 -1
  132. package/dist/utils/scaffold/generators.js +20 -288
  133. package/dist/utils/scaffold/generators.js.map +1 -1
  134. package/dist/utils/scaffold/index.d.ts +2 -3
  135. package/dist/utils/scaffold/index.d.ts.map +1 -1
  136. package/dist/utils/scaffold/index.js +1 -3
  137. package/dist/utils/scaffold/index.js.map +1 -1
  138. package/package.json +2 -2
  139. package/dist/tools/get-example.d.ts +0 -49
  140. package/dist/tools/get-example.d.ts.map +0 -1
  141. package/dist/tools/get-example.js +0 -91
  142. package/dist/tools/get-example.js.map +0 -1
  143. package/dist/tools/get-example.test.d.ts +0 -5
  144. package/dist/tools/get-example.test.d.ts.map +0 -1
  145. package/dist/tools/get-example.test.js +0 -63
  146. package/dist/tools/get-example.test.js.map +0 -1
  147. package/dist/utils/examples/api-patterns.d.ts +0 -3
  148. package/dist/utils/examples/api-patterns.d.ts.map +0 -1
  149. package/dist/utils/examples/api-patterns.js +0 -19
  150. package/dist/utils/examples/api-patterns.js.map +0 -1
  151. package/dist/utils/examples/component-patterns.d.ts +0 -3
  152. package/dist/utils/examples/component-patterns.d.ts.map +0 -1
  153. package/dist/utils/examples/component-patterns.js +0 -71
  154. package/dist/utils/examples/component-patterns.js.map +0 -1
  155. package/dist/utils/examples/context-patterns.d.ts +0 -3
  156. package/dist/utils/examples/context-patterns.d.ts.map +0 -1
  157. package/dist/utils/examples/context-patterns.js +0 -32
  158. package/dist/utils/examples/context-patterns.js.map +0 -1
  159. package/dist/utils/examples/hook-patterns.d.ts +0 -3
  160. package/dist/utils/examples/hook-patterns.d.ts.map +0 -1
  161. package/dist/utils/examples/hook-patterns.js +0 -55
  162. package/dist/utils/examples/hook-patterns.js.map +0 -1
  163. package/dist/utils/examples/i18n-patterns.d.ts +0 -3
  164. package/dist/utils/examples/i18n-patterns.d.ts.map +0 -1
  165. package/dist/utils/examples/i18n-patterns.js +0 -43
  166. package/dist/utils/examples/i18n-patterns.js.map +0 -1
  167. package/dist/utils/examples/index.d.ts +0 -12
  168. package/dist/utils/examples/index.d.ts.map +0 -1
  169. package/dist/utils/examples/index.js +0 -69
  170. package/dist/utils/examples/index.js.map +0 -1
  171. package/dist/utils/examples/mobile-patterns.d.ts +0 -3
  172. package/dist/utils/examples/mobile-patterns.d.ts.map +0 -1
  173. package/dist/utils/examples/mobile-patterns.js +0 -38
  174. package/dist/utils/examples/mobile-patterns.js.map +0 -1
  175. package/dist/utils/examples/page-patterns.d.ts +0 -3
  176. package/dist/utils/examples/page-patterns.d.ts.map +0 -1
  177. package/dist/utils/examples/page-patterns.js +0 -34
  178. package/dist/utils/examples/page-patterns.js.map +0 -1
  179. package/dist/utils/examples/store-patterns.d.ts +0 -3
  180. package/dist/utils/examples/store-patterns.d.ts.map +0 -1
  181. package/dist/utils/examples/store-patterns.js +0 -40
  182. package/dist/utils/examples/store-patterns.js.map +0 -1
  183. package/dist/utils/examples/test-patterns.d.ts +0 -3
  184. package/dist/utils/examples/test-patterns.d.ts.map +0 -1
  185. package/dist/utils/examples/test-patterns.js +0 -58
  186. package/dist/utils/examples/test-patterns.js.map +0 -1
  187. package/dist/utils/examples/types.d.ts +0 -17
  188. package/dist/utils/examples/types.d.ts.map +0 -1
  189. package/dist/utils/examples/types.js +0 -2
  190. package/dist/utils/examples/types.js.map +0 -1
  191. package/dist/utils/examples/utility-patterns.d.ts +0 -3
  192. package/dist/utils/examples/utility-patterns.d.ts.map +0 -1
  193. package/dist/utils/examples/utility-patterns.js +0 -77
  194. package/dist/utils/examples/utility-patterns.js.map +0 -1
@@ -1 +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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../../src/utils/scaffold/commands.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAGrD,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,MAAM,QAAQ,GAAa,CAAC,aAAa,CAAC,CAAC;IAE3C,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,QAAQ,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,18 +1,15 @@
1
1
  /**
2
- * Scaffold computation orchestrator
2
+ * Scaffold computation orchestrator - coordinates all components.
3
3
  *
4
- * Coordinates all scaffold components to produce the final scaffold result.
4
+ * Returns paths only for configFiles and docs (lazy loading).
5
+ * Use get_file tool to fetch actual content.
5
6
  */
6
7
  import type { ScaffoldResult } from '../../features/types.js';
7
8
  /**
8
9
  * Computes complete scaffold for selected features.
9
10
  *
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, ... }
11
+ * Returns paths only for configFiles and docs (lazy loading).
12
+ * Use get_file tool to fetch actual content when needed.
16
13
  */
17
14
  export declare function computeScaffold(selectedFeatures: string[], projectName?: string): Promise<ScaffoldResult>;
18
15
  //# sourceMappingURL=compute.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"compute.d.ts","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAe9D;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,gBAAgB,EAAE,MAAM,EAAE,EAC1B,WAAW,GAAE,MAAiB,GAC7B,OAAO,CAAC,cAAc,CAAC,CA2CzB"}
@@ -1,13 +1,15 @@
1
1
  /**
2
- * Scaffold computation orchestrator
2
+ * Scaffold computation orchestrator - coordinates all components.
3
3
  *
4
- * Coordinates all scaffold components to produce the final scaffold result.
4
+ * Returns paths only for configFiles and docs (lazy loading).
5
+ * Use get_file tool to fetch actual content.
5
6
  */
6
7
  import { readFile } from 'fs/promises';
7
- import { computeDocsContent, computeDocsForFeatures } from '../docs.js';
8
+ import { FEATURE } from '../../constants.js';
9
+ import { computeDocsForFeatures } from '../docs.js';
8
10
  import { resolveTemplatePath } from '../paths.js';
9
11
  import { resolveFeatureDependencies, mergeDependencies, mergeScripts } from './dependencies.js';
10
- import { computeFileStructure, getConfigFiles, readConfigFileContent } from './file-structure.js';
12
+ import { computeFileStructure, getConfigFiles } from './file-structure.js';
11
13
  import { getSetupCommands } from './commands.js';
12
14
  import { generateClaudeMd, generateViteEnvDts, generateEnvTs, generateRoutesTs } from './generators.js';
13
15
  async function readSourcePackageJson() {
@@ -18,53 +20,36 @@ async function readSourcePackageJson() {
18
20
  /**
19
21
  * Computes complete scaffold for selected features.
20
22
  *
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, ... }
23
+ * Returns paths only for configFiles and docs (lazy loading).
24
+ * Use get_file tool to fetch actual content when needed.
27
25
  */
28
26
  export async function computeScaffold(selectedFeatures, projectName = 'my-app') {
29
- // Resolve all dependencies
27
+ // Resolve all dependencies (sync)
30
28
  const resolvedFeatures = resolveFeatureDependencies(selectedFeatures);
31
- // Read engines from source package.json
32
- const sourcePackageJson = await readSourcePackageJson();
29
+ // Parallel async operations: package.json and dependencies
30
+ const [sourcePackageJson, depsResult] = await Promise.all([
31
+ readSourcePackageJson(),
32
+ mergeDependencies(resolvedFeatures),
33
+ ]);
33
34
  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);
35
+ const { dependencies, devDependencies, warnings } = depsResult;
36
+ if (warnings.length > 0) {
37
+ console.error('[MCP] Dependency warnings:', warnings.join('; '));
47
38
  }
48
- // Get setup commands
39
+ // Sync operations
40
+ const scripts = mergeScripts(resolvedFeatures);
41
+ const docs = computeDocsForFeatures(resolvedFeatures);
42
+ const structure = computeFileStructure(resolvedFeatures); // Source files only (no CLAUDE.md, no docs)
49
43
  const setupCommands = getSetupCommands(resolvedFeatures);
50
- // Generate CLAUDE.md content
44
+ // Config files: paths only (lazy loading)
45
+ const configFiles = getConfigFiles(resolvedFeatures);
46
+ // Generate content (sync)
51
47
  const claudeMd = generateClaudeMd(resolvedFeatures, projectName, scripts);
52
- // Generate vite-env.d.ts content
53
48
  const viteEnvDts = generateViteEnvDts(resolvedFeatures);
54
- // Generate env.ts content
55
49
  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);
50
+ const routesTs = resolvedFeatures.includes(FEATURE.ROUTING) ? generateRoutesTs() : undefined;
60
51
  return {
61
- packageJson: {
62
- name: projectName,
63
- dependencies,
64
- devDependencies,
65
- scripts,
66
- engines,
67
- },
52
+ packageJson: { name: projectName, dependencies, devDependencies, scripts, engines },
68
53
  structure,
69
54
  configFiles,
70
55
  setupCommands,
@@ -1 +1 @@
1
- {"version":3,"file":"compute.js","sourceRoot":"","sources":["../../../src/utils/scaffold/compute.ts"],"names":[],"mappings":"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"}
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"}
@@ -1,30 +1,23 @@
1
1
  /**
2
- * Dependency resolution utilities
3
- *
4
- * Handles merging dependencies from features and resolving versions
5
- * from the source package.json at runtime.
2
+ * Dependency resolution - merges features and resolves versions from package.json.
6
3
  */
7
4
  import type { FeatureId } from '../../features/types.js';
8
5
  /**
9
6
  * 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
7
+ * Core is always included. Dependencies declared via `requires` field are resolved recursively.
16
8
  */
17
9
  export declare function resolveFeatureDependencies(selectedFeatures: string[]): FeatureId[];
10
+ /** Result of merging dependencies with any warnings. */
11
+ export interface MergeDependenciesResult {
12
+ dependencies: Record<string, string>;
13
+ devDependencies: Record<string, string>;
14
+ warnings: string[];
15
+ }
18
16
  /**
19
17
  * 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.
18
+ * Returns structured warnings instead of logging to console.
23
19
  */
24
- export declare function mergeDependencies(featureIds: FeatureId[]): Promise<{
25
- dependencies: Record<string, string>;
26
- devDependencies: Record<string, string>;
27
- }>;
20
+ export declare function mergeDependencies(featureIds: FeatureId[]): Promise<MergeDependenciesResult>;
28
21
  /**
29
22
  * Merge scripts from multiple features
30
23
  */
@@ -1 +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"}
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;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CA2BlF;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"}
@@ -1,75 +1,69 @@
1
1
  /**
2
- * Dependency resolution utilities
3
- *
4
- * Handles merging dependencies from features and resolving versions
5
- * from the source package.json at runtime.
2
+ * Dependency resolution - merges features and resolves versions from package.json.
6
3
  */
7
4
  import { readFile } from 'fs/promises';
8
5
  import { FEATURES, isFeatureId } from '../../features/index.js';
6
+ import { createSingletonCache } from '../cache.js';
9
7
  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
- */
8
+ const sourceDepsCache = createSingletonCache();
9
+ /** Read and cache the source package.json dependencies. */
15
10
  async function getSourceDependencies() {
16
- if (!cachedSourcePackageJson) {
11
+ return sourceDepsCache.getOrSet(async () => {
17
12
  const path = resolveTemplatePath('package.json');
18
13
  const content = await readFile(path, 'utf-8');
19
14
  const pkg = JSON.parse(content);
20
- cachedSourcePackageJson = {
15
+ return {
21
16
  dependencies: (pkg.dependencies || {}),
22
17
  devDependencies: (pkg.devDependencies || {}),
23
18
  };
24
- }
25
- return cachedSourcePackageJson;
19
+ });
26
20
  }
27
21
  /**
28
22
  * 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
23
+ * Core is always included. Dependencies declared via `requires` field are resolved recursively.
35
24
  */
36
25
  export function resolveFeatureDependencies(selectedFeatures) {
37
26
  const resolved = new Set();
38
- // Always include core
27
+ function addWithDeps(featureId) {
28
+ if (resolved.has(featureId))
29
+ return;
30
+ resolved.add(featureId);
31
+ // Recursively add dependencies declared in `requires`
32
+ const feature = FEATURES[featureId];
33
+ if (feature.requires) {
34
+ for (const dep of feature.requires) {
35
+ addWithDeps(dep);
36
+ }
37
+ }
38
+ }
39
+ // Always include core first
39
40
  resolved.add('core');
40
- // Add all selected features (no recursive dependency resolution)
41
+ // Add selected features with their dependencies
41
42
  for (const featureId of selectedFeatures) {
42
43
  if (isFeatureId(featureId)) {
43
- resolved.add(featureId);
44
+ addWithDeps(featureId);
44
45
  }
45
46
  }
46
- // Theming requires state feature for Zustand persistence
47
- if (resolved.has('theming') && !resolved.has('state')) {
48
- resolved.add('state');
49
- }
50
47
  return Array.from(resolved);
51
48
  }
52
49
  /**
53
50
  * 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.
51
+ * Returns structured warnings instead of logging to console.
57
52
  */
58
53
  export async function mergeDependencies(featureIds) {
59
54
  const dependencies = {};
60
55
  const devDependencies = {};
61
- // Get source package.json for version lookup
56
+ const warnings = [];
62
57
  const sourcePkg = await getSourceDependencies();
63
58
  for (const featureId of featureIds) {
64
59
  const feature = FEATURES[featureId];
65
- // Look up dependency versions from source package.json
66
60
  if (feature.dependencyNames) {
67
61
  for (const name of feature.dependencyNames) {
68
62
  if (sourcePkg.dependencies[name]) {
69
63
  dependencies[name] = sourcePkg.dependencies[name];
70
64
  }
71
65
  else {
72
- console.warn(`Dependency "${name}" not found in source package.json`);
66
+ warnings.push(`Dependency "${name}" not found in source package.json (feature: ${featureId})`);
73
67
  }
74
68
  }
75
69
  }
@@ -79,16 +73,16 @@ export async function mergeDependencies(featureIds) {
79
73
  devDependencies[name] = sourcePkg.devDependencies[name];
80
74
  }
81
75
  else {
82
- console.warn(`DevDependency "${name}" not found in source package.json`);
76
+ warnings.push(`DevDependency "${name}" not found in source package.json (feature: ${featureId})`);
83
77
  }
84
78
  }
85
79
  }
86
80
  }
87
- // Sort alphabetically
88
81
  const sortObject = (obj) => Object.fromEntries(Object.entries(obj).sort(([a], [b]) => a.localeCompare(b)));
89
82
  return {
90
83
  dependencies: sortObject(dependencies),
91
84
  devDependencies: sortObject(devDependencies),
85
+ warnings,
92
86
  };
93
87
  }
94
88
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/utils/scaffold/dependencies.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,8 @@
1
- /**
2
- * Content generators for CLAUDE.md, env.ts, routes.ts, etc.
3
- */
4
1
  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
- */
2
+ export { generateClaudeMd } from './claude-md/index.js';
3
+ /** Generate vite-env.d.ts content based on selected features. */
10
4
  export declare function generateViteEnvDts(featureIds: FeatureId[]): string;
11
- /**
12
- * Generate env.ts content based on selected features
13
- */
5
+ /** Generate env.ts content based on selected features. */
14
6
  export declare function generateEnvTs(featureIds: FeatureId[]): string;
15
7
  /** Generates routes.ts content. */
16
8
  export declare function generateRoutesTs(): string;
@@ -1 +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"}
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,CAgClE;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,MAAM,CAwE7D;AAED,mCAAmC;AACnC,wBAAgB,gBAAgB,IAAI,MAAM,CAazC"}