get-deps-count.ts 941 B

123456789101112131415161718192021222324252627282930
  1. import { readFileSync } from 'node:fs';
  2. export function getDepsCount(files: string[] = []): Record<string, Record<string, string[]>> {
  3. const map: Record<string, JSON> = {};
  4. const depsCounter: Record<string, Record<string, string[]>> = {};
  5. for (const file of files) {
  6. const content = JSON.parse(readFileSync(file).toString('utf-8'));
  7. map[file] = content;
  8. const deps = content.dependencies ?? {};
  9. const devDeps = content.devDependencies ?? {};
  10. const merged = { ...deps, ...devDeps };
  11. for (const pkg of Object.keys(merged).sort()) {
  12. const pkgVersion = merged[pkg];
  13. if (!depsCounter[pkg]) {
  14. depsCounter[pkg] = { [pkgVersion]: [file] };
  15. continue;
  16. }
  17. if (!depsCounter[pkg][pkgVersion]) {
  18. depsCounter[pkg][pkgVersion] = [file];
  19. continue;
  20. }
  21. depsCounter[pkg][pkgVersion] = [...depsCounter[pkg][pkgVersion], file];
  22. }
  23. }
  24. return depsCounter;
  25. }