@nahisaho/musubix-core 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/bin/musubix.js +18 -0
  2. package/dist/__tests__/index.test.d.ts +2 -0
  3. package/dist/__tests__/index.test.d.ts.map +1 -0
  4. package/dist/__tests__/index.test.js +27 -0
  5. package/dist/__tests__/index.test.js.map +1 -0
  6. package/dist/auth/auth-manager.d.ts +320 -0
  7. package/dist/auth/auth-manager.d.ts.map +1 -0
  8. package/dist/auth/auth-manager.js +580 -0
  9. package/dist/auth/auth-manager.js.map +1 -0
  10. package/dist/cli/base.d.ts +58 -0
  11. package/dist/cli/base.d.ts.map +1 -0
  12. package/dist/cli/base.js +93 -0
  13. package/dist/cli/base.js.map +1 -0
  14. package/dist/cli/commands/help.d.ts +17 -0
  15. package/dist/cli/commands/help.d.ts.map +1 -0
  16. package/dist/cli/commands/help.js +228 -0
  17. package/dist/cli/commands/help.js.map +1 -0
  18. package/dist/cli/commands/index.d.ts +14 -0
  19. package/dist/cli/commands/index.d.ts.map +1 -0
  20. package/dist/cli/commands/index.js +25 -0
  21. package/dist/cli/commands/index.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts +38 -0
  23. package/dist/cli/commands/init.d.ts.map +1 -0
  24. package/dist/cli/commands/init.js +258 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/index.d.ts +9 -0
  27. package/dist/cli/index.d.ts.map +1 -0
  28. package/dist/cli/index.js +9 -0
  29. package/dist/cli/index.js.map +1 -0
  30. package/dist/codegen/coding-standards.d.ts +250 -0
  31. package/dist/codegen/coding-standards.d.ts.map +1 -0
  32. package/dist/codegen/coding-standards.js +976 -0
  33. package/dist/codegen/coding-standards.js.map +1 -0
  34. package/dist/codegen/coverage-reporter.d.ts +264 -0
  35. package/dist/codegen/coverage-reporter.d.ts.map +1 -0
  36. package/dist/codegen/coverage-reporter.js +697 -0
  37. package/dist/codegen/coverage-reporter.js.map +1 -0
  38. package/dist/codegen/dependency-analyzer.d.ts +271 -0
  39. package/dist/codegen/dependency-analyzer.d.ts.map +1 -0
  40. package/dist/codegen/dependency-analyzer.js +661 -0
  41. package/dist/codegen/dependency-analyzer.js.map +1 -0
  42. package/dist/codegen/generator.d.ts +275 -0
  43. package/dist/codegen/generator.d.ts.map +1 -0
  44. package/dist/codegen/generator.js +781 -0
  45. package/dist/codegen/generator.js.map +1 -0
  46. package/dist/codegen/index.d.ts +18 -0
  47. package/dist/codegen/index.d.ts.map +1 -0
  48. package/dist/codegen/index.js +27 -0
  49. package/dist/codegen/index.js.map +1 -0
  50. package/dist/codegen/integration-test-generator.d.ts +312 -0
  51. package/dist/codegen/integration-test-generator.d.ts.map +1 -0
  52. package/dist/codegen/integration-test-generator.js +765 -0
  53. package/dist/codegen/integration-test-generator.js.map +1 -0
  54. package/dist/codegen/pattern-conformance.d.ts +309 -0
  55. package/dist/codegen/pattern-conformance.d.ts.map +1 -0
  56. package/dist/codegen/pattern-conformance.js +590 -0
  57. package/dist/codegen/pattern-conformance.js.map +1 -0
  58. package/dist/codegen/quality-metrics.d.ts +235 -0
  59. package/dist/codegen/quality-metrics.d.ts.map +1 -0
  60. package/dist/codegen/quality-metrics.js +439 -0
  61. package/dist/codegen/quality-metrics.js.map +1 -0
  62. package/dist/codegen/security-scanner.d.ts +179 -0
  63. package/dist/codegen/security-scanner.d.ts.map +1 -0
  64. package/dist/codegen/security-scanner.js +495 -0
  65. package/dist/codegen/security-scanner.js.map +1 -0
  66. package/dist/codegen/static-analyzer.d.ts +188 -0
  67. package/dist/codegen/static-analyzer.d.ts.map +1 -0
  68. package/dist/codegen/static-analyzer.js +490 -0
  69. package/dist/codegen/static-analyzer.js.map +1 -0
  70. package/dist/codegen/unit-test-generator.d.ts +289 -0
  71. package/dist/codegen/unit-test-generator.d.ts.map +1 -0
  72. package/dist/codegen/unit-test-generator.js +634 -0
  73. package/dist/codegen/unit-test-generator.js.map +1 -0
  74. package/dist/design/adr-generator.d.ts +227 -0
  75. package/dist/design/adr-generator.d.ts.map +1 -0
  76. package/dist/design/adr-generator.js +423 -0
  77. package/dist/design/adr-generator.js.map +1 -0
  78. package/dist/design/c4-generator.d.ts +267 -0
  79. package/dist/design/c4-generator.d.ts.map +1 -0
  80. package/dist/design/c4-generator.js +453 -0
  81. package/dist/design/c4-generator.js.map +1 -0
  82. package/dist/design/framework-optimizer.d.ts +190 -0
  83. package/dist/design/framework-optimizer.d.ts.map +1 -0
  84. package/dist/design/framework-optimizer.js +589 -0
  85. package/dist/design/framework-optimizer.js.map +1 -0
  86. package/dist/design/index.d.ts +12 -0
  87. package/dist/design/index.d.ts.map +1 -0
  88. package/dist/design/index.js +13 -0
  89. package/dist/design/index.js.map +1 -0
  90. package/dist/design/pattern-detector.d.ts +270 -0
  91. package/dist/design/pattern-detector.d.ts.map +1 -0
  92. package/dist/design/pattern-detector.js +621 -0
  93. package/dist/design/pattern-detector.js.map +1 -0
  94. package/dist/design/solid-validator.d.ts +188 -0
  95. package/dist/design/solid-validator.d.ts.map +1 -0
  96. package/dist/design/solid-validator.js +579 -0
  97. package/dist/design/solid-validator.js.map +1 -0
  98. package/dist/error/data-persistence.d.ts +311 -0
  99. package/dist/error/data-persistence.d.ts.map +1 -0
  100. package/dist/error/data-persistence.js +586 -0
  101. package/dist/error/data-persistence.js.map +1 -0
  102. package/dist/error/graceful-degradation.d.ts +309 -0
  103. package/dist/error/graceful-degradation.d.ts.map +1 -0
  104. package/dist/error/graceful-degradation.js +510 -0
  105. package/dist/error/graceful-degradation.js.map +1 -0
  106. package/dist/error/index.d.ts +11 -0
  107. package/dist/error/index.d.ts.map +1 -0
  108. package/dist/error/index.js +19 -0
  109. package/dist/error/index.js.map +1 -0
  110. package/dist/explanation/explanation-generator.d.ts +228 -0
  111. package/dist/explanation/explanation-generator.d.ts.map +1 -0
  112. package/dist/explanation/explanation-generator.js +662 -0
  113. package/dist/explanation/explanation-generator.js.map +1 -0
  114. package/dist/explanation/index.d.ts +11 -0
  115. package/dist/explanation/index.d.ts.map +1 -0
  116. package/dist/explanation/index.js +19 -0
  117. package/dist/explanation/index.js.map +1 -0
  118. package/dist/explanation/reasoning-chain.d.ts +314 -0
  119. package/dist/explanation/reasoning-chain.d.ts.map +1 -0
  120. package/dist/explanation/reasoning-chain.js +414 -0
  121. package/dist/explanation/reasoning-chain.js.map +1 -0
  122. package/dist/explanation/visual-explanation.d.ts +315 -0
  123. package/dist/explanation/visual-explanation.d.ts.map +1 -0
  124. package/dist/explanation/visual-explanation.js +667 -0
  125. package/dist/explanation/visual-explanation.js.map +1 -0
  126. package/dist/index.d.ts +33 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +47 -0
  129. package/dist/index.js.map +1 -0
  130. package/dist/requirements/decomposer.d.ts +235 -0
  131. package/dist/requirements/decomposer.d.ts.map +1 -0
  132. package/dist/requirements/decomposer.js +587 -0
  133. package/dist/requirements/decomposer.js.map +1 -0
  134. package/dist/requirements/related-finder.d.ts +261 -0
  135. package/dist/requirements/related-finder.d.ts.map +1 -0
  136. package/dist/requirements/related-finder.js +629 -0
  137. package/dist/requirements/related-finder.js.map +1 -0
  138. package/dist/traceability/impact.d.ts +196 -0
  139. package/dist/traceability/impact.d.ts.map +1 -0
  140. package/dist/traceability/impact.js +438 -0
  141. package/dist/traceability/impact.js.map +1 -0
  142. package/dist/traceability/index.d.ts +9 -0
  143. package/dist/traceability/index.d.ts.map +1 -0
  144. package/dist/traceability/index.js +10 -0
  145. package/dist/traceability/index.js.map +1 -0
  146. package/dist/traceability/manager.d.ts +266 -0
  147. package/dist/traceability/manager.d.ts.map +1 -0
  148. package/dist/traceability/manager.js +412 -0
  149. package/dist/traceability/manager.js.map +1 -0
  150. package/dist/types/common.d.ts +294 -0
  151. package/dist/types/common.d.ts.map +1 -0
  152. package/dist/types/common.js +15 -0
  153. package/dist/types/common.js.map +1 -0
  154. package/dist/types/ears.d.ts +158 -0
  155. package/dist/types/ears.d.ts.map +1 -0
  156. package/dist/types/ears.js +33 -0
  157. package/dist/types/ears.js.map +1 -0
  158. package/dist/types/errors.d.ts +176 -0
  159. package/dist/types/errors.d.ts.map +1 -0
  160. package/dist/types/errors.js +55 -0
  161. package/dist/types/errors.js.map +1 -0
  162. package/dist/types/index.d.ts +10 -0
  163. package/dist/types/index.d.ts.map +1 -0
  164. package/dist/types/index.js +10 -0
  165. package/dist/types/index.js.map +1 -0
  166. package/dist/utils/data-protector.d.ts +122 -0
  167. package/dist/utils/data-protector.d.ts.map +1 -0
  168. package/dist/utils/data-protector.js +275 -0
  169. package/dist/utils/data-protector.js.map +1 -0
  170. package/dist/utils/error-handler.d.ts +101 -0
  171. package/dist/utils/error-handler.d.ts.map +1 -0
  172. package/dist/utils/error-handler.js +324 -0
  173. package/dist/utils/error-handler.js.map +1 -0
  174. package/dist/utils/i18n-manager.d.ts +259 -0
  175. package/dist/utils/i18n-manager.d.ts.map +1 -0
  176. package/dist/utils/i18n-manager.js +554 -0
  177. package/dist/utils/i18n-manager.js.map +1 -0
  178. package/dist/utils/index.d.ts +10 -0
  179. package/dist/utils/index.d.ts.map +1 -0
  180. package/dist/utils/index.js +10 -0
  181. package/dist/utils/index.js.map +1 -0
  182. package/dist/utils/logger.d.ts +120 -0
  183. package/dist/utils/logger.d.ts.map +1 -0
  184. package/dist/utils/logger.js +237 -0
  185. package/dist/utils/logger.js.map +1 -0
  186. package/dist/utils/performance-profiler.d.ts +251 -0
  187. package/dist/utils/performance-profiler.d.ts.map +1 -0
  188. package/dist/utils/performance-profiler.js +458 -0
  189. package/dist/utils/performance-profiler.js.map +1 -0
  190. package/dist/utils/scalability-optimizer.d.ts +294 -0
  191. package/dist/utils/scalability-optimizer.d.ts.map +1 -0
  192. package/dist/utils/scalability-optimizer.js +606 -0
  193. package/dist/utils/scalability-optimizer.js.map +1 -0
  194. package/dist/utils/structured-logger.d.ts +294 -0
  195. package/dist/utils/structured-logger.d.ts.map +1 -0
  196. package/dist/utils/structured-logger.js +630 -0
  197. package/dist/utils/structured-logger.js.map +1 -0
  198. package/dist/utils/version-compatibility.d.ts +217 -0
  199. package/dist/utils/version-compatibility.d.ts.map +1 -0
  200. package/dist/utils/version-compatibility.js +443 -0
  201. package/dist/utils/version-compatibility.js.map +1 -0
  202. package/dist/validators/ears-validator.d.ts +182 -0
  203. package/dist/validators/ears-validator.d.ts.map +1 -0
  204. package/dist/validators/ears-validator.js +357 -0
  205. package/dist/validators/ears-validator.js.map +1 -0
  206. package/dist/validators/index.d.ts +8 -0
  207. package/dist/validators/index.d.ts.map +1 -0
  208. package/dist/validators/index.js +9 -0
  209. package/dist/validators/index.js.map +1 -0
  210. package/dist/version.d.ts +8 -0
  211. package/dist/version.d.ts.map +1 -0
  212. package/dist/version.js +8 -0
  213. package/dist/version.js.map +1 -0
  214. package/package.json +100 -0
