devcompass 2.5.0 โ†’ 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ๐Ÿงญ DevCompass
2
2
 
3
- **Dependency health checker with ecosystem intelligence and real-time GitHub issue tracking for 500+ popular npm packages**
3
+ **Dependency health checker with ecosystem intelligence and real-time GitHub issue tracking for 500+ popular npm packages. Features parallel processing for 80% faster analysis.**
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/devcompass.svg)](https://www.npmjs.com/package/devcompass)
6
6
  [![npm downloads](https://img.shields.io/npm/dm/devcompass.svg)](https://www.npmjs.com/package/devcompass)
@@ -8,44 +8,46 @@
8
8
 
9
9
  Analyze your JavaScript projects to find unused dependencies, outdated packages, **detect security vulnerabilities**, **monitor GitHub issues in real-time for 500+ packages**, **check bundle sizes**, **verify licenses**, and **automatically fix issues** with a single command. Perfect for **CI/CD pipelines** with JSON output and exit codes.
10
10
 
11
+ > **NEW in v2.6.0:** 80% faster with parallel processing! โšก
11
12
  > **NEW in v2.5.0:** Expanded to 502 packages across 33 categories! ๐ŸŽฏ
12
13
  > **NEW in v2.4.0:** Real-time GitHub issue tracking & predictive warnings! ๐Ÿ”ฎ
13
14
  > **NEW in v2.3.1:** Fixed all security vulnerabilities! Health score: 2.5/10 โ†’ 8/10 ๐Ÿ”’
14
- > **NEW in v2.3:** Security scanning, bundle analysis & license checker! ๐Ÿ”
15
- > **NEW in v2.2:** CI/CD integration with JSON output & smart caching! ๐Ÿš€
15
+ > **NEW in v2.3:** Security scanning, bundle analysis & license checker! ๐Ÿ”
16
16
 
17
- ## ๐ŸŽ‰ Latest Update: v2.5.0
17
+ ## ๐ŸŽ‰ Latest Update: v2.6.0
18
18
 
19
- **500+ package coverage is here!** DevCompass now monitors live GitHub activity across the entire npm ecosystem:
19
+ **80% faster analysis with parallel processing!** DevCompass now checks multiple packages simultaneously:
20
20
 
21
- - ๐ŸŽฏ **502 tracked packages** organized into 33 categories
22
- - ๐ŸŒ **Full ecosystem coverage** - Frontend, backend, build tools, testing, databases, and more
23
- - โšก **Zero performance impact** - Smart filtering only checks installed packages
24
- - ๐Ÿ“Š **Comprehensive monitoring** - React, Vue, Angular, Next.js, Express, and 497+ more
25
- - ๐Ÿ”ง **Framework-agnostic** - Supports all major JavaScript frameworks and tools
21
+ - โšก **Parallel GitHub API requests** - Check 5 packages at once (configurable)
22
+ - ๐Ÿ“Š **Real-time progress tracking** - Live updates showing current package
23
+ - ๐Ÿš€ **80% performance improvement** - 5 packages in ~1s instead of ~5s
24
+ - ๐Ÿ“ˆ **Smart batching** - Respects GitHub rate limits automatically
25
+ - โฑ๏ธ **Performance metrics** - Shows time saved after analysis
26
26
 
27
- **What's tracked:**
28
- - Web Frameworks (25): react, vue, angular, svelte, preact, solid-js, etc.
29
- - Backend Frameworks (20): express, koa, fastify, hapi, nest, strapi, etc.
30
- - Build Tools (25): webpack, vite, rollup, parcel, esbuild, turbopack, etc.
31
- - Testing (25): jest, mocha, vitest, cypress, playwright, storybook, etc.
32
- - And 29 more categories covering the entire JavaScript ecosystem!
27
+ **Performance Comparison:**
28
+ ```
29
+ v2.5.0 (Sequential): 5 packages ร— 1s = ~5 seconds
30
+ v2.6.0 (Parallel): 5 packages รท 5 = ~1 second (80% faster!)
31
+ ```
33
32
 
34
33
  **Example output:**
35
34
  ```
36
- ๐Ÿ”ฎ PREDICTIVE WARNINGS (1)
37
-
38
- Based on recent GitHub activity (502+ packages monitored):
39
-
40
- ๐ŸŸก express
41
- Increased issue activity
42
- 1 issues opened recently
43
- โ†’ Monitor for stability
44
- GitHub: https://github.com/expressjs/express
35
+ โ น Checking GitHub activity (3/5 packages) - express
36
+ โ น Checking GitHub activity (4/5 packages) - webpack
37
+ โ น Checking GitHub activity (5/5 packages) - react
38
+ โœ” Scanned 5 dependencies in project
39
+ โšก GitHub check completed in 1.23s (parallel processing)
45
40
  ```
46
41
 
42
+ **What's tracked:**
43
+ - ๐ŸŽฏ **502 tracked packages** organized into 33 categories
44
+ - ๐ŸŒ **Full ecosystem coverage** - Frontend, backend, build tools, testing, databases
45
+ - โšก **Zero performance impact** - Smart filtering + parallel processing
46
+ - ๐Ÿ“Š **Comprehensive monitoring** - React, Vue, Angular, Next.js, Express, and 497+ more
47
+
47
48
  ## โœจ Features
48
49
 
50
+ - โšก **Parallel Processing** (v2.6) - 80% faster GitHub issue tracking
49
51
  - ๐ŸŽฏ **500+ Package Coverage** (v2.5) - Comprehensive ecosystem monitoring
50
52
  - ๐Ÿ”ฎ **GitHub Issue Tracking** (v2.4) - Real-time monitoring of package health
51
53
  - ๐Ÿ“ˆ **Predictive Warnings** (v2.4) - Detect issues before they're announced
@@ -99,7 +101,7 @@ devcompass analyze --ci
99
101
  devcompass analyze --silent
100
102
  ```
101
103
 
102
- ## ๐Ÿ”ฎ Predictive Warnings (v2.5.0)
104
+ ## ๐Ÿ”ฎ Predictive Warnings (v2.6.0)
103
105
 
104
106
  DevCompass now monitors **real-time GitHub activity for 500+ packages** to detect potential issues before they're officially reported!
105
107
 
@@ -164,15 +166,25 @@ Organized into 33 categories covering the entire JavaScript ecosystem:
164
166
  4. Calculates risk scores
165
167
  5. Provides actionable recommendations
166
168
  6. **Smart filtering:** Only checks packages you've actually installed
169
+ 7. **Parallel processing:** Checks multiple packages simultaneously (v2.6.0)
167
170
 
168
- ### Performance:
171
+ ### Performance (NEW in v2.6.0):
172
+ - **Parallel processing:** Checks 5 packages simultaneously (80% faster!)
169
173
  - **Smart filtering:** Only checks installed packages from your project
170
- - **First run:** ~1 second per installed tracked package
174
+ - **First run:** ~1 second for 5 packages (was ~5s in v2.5.0)
171
175
  - **Cached runs:** ~0.5 seconds (93% faster!)
172
176
  - **Cache duration:** 1 hour
173
177
  - **Zero overhead:** Uninstalled packages aren't checked
174
178
 
175
- > **Performance Example:** If you have 5 tracked packages installed (e.g., react, axios, lodash, express, webpack), DevCompass only checks those 5, not all 502!
179
+ **Performance Benchmarks:**
180
+ | Packages | v2.5.0 | v2.6.0 | Improvement |
181
+ |----------|--------|--------|-------------|
182
+ | 5 | ~5s | ~1s | 80% faster |
183
+ | 10 | ~10s | ~2s | 80% faster |
184
+ | 20 | ~20s | ~4s | 80% faster |
185
+ | 50 | ~50s | ~10s | 80% faster |
186
+
187
+ > **Performance Example:** If you have 5 tracked packages installed (e.g., react, axios, lodash, express, webpack), DevCompass checks all 5 in parallel, completing in ~1 second instead of ~5 seconds!
176
188
 
177
189
  ## ๐Ÿ” Security & Compliance Features
178
190
 
@@ -254,8 +266,9 @@ Detect restrictive licenses that may require legal review!
254
266
 
255
267
  **Full Output:**
256
268
  ```
257
- ๐Ÿ” DevCompass v2.5.0 - Analyzing your project...
269
+ ๐Ÿ” DevCompass v2.6.0 - Analyzing your project...
258
270
  โœ” Scanned 25 dependencies in project
271
+ โšก GitHub check completed in 1.23s (parallel processing)
259
272
 
260
273
  โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”โ”
261
274
 
@@ -336,7 +349,7 @@ devcompass analyze --json
336
349
  **Output:**
337
350
  ```json
338
351
  {
339
- "version": "2.5.0",
352
+ "version": "2.6.0",
340
353
  "timestamp": "2026-04-04T10:30:00.000Z",
341
354
  "summary": {
342
355
  "healthScore": 8.5,
@@ -423,7 +436,7 @@ echo $? # Check exit code
423
436
 
424
437
  DevCompass caches results to improve performance:
425
438
 
426
- - **First run:** ~8 seconds (fetches GitHub + npm data)
439
+ - **First run:** ~2 seconds with parallel processing (fetches GitHub + npm data)
427
440
  - **Cached runs:** ~0.5 seconds (93% faster!)
428
441
  - **Cache duration:** 1 hour
429
442
  - **Cache file:** `.devcompass-cache.json` (auto-gitignored)
@@ -566,7 +579,8 @@ DevCompass tracks **real-world issues** in 500+ popular packages and warns you b
566
579
  2. Matches against curated issues database
567
580
  3. Uses semantic versioning for precise detection
568
581
  4. Checks live GitHub activity for 502+ packages
569
- 5. Shows actionable fix commands
582
+ 5. Uses parallel processing for 80% faster checks (v2.6.0)
583
+ 6. Shows actionable fix commands
570
584
 
571
585
  ## ๐ŸŽฏ What It Detects
572
586
 
@@ -738,7 +752,7 @@ If you encounter a false positive, please [report it](https://github.com/AjayBTh
738
752
  9. **Review major updates** - Always check changelogs before major version bumps
739
753
  10. **Verify before uninstalling** - DevCompass helps identify candidates, but always verify
740
754
  11. **Watch predictive warnings** - Monitor packages with increasing issue activity
741
- 12. **Cache for speed** - First run takes ~8s, cached runs ~0.5s
755
+ 12. **Leverage parallel processing** - First run takes ~2s with v2.6.0 (was ~8s)
742
756
 
743
757
  ## ๐Ÿค Contributing
744
758
 
@@ -834,7 +848,7 @@ Check out DevCompass stats:
834
848
  - [x] ~~GitHub Issues API for real-time issue tracking~~ โœ… **Added in v2.4.0!**
835
849
  - [x] ~~Predictive warnings based on bug activity~~ โœ… **Added in v2.4.0!**
836
850
  - [x] ~~Expand to top 500 npm packages~~ โœ… **Added in v2.5.0!**
837
- - [ ] Performance optimizations with parallel processing (v2.6.0)
851
+ - [x] ~~Performance optimizations with parallel processing~~ โœ… **Added in v2.6.0!**
838
852
  - [ ] Advanced security features with Snyk integration (v2.7.0)
839
853
  - [ ] Enhanced fix command improvements (v2.8.0)
840
854
  - [ ] Dependency graph visualization (v3.0.0)
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "devcompass",
3
- "version": "2.5.0",
4
- "description": "Dependency health checker with ecosystem intelligence and real-time GitHub issue tracking for JavaScript/TypeScript projects. Monitors 500+ popular npm packages.",
3
+ "version": "2.6.0",
4
+ "description": "Dependency health checker with ecosystem intelligence and real-time GitHub issue tracking for 500+ popular npm packages. Features parallel processing for 80% faster analysis.",
5
5
  "main": "src/index.js",
6
6
  "bin": {
7
7
  "devcompass": "./bin/devcompass.js"
@@ -43,7 +43,9 @@
43
43
  "dependency-monitoring",
44
44
  "issue-tracking",
45
45
  "package-health",
46
- "top-500-packages"
46
+ "top-500-packages",
47
+ "parallel-processing",
48
+ "performance-optimization"
47
49
  ],
48
50
  "author": "Ajay Thorat <ajaythorat988@gmail.com>",
49
51
  "license": "MIT",
@@ -604,7 +604,7 @@ async function fetchGitHubIssues(packageName) {
604
604
  const repo = TRACKED_REPOS[packageName];
605
605
 
606
606
  if (!repo) {
607
- return null; // Not tracked
607
+ return null;
608
608
  }
609
609
 
610
610
  try {
@@ -672,7 +672,6 @@ function analyzeIssues(issues, packageName) {
672
672
  const now = Date.now();
673
673
  const day = 24 * 60 * 60 * 1000;
674
674
 
675
- // Count issues by recency
676
675
  const last7Days = issues.filter(i =>
677
676
  (now - new Date(i.created_at).getTime()) < 7 * day
678
677
  ).length;
@@ -681,7 +680,6 @@ function analyzeIssues(issues, packageName) {
681
680
  (now - new Date(i.created_at).getTime()) < 30 * day
682
681
  ).length;
683
682
 
684
- // Detect critical issues (high priority labels)
685
683
  const criticalLabels = ['critical', 'security', 'regression', 'breaking'];
686
684
  const criticalIssues = issues.filter(issue =>
687
685
  issue.labels.some(label =>
@@ -691,7 +689,6 @@ function analyzeIssues(issues, packageName) {
691
689
  )
692
690
  );
693
691
 
694
- // Calculate risk score
695
692
  let riskScore = 0;
696
693
  if (last7Days > 15) riskScore += 3;
697
694
  else if (last7Days > 10) riskScore += 2;
@@ -713,7 +710,7 @@ function analyzeIssues(issues, packageName) {
713
710
  }
714
711
 
715
712
  /**
716
- * Determine trend (increasing/stable/decreasing)
713
+ * Determine trend
717
714
  */
718
715
  function determineTrend(last7Days, last30Days) {
719
716
  const weeklyAverage = last30Days / 4;
@@ -728,9 +725,54 @@ function determineTrend(last7Days, last30Days) {
728
725
  }
729
726
 
730
727
  /**
731
- * Check GitHub issues for multiple packages (OPTIMIZED)
728
+ * Process packages in parallel batches
729
+ * NEW in v2.6.0: Parallel processing for better performance
732
730
  */
733
- async function checkGitHubIssues(packages) {
731
+ async function processBatch(packages, concurrency = 5, onProgress) {
732
+ const results = [];
733
+ const batches = [];
734
+
735
+ // Split into batches
736
+ for (let i = 0; i < packages.length; i += concurrency) {
737
+ batches.push(packages.slice(i, i + concurrency));
738
+ }
739
+
740
+ // Process each batch in parallel
741
+ for (let batchIndex = 0; batchIndex < batches.length; batchIndex++) {
742
+ const batch = batches[batchIndex];
743
+
744
+ // Process batch in parallel
745
+ const batchResults = await Promise.all(
746
+ batch.map(async (packageName) => {
747
+ const result = await fetchGitHubIssues(packageName);
748
+
749
+ // Call progress callback
750
+ if (onProgress) {
751
+ const processed = batchIndex * concurrency + batch.indexOf(packageName) + 1;
752
+ onProgress(processed, packages.length, packageName);
753
+ }
754
+
755
+ return result;
756
+ })
757
+ );
758
+
759
+ results.push(...batchResults.filter(r => r !== null));
760
+
761
+ // Small delay between batches to respect rate limits
762
+ if (batchIndex < batches.length - 1) {
763
+ await new Promise(resolve => setTimeout(resolve, 200));
764
+ }
765
+ }
766
+
767
+ return results;
768
+ }
769
+
770
+ /**
771
+ * Check GitHub issues for multiple packages (OPTIMIZED v2.6.0)
772
+ * Now uses parallel processing for 80% faster execution
773
+ */
774
+ async function checkGitHubIssues(packages, options = {}) {
775
+ const { concurrency = 5, onProgress } = options;
734
776
  const results = [];
735
777
  const packageNames = Object.keys(packages);
736
778
 
@@ -741,17 +783,9 @@ async function checkGitHubIssues(packages) {
741
783
  return results;
742
784
  }
743
785
 
744
- // Process in batches to avoid rate limits
745
- for (const packageName of trackedAndInstalled) {
746
- const result = await fetchGitHubIssues(packageName);
747
-
748
- if (result) {
749
- results.push(result);
750
- }
751
-
752
- // Rate limit: wait 1 second between requests
753
- await new Promise(resolve => setTimeout(resolve, 1000));
754
- }
786
+ // Use parallel processing
787
+ const batchResults = await processBatch(trackedAndInstalled, concurrency, onProgress);
788
+ results.push(...batchResults);
755
789
 
756
790
  return results;
757
791
  }
@@ -764,7 +798,7 @@ function getTrackedPackageCount() {
764
798
  }
765
799
 
766
800
  /**
767
- * Get tracked packages by category (for documentation)
801
+ * Get tracked packages by category
768
802
  */
769
803
  function getTrackedPackagesByCategory() {
770
804
  return {
@@ -3,9 +3,11 @@ const { checkGitHubIssues } = require('./github-tracker');
3
3
 
4
4
  /**
5
5
  * Generate predictive warnings based on GitHub activity
6
- * OPTIMIZED: Only checks packages that are actually installed
6
+ * ENHANCED v2.6.0: Added progress callback support for parallel processing
7
7
  */
8
- async function generatePredictiveWarnings(packages) {
8
+ async function generatePredictiveWarnings(packages, options = {}) {
9
+ const { onProgress } = options;
10
+
9
11
  try {
10
12
  // Only check packages that are actually installed
11
13
  const installedPackages = Object.keys(packages);
@@ -14,8 +16,12 @@ async function generatePredictiveWarnings(packages) {
14
16
  return [];
15
17
  }
16
18
 
17
- // Pass only installed packages to GitHub checker
18
- const githubData = await checkGitHubIssues(packages);
19
+ // Pass options to GitHub checker (including progress callback)
20
+ // v2.6.0: Now supports parallel processing with concurrency control
21
+ const githubData = await checkGitHubIssues(packages, {
22
+ concurrency: 5, // Process 5 packages in parallel
23
+ onProgress: onProgress // Pass through progress callback
24
+ });
19
25
 
20
26
  const warnings = [];
21
27
 
@@ -184,7 +184,7 @@ async function analyze(options) {
184
184
  }
185
185
  }
186
186
 
187
- // Check for predictive warnings (GitHub Issues) - UPDATED for v2.5.0
187
+ // Check for predictive warnings (GitHub Issues) - ENHANCED v2.6.0
188
188
  const { getTrackedPackageCount, TRACKED_REPOS } = require('../alerts/github-tracker');
189
189
  const totalTracked = getTrackedPackageCount();
190
190
 
@@ -192,12 +192,13 @@ async function analyze(options) {
192
192
  const installedTrackedCount = Object.keys(dependencies).filter(pkg => TRACKED_REPOS[pkg]).length;
193
193
 
194
194
  if (installedTrackedCount > 0) {
195
- spinner.text = `Checking GitHub activity (${installedTrackedCount}/${totalTracked} tracked packages)...`;
195
+ spinner.text = `Checking GitHub activity (0/${installedTrackedCount} packages)...`;
196
196
  } else {
197
197
  spinner.text = 'Checking GitHub activity...';
198
198
  }
199
199
 
200
200
  let predictiveWarnings = [];
201
+ let githubCheckTime = 0;
201
202
 
202
203
  if (config.cache) {
203
204
  predictiveWarnings = getCached(projectPath, 'predictive');
@@ -206,7 +207,20 @@ async function analyze(options) {
206
207
  if (!predictiveWarnings) {
207
208
  try {
208
209
  const { generatePredictiveWarnings } = require('../alerts/predictive');
209
- predictiveWarnings = await generatePredictiveWarnings(dependencies);
210
+
211
+ // Track performance - NEW in v2.6.0
212
+ const startTime = Date.now();
213
+
214
+ // Pass progress callback - NEW in v2.6.0
215
+ predictiveWarnings = await generatePredictiveWarnings(dependencies, {
216
+ onProgress: (current, total, packageName) => {
217
+ if (outputMode === 'normal') {
218
+ spinner.text = `Checking GitHub activity (${current}/${total} packages) - ${packageName}`;
219
+ }
220
+ }
221
+ });
222
+
223
+ githubCheckTime = Date.now() - startTime;
210
224
 
211
225
  if (config.cache && predictiveWarnings.length > 0) {
212
226
  setCache(projectPath, 'predictive', predictiveWarnings);
@@ -275,6 +289,12 @@ async function analyze(options) {
275
289
 
276
290
  spinner.succeed(chalk.green(`Scanned ${totalDeps} dependencies in project`));
277
291
 
292
+ // Show performance info if GitHub check was performed - NEW in v2.6.0
293
+ if (githubCheckTime > 0 && outputMode === 'normal' && installedTrackedCount > 0) {
294
+ const timeInSeconds = (githubCheckTime / 1000).toFixed(2);
295
+ console.log(chalk.gray(`โšก GitHub check completed in ${timeInSeconds}s (parallel processing)`));
296
+ }
297
+
278
298
  // Handle different output modes
279
299
  if (outputMode === 'json') {
280
300
  const jsonOutput = formatAsJson(alerts, unusedDeps, outdatedDeps, score, totalDeps, securityData, bundleSizes, licenses, predictiveWarnings);
@@ -371,7 +391,7 @@ function displayResults(alerts, unusedDeps, outdatedDeps, score, totalDeps, secu
371
391
 
372
392
  logDivider();
373
393
 
374
- // PREDICTIVE WARNINGS (UPDATED for v2.5.0)
394
+ // PREDICTIVE WARNINGS (v2.5.0+)
375
395
  if (predictiveWarnings.length > 0) {
376
396
  const { getTrackedPackageCount } = require('../alerts/github-tracker');
377
397
  const totalTracked = getTrackedPackageCount();