get-deps-count.ts 969 B

1234567891011121314151617181920212223242526272829303132
  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. Object.keys(merged)
  12. .sort()
  13. .map((pkg) => {
  14. const pkgVersion = merged[pkg];
  15. if (!depsCounter[pkg]) {
  16. depsCounter[pkg] = { [pkgVersion]: [file] };
  17. return;
  18. }
  19. if (!depsCounter[pkg][pkgVersion]) {
  20. depsCounter[pkg][pkgVersion] = [file];
  21. return;
  22. }
  23. depsCounter[pkg][pkgVersion] = [...depsCounter[pkg][pkgVersion], file];
  24. });
  25. }
  26. return depsCounter;
  27. }