UNPKG

@rxap/plugin-utilities

Version:

Provides utility functions for Nx plugins, such as retrieving project dependencies, determining output paths, and interacting with package.json files. It simplifies common tasks within Nx executors and generators. This package helps streamline plugin deve

59 lines 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDirectPackageDependenciesForProject = getDirectPackageDependenciesForProject; exports.getDirectPackageDependenciesForProjectWihRetry = getDirectPackageDependenciesForProjectWihRetry; const tslib_1 = require("tslib"); const fs_1 = require("fs"); const path_1 = require("path"); const project_1 = require("./project"); const project_package_json_1 = require("./project-package-json"); /** * Get the direct package dependencies for the project. * * The direct package dependencies are the dependent projects that are directly referenced by the project. * * @param context * @param projectName */ function getDirectPackageDependenciesForProject(context, projectName = context.projectName) { const { projectGraph } = context; if (!projectGraph) { throw new Error('The projectGraph is undefined. Ensure the projectGraph is passed into the executor context.'); } if (!projectName) { throw new Error('The projectName is undefined. Ensure the projectName is passed into the executor context.'); } if (!projectGraph.dependencies[projectName]) { throw new Error(`The project ${projectName} does not exist in the projectGraph.`); } return projectGraph.dependencies[projectName] .filter(dependency => !dependency.target.startsWith('npm:')) .map(dependency => dependency.target) .filter(name => (0, fs_1.existsSync)((0, path_1.join)(context.root, (0, project_1.GetProjectRoot)(context, name), 'package.json'))) .map(projectName => (0, project_package_json_1.readPackageJsonForProject)(context, projectName)) .filter(packageJson => !!packageJson.name && packageJson.version) .reduce((acc, { name, version, }) => (Object.assign(Object.assign({}, acc), { [name]: version })), {}); } function getDirectPackageDependenciesForProjectWihRetry(context_1) { return tslib_1.__awaiter(this, arguments, void 0, function* (context, projectName = context.projectName, retries = 3, sleep = 3000) { const { projectGraph } = context; if (!projectGraph) { throw new Error('The projectGraph is undefined. Ensure the projectGraph is passed into the executor context.'); } if (!projectName) { throw new Error('The projectName is undefined. Ensure the projectName is passed into the executor context.'); } if (!projectGraph.dependencies[projectName]) { throw new Error(`The project ${projectName} does not exist in the projectGraph.`); } const dependenciesWithPackageJson = projectGraph.dependencies[projectName] .filter(dependency => !dependency.target.startsWith('npm:')) .map(dependency => dependency.target) .filter(name => (0, fs_1.existsSync)((0, path_1.join)(context.root, (0, project_1.GetProjectRoot)(context, name), 'package.json'))); const withPackageJson = yield Promise.all(dependenciesWithPackageJson.map(projectName => (0, project_package_json_1.readPackageJsonForProjectWithRetry)(context, projectName, retries, sleep))); return withPackageJson .filter(packageJson => !!packageJson.name && packageJson.version) .reduce((acc, { name, version, }) => (Object.assign(Object.assign({}, acc), { [name]: version })), {}); }); } //# sourceMappingURL=get-direct-package-dependencies-for-project.js.map