@react-spa-scaffold/mcp 1.1.3 → 1.2.1

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 (261) hide show
  1. package/README.md +19 -15
  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 +3 -0
  7. package/dist/features/definitions/api.d.ts.map +1 -0
  8. package/dist/features/definitions/api.js +20 -0
  9. package/dist/features/definitions/api.js.map +1 -0
  10. package/dist/features/definitions/ci.d.ts +3 -0
  11. package/dist/features/definitions/ci.d.ts.map +1 -0
  12. package/dist/features/definitions/ci.js +25 -0
  13. package/dist/features/definitions/ci.js.map +1 -0
  14. package/dist/features/definitions/core.d.ts +3 -0
  15. package/dist/features/definitions/core.d.ts.map +1 -0
  16. package/dist/features/definitions/core.js +76 -0
  17. package/dist/features/definitions/core.js.map +1 -0
  18. package/dist/features/definitions/devtools.d.ts +3 -0
  19. package/dist/features/definitions/devtools.d.ts.map +1 -0
  20. package/dist/features/definitions/devtools.js +53 -0
  21. package/dist/features/definitions/devtools.js.map +1 -0
  22. package/dist/features/definitions/forms.d.ts +3 -0
  23. package/dist/features/definitions/forms.d.ts.map +1 -0
  24. package/dist/features/definitions/forms.js +32 -0
  25. package/dist/features/definitions/forms.js.map +1 -0
  26. package/dist/features/definitions/i18n.d.ts +3 -0
  27. package/dist/features/definitions/i18n.d.ts.map +1 -0
  28. package/dist/features/definitions/i18n.js +50 -0
  29. package/dist/features/definitions/i18n.js.map +1 -0
  30. package/dist/features/definitions/index.d.ts +15 -0
  31. package/dist/features/definitions/index.d.ts.map +1 -0
  32. package/dist/features/definitions/index.js +15 -0
  33. package/dist/features/definitions/index.js.map +1 -0
  34. package/dist/features/definitions/mobile.d.ts +3 -0
  35. package/dist/features/definitions/mobile.d.ts.map +1 -0
  36. package/dist/features/definitions/mobile.js +19 -0
  37. package/dist/features/definitions/mobile.js.map +1 -0
  38. package/dist/features/definitions/observability.d.ts +3 -0
  39. package/dist/features/definitions/observability.d.ts.map +1 -0
  40. package/dist/features/definitions/observability.js +21 -0
  41. package/dist/features/definitions/observability.js.map +1 -0
  42. package/dist/features/definitions/performance.d.ts +3 -0
  43. package/dist/features/definitions/performance.d.ts.map +1 -0
  44. package/dist/features/definitions/performance.js +28 -0
  45. package/dist/features/definitions/performance.js.map +1 -0
  46. package/dist/features/definitions/routing.d.ts +3 -0
  47. package/dist/features/definitions/routing.d.ts.map +1 -0
  48. package/dist/features/definitions/routing.js +25 -0
  49. package/dist/features/definitions/routing.js.map +1 -0
  50. package/dist/features/definitions/state.d.ts +3 -0
  51. package/dist/features/definitions/state.d.ts.map +1 -0
  52. package/dist/features/definitions/state.js +27 -0
  53. package/dist/features/definitions/state.js.map +1 -0
  54. package/dist/features/definitions/testing.d.ts +3 -0
  55. package/dist/features/definitions/testing.d.ts.map +1 -0
  56. package/dist/features/definitions/testing.js +56 -0
  57. package/dist/features/definitions/testing.js.map +1 -0
  58. package/dist/features/definitions/theming.d.ts +3 -0
  59. package/dist/features/definitions/theming.d.ts.map +1 -0
  60. package/dist/features/definitions/theming.js +27 -0
  61. package/dist/features/definitions/theming.js.map +1 -0
  62. package/dist/features/definitions/ui.d.ts +3 -0
  63. package/dist/features/definitions/ui.d.ts.map +1 -0
  64. package/dist/features/definitions/ui.js +44 -0
  65. package/dist/features/definitions/ui.js.map +1 -0
  66. package/dist/features/index.d.ts +3 -2
  67. package/dist/features/index.d.ts.map +1 -1
  68. package/dist/features/index.js +2 -1
  69. package/dist/features/index.js.map +1 -1
  70. package/dist/features/registry.d.ts +3 -9
  71. package/dist/features/registry.d.ts.map +1 -1
  72. package/dist/features/registry.js +3 -554
  73. package/dist/features/registry.js.map +1 -1
  74. package/dist/features/types.d.ts +17 -20
  75. package/dist/features/types.d.ts.map +1 -1
  76. package/dist/features/types.js +7 -1
  77. package/dist/features/types.js.map +1 -1
  78. package/dist/features/types.test.d.ts +5 -0
  79. package/dist/features/types.test.d.ts.map +1 -0
  80. package/dist/features/types.test.js +32 -0
  81. package/dist/features/types.test.js.map +1 -0
  82. package/dist/resources/docs.d.ts +2 -8
  83. package/dist/resources/docs.d.ts.map +1 -1
  84. package/dist/resources/docs.js +27 -49
  85. package/dist/resources/docs.js.map +1 -1
  86. package/dist/server.d.ts +2 -7
  87. package/dist/server.d.ts.map +1 -1
  88. package/dist/server.js +24 -57
  89. package/dist/server.js.map +1 -1
  90. package/dist/server.test.d.ts +2 -0
  91. package/dist/server.test.d.ts.map +1 -0
  92. package/dist/server.test.js +14 -0
  93. package/dist/server.test.js.map +1 -0
  94. package/dist/tools/get-example.d.ts +4 -15
  95. package/dist/tools/get-example.d.ts.map +1 -1
  96. package/dist/tools/get-example.js +3 -11
  97. package/dist/tools/get-example.js.map +1 -1
  98. package/dist/tools/get-example.test.d.ts +5 -0
  99. package/dist/tools/get-example.test.d.ts.map +1 -0
  100. package/dist/tools/get-example.test.js +63 -0
  101. package/dist/tools/get-example.test.js.map +1 -0
  102. package/dist/tools/get-features.d.ts +15 -14
  103. package/dist/tools/get-features.d.ts.map +1 -1
  104. package/dist/tools/get-features.js +12 -2
  105. package/dist/tools/get-features.js.map +1 -1
  106. package/dist/tools/get-features.test.d.ts +5 -0
  107. package/dist/tools/get-features.test.d.ts.map +1 -0
  108. package/dist/tools/get-features.test.js +45 -0
  109. package/dist/tools/get-features.test.js.map +1 -0
  110. package/dist/tools/get-file.d.ts +23 -0
  111. package/dist/tools/get-file.d.ts.map +1 -0
  112. package/dist/tools/get-file.js +53 -0
  113. package/dist/tools/get-file.js.map +1 -0
  114. package/dist/tools/get-file.test.d.ts +5 -0
  115. package/dist/tools/get-file.test.d.ts.map +1 -0
  116. package/dist/tools/get-file.test.js +63 -0
  117. package/dist/tools/get-file.test.js.map +1 -0
  118. package/dist/tools/get-scaffold.d.ts +8 -29
  119. package/dist/tools/get-scaffold.d.ts.map +1 -1
  120. package/dist/tools/get-scaffold.js +18 -24
  121. package/dist/tools/get-scaffold.js.map +1 -1
  122. package/dist/tools/get-scaffold.test.d.ts +5 -0
  123. package/dist/tools/get-scaffold.test.d.ts.map +1 -0
  124. package/dist/tools/get-scaffold.test.js +197 -0
  125. package/dist/tools/get-scaffold.test.js.map +1 -0
  126. package/dist/tools/index.d.ts +2 -0
  127. package/dist/tools/index.d.ts.map +1 -1
  128. package/dist/tools/index.js +1 -0
  129. package/dist/tools/index.js.map +1 -1
  130. package/dist/tools/registry.d.ts +13 -0
  131. package/dist/tools/registry.d.ts.map +1 -0
  132. package/dist/tools/registry.js +47 -0
  133. package/dist/tools/registry.js.map +1 -0
  134. package/dist/tools/types.d.ts +41 -0
  135. package/dist/tools/types.d.ts.map +1 -0
  136. package/dist/tools/types.js +8 -0
  137. package/dist/tools/types.js.map +1 -0
  138. package/dist/utils/cache.d.ts +25 -0
  139. package/dist/utils/cache.d.ts.map +1 -0
  140. package/dist/utils/cache.js +61 -0
  141. package/dist/utils/cache.js.map +1 -0
  142. package/dist/utils/docs.d.ts +1 -3
  143. package/dist/utils/docs.d.ts.map +1 -1
  144. package/dist/utils/docs.js +3 -8
  145. package/dist/utils/docs.js.map +1 -1
  146. package/dist/utils/docs.test.d.ts +5 -0
  147. package/dist/utils/docs.test.d.ts.map +1 -0
  148. package/dist/utils/docs.test.js +37 -0
  149. package/dist/utils/docs.test.js.map +1 -0
  150. package/dist/utils/errors.d.ts +8 -0
  151. package/dist/utils/errors.d.ts.map +1 -0
  152. package/dist/utils/errors.js +19 -0
  153. package/dist/utils/errors.js.map +1 -0
  154. package/dist/utils/examples/api-patterns.d.ts +3 -0
  155. package/dist/utils/examples/api-patterns.d.ts.map +1 -0
  156. package/dist/utils/examples/api-patterns.js +19 -0
  157. package/dist/utils/examples/api-patterns.js.map +1 -0
  158. package/dist/utils/examples/component-patterns.d.ts +3 -0
  159. package/dist/utils/examples/component-patterns.d.ts.map +1 -0
  160. package/dist/utils/examples/component-patterns.js +71 -0
  161. package/dist/utils/examples/component-patterns.js.map +1 -0
  162. package/dist/utils/examples/context-patterns.d.ts +3 -0
  163. package/dist/utils/examples/context-patterns.d.ts.map +1 -0
  164. package/dist/utils/examples/context-patterns.js +32 -0
  165. package/dist/utils/examples/context-patterns.js.map +1 -0
  166. package/dist/utils/examples/hook-patterns.d.ts +3 -0
  167. package/dist/utils/examples/hook-patterns.d.ts.map +1 -0
  168. package/dist/utils/examples/hook-patterns.js +55 -0
  169. package/dist/utils/examples/hook-patterns.js.map +1 -0
  170. package/dist/utils/examples/i18n-patterns.d.ts +3 -0
  171. package/dist/utils/examples/i18n-patterns.d.ts.map +1 -0
  172. package/dist/utils/examples/i18n-patterns.js +43 -0
  173. package/dist/utils/examples/i18n-patterns.js.map +1 -0
  174. package/dist/utils/examples/index.d.ts +12 -0
  175. package/dist/utils/examples/index.d.ts.map +1 -0
  176. package/dist/utils/examples/index.js +65 -0
  177. package/dist/utils/examples/index.js.map +1 -0
  178. package/dist/utils/examples/mobile-patterns.d.ts +3 -0
  179. package/dist/utils/examples/mobile-patterns.d.ts.map +1 -0
  180. package/dist/utils/examples/mobile-patterns.js +38 -0
  181. package/dist/utils/examples/mobile-patterns.js.map +1 -0
  182. package/dist/utils/examples/page-patterns.d.ts +3 -0
  183. package/dist/utils/examples/page-patterns.d.ts.map +1 -0
  184. package/dist/utils/examples/page-patterns.js +34 -0
  185. package/dist/utils/examples/page-patterns.js.map +1 -0
  186. package/dist/utils/examples/patterns.test.d.ts +6 -0
  187. package/dist/utils/examples/patterns.test.d.ts.map +1 -0
  188. package/dist/utils/examples/patterns.test.js +75 -0
  189. package/dist/utils/examples/patterns.test.js.map +1 -0
  190. package/dist/utils/examples/store-patterns.d.ts +3 -0
  191. package/dist/utils/examples/store-patterns.d.ts.map +1 -0
  192. package/dist/utils/examples/store-patterns.js +40 -0
  193. package/dist/utils/examples/store-patterns.js.map +1 -0
  194. package/dist/utils/examples/test-patterns.d.ts +3 -0
  195. package/dist/utils/examples/test-patterns.d.ts.map +1 -0
  196. package/dist/utils/examples/test-patterns.js +58 -0
  197. package/dist/utils/examples/test-patterns.js.map +1 -0
  198. package/dist/utils/examples/types.d.ts +17 -0
  199. package/dist/utils/examples/types.d.ts.map +1 -0
  200. package/dist/utils/examples/types.js +2 -0
  201. package/dist/utils/examples/types.js.map +1 -0
  202. package/dist/utils/examples/utility-patterns.d.ts +3 -0
  203. package/dist/utils/examples/utility-patterns.d.ts.map +1 -0
  204. package/dist/utils/examples/utility-patterns.js +77 -0
  205. package/dist/utils/examples/utility-patterns.js.map +1 -0
  206. package/dist/utils/index.d.ts +5 -3
  207. package/dist/utils/index.d.ts.map +1 -1
  208. package/dist/utils/index.js +5 -3
  209. package/dist/utils/index.js.map +1 -1
  210. package/dist/utils/paths.d.ts +13 -23
  211. package/dist/utils/paths.d.ts.map +1 -1
  212. package/dist/utils/paths.js +28 -39
  213. package/dist/utils/paths.js.map +1 -1
  214. package/dist/utils/paths.test.d.ts +2 -0
  215. package/dist/utils/paths.test.d.ts.map +1 -0
  216. package/dist/utils/paths.test.js +38 -0
  217. package/dist/utils/paths.test.js.map +1 -0
  218. package/dist/utils/scaffold/claude-md/index.d.ts +7 -0
  219. package/dist/utils/scaffold/claude-md/index.d.ts.map +1 -0
  220. package/dist/utils/scaffold/claude-md/index.js +23 -0
  221. package/dist/utils/scaffold/claude-md/index.js.map +1 -0
  222. package/dist/utils/scaffold/claude-md/sections.d.ts +16 -0
  223. package/dist/utils/scaffold/claude-md/sections.d.ts.map +1 -0
  224. package/dist/utils/scaffold/claude-md/sections.js +269 -0
  225. package/dist/utils/scaffold/claude-md/sections.js.map +1 -0
  226. package/dist/utils/scaffold/commands.d.ts +7 -0
  227. package/dist/utils/scaffold/commands.d.ts.map +1 -0
  228. package/dist/utils/scaffold/commands.js +19 -0
  229. package/dist/utils/scaffold/commands.js.map +1 -0
  230. package/dist/utils/scaffold/compute.d.ts +15 -0
  231. package/dist/utils/scaffold/compute.d.ts.map +1 -0
  232. package/dist/utils/scaffold/compute.js +63 -0
  233. package/dist/utils/scaffold/compute.js.map +1 -0
  234. package/dist/utils/scaffold/dependencies.d.ts +25 -0
  235. package/dist/utils/scaffold/dependencies.d.ts.map +1 -0
  236. package/dist/utils/scaffold/dependencies.js +101 -0
  237. package/dist/utils/scaffold/dependencies.js.map +1 -0
  238. package/dist/utils/scaffold/file-structure.d.ts +23 -0
  239. package/dist/utils/scaffold/file-structure.d.ts.map +1 -0
  240. package/dist/utils/scaffold/file-structure.js +62 -0
  241. package/dist/utils/scaffold/file-structure.js.map +1 -0
  242. package/dist/utils/scaffold/generators.d.ts +9 -0
  243. package/dist/utils/scaffold/generators.d.ts.map +1 -0
  244. package/dist/utils/scaffold/generators.js +121 -0
  245. package/dist/utils/scaffold/generators.js.map +1 -0
  246. package/dist/utils/scaffold/index.d.ts +10 -0
  247. package/dist/utils/scaffold/index.d.ts.map +1 -0
  248. package/dist/utils/scaffold/index.js +9 -0
  249. package/dist/utils/scaffold/index.js.map +1 -0
  250. package/package.json +2 -2
  251. package/templates/.github/workflows/release.yml +1 -1
  252. package/templates/e2e/tests/home.spec.ts +2 -2
  253. package/templates/e2e/tests/language.spec.ts +7 -3
  254. package/dist/utils/examples.d.ts +0 -27
  255. package/dist/utils/examples.d.ts.map +0 -1
  256. package/dist/utils/examples.js +0 -438
  257. package/dist/utils/examples.js.map +0 -1
  258. package/dist/utils/scaffold.d.ts +0 -59
  259. package/dist/utils/scaffold.d.ts.map +0 -1
  260. package/dist/utils/scaffold.js +0 -637
  261. package/dist/utils/scaffold.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-scaffold.test.js","sourceRoot":"","sources":["../../src/tools/get-scaffold.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { getFeatures, getFeaturesToolDefinition, type FeatureSummary } from './get-features.js';
