@vibecheckai/cli 2.5.7 → 2.7.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 (159) hide show
  1. package/LICENSE +1 -1
  2. package/dist/bundles/vibecheck-core.js +20 -20
  3. package/dist/commands/secrets-allowlist.js +4 -4
  4. package/dist/commands/secrets-allowlist.js.map +1 -1
  5. package/dist/commands/ship-consolidated.js +193 -193
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +5 -5
  8. package/dist/index.js.map +1 -1
  9. package/dist/init/ci-generator.d.ts +2 -2
  10. package/dist/init/hooks-installer.d.ts +2 -2
  11. package/dist/init/index.d.ts +1 -1
  12. package/dist/init/index.d.ts.map +1 -1
  13. package/dist/init/index.js +2 -2
  14. package/dist/init/index.js.map +1 -1
  15. package/dist/init/templates.d.ts +6 -285
  16. package/dist/init/templates.d.ts.map +1 -1
  17. package/dist/init/templates.js +2 -3
  18. package/dist/init/templates.js.map +1 -1
  19. package/dist/runtime/json-output.d.ts +2 -2
  20. package/package.json +11 -3
  21. package/dist/bundles/guardrail-core.js +0 -25799
  22. package/dist/bundles/guardrail-security.js +0 -208687
  23. package/dist/bundles/guardrail-ship.js +0 -2318
  24. package/dist/commands/autopilot-decision.d.ts +0 -24
  25. package/dist/commands/autopilot-decision.d.ts.map +0 -1
  26. package/dist/commands/autopilot-decision.js +0 -304
  27. package/dist/commands/autopilot-decision.js.map +0 -1
  28. package/dist/commands/autopilot.d.ts +0 -33
  29. package/dist/commands/autopilot.d.ts.map +0 -1
  30. package/dist/commands/autopilot.js +0 -1539
  31. package/dist/commands/autopilot.js.map +0 -1
  32. package/dist/commands/context.d.ts +0 -8
  33. package/dist/commands/context.d.ts.map +0 -1
  34. package/dist/commands/context.js +0 -340
  35. package/dist/commands/context.js.map +0 -1
  36. package/dist/commands/debug.d.ts +0 -78
  37. package/dist/commands/debug.d.ts.map +0 -1
  38. package/dist/commands/debug.js +0 -381
  39. package/dist/commands/debug.js.map +0 -1
  40. package/dist/commands/preview.d.ts +0 -54
  41. package/dist/commands/preview.d.ts.map +0 -1
  42. package/dist/commands/preview.js +0 -352
  43. package/dist/commands/preview.js.map +0 -1
  44. package/dist/commands/quality/check.d.ts +0 -31
  45. package/dist/commands/quality/check.d.ts.map +0 -1
  46. package/dist/commands/quality/check.js +0 -242
  47. package/dist/commands/quality/check.js.map +0 -1
  48. package/dist/commands/quality/index.d.ts +0 -8
  49. package/dist/commands/quality/index.d.ts.map +0 -1
  50. package/dist/commands/quality/index.js +0 -14
  51. package/dist/commands/quality/index.js.map +0 -1
  52. package/dist/commands/quality/setup-quality.d.ts +0 -23
  53. package/dist/commands/quality/setup-quality.d.ts.map +0 -1
  54. package/dist/commands/quality/setup-quality.js +0 -452
  55. package/dist/commands/quality/setup-quality.js.map +0 -1
  56. package/dist/commands/quality/tidy.d.ts +0 -41
  57. package/dist/commands/quality/tidy.d.ts.map +0 -1
  58. package/dist/commands/quality/tidy.js +0 -466
  59. package/dist/commands/quality/tidy.js.map +0 -1
  60. package/dist/commands/quality/utils.d.ts +0 -73
  61. package/dist/commands/quality/utils.d.ts.map +0 -1
  62. package/dist/commands/quality/utils.js +0 -158
  63. package/dist/commands/quality/utils.js.map +0 -1
  64. package/dist/fix/analytics.d.ts +0 -121
  65. package/dist/fix/analytics.d.ts.map +0 -1
  66. package/dist/fix/analytics.js +0 -289
  67. package/dist/fix/analytics.js.map +0 -1
  68. package/dist/fix/audit.d.ts +0 -61
  69. package/dist/fix/audit.d.ts.map +0 -1
  70. package/dist/fix/audit.js +0 -149
  71. package/dist/fix/audit.js.map +0 -1
  72. package/dist/fix/config.d.ts +0 -78
  73. package/dist/fix/config.d.ts.map +0 -1
  74. package/dist/fix/config.js +0 -200
  75. package/dist/fix/config.js.map +0 -1
  76. package/dist/fix/impact.d.ts +0 -74
  77. package/dist/fix/impact.d.ts.map +0 -1
  78. package/dist/fix/impact.js +0 -281
  79. package/dist/fix/impact.js.map +0 -1
  80. package/dist/fix/learning.d.ts +0 -109
  81. package/dist/fix/learning.d.ts.map +0 -1
  82. package/dist/fix/learning.js +0 -296
  83. package/dist/fix/learning.js.map +0 -1
  84. package/dist/fix/metrics.d.ts +0 -106
  85. package/dist/fix/metrics.d.ts.map +0 -1
  86. package/dist/fix/metrics.js +0 -138
  87. package/dist/fix/metrics.js.map +0 -1
  88. package/dist/fix/parallel.d.ts +0 -69
  89. package/dist/fix/parallel.d.ts.map +0 -1
  90. package/dist/fix/parallel.js +0 -203
  91. package/dist/fix/parallel.js.map +0 -1
  92. package/dist/fix/report.d.ts +0 -40
  93. package/dist/fix/report.d.ts.map +0 -1
  94. package/dist/fix/report.js +0 -212
  95. package/dist/fix/report.js.map +0 -1
  96. package/dist/fix/strategy.d.ts +0 -53
  97. package/dist/fix/strategy.d.ts.map +0 -1
  98. package/dist/fix/strategy.js +0 -143
  99. package/dist/fix/strategy.js.map +0 -1
  100. package/dist/fix/templates.d.ts +0 -58
  101. package/dist/fix/templates.d.ts.map +0 -1
  102. package/dist/fix/templates.js +0 -259
  103. package/dist/fix/templates.js.map +0 -1
  104. package/dist/fix/testing.d.ts +0 -68
  105. package/dist/fix/testing.d.ts.map +0 -1
  106. package/dist/fix/testing.js +0 -245
  107. package/dist/fix/testing.js.map +0 -1
  108. package/dist/fix/validation.d.ts +0 -71
  109. package/dist/fix/validation.d.ts.map +0 -1
  110. package/dist/fix/validation.js +0 -267
  111. package/dist/fix/validation.js.map +0 -1
  112. package/dist/fix/visualization.d.ts +0 -73
  113. package/dist/fix/visualization.d.ts.map +0 -1
  114. package/dist/fix/visualization.js +0 -243
  115. package/dist/fix/visualization.js.map +0 -1
  116. package/dist/runtime/cli-errors.d.ts +0 -38
  117. package/dist/runtime/cli-errors.d.ts.map +0 -1
  118. package/dist/runtime/cli-errors.js +0 -354
  119. package/dist/runtime/cli-errors.js.map +0 -1
  120. package/dist/runtime/owner-mode.d.ts +0 -48
  121. package/dist/runtime/owner-mode.d.ts.map +0 -1
  122. package/dist/runtime/owner-mode.js +0 -284
  123. package/dist/runtime/owner-mode.js.map +0 -1
  124. package/dist/scanner/index.d.ts +0 -8
  125. package/dist/scanner/index.d.ts.map +0 -1
  126. package/dist/scanner/index.js +0 -15
  127. package/dist/scanner/index.js.map +0 -1
  128. package/dist/scanner/placeholder-detector.d.ts +0 -56
  129. package/dist/scanner/placeholder-detector.d.ts.map +0 -1
  130. package/dist/scanner/placeholder-detector.js +0 -220
  131. package/dist/scanner/placeholder-detector.js.map +0 -1
  132. package/dist/scanner/route-detector.d.ts +0 -100
  133. package/dist/scanner/route-detector.d.ts.map +0 -1
  134. package/dist/scanner/route-detector.js +0 -455
  135. package/dist/scanner/route-detector.js.map +0 -1
  136. package/dist/scanner/scoring.d.ts +0 -67
  137. package/dist/scanner/scoring.d.ts.map +0 -1
  138. package/dist/scanner/scoring.js +0 -284
  139. package/dist/scanner/scoring.js.map +0 -1
  140. package/dist/ship-baseline.d.ts +0 -56
  141. package/dist/ship-baseline.d.ts.map +0 -1
  142. package/dist/ship-baseline.js +0 -194
  143. package/dist/ship-baseline.js.map +0 -1
  144. package/dist/ship-config.d.ts +0 -91
  145. package/dist/ship-config.d.ts.map +0 -1
  146. package/dist/ship-config.js +0 -133
  147. package/dist/ship-config.js.map +0 -1
  148. package/dist/ship-data-loader.d.ts +0 -70
  149. package/dist/ship-data-loader.d.ts.map +0 -1
  150. package/dist/ship-data-loader.js +0 -301
  151. package/dist/ship-data-loader.js.map +0 -1
  152. package/dist/utils/ai-helpers.d.ts +0 -72
  153. package/dist/utils/ai-helpers.d.ts.map +0 -1
  154. package/dist/utils/ai-helpers.js +0 -339
  155. package/dist/utils/ai-helpers.js.map +0 -1
  156. package/dist/utils/validation.d.ts +0 -34
  157. package/dist/utils/validation.d.ts.map +0 -1
  158. package/dist/utils/validation.js +0 -160
  159. package/dist/utils/validation.js.map +0 -1
