UNPKG

npm-ls-flat

Version:

detects dependency version mismatches for streamlined dependency management

29 lines (28 loc) 1.37 kB
import semver from 'semver'; export const isPackageType = (obj) => typeof obj === 'object' && typeof obj.version === 'string' && semver.valid(obj.version) !== null; export const hasDependencies = (obj) => typeof obj === 'object' && typeof obj.dependencies === 'object'; const transformToPackageInfo = (pkg, path = []) => { const result = []; if (isPackageType(pkg)) { result.push({ name: path[path.length - 1].name, // Get the name from the last element of the path version: pkg.version, invalid: pkg.invalid, path: path.length <= 1 ? undefined : path.slice(0, -1) // Set to undefined if path is empty }); } if (hasDependencies(pkg)) { for (const [key, value] of Object.entries(pkg.dependencies)) { result.push(...transformToPackageInfo(value, [...path, { name: key, version: value.version }])); } } return result; }; export const traverseDependencyTree = (dependencyTree) => { const result = []; for (const [name, pkg] of Object.entries(dependencyTree)) { result.push(...transformToPackageInfo(pkg, [{ name, version: pkg.version }])); } return result; }; export const sortPackageVersions = (pkg, order = 'ASC') => pkg.sort((a, b) => (order === 'ASC' ? semver.compare(a.version, b.version) : semver.rcompare(a.version, b.version)));