2
2
  export { getScaffold, getScaffoldSchema, getScaffoldToolDefinition, type GetScaffoldInput } from './get-scaffold.js';
3
3
  export { getExample, getExampleSchema, getExampleToolDefinition, type GetExampleInput } from './get-example.js';
4
+ export { TOOL_REGISTRY, getToolDefinitions } from './registry.js';
5
+ export type { ToolDefinition, ToolConfig, ToolConfigWithSchema, ToolConfigNoSchema, ToolRegistry } from './types.js';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { getFeatures, getFeaturesToolDefinition } from './get-features.js';
2
2
  export { getScaffold, getScaffoldSchema, getScaffoldToolDefinition } from './get-scaffold.js';
3
3
  export { getExample, getExampleSchema, getExampleToolDefinition } from './get-example.js';
4
+ export { TOOL_REGISTRY, getToolDefinitions } from './registry.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAuB,MAAM,mBAAmB,CAAC;AAEhG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAyB,MAAM,mBAAmB,CAAC;AAErH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAwB,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAuB,MAAM,mBAAmB,CAAC;AAChG,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAyB,MAAM,mBAAmB,CAAC;AACrH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAwB,MAAM,kBAAkB,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Tool Registry - Single source of truth for all MCP tools.
3
+ *
4
+ * Each tool is typed according to its schema presence:
5
+ * - ToolConfigNoSchema: handlers with no input
6
+ * - ToolConfigWithSchema: handlers receiving validated Zod input
7
+ */
8
+ import type { ToolRegistry, ToolDefinition } from './types.js';
9
+ /** All registered MCP tools. */
10
+ export declare const TOOL_REGISTRY: ToolRegistry;
11
+ /** Get all tool definitions for ListToolsRequest. */
12
+ export declare function getToolDefinitions(): ToolDefinition[];
13
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAA4C,MAAM,YAAY,CAAC;AAkCzG,gCAAgC;AAChC,eAAO,MAAM,aAAa,EAAE,YAK3B,CAAC;AAEF,qDAAqD;AACrD,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAErD"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Tool Registry - Single source of truth for all MCP tools.
3
+ *
4
+ * Each tool is typed according to its schema presence:
5
+ * - ToolConfigNoSchema: handlers with no input
6
+ * - ToolConfigWithSchema: handlers receiving validated Zod input
7
+ */
8
+ import { getFeatures, getFeaturesToolDefinition } from './get-features.js';
9
+ import { getScaffold, getScaffoldSchema, getScaffoldToolDefinition } from './get-scaffold.js';
10
+ import { getExample, getExampleSchema, getExampleToolDefinition } from './get-example.js';
11
+ import { getFile, getFileSchema, getFileToolDefinition } from './get-file.js';
12
+ /** Tool: get_features - no input required */
13
+ const getFeaturesConfig = {
14
+ definition: getFeaturesToolDefinition,
15
+ schema: null,
16
+ handler: getFeatures,
17
+ };
18
+ /** Tool: get_scaffold - requires features array input */
19
+ const getScaffoldConfig = {
20
+ definition: getScaffoldToolDefinition,
21
+ schema: getScaffoldSchema,
22
+ handler: getScaffold,
23
+ };
24
+ /** Tool: get_example - requires pattern input */
25
+ const getExampleConfig = {
26
+ definition: getExampleToolDefinition,
27
+ schema: getExampleSchema,
28
+ handler: getExample,
29
+ };
30
+ /** Tool: get_file - requires path input */
31
+ const getFileConfig = {
32
+ definition: getFileToolDefinition,
33
+ schema: getFileSchema,
34
+ handler: getFile,
35
+ };
36
+ /** All registered MCP tools. */
37
+ export const TOOL_REGISTRY = {
38
+ get_features: getFeaturesConfig,
39
+ get_scaffold: getScaffoldConfig,
40
+ get_example: getExampleConfig,
41
+ get_file: getFileConfig,
42
+ };
43
+ /** Get all tool definitions for ListToolsRequest. */
44
+ export function getToolDefinitions() {
45
+ return Object.values(TOOL_REGISTRY).map((tool) => tool.definition);
46
+ }
47
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,WAAW,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9F,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE9E,6CAA6C;AAC7C,MAAM,iBAAiB,GAAuB;IAC5C,UAAU,EAAE,yBAAyB;IACrC,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,yDAAyD;AACzD,MAAM,iBAAiB,GAAmD;IACxE,UAAU,EAAE,yBAAyB;IACrC,MAAM,EAAE,iBAAiB;IACzB,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,iDAAiD;AACjD,MAAM,gBAAgB,GAAkD;IACtE,UAAU,EAAE,wBAAwB;IACpC,MAAM,EAAE,gBAAgB;IACxB,OAAO,EAAE,UAAU;CACpB,CAAC;AAEF,2CAA2C;AAC3C,MAAM,aAAa,GAA+C;IAChE,UAAU,EAAE,qBAAqB;IACjC,MAAM,EAAE,aAAa;IACrB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,gCAAgC;AAChC,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,YAAY,EAAE,iBAAiB;IAC/B,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,gBAAgB;IAC7B,QAAQ,EAAE,aAAa;CACxB,CAAC;AAEF,qDAAqD;AACrD,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACrE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Type definitions for MCP tools
3
+ *
4
+ * Uses discriminated unions and generics for full type safety
5
+ * between Zod schemas and handler function signatures.
6
+ */
7
+ import type { z, ZodType } from 'zod';
8
+ /** MCP tool definition schema for ListToolsRequest. */
9
+ export interface ToolDefinition {
10
+ name: string;
11
+ description: string;
12
+ inputSchema: {
13
+ type: 'object';
14
+ properties: Record<string, unknown>;
15
+ required?: string[];
16
+ };
17
+ }
18
+ /**
19
+ * Tool configuration with schema - handler receives validated input.
20
+ */
21
+ export interface ToolConfigWithSchema<TSchema extends ZodType> {
22
+ definition: ToolDefinition;
23
+ schema: TSchema;
24
+ handler: (input: z.infer<TSchema>) => Promise<unknown>;
25
+ }
26
+ /**
27
+ * Tool configuration without schema - handler receives no arguments.
28
+ */
29
+ export interface ToolConfigNoSchema {
30
+ definition: ToolDefinition;
31
+ schema: null;
32
+ handler: () => unknown;
33
+ }
34
+ /**
35
+ * Union type for tool configurations.
36
+ * Discriminated by `schema` field (null vs ZodType).
37
+ */
38
+ export type ToolConfig = ToolConfigWithSchema<ZodType> | ToolConfigNoSchema;
39
+ /** Tool registry type. */
40
+ export type ToolRegistry = Record<string, ToolConfig>;
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEtC,uDAAuD;AACvD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB,CAAC,OAAO,SAAS,OAAO;IAC3D,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,cAAc,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC;IACb,OAAO,EAAE,MAAM,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,oBAAoB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC;AAE5E,0BAA0B;AAC1B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Type definitions for MCP tools
3
+ *
4
+ * Uses discriminated unions and generics for full type safety
5
+ * between Zod schemas and handler function signatures.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tools/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * In-memory cache utilities for MCP server.
3
+ */
4
+ /** Creates a typed key-value cache with sync and async getOrSet patterns. */
5
+ export declare function createCache<T>(): {
6
+ get: (key: string) => T | undefined;
7
+ set: (key: string, value: T) => void;
8
+ has: (key: string) => boolean;
9
+ clear: () => void;
10
+ /** Gets cached value or computes and caches it (sync). */
11
+ getOrSetSync(key: string, factory: () => T): T;
12
+ /** Gets cached value or computes and caches it (async). */
13
+ getOrSet(key: string, factory: () => Promise<T>): Promise<T>;
14
+ };
15
+ /** Creates a singleton cache (single value, no key). */
16
+ export declare function createSingletonCache<T>(): {
17
+ get: () => T | null;
18
+ set: (value: T) => void;
19
+ clear: () => void;
20
+ /** Gets cached value or computes (sync). */
21
+ getOrSetSync(factory: () => T): T;
22
+ /** Gets cached value or computes (async). */
23
+ getOrSet(factory: () => Promise<T>): Promise<T>;
24
+ };
25
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC;eAId,MAAM,KAAG,CAAC,GAAG,SAAS;eACtB,MAAM,SAAS,CAAC,KAAG,IAAI;eAGvB,MAAM,KAAG,OAAO;iBAChB,IAAI;IAEf,0DAA0D;sBACxC,MAAM,WAAW,MAAM,CAAC,GAAG,CAAC;IAQ9C,2DAA2D;kBACvC,MAAM,WAAW,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EAQrE;AAED,wDAAwD;AACxD,wBAAgB,oBAAoB,CAAC,CAAC;eAIzB,CAAC,GAAG,IAAI;iBACJ,CAAC,KAAG,IAAI;iBAGV,IAAI;IAIf,4CAA4C;0BACtB,MAAM,CAAC,GAAG,CAAC;IAMjC,6CAA6C;sBACrB,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;EAMxD"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * In-memory cache utilities for MCP server.
3
+ */
4
+ /** Creates a typed key-value cache with sync and async getOrSet patterns. */
5
+ export function createCache() {
6
+ const cache = new Map();
7
+ return {
8
+ get: (key) => cache.get(key),
9
+ set: (key, value) => {
10
+ cache.set(key, value);
11
+ },
12
+ has: (key) => cache.has(key),
13
+ clear: () => cache.clear(),
14
+ /** Gets cached value or computes and caches it (sync). */
15
+ getOrSetSync(key, factory) {
16
+ const existing = cache.get(key);
17
+ if (existing !== undefined)
18
+ return existing;
19
+ const value = factory();
20
+ cache.set(key, value);
21
+ return value;
22
+ },
23
+ /** Gets cached value or computes and caches it (async). */
24
+ async getOrSet(key, factory) {
25
+ const existing = cache.get(key);
26
+ if (existing !== undefined)
27
+ return existing;
28
+ const value = await factory();
29
+ cache.set(key, value);
30
+ return value;
31
+ },
32
+ };
33
+ }
34
+ /** Creates a singleton cache (single value, no key). */
35
+ export function createSingletonCache() {
36
+ let cached = null;
37
+ return {
38
+ get: () => cached,
39
+ set: (value) => {
40
+ cached = value;
41
+ },
42
+ clear: () => {
43
+ cached = null;
44
+ },
45
+ /** Gets cached value or computes (sync). */
46
+ getOrSetSync(factory) {
47
+ if (cached !== null)
48
+ return cached;
49
+ cached = factory();
50
+ return cached;
51
+ },
52
+ /** Gets cached value or computes (async). */
53
+ async getOrSet(factory) {
54
+ if (cached !== null)
55
+ return cached;
56
+ cached = await factory();
57
+ return cached;
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/utils/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,6EAA6E;AAC7E,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IAEnC,OAAO;QACL,GAAG,EAAE,CAAC,GAAW,EAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACnD,GAAG,EAAE,CAAC,GAAW,EAAE,KAAQ,EAAQ,EAAE;YACnC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;QACD,GAAG,EAAE,CAAC,GAAW,EAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAC7C,KAAK,EAAE,GAAS,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE;QAEhC,0DAA0D;QAC1D,YAAY,CAAC,GAAW,EAAE,OAAgB;YACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC5C,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,2DAA2D;QAC3D,KAAK,CAAC,QAAQ,CAAC,GAAW,EAAE,OAAyB;YACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAChC,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC;YAC5C,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;YAC9B,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,oBAAoB;IAClC,IAAI,MAAM,GAAa,IAAI,CAAC;IAE5B,OAAO;QACL,GAAG,EAAE,GAAa,EAAE,CAAC,MAAM;QAC3B,GAAG,EAAE,CAAC,KAAQ,EAAQ,EAAE;YACtB,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,KAAK,EAAE,GAAS,EAAE;YAChB,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;QAED,4CAA4C;QAC5C,YAAY,CAAC,OAAgB;YAC3B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YACnC,MAAM,GAAG,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6CAA6C;QAC7C,KAAK,CAAC,QAAQ,CAAC,OAAyB;YACtC,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,MAAM,CAAC;YACnC,MAAM,GAAG,MAAM,OAAO,EAAE,CAAC;YACzB,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,8 +7,6 @@
7
7
  * Determine which docs to include based on selected features
8
8
  */
9
9
  export declare function computeDocsForFeatures(featureIds: readonly string[]): string[];
10
- /**
11
- * Read all docs for scaffolding based on selected features
12
- */
10
+ /** Read all docs for scaffolding based on selected features (parallel). */
13
11
  export declare function computeDocsContent(featureIds: readonly string[]): Promise<Record<string, string>>;
14
12
  //# sourceMappingURL=docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2BH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAU9E;AAeD;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CASvG"}
1
+ {"version":3,"file":"docs.d.ts","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA2BH;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAU9E;AAeD,2EAA2E;AAC3E,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAIvG"}
@@ -50,15 +50,10 @@ async function readDoc(docPath) {
50
50
  return `<!-- File not found: ${docPath} -->\n<!-- Run MCP server from within react-spa-scaffold repository -->`;
51
51
  }
52
52
  }
53
- /**
54
- * Read all docs for scaffolding based on selected features
55
- */
53
+ /** Read all docs for scaffolding based on selected features (parallel). */
56
54
  export async function computeDocsContent(featureIds) {
57
55
  const docPaths = computeDocsForFeatures(featureIds);
58
- const docs = {};
59
- for (const docPath of docPaths) {
60
- docs[docPath] = await readDoc(docPath);
61
- }
62
- return docs;
56
+ const contents = await Promise.all(docPaths.map(readDoc));
57
+ return Object.fromEntries(docPaths.map((path, i) => [path, contents[i]]));
63
58
  }
64
59
  //# sourceMappingURL=docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAoD;IACnE,8BAA8B;IAC9B,sBAAsB,EAAE,EAAE;IAC1B,0BAA0B,EAAE,EAAE;IAC9B,8BAA8B,EAAE,EAAE;IAClC,uBAAuB,EAAE,EAAE;IAE3B,mBAAmB;IACnB,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,qBAAqB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACxD,8BAA8B,EAAE,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QACvD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;SACrB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,OAAO,yEAAyE,CAAC;IAClH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA6B;IACpE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"docs.js","sourceRoot":"","sources":["../../src/utils/docs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,GAAoD;IACnE,8BAA8B;IAC9B,sBAAsB,EAAE,EAAE;IAC1B,0BAA0B,EAAE,EAAE;IAC9B,8BAA8B,EAAE,EAAE;IAClC,uBAAuB,EAAE,EAAE;IAE3B,mBAAmB;IACnB,iBAAiB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACpD,qBAAqB,EAAE,EAAE,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE;IACxD,8BAA8B,EAAE,EAAE,gBAAgB,EAAE,CAAC,MAAM,CAAC,EAAE;CAC/D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,UAA6B;IAClE,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE;QACrB,IAAI,CAAC,MAAM,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC,CAAC,YAAY;QACvD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC;SACrB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,OAAO,CAAC,OAAe;IACpC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE9C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,OAAO,yEAAyE,CAAC;IAClH,CAAC;AACH,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAA6B;IACpE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1D,OAAO,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Tests for docs utilities
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=docs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.test.d.ts","sourceRoot":"","sources":["../../src/utils/docs.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Tests for docs utilities
3
+ */
4
+ import { describe, it, expect } from 'vitest';
5
+ import { computeDocsForFeatures, computeDocsContent } from './docs.js';
6
+ describe('docs utilities', () => {
7
+ it('includes universal docs and excludes WORKFLOW.md', () => {
8
+ const docs = computeDocsForFeatures(['core']);
9
+ // Universal docs always included
10
+ expect(docs).toContain('docs/ARCHITECTURE.md');
11
+ expect(docs).toContain('docs/CODING_STANDARDS.md');
12
+ expect(docs).toContain('docs/COMPONENT_GUIDELINES.md');
13
+ expect(docs).toContain('docs/API_REFERENCE.md');
14
+ // WORKFLOW.md never included
15
+ expect(docs).not.toContain('docs/WORKFLOW.md');
16
+ expect(docs).toHaveLength(4);
17
+ });
18
+ it('includes feature-specific docs only when feature selected', () => {
19
+ const coreOnly = computeDocsForFeatures(['core']);
20
+ const withTesting = computeDocsForFeatures(['core', 'testing']);
21
+ const withI18n = computeDocsForFeatures(['core', 'i18n']);
22
+ // Testing docs
23
+ expect(coreOnly).not.toContain('docs/TESTING.md');
24
+ expect(withTesting).toContain('docs/TESTING.md');
25
+ expect(withTesting).toContain('docs/E2E_TESTING.md');
26
+ // i18n docs
27
+ expect(coreOnly).not.toContain('docs/INTERNATIONALIZATION.md');
28
+ expect(withI18n).toContain('docs/INTERNATIONALIZATION.md');
29
+ });
30
+ it('returns doc content with key sections preserved', async () => {
31
+ const docs = await computeDocsContent(['core']);
32
+ expect(Object.keys(docs)).toHaveLength(4);
33
+ expect(docs['docs/ARCHITECTURE.md']).toContain('# Architecture Guide');
34
+ expect(docs['docs/ARCHITECTURE.md']).toContain('Provider Hierarchy');
35
+ });
36
+ });
37
+ //# sourceMappingURL=docs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.test.js","sourceRoot":"","sources":["../../src/utils/docs.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEvE,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,IAAI,GAAG,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAE9C,iCAAiC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;QAEhD,6BAA6B;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,sBAAsB,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,sBAAsB,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAE1D,eAAe;QACf,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAErD,YAAY;QACZ,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC/D,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Error handling utilities.
3
+ */
4
+ /** Wraps async file read with fallback on error. */
5
+ export declare function readWithFallback<T>(operation: () => Promise<T>, fallback: T): Promise<T>;
6
+ /** Extracts error message from unknown error. */
7
+ export declare function getErrorMessage(error: unknown): string;
8
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oDAAoD;AACpD,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAM9F;AAED,iDAAiD;AACjD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGtD"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Error handling utilities.
3
+ */
4
+ /** Wraps async file read with fallback on error. */
5
+ export async function readWithFallback(operation, fallback) {
6
+ try {
7
+ return await operation();
8
+ }
9
+ catch {
10
+ return fallback;
11
+ }
12
+ }
13
+ /** Extracts error message from unknown error. */
14
+ export function getErrorMessage(error) {
15
+ if (error instanceof Error)
16
+ return error.message;
17
+ return String(error);
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAI,SAA2B,EAAE,QAAW;IAChF,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PatternMap } from './types.js';
2
+ export declare const apiPatterns: PatternMap;
3
+ //# sourceMappingURL=api-patterns.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,3 @@
1
+ import type { PatternMap } from './types.js';
2
+ export declare const componentPatterns: PatternMap;
3
+ //# sourceMappingURL=component-patterns.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,71 @@
1
+ export const componentPatterns = {
2
+ 'component-ui': {
3
+ file: 'src/components/ui/button.tsx',
4
+ description: 'Shadcn/UI component with CVA variants and forwardRef',
5
+ keyPoints: [
6
+ 'Uses forwardRef for ref forwarding',
7
+ 'CVA (class-variance-authority) for style variants',
8
+ 'cn() utility for class merging',
9
+ 'Named export (not default)',
10
+ 'Props interface extends HTML attributes + VariantProps',
11
+ 'Radix Slot for polymorphic "asChild" prop',
12
+ ],
13
+ },
14
+ 'component-shared': {
15
+ file: 'src/components/shared/ThemeToggle/ThemeToggle.tsx',
16
+ description: 'Shared feature component with store integration',
17
+ keyPoints: [
18
+ 'Named function export',
19
+ 'Located in subdirectory with index.ts barrel',
20
+ 'Uses Zustand store with selectors',
21
+ 'Integrates with Lingui i18n (t() function)',
22
+ 'Composes UI components (Button, icons)',
23
+ ],
24
+ },
25
+ 'component-layout': {
26
+ file: 'src/components/layout/Header.tsx',
27
+ description: 'Layout component for page structure',
28
+ keyPoints: [
29
+ 'Named function export',
30
+ 'Uses Tailwind container pattern',
31
+ 'Composes shared components',
32
+ 'Trans component for i18n text',
33
+ 'No props (stateless layout)',
34
+ ],
35
+ },
36
+ 'button-variants': {
37
+ file: 'src/components/ui/button.tsx',
38
+ description: 'Button with CVA variants',
39
+ keyPoints: [
40
+ 'variant: default, destructive, outline, secondary, ghost, link',
41
+ 'size: default, sm, lg, icon',
42
+ 'asChild prop for polymorphic rendering',
43
+ ],
44
+ },
45
+ 'forward-ref-component': {
46
+ file: 'src/components/ui/button.tsx',
47
+ description: 'forwardRef component pattern',
48
+ keyPoints: ['React.forwardRef<HTMLElement, Props>', 'ref passed to inner element', 'displayName set for DevTools'],
49
+ },
50
+ 'error-boundary': {
51
+ file: 'src/components/shared/ErrorBoundary/ErrorBoundary.tsx',
52
+ description: 'Error boundary with reset functionality',
53
+ keyPoints: [
54
+ 'Class component with getDerivedStateFromError',
55
+ 'componentDidCatch for logging',
56
+ 'Reset button to recover',
57
+ ],
58
+ },
59
+ 'seo-component': {
60
+ file: 'src/components/shared/SEO/SEO.tsx',
61
+ description: 'SEO meta tags component (React 19)',
62
+ keyPoints: [
63
+ 'React 19 native head hoisting',
64
+ 'title, meta, link in JSX',
65
+ 'Open Graph tags',
66
+ 'Twitter Card tags',
67
+ 'Conditional rendering for optional tags',
68
+ ],
69
+ },
70
+ };
71
+ //# sourceMappingURL=component-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/component-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAe;IAC3C,cAAc,EAAE;QACd,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,sDAAsD;QACnE,SAAS,EAAE;YACT,oCAAoC;YACpC,mDAAmD;YACnD,gCAAgC;YAChC,4BAA4B;YAC5B,wDAAwD;YACxD,2CAA2C;SAC5C;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,mDAAmD;QACzD,WAAW,EAAE,iDAAiD;QAC9D,SAAS,EAAE;YACT,uBAAuB;YACvB,8CAA8C;YAC9C,mCAAmC;YACnC,4CAA4C;YAC5C,wCAAwC;SACzC;KACF;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,kCAAkC;QACxC,WAAW,EAAE,qCAAqC;QAClD,SAAS,EAAE;YACT,uBAAuB;YACvB,iCAAiC;YACjC,4BAA4B;YAC5B,+BAA+B;YAC/B,6BAA6B;SAC9B;KACF;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,0BAA0B;QACvC,SAAS,EAAE;YACT,gEAAgE;YAChE,6BAA6B;YAC7B,wCAAwC;SACzC;KACF;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,8BAA8B;QACpC,WAAW,EAAE,8BAA8B;QAC3C,SAAS,EAAE,CAAC,sCAAsC,EAAE,6BAA6B,EAAE,8BAA8B,CAAC;KACnH;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,uDAAuD;QAC7D,WAAW,EAAE,yCAAyC;QACtD,SAAS,EAAE;YACT,+CAA+C;YAC/C,+BAA+B;YAC/B,yBAAyB;SAC1B;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,mCAAmC;QACzC,WAAW,EAAE,oCAAoC;QACjD,SAAS,EAAE;YACT,+BAA+B;YAC/B,0BAA0B;YAC1B,iBAAiB;YACjB,mBAAmB;YACnB,yCAAyC;SAC1C;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PatternMap } from './types.js';
2
+ export declare const contextPatterns: PatternMap;
3
+ //# sourceMappingURL=context-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/context-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,eAAe,EAAE,UA8B7B,CAAC"}
@@ -0,0 +1,32 @@
1
+ export const contextPatterns = {
2
+ 'context-provider': {
3
+ file: 'src/contexts/mobileContext.tsx',
4
+ description: 'React Context with provider and hook',
5
+ keyPoints: [
6
+ 'Separate Context and Provider',
7
+ 'useMemo for context value',
8
+ 'Custom hook with error if outside provider',
9
+ 'useEffect with resize listener',
10
+ 'requestAnimationFrame for debouncing',
11
+ ],
12
+ },
13
+ 'query-provider': {
14
+ file: 'src/contexts/queryContext.tsx',
15
+ description: 'TanStack Query provider setup',
16
+ keyPoints: [
17
+ 'QueryClient with default options',
18
+ 'staleTime, gcTime, retry configuration',
19
+ 'QueryClientProvider wrapper',
20
+ ],
21
+ },
22
+ 'performance-context': {
23
+ file: 'src/contexts/performanceContext.tsx',
24
+ description: 'Performance monitoring context',
25
+ keyPoints: [
26
+ 'Lazy loading for zero prod overhead',
27
+ 'usePerformance hook never throws',
28
+ 'React Profiler integration',
29
+ ],
30
+ },
31
+ };
32
+ //# sourceMappingURL=context-patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-patterns.js","sourceRoot":"","sources":["../../../src/utils/examples/context-patterns.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,kBAAkB,EAAE;QAClB,IAAI,EAAE,gCAAgC;QACtC,WAAW,EAAE,sCAAsC;QACnD,SAAS,EAAE;YACT,+BAA+B;YAC/B,2BAA2B;YAC3B,4CAA4C;YAC5C,gCAAgC;YAChC,sCAAsC;SACvC;KACF;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,+BAA+B;QACrC,WAAW,EAAE,+BAA+B;QAC5C,SAAS,EAAE;YACT,kCAAkC;YAClC,wCAAwC;YACxC,6BAA6B;SAC9B;KACF;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,qCAAqC;QAC3C,WAAW,EAAE,gCAAgC;QAC7C,SAAS,EAAE;YACT,qCAAqC;YACrC,kCAAkC;YAClC,4BAA4B;SAC7B;KACF;CACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { PatternMap } from './types.js';
2
+ export declare const hookPatterns: PatternMap;
3
+ //# sourceMappingURL=hook-patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-patterns.d.ts","sourceRoot":"","sources":["../../../src/utils/examples/hook-patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,YAAY,EAAE,UAqD1B,CAAC"}