New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

dependencies-hierarchy

Package Overview
Dependencies
Maintainers
1
Versions
167
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dependencies-hierarchy - npm Package Compare versions

Comparing version 6.0.0-1 to 6.0.0-2

12

lib/index.d.ts

@@ -21,3 +21,3 @@ import { DependenciesField, Registries } from '@pnpm/types';

}
export declare function forPackages(packages: PackageSelector[], projectPath: string, opts?: {
export declare function forPackages(packages: PackageSelector[], projectPaths: string[], opts: {
depth: number;

@@ -28,5 +28,5 @@ include?: {

registries?: Registries;
lockfileDirectory?: string;
lockfileDirectory: string;
}): {};
export default function (projectPath: string, opts?: {
export default function (projectPaths: string[], opts: {
depth: number;

@@ -37,4 +37,6 @@ include?: {

registries?: Registries;
lockfileDirectory?: string;
}): Promise<DependenciesHierarchy>;
lockfileDirectory: string;
}): Promise<{
[prefix: string]: DependenciesHierarchy;
}>;
export declare type DependenciesHierarchy = {

@@ -41,0 +43,0 @@ dependencies?: PackageNode[];

@@ -16,28 +16,51 @@ "use strict";

const semver = require("semver");
function forPackages(packages, projectPath, opts) {
function forPackages(packages, projectPaths, opts) {
assert(packages, 'packages should be defined');
if (!packages.length)
return {};
return dependenciesHierarchy(projectPath, packages, opts);
return dependenciesHierarchy(projectPaths, packages, opts);
}
exports.forPackages = forPackages;
function default_1(projectPath, opts) {
return dependenciesHierarchy(projectPath, [], opts);
function default_1(projectPaths, opts) {
return dependenciesHierarchy(projectPaths, [], opts);
}
exports.default = default_1;
async function dependenciesHierarchy(projectPath, searched, maybeOpts) {
const lockfileDirectory = maybeOpts && maybeOpts.lockfileDirectory || projectPath;
const virtualStoreDir = await utils_1.realNodeModulesDir(lockfileDirectory);
async function dependenciesHierarchy(projectPaths, searched, maybeOpts) {
if (!maybeOpts || !maybeOpts.lockfileDirectory) {
throw new TypeError('opts.lockfileDirectory is required');
}
const virtualStoreDir = await utils_1.realNodeModulesDir(maybeOpts.lockfileDirectory);
const modules = await modules_yaml_1.read(virtualStoreDir);
const registries = utils_1.normalizeRegistries(Object.assign({}, maybeOpts && maybeOpts.registries, modules && modules.registries));
const currentLockfile = await lockfile_file_1.readCurrentLockfile(lockfileDirectory, { ignoreIncompatible: false });
if (!currentLockfile)
return {};
const opts = Object.assign({ depth: 0 }, maybeOpts);
const include = maybeOpts && maybeOpts.include || {
dependencies: true,
devDependencies: true,
optionalDependencies: true,
const currentLockfile = await lockfile_file_1.readCurrentLockfile(maybeOpts.lockfileDirectory, { ignoreIncompatible: false });
const result = {};
if (!currentLockfile) {
for (let projectPath of projectPaths) {
result[projectPath] = {};
}
return result;
}
const opts = {
depth: maybeOpts.depth || 0,
include: maybeOpts.include || {
dependencies: true,
devDependencies: true,
optionalDependencies: true,
},
lockfileDirectory: maybeOpts.lockfileDirectory,
registries,
skipped: new Set(modules && modules.skipped || []),
};
const importerId = lockfile_file_1.getLockfileImporterId(lockfileDirectory, projectPath);
(await Promise.all(projectPaths.map(async (projectPath) => {
return [
projectPath,
await dependenciesHierarchyForPackage(projectPath, currentLockfile, searched, opts),
];
}))).forEach(([projectPath, dependenciesHierarchy]) => {
result[projectPath] = dependenciesHierarchy;
});
return result;
}
async function dependenciesHierarchyForPackage(projectPath, currentLockfile, searched, opts) {
const importerId = lockfile_file_1.getLockfileImporterId(opts.lockfileDirectory, projectPath);
if (!currentLockfile.importers[importerId])

@@ -49,16 +72,16 @@ return {};

const unsavedDeps = allDirectDeps.filter((directDep) => !savedDeps[directDep]);
const wantedLockfile = await lockfile_file_1.readWantedLockfile(lockfileDirectory, { ignoreIncompatible: false }) || { packages: {} };
const wantedLockfile = await lockfile_file_1.readWantedLockfile(opts.lockfileDirectory, { ignoreIncompatible: false }) || { packages: {} };
const getChildrenTree = getTree.bind(null, {
currentDepth: 1,
currentPackages: currentLockfile.packages,
includeOptionalDependencies: include.optionalDependencies === true,
currentPackages: currentLockfile.packages || {},
includeOptionalDependencies: opts.include.optionalDependencies === true,
maxDepth: opts.depth,
modulesDir,
registries,
registries: opts.registries,
searched,
skipped: new Set(modules && modules.skipped || []),
skipped: opts.skipped,
wantedPackages: wantedLockfile.packages || {},
});
const result = {};
for (const dependenciesField of types_1.DEPENDENCIES_FIELDS.sort().filter(dependenciedField => include[dependenciedField])) {
for (const dependenciesField of types_1.DEPENDENCIES_FIELDS.sort().filter(dependenciedField => opts.include[dependenciedField])) {
const topDeps = currentLockfile.importers[importerId][dependenciesField] || {};

@@ -72,4 +95,4 @@ result[dependenciesField] = [];

ref: topDeps[alias],
registries,
skipped: new Set(modules && modules.skipped || []),
registries: opts.registries,
skipped: opts.skipped,
wantedPackages: wantedLockfile.packages || {},

@@ -76,0 +99,0 @@ });

{
"name": "dependencies-hierarchy",
"version": "6.0.0-1",
"version": "6.0.0-2",
"description": "Creates a dependencies hierarchy for a symlinked `node_modules`",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc