@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.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.GetAllPackageDependenciesForProject = GetAllPackageDependenciesForProject;
exports.GetAllPackageDependenciesForProjectWihRetry = GetAllPackageDependenciesForProjectWihRetry;
const tslib_1 = require("tslib");
const get_direct_package_dependencies_for_project_1 = require("./get-direct-package-dependencies-for-project");
const project_package_name_mapping_1 = require("./project-package-name-mapping");
/**
* Get the all package dependencies for the project.
*
* All package dependencies are the dependent projects that are directly and indirect referenced by the project.
* This includes the dependencies of the dependent projects.
*
* @param context
* @param projectName
*/
function GetAllPackageDependenciesForProject(context, projectName = context.projectName, resolvedDependencies = {}) {
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.');
}
const directDependencies = (0, get_direct_package_dependencies_for_project_1.getDirectPackageDependenciesForProject)(context, projectName);
const allDependencies = Object.assign({}, directDependencies);
for (const packageName of Object.keys(directDependencies)) {
if (resolvedDependencies[packageName]) {
continue;
}
const project = (0, project_package_name_mapping_1.PackageNameToProjectName)(packageName);
const dependencies = GetAllPackageDependenciesForProject(context, project, directDependencies);
Object.assign(allDependencies, dependencies);
}
return allDependencies;
}
function GetAllPackageDependenciesForProjectWihRetry(context_1) {
return tslib_1.__awaiter(this, arguments, void 0, function* (context, projectName = context.projectName, resolvedDependencies = {}, 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.');
}
const directDependencies = yield (0, get_direct_package_dependencies_for_project_1.getDirectPackageDependenciesForProjectWihRetry)(context, projectName, retries, sleep);
const allDependencies = Object.assign({}, directDependencies);
for (const packageName of Object.keys(directDependencies)) {
if (resolvedDependencies[packageName]) {
continue;
}
const project = (0, project_package_name_mapping_1.PackageNameToProjectName)(packageName);
const dependencies = yield GetAllPackageDependenciesForProjectWihRetry(context, project, directDependencies, retries, sleep);
Object.assign(allDependencies, dependencies);
}
return allDependencies;
});
}
//# sourceMappingURL=get-all-package-dependencies-for-project.js.map