@@ -1,455 +0,0 @@
1
- "use strict";
2
- /**
3
- * Route Detector for Client-Side Routers
4
- *
5
- * Detects routes in various routing frameworks:
6
- * - Next.js/Remix (file-based routing)
7
- * - React Router (component-based)
8
- * - Wouter (lightweight router)
9
- * - Generic route inference mode
10
- */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || (function () {
28
- var ownKeys = function(o) {
29
- ownKeys = Object.getOwnPropertyNames || function (o) {
30
- var ar = [];
31
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
- return ar;
33
- };
34
- return ownKeys(o);
35
- };
36
- return function (mod) {
37
- if (mod && mod.__esModule) return mod;
38
- var result = {};
39
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
- __setModuleDefault(result, mod);
41
- return result;
42
- };
43
- })();
44
- Object.defineProperty(exports, "__esModule", { value: true });
45
- exports.RouteDetector = void 0;
46
- const fs = __importStar(require("fs"));
47
- const path = __importStar(require("path"));
48
- class RouteDetector {
49
- constructor(config) {
50
- this.config = config;
51
- }
52
- /**
53
- * Detect routes in the project
54
- */
55
- async detectRoutes() {
56
- // Try framework-specific detection first
57
- const frameworkResult = await this.detectFrameworkRoutes();
58
- if (frameworkResult.routes.length > 0) {
59
- return frameworkResult;
60
- }
61
- // Fall back to generic route inference
62
- const genericResult = await this.detectGenericRoutes();
63
- if (genericResult.routes.length > 0) {
64
- return genericResult;
65
- }
66
- // If we still have no routes, check for route hints
67
- if (this.config.routeHints && this.config.routeHints.length > 0) {
68
- return {
69
- routes: this.config.routeHints.map((hint) => ({
70
- path: hint.path,
71
- file: hint.file,
72
- source: 'config',
73
- })),
74
- framework: this.config.framework || 'unknown',
75
- confidence: 'medium',
76
- message: 'Routes detected from configuration hints',
77
- };
78
- }
79
- // No routes found - provide helpful message
80
- return {
81
- routes: [],
82
- framework: this.config.framework || 'unknown',
83
- confidence: 'low',
84
- message: 'Route system not recognized. Enable route hints in .guardrailrc',
85
- hints: [
86
- 'Add route hints to .guardrailrc configuration file',
87
- 'Example config: { "routes": [{ "path": "/home", "file": "src/pages/home.tsx" }] }',
88
- 'Or use framework-specific route detection for Next.js, Remix, React Router, or Wouter',
89
- ],
90
- };
91
- }
92
- /**
93
- * Detect routes based on detected framework
94
- */
95
- async detectFrameworkRoutes() {
96
- const framework = this.config.framework?.toLowerCase() || '';
97
- if (framework.includes('next')) {
98
- return this.detectNextJSRoutes();
99
- }
100
- if (framework.includes('remix')) {
101
- return this.detectRemixRoutes();
102
- }
103
- // React Router or Wouter - detect component-based routes
104
- const componentResult = await this.detectComponentRoutes();
105
- if (componentResult.routes.length > 0) {
106
- return componentResult;
107
- }
108
- return {
109
- routes: [],
110
- framework: framework || 'unknown',
111
- confidence: 'low',
112
- };
113
- }
114
- /**
115
- * Detect Next.js file-based routes
116
- */
117
- async detectNextJSRoutes() {
118
- const routes = [];
119
- const pagesDir = path.join(this.config.projectPath, 'pages');
120
- const appDir = path.join(this.config.projectPath, 'app');
121
- if (fs.existsSync(pagesDir)) {
122
- // Next.js pages router
123
- const pages = await this.findRouteFiles(pagesDir);
124
- routes.push(...pages);
125
- }
126
- else if (fs.existsSync(appDir)) {
127
- // Next.js app router
128
- const pages = await this.findRouteFiles(appDir);
129
- routes.push(...pages);
130
- }
131
- return {
132
- routes,
133
- framework: 'nextjs',
134
- confidence: routes.length > 0 ? 'high' : 'low',
135
- };
136
- }
137
- /**
138
- * Detect Remix routes
139
- */
140
- async detectRemixRoutes() {
141
- const routes = [];
142
- const routesDir = path.join(this.config.projectPath, 'app', 'routes');
143
- if (fs.existsSync(routesDir)) {
144
- const files = await this.findRouteFiles(routesDir);
145
- routes.push(...files);
146
- }
147
- return {
148
- routes,
149
- framework: 'remix',
150
- confidence: routes.length > 0 ? 'high' : 'low',
151
- };
152
- }
153
- /**
154
- * Detect component-based routes (React Router, Wouter)
155
- */
156
- async detectComponentRoutes() {
157
- const routes = [];
158
- const srcFiles = await this.findSourceFiles(this.config.projectPath);
159
- // Patterns for React Router
160
- const reactRouterPatterns = [
161
- /<Route\s+path=["']([^"']+)["']/gi,
162
- /path:\s*["']([^"']+)["']/gi,
163
- /route\(["']([^"']+)["']/gi,
164
- ];
165
- // Patterns for Wouter
166
- const wouterPatterns = [
167
- /<Route\s+path=["']([^"']+)["']/gi,
168
- /route\(["']([^"']+)["']/gi,
169
- /useRoute\(["']([^"']+)["']/gi,
170
- ];
171
- for (const file of srcFiles.slice(0, 100)) {
172
- // Limit for performance
173
- try {
174
- const content = await fs.promises.readFile(file, 'utf-8');
175
- const lines = content.split('\n');
176
- // Check for React Router patterns
177
- for (let i = 0; i < lines.length; i++) {
178
- const line = lines[i];
179
- for (const pattern of [...reactRouterPatterns, ...wouterPatterns]) {
180
- let match;
181
- pattern.lastIndex = 0;
182
- while ((match = pattern.exec(line)) !== null) {
183
- const routePath = match[1];
184
- if (routePath) {
185
- routes.push({
186
- path: routePath,
187
- file: path.relative(this.config.projectPath, file),
188
- line: i + 1,
189
- source: 'component',
190
- dynamic: routePath.includes(':') || routePath.includes('*'),
191
- params: this.extractRouteParams(routePath),
192
- });
193
- }
194
- }
195
- }
196
- }
197
- // Check for route arrays/configs
198
- const routeArrayMatch = content.match(/routes\s*[:=]\s*\[([\s\S]*?)\]/);
199
- if (routeArrayMatch) {
200
- const routeConfigs = this.parseRouteArray(routeArrayMatch[1]);
201
- for (const routeConfig of routeConfigs) {
202
- routes.push({
203
- ...routeConfig,
204
- file: path.relative(this.config.projectPath, file),
205
- source: 'config',
206
- });
207
- }
208
- }
209
- }
210
- catch (e) {
211
- // Skip unreadable files
212
- }
213
- }
214
- // Determine framework based on imports
215
- const framework = await this.detectRouterFramework();
216
- return {
217
- routes: this.deduplicateRoutes(routes),
218
- framework: framework || 'react-router',
219
- confidence: routes.length > 0 ? 'medium' : 'low',
220
- };
221
- }
222
- /**
223
- * Generic route inference mode
224
- */
225
- async detectGenericRoutes() {
226
- const routes = [];
227
- const srcFiles = await this.findSourceFiles(this.config.projectPath);
228
- // Look for common route patterns
229
- const routePatterns = [
230
- /path\s*[:=]\s*["']([^"']+)["']/gi,
231
- /route\s*[:=]\s*["']([^"']+)["']/gi,
232
- /["']([\/][^"']+)["']/g, // Path-like strings starting with /
233
- ];
234
- for (const file of srcFiles.slice(0, 50)) {
235
- // Limit for performance
236
- try {
237
- const content = await fs.promises.readFile(file, 'utf-8');
238
- const lines = content.split('\n');
239
- for (let i = 0; i < lines.length; i++) {
240
- const line = lines[i];
241
- for (const pattern of routePatterns) {
242
- let match;
243
- pattern.lastIndex = 0;
244
- while ((match = pattern.exec(line)) !== null) {
245
- const candidate = match[1];
246
- if (this.looksLikeRoute(candidate)) {
247
- routes.push({
248
- path: candidate,
249
- file: path.relative(this.config.projectPath, file),
250
- line: i + 1,
251
- source: 'inferred',
252
- dynamic: candidate.includes(':'),
253
- });
254
- }
255
- }
256
- }
257
- }
258
- }
259
- catch (e) {
260
- // Skip unreadable files
261
- }
262
- }
263
- return {
264
- routes: this.deduplicateRoutes(routes),
265
- framework: 'generic',
266
- confidence: 'low',
267
- };
268
- }
269
- /**
270
- * Detect router framework from dependencies
271
- */
272
- async detectRouterFramework() {
273
- const packageJsonPath = path.join(this.config.projectPath, 'package.json');
274
- if (!fs.existsSync(packageJsonPath))
275
- return null;
276
- try {
277
- const packageJson = JSON.parse(await fs.promises.readFile(packageJsonPath, 'utf-8'));
278
- const deps = {
279
- ...packageJson.dependencies,
280
- ...packageJson.devDependencies,
281
- };
282
- if (deps.wouter)
283
- return 'wouter';
284
- if (deps['react-router'] || deps['react-router-dom']) {
285
- return 'react-router';
286
- }
287
- if (deps.next)
288
- return 'nextjs';
289
- if (deps.remix)
290
- return 'remix';
291
- }
292
- catch (e) {
293
- // Ignore
294
- }
295
- return null;
296
- }
297
- /**
298
- * Check if a string looks like a route path
299
- */
300
- looksLikeRoute(candidate) {
301
- // Must start with / and be reasonable length
302
- if (!candidate.startsWith('/') || candidate.length < 2)
303
- return false;
304
- // Common non-route patterns to exclude
305
- const excludePatterns = [
306
- /^\/node_modules\//,
307
- /^\/\./,
308
- /\.(js|ts|tsx|jsx|json|md|css)$/,
309
- /^\/src\//,
310
- /^\/public\//,
311
- ];
312
- return !excludePatterns.some((pattern) => pattern.test(candidate));
313
- }
314
- /**
315
- * Extract route parameters from path
316
- */
317
- extractRouteParams(routePath) {
318
- const params = [];
319
- const paramPattern = /:(\w+)/g;
320
- let match;
321
- while ((match = paramPattern.exec(routePath)) !== null) {
322
- params.push(match[1]);
323
- }
324
- return params;
325
- }
326
- /**
327
- * Parse route array from config
328
- */
329
- parseRouteArray(content) {
330
- const routes = [];
331
- // Simple parsing - look for path: "..." patterns
332
- const pathPattern = /path\s*:\s*["']([^"']+)["']/gi;
333
- let match;
334
- while ((match = pathPattern.exec(content)) !== null) {
335
- routes.push({
336
- path: match[1],
337
- source: 'config',
338
- dynamic: match[1].includes(':'),
339
- });
340
- }
341
- return routes;
342
- }
343
- /**
344
- * Find route files in directory (for file-based routing)
345
- */
346
- async findRouteFiles(dir) {
347
- const routes = [];
348
- const files = await this.getAllFiles(dir);
349
- for (const file of files) {
350
- const relativePath = path.relative(dir, file);
351
- const routePath = this.filePathToRoute(relativePath);
352
- if (routePath) {
353
- routes.push({
354
- path: routePath,
355
- file: path.relative(this.config.projectPath, file),
356
- source: 'file_based',
357
- dynamic: routePath.includes('[') || routePath.includes(':'),
358
- });
359
- }
360
- }
361
- return routes;
362
- }
363
- /**
364
- * Convert file path to route path
365
- */
366
- filePathToRoute(filePath) {
367
- // Remove extension
368
- let route = filePath.replace(/\.[^/.]+$/, '');
369
- // Handle index files
370
- if (route.endsWith('/index')) {
371
- route = route.slice(0, -6);
372
- }
373
- // Handle Next.js dynamic routes [id].tsx -> /:id
374
- route = route.replace(/\[([^\]]+)\]/g, ':$1');
375
- // Must start with /
376
- if (!route.startsWith('/')) {
377
- route = '/' + route;
378
- }
379
- return route || '/';
380
- }
381
- /**
382
- * Find all source files in project
383
- */
384
- async findSourceFiles(dir) {
385
- const files = [];
386
- const extensions = ['.ts', '.tsx', '.js', '.jsx'];
387
- try {
388
- const entries = await fs.promises.readdir(dir, { withFileTypes: true });
389
- for (const entry of entries) {
390
- const fullPath = path.join(dir, entry.name);
391
- // Skip node_modules, .git, etc.
392
- if (entry.name.startsWith('.') ||
393
- entry.name === 'node_modules' ||
394
- entry.name === 'dist' ||
395
- entry.name === 'build') {
396
- continue;
397
- }
398
- if (entry.isDirectory()) {
399
- const subFiles = await this.findSourceFiles(fullPath);
400
- files.push(...subFiles);
401
- }
402
- else if (entry.isFile()) {
403
- const ext = path.extname(entry.name);
404
- if (extensions.includes(ext)) {
405
- files.push(fullPath);
406
- }
407
- }
408
- }
409
- }
410
- catch (e) {
411
- // Skip unreadable directories
412
- }
413
- return files;
414
- }
415
- /**
416
- * Get all files recursively
417
- */
418
- async getAllFiles(dir) {
419
- const files = [];
420
- try {
421
- const entries = await fs.promises.readdir(dir, { withFileTypes: true });
422
- for (const entry of entries) {
423
- const fullPath = path.join(dir, entry.name);
424
- if (entry.isDirectory()) {
425
- const subFiles = await this.getAllFiles(fullPath);
426
- files.push(...subFiles);
427
- }
428
- else if (entry.isFile()) {
429
- files.push(fullPath);
430
- }
431
- }
432
- }
433
- catch (e) {
434
- // Skip unreadable directories
435
- }
436
- return files;
437
- }
438
- /**
439
- * Deduplicate routes
440
- */
441
- deduplicateRoutes(routes) {
442
- const seen = new Set();
443
- const unique = [];
444
- for (const route of routes) {
445
- const key = `${route.path}:${route.file || ''}`;
446
- if (!seen.has(key)) {
447
- seen.add(key);
448
- unique.push(route);
449
- }
450
- }
451
- return unique;
452
- }
453
- }
454
- exports.RouteDetector = RouteDetector;
455
- //# sourceMappingURL=route-detector.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"route-detector.js","sourceRoot":"","sources":["../../src/scanner/route-detector.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Improved Scoring System
3
- *
4
- * Separates score components for better transparency:
5
- * - Integrity score (routes, links, 404s)
6
- * - Production readiness (placeholders, mocks, TODOs)
7
- * - Security score (secrets, vulnerabilities)
8
- *
9
- * Provides weighted final score that's less punitive
10
- */
11
- export interface ScoreComponent {
12
- name: string;
13
- score: number;
14
- maxScore: number;
15
- weight: number;
16
- details: {
17
- label: string;
18
- value: number;
19
- impact: number;
20
- }[];
21
- }
22
- export interface ScoringResult {
23
- integrity: ScoreComponent;
24
- productionReadiness: ScoreComponent;
25
- security: ScoreComponent;
26
- overall: {
27
- score: number;
28
- maxScore: number;
29
- percentage: number;
30
- grade: string;
31
- };
32
- breakdown: {
33
- category: string;
34
- score: number;
35
- weight: number;
36
- weightedScore: number;
37
- }[];
38
- }
39
- export interface ScoringInputs {
40
- integrity?: {
41
- routes?: number;
42
- deadLinks?: number;
43
- orphanRoutes?: number;
44
- runtime404s?: number;
45
- unresolvedDynamic?: number;
46
- };
47
- productionReadiness?: {
48
- placeholders?: number;
49
- mocks?: number;
50
- todos?: number;
51
- testData?: number;
52
- };
53
- security?: {
54
- secrets?: number;
55
- vulnerabilities?: number;
56
- complianceIssues?: number;
57
- };
58
- }
59
- /**
60
- * Calculate comprehensive score
61
- */
62
- export declare function calculateScore(inputs: ScoringInputs): ScoringResult;
63
- /**
64
- * Format score as text
65
- */
66
- export declare function formatScoreAsText(result: ScoringResult): string;
67
- //# sourceMappingURL=scoring.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../../src/scanner/scoring.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,cAAc,CAAC;IAC1B,mBAAmB,EAAE,cAAc,CAAC;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE;QACT,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,CAAC;KACvB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,mBAAmB,CAAC,EAAE;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AA2ND;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CA+CnE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CA0D/D"}