@@ -0,0 +1,589 @@
1
+ /**
2
+ * Framework Optimizer
3
+ *
4
+ * Provides framework-specific optimizations and best practices
5
+ *
6
+ * @packageDocumentation
7
+ * @module design/framework-optimizer
8
+ *
9
+ * @see REQ-DES-002 - Framework Optimization
10
+ * @see Article III - Design Validation
11
+ */
12
+ /**
13
+ * Framework definitions
14
+ */
15
+ export const FRAMEWORKS = {
16
+ react: {
17
+ id: 'react',
18
+ name: 'React',
19
+ category: 'frontend',
20
+ patterns: ['component', 'hooks', 'jsx', 'virtual-dom'],
21
+ detectionPatterns: ['import.*react', 'useState|useEffect|useCallback', 'React\\.Component'],
22
+ bestPractices: [
23
+ {
24
+ id: 'react-memo',
25
+ name: 'Use React.memo for expensive components',
26
+ description: 'Wrap expensive components with React.memo to prevent unnecessary re-renders',
27
+ rationale: 'Improves performance by avoiding re-renders when props haven\'t changed',
28
+ priority: 'high',
29
+ },
30
+ {
31
+ id: 'react-keys',
32
+ name: 'Use stable keys in lists',
33
+ description: 'Use unique, stable IDs as keys instead of array indices',
34
+ rationale: 'Prevents reconciliation issues and improves performance',
35
+ priority: 'high',
36
+ },
37
+ {
38
+ id: 'react-hooks-deps',
39
+ name: 'Correct dependency arrays',
40
+ description: 'Include all dependencies in useEffect, useCallback, useMemo',
41
+ rationale: 'Prevents stale closures and unexpected behavior',
42
+ priority: 'high',
43
+ },
44
+ {
45
+ id: 'react-suspense',
46
+ name: 'Use Suspense for code splitting',
47
+ description: 'Implement React.lazy and Suspense for large components',
48
+ rationale: 'Reduces initial bundle size and improves loading performance',
49
+ priority: 'medium',
50
+ },
51
+ ],
52
+ antiPatterns: [
53
+ {
54
+ id: 'react-inline-func',
55
+ name: 'Inline function in render',
56
+ description: 'Creating new function references in render causes unnecessary re-renders',
57
+ detection: /onClick=\{\s*\(\)\s*=>/,
58
+ severity: 'medium',
59
+ fix: 'Use useCallback or define handler outside render',
60
+ },
61
+ {
62
+ id: 'react-index-key',
63
+ name: 'Using index as key',
64
+ description: 'Using array index as key can cause rendering issues',
65
+ detection: /key=\{(?:index|i|idx)\}/,
66
+ severity: 'medium',
67
+ fix: 'Use unique item IDs as keys',
68
+ },
69
+ {
70
+ id: 'react-direct-state',
71
+ name: 'Direct state mutation',
72
+ description: 'Mutating state directly instead of using setState',
73
+ detection: /this\.state\.\w+\s*=/,
74
+ severity: 'high',
75
+ fix: 'Use setState or useState setter function',
76
+ },
77
+ ],
78
+ },
79
+ vue: {
80
+ id: 'vue',
81
+ name: 'Vue.js',
82
+ category: 'frontend',
83
+ patterns: ['component', 'reactive', 'single-file-component', 'composition-api'],
84
+ detectionPatterns: ['import.*vue', 'defineComponent', 'ref\\(|reactive\\(', '\\.vue$'],
85
+ bestPractices: [
86
+ {
87
+ id: 'vue-composition',
88
+ name: 'Use Composition API',
89
+ description: 'Prefer Composition API for complex component logic',
90
+ rationale: 'Better code organization and TypeScript support',
91
+ priority: 'medium',
92
+ },
93
+ {
94
+ id: 'vue-computed',
95
+ name: 'Use computed for derived state',
96
+ description: 'Use computed properties instead of methods for derived values',
97
+ rationale: 'Caching improves performance for expensive calculations',
98
+ priority: 'high',
99
+ },
100
+ ],
101
+ antiPatterns: [
102
+ {
103
+ id: 'vue-v-if-v-for',
104
+ name: 'v-if with v-for',
105
+ description: 'Using v-if and v-for on the same element',
106
+ detection: /v-for.*v-if|v-if.*v-for/,
107
+ severity: 'high',
108
+ fix: 'Use computed property to filter list before rendering',
109
+ },
110
+ ],
111
+ },
112
+ express: {
113
+ id: 'express',
114
+ name: 'Express.js',
115
+ category: 'backend',
116
+ patterns: ['middleware', 'routing', 'rest-api'],
117
+ detectionPatterns: ['require.*express|import.*express', 'app\\.get|app\\.post|app\\.use'],
118
+ bestPractices: [
119
+ {
120
+ id: 'express-helmet',
121
+ name: 'Use Helmet for security',
122
+ description: 'Add Helmet middleware for security headers',
123
+ rationale: 'Protects against common web vulnerabilities',
124
+ priority: 'high',
125
+ },
126
+ {
127
+ id: 'express-error-handler',
128
+ name: 'Centralized error handling',
129
+ description: 'Implement error handling middleware',
130
+ rationale: 'Consistent error responses and logging',
131
+ priority: 'high',
132
+ },
133
+ {
134
+ id: 'express-validation',
135
+ name: 'Request validation',
136
+ description: 'Validate request body, params, and query',
137
+ rationale: 'Prevents invalid data and security issues',
138
+ priority: 'high',
139
+ },
140
+ ],
141
+ antiPatterns: [
142
+ {
143
+ id: 'express-sync-code',
144
+ name: 'Synchronous blocking code',
145
+ description: 'Using synchronous operations in routes',
146
+ detection: /readFileSync|writeFileSync|execSync/,
147
+ severity: 'high',
148
+ fix: 'Use async alternatives',
149
+ },
150
+ {
151
+ id: 'express-uncaught',
152
+ name: 'Uncaught async errors',
153
+ description: 'Async route handlers without try-catch or error middleware',
154
+ detection: /async.*\(req.*res.*\)\s*=>\s*\{(?!.*try)/,
155
+ severity: 'high',
156
+ fix: 'Wrap async handlers with try-catch or use express-async-errors',
157
+ },
158
+ ],
159
+ },
160
+ nestjs: {
161
+ id: 'nestjs',
162
+ name: 'NestJS',
163
+ category: 'backend',
164
+ patterns: ['dependency-injection', 'decorator', 'module', 'controller'],
165
+ detectionPatterns: ['@nestjs', '@Module|@Controller|@Injectable', 'NestFactory'],
166
+ bestPractices: [
167
+ {
168
+ id: 'nest-dto',
169
+ name: 'Use DTOs for validation',
170
+ description: 'Define DTOs with class-validator decorators',
171
+ rationale: 'Type-safe validation and documentation',
172
+ priority: 'high',
173
+ },
174
+ {
175
+ id: 'nest-guards',
176
+ name: 'Use Guards for authorization',
177
+ description: 'Implement Guards instead of inline auth checks',
178
+ rationale: 'Separation of concerns and reusability',
179
+ priority: 'high',
180
+ },
181
+ {
182
+ id: 'nest-interceptors',
183
+ name: 'Use Interceptors for cross-cutting concerns',
184
+ description: 'Implement interceptors for logging, caching, transformation',
185
+ rationale: 'AOP-style code organization',
186
+ priority: 'medium',
187
+ },
188
+ ],
189
+ antiPatterns: [
190
+ {
191
+ id: 'nest-circular-dep',
192
+ name: 'Circular dependency',
193
+ description: 'Modules or services depending on each other',
194
+ detection: /forwardRef/,
195
+ severity: 'medium',
196
+ fix: 'Refactor to remove circular dependency or use forwardRef carefully',
197
+ },
198
+ ],
199
+ },
200
+ nextjs: {
201
+ id: 'nextjs',
202
+ name: 'Next.js',
203
+ category: 'fullstack',
204
+ patterns: ['ssr', 'ssg', 'api-routes', 'file-routing'],
205
+ detectionPatterns: ['next\\/|from.*next', 'getServerSideProps|getStaticProps', 'pages\\/|app\\/'],
206
+ bestPractices: [
207
+ {
208
+ id: 'next-image',
209
+ name: 'Use Next Image component',
210
+ description: 'Use next/image for optimized images',
211
+ rationale: 'Automatic image optimization and lazy loading',
212
+ priority: 'high',
213
+ },
214
+ {
215
+ id: 'next-data-fetching',
216
+ name: 'Choose correct data fetching',
217
+ description: 'Use getStaticProps for static, getServerSideProps for dynamic',
218
+ rationale: 'Optimal performance based on data requirements',
219
+ priority: 'high',
220
+ },
221
+ {
222
+ id: 'next-link',
223
+ name: 'Use Next Link for navigation',
224
+ description: 'Use next/link instead of anchor tags',
225
+ rationale: 'Client-side navigation with prefetching',
226
+ priority: 'medium',
227
+ },
228
+ ],
229
+ antiPatterns: [
230
+ {
231
+ id: 'next-client-only',
232
+ name: 'Client-only code in pages',
233
+ description: 'Using browser APIs without checking environment',
234
+ detection: /window\.|document\./,
235
+ severity: 'medium',
236
+ fix: 'Check typeof window !== "undefined" or use useEffect',
237
+ },
238
+ ],
239
+ },
240
+ node: {
241
+ id: 'node',
242
+ name: 'Node.js',
243
+ category: 'runtime',
244
+ patterns: ['event-loop', 'streams', 'modules'],
245
+ detectionPatterns: ['require\\(|import\\s+', 'process\\.', 'Buffer|Stream'],
246
+ bestPractices: [
247
+ {
248
+ id: 'node-async',
249
+ name: 'Use async/await',
250
+ description: 'Prefer async/await over callbacks',
251
+ rationale: 'Cleaner code and better error handling',
252
+ priority: 'high',
253
+ },
254
+ {
255
+ id: 'node-streams',
256
+ name: 'Use streams for large data',
257
+ description: 'Process large files with streams',
258
+ rationale: 'Memory efficiency for large data',
259
+ priority: 'medium',
260
+ },
261
+ {
262
+ id: 'node-env-vars',
263
+ name: 'Use environment variables',
264
+ description: 'Store configuration in environment variables',
265
+ rationale: 'Security and deployment flexibility',
266
+ priority: 'high',
267
+ },
268
+ ],
269
+ antiPatterns: [
270
+ {
271
+ id: 'node-callback-hell',
272
+ name: 'Callback hell',
273
+ description: 'Deeply nested callbacks',
274
+ detection: /\)\s*=>\s*\{[^}]*\)\s*=>\s*\{[^}]*\)\s*=>/,
275
+ severity: 'medium',
276
+ fix: 'Use async/await or Promises',
277
+ },
278
+ {
279
+ id: 'node-sync-io',
280
+ name: 'Synchronous I/O',
281
+ description: 'Using synchronous I/O operations',
282
+ detection: /Sync\(/,
283
+ severity: 'high',
284
+ fix: 'Use async versions of I/O functions',
285
+ },
286
+ ],
287
+ },
288
+ angular: {
289
+ id: 'angular',
290
+ name: 'Angular',
291
+ category: 'frontend',
292
+ patterns: ['component', 'service', 'module', 'dependency-injection'],
293
+ detectionPatterns: ['@angular', '@Component|@Injectable|@NgModule', 'ngOnInit'],
294
+ bestPractices: [],
295
+ antiPatterns: [],
296
+ },
297
+ fastify: {
298
+ id: 'fastify',
299
+ name: 'Fastify',
300
+ category: 'backend',
301
+ patterns: ['plugin', 'schema-validation', 'hooks'],
302
+ detectionPatterns: ['fastify', 'fastify\\.register|fastify\\.route'],
303
+ bestPractices: [],
304
+ antiPatterns: [],
305
+ },
306
+ nuxt: {
307
+ id: 'nuxt',
308
+ name: 'Nuxt.js',
309
+ category: 'fullstack',
310
+ patterns: ['ssr', 'auto-imports', 'file-routing'],
311
+ detectionPatterns: ['nuxt', 'useNuxtApp|useFetch'],
312
+ bestPractices: [],
313
+ antiPatterns: [],
314
+ },
315
+ svelte: {
316
+ id: 'svelte',
317
+ name: 'Svelte',
318
+ category: 'frontend',
319
+ patterns: ['reactive', 'compile-time', 'stores'],
320
+ detectionPatterns: ['\\.svelte$', '\\$:', 'svelte/store'],
321
+ bestPractices: [],
322
+ antiPatterns: [],
323
+ },
324
+ generic: {
325
+ id: 'generic',
326
+ name: 'Generic TypeScript/JavaScript',
327
+ category: 'runtime',
328
+ patterns: ['modules', 'classes', 'async'],
329
+ detectionPatterns: [],
330
+ bestPractices: [
331
+ {
332
+ id: 'gen-error-handling',
333
+ name: 'Proper error handling',
334
+ description: 'Use try-catch for async operations',
335
+ rationale: 'Prevents unhandled rejections',
336
+ priority: 'high',
337
+ },
338
+ {
339
+ id: 'gen-typing',
340
+ name: 'Use TypeScript types',
341
+ description: 'Define interfaces and types for all data',
342
+ rationale: 'Type safety and documentation',
343
+ priority: 'high',
344
+ },
345
+ ],
346
+ antiPatterns: [
347
+ {
348
+ id: 'gen-any',
349
+ name: 'Using any type',
350
+ description: 'Excessive use of any type',
351
+ detection: /:\s*any\b/,
352
+ severity: 'medium',
353
+ fix: 'Define proper types or use unknown',
354
+ },
355
+ ],
356
+ },
357
+ };
358
+ /**
359
+ * Default configuration
360
+ */
361
+ export const DEFAULT_OPTIMIZER_CONFIG = {
362
+ strictMode: false,
363
+ detectionThreshold: 0.6,
364
+ };
365
+ /**
366
+ * Framework Optimizer
367
+ */
368
+ export class FrameworkOptimizer {
369
+ config;
370
+ frameworks;
371
+ constructor(config) {
372
+ this.config = { ...DEFAULT_OPTIMIZER_CONFIG, ...config };
373
+ this.frameworks = new Map(Object.entries(FRAMEWORKS));
374
+ // Add custom frameworks
375
+ if (this.config.customFrameworks) {
376
+ for (const fw of this.config.customFrameworks) {
377
+ this.frameworks.set(fw.id, fw);
378
+ }
379
+ }
380
+ }
381
+ /**
382
+ * Detect framework from code
383
+ */
384
+ detectFramework(code) {
385
+ const scores = new Map();
386
+ for (const [id, info] of this.frameworks) {
387
+ let matches = 0;
388
+ for (const pattern of info.detectionPatterns) {
389
+ const regex = new RegExp(pattern, 'i');
390
+ if (regex.test(code)) {
391
+ matches++;
392
+ }
393
+ }
394
+ if (matches > 0) {
395
+ const confidence = matches / info.detectionPatterns.length;
396
+ scores.set(id, confidence);
397
+ }
398
+ }
399
+ // Find best match
400
+ let bestFramework = null;
401
+ let bestConfidence = 0;
402
+ for (const [id, confidence] of scores) {
403
+ if (confidence > bestConfidence) {
404
+ bestConfidence = confidence;
405
+ bestFramework = id;
406
+ }
407
+ }
408
+ if (bestFramework && bestConfidence >= this.config.detectionThreshold) {
409
+ return { framework: bestFramework, confidence: bestConfidence };
410
+ }
411
+ return null;
412
+ }
413
+ /**
414
+ * Analyze code for framework-specific issues
415
+ */
416
+ analyze(code, framework) {
417
+ // Detect framework if not provided
418
+ let detectedFramework = framework;
419
+ let confidence = 1.0;
420
+ if (!detectedFramework) {
421
+ const detection = this.detectFramework(code);
422
+ if (detection) {
423
+ detectedFramework = detection.framework;
424
+ confidence = detection.confidence;
425
+ }
426
+ else {
427
+ detectedFramework = 'generic';
428
+ confidence = 0.5;
429
+ }
430
+ }
431
+ const frameworkInfo = this.frameworks.get(detectedFramework);
432
+ // Find anti-patterns
433
+ const antiPatternsFound = this.findAntiPatterns(code, frameworkInfo);
434
+ // Check best practices
435
+ const missingBestPractices = this.checkBestPractices(code, frameworkInfo);
436
+ // Generate suggestions
437
+ const suggestions = this.generateSuggestions(frameworkInfo, antiPatternsFound, missingBestPractices);
438
+ // Calculate score
439
+ const score = this.calculateScore(antiPatternsFound, missingBestPractices);
440
+ return {
441
+ framework: frameworkInfo,
442
+ confidence,
443
+ antiPatternsFound,
444
+ missingBestPractices,
445
+ suggestions,
446
+ score,
447
+ };
448
+ }
449
+ /**
450
+ * Find anti-patterns in code
451
+ */
452
+ findAntiPatterns(code, framework) {
453
+ const matches = [];
454
+ for (const antiPattern of framework.antiPatterns) {
455
+ const regex = typeof antiPattern.detection === 'string'
456
+ ? new RegExp(antiPattern.detection, 'gi')
457
+ : antiPattern.detection;
458
+ let match;
459
+ while ((match = regex.exec(code)) !== null) {
460
+ matches.push({
461
+ antiPattern,
462
+ location: `Position ${match.index}`,
463
+ matchedText: match[0].substring(0, 50),
464
+ });
465
+ }
466
+ }
467
+ return matches;
468
+ }
469
+ /**
470
+ * Check for missing best practices
471
+ */
472
+ checkBestPractices(code, framework) {
473
+ const missing = [];
474
+ // Simple heuristic checks
475
+ for (const practice of framework.bestPractices) {
476
+ let implemented = false;
477
+ switch (practice.id) {
478
+ case 'react-memo':
479
+ implemented = /React\.memo|memo\(/.test(code);
480
+ break;
481
+ case 'react-suspense':
482
+ implemented = /Suspense|React\.lazy/.test(code);
483
+ break;
484
+ case 'express-helmet':
485
+ implemented = /helmet/.test(code);
486
+ break;
487
+ case 'express-error-handler':
488
+ implemented = /app\.use\([^)]*err[^)]*\)/.test(code);
489
+ break;
490
+ case 'nest-dto':
491
+ implemented = /@IsString|@IsNumber|class-validator/.test(code);
492
+ break;
493
+ case 'next-image':
494
+ implemented = /next\/image|Image.*from.*next/.test(code);
495
+ break;
496
+ default:
497
+ // Cannot determine, assume implemented
498
+ implemented = true;
499
+ }
500
+ if (!implemented && practice.priority === 'high') {
501
+ missing.push(practice);
502
+ }
503
+ }
504
+ return missing;
505
+ }
506
+ /**
507
+ * Generate optimization suggestions
508
+ */
509
+ generateSuggestions(_framework, antiPatterns, missingPractices) {
510
+ const suggestions = [];
511
+ // Suggestions from anti-patterns
512
+ for (const match of antiPatterns) {
513
+ suggestions.push({
514
+ id: match.antiPattern.id,
515
+ category: 'maintainability',
516
+ title: `Fix: ${match.antiPattern.name}`,
517
+ description: match.antiPattern.description,
518
+ priority: match.antiPattern.severity,
519
+ impact: 'Code quality and maintainability',
520
+ implementation: match.antiPattern.fix,
521
+ });
522
+ }
523
+ // Suggestions from missing practices
524
+ for (const practice of missingPractices) {
525
+ suggestions.push({
526
+ id: practice.id,
527
+ category: practice.id.includes('security') ? 'security' : 'performance',
528
+ title: `Implement: ${practice.name}`,
529
+ description: practice.description,
530
+ priority: practice.priority,
531
+ impact: practice.rationale,
532
+ implementation: practice.example ?? 'See framework documentation',
533
+ });
534
+ }
535
+ // Sort by priority
536
+ suggestions.sort((a, b) => {
537
+ const priorityOrder = { high: 0, medium: 1, low: 2 };
538
+ return priorityOrder[a.priority] - priorityOrder[b.priority];
539
+ });
540
+ return suggestions;
541
+ }
542
+ /**
543
+ * Calculate optimization score
544
+ */
545
+ calculateScore(antiPatterns, missingPractices) {
546
+ let score = 100;
547
+ // Deduct for anti-patterns
548
+ for (const match of antiPatterns) {
549
+ const penalty = match.antiPattern.severity === 'high' ? 15
550
+ : match.antiPattern.severity === 'medium' ? 10
551
+ : 5;
552
+ score -= penalty;
553
+ }
554
+ // Deduct for missing practices
555
+ for (const practice of missingPractices) {
556
+ const penalty = practice.priority === 'high' ? 10
557
+ : practice.priority === 'medium' ? 5
558
+ : 2;
559
+ score -= penalty;
560
+ }
561
+ return Math.max(0, score);
562
+ }
563
+ /**
564
+ * Get framework info
565
+ */
566
+ getFrameworkInfo(framework) {
567
+ return this.frameworks.get(framework);
568
+ }
569
+ /**
570
+ * Get all frameworks
571
+ */
572
+ getAllFrameworks() {
573
+ return Array.from(this.frameworks.values());
574
+ }
575
+ /**
576
+ * Get frameworks by category
577
+ */
578
+ getFrameworksByCategory(category) {
579
+ return Array.from(this.frameworks.values())
580
+ .filter((fw) => fw.category === category);
581
+ }
582
+ }
583
+ /**
584
+ * Create framework optimizer instance
585
+ */
586
+ export function createFrameworkOptimizer(config) {
587
+ return new FrameworkOptimizer(config);
588
+ }
589
+ //# sourceMappingURL=framework-optimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-optimizer.js","sourceRoot":"","sources":["../../src/design/framework-optimizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Design module
3
+ *
4
+ * Design validation and optimization tools
5
+ *
6
+ * @packageDocumentation
7
+ * @module design
8
+ */
9
+ export { PatternDetector, createPatternDetector, DESIGN_PATTERNS, DEFAULT_DETECTOR_CONFIG, type DesignPattern, type PatternIndicator, type PatternParticipant, type PatternDetectionResult, type PatternSuggestion, type PatternLocation, type MatchedIndicator, type CodeStructure, type ClassInfo, type FunctionInfo, type RelationshipInfo, type PatternDetectorConfig, } from './pattern-detector.js';
10
+ export * from './solid-validator.js';
11
+ export * from './framework-optimizer.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/design/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,uBAAuB,CAAC;AAI/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Design module
3
+ *
4
+ * Design validation and optimization tools
5
+ *
6
+ * @packageDocumentation
7
+ * @module design
8
+ */
9
+ export { PatternDetector, createPatternDetector, DESIGN_PATTERNS, DEFAULT_DETECTOR_CONFIG, } from './pattern-detector.js';
10
+ // Note: PatternCategory is exported from types module
11
+ export * from './solid-validator.js';
12
+ export * from './framework-optimizer.js';
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/design/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,uBAAuB,GAaxB,MAAM,uBAAuB,CAAC;AAE/B,sDAAsD;AAEtD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC"}