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

83 lines 3.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoadProjectToPackageMapping = LoadProjectToPackageMapping; exports.LoadProjectToPackageMappingWithRetry = LoadProjectToPackageMappingWithRetry; exports.PackageNameToProjectName = PackageNameToProjectName; exports.ProjectNameToPackageName = ProjectNameToPackageName; exports.HasProjectWithPackageName = HasProjectWithPackageName; const tslib_1 = require("tslib"); const node_utilities_1 = require("@rxap/node-utilities"); const fs_1 = require("fs"); let PACKAGE_NAME_TO_PROJECT_NAME_CACHE = null; let PROJECT_NAME_TO_PACKAGE_NAME_CACHE = null; function LoadProjectToPackageMapping(context) { const { projectGraph } = context; if (!projectGraph) { throw new Error('The projectGraph is undefined. Ensure the projectGraph is passed into the executor context.'); } const projectNames = Object.keys(projectGraph.nodes); PACKAGE_NAME_TO_PROJECT_NAME_CACHE = {}; PROJECT_NAME_TO_PACKAGE_NAME_CACHE = {}; for (const projectName of projectNames) { const project = projectGraph.nodes[projectName]; if (project.type !== 'lib') { continue; } const projectRoot = project.data.root; if (!(0, fs_1.existsSync)(`${projectRoot}/package.json`)) { continue; } const packageJSON = JSON.parse((0, fs_1.readFileSync)(`${projectRoot}/package.json`).toString('utf-8')); PACKAGE_NAME_TO_PROJECT_NAME_CACHE[packageJSON.name] = projectName; PROJECT_NAME_TO_PACKAGE_NAME_CACHE[projectName] = packageJSON.name; } } function LoadProjectToPackageMappingWithRetry(context_1) { return tslib_1.__awaiter(this, arguments, void 0, function* (context, 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.'); } const projectNames = Object.keys(projectGraph.nodes); PACKAGE_NAME_TO_PROJECT_NAME_CACHE = {}; PROJECT_NAME_TO_PACKAGE_NAME_CACHE = {}; for (const projectName of projectNames) { const project = projectGraph.nodes[projectName]; if (project.type !== 'lib') { continue; } const projectRoot = project.data.root; if (!(0, fs_1.existsSync)(`${projectRoot}/package.json`)) { continue; } const packageJSON = yield (0, node_utilities_1.jsonFileWithRetry)(`${projectRoot}/package.json`, retries, sleep); PACKAGE_NAME_TO_PROJECT_NAME_CACHE[packageJSON.name] = projectName; PROJECT_NAME_TO_PACKAGE_NAME_CACHE[projectName] = packageJSON.name; } }); } function PackageNameToProjectName(packageName) { if (!PACKAGE_NAME_TO_PROJECT_NAME_CACHE) { throw new Error('The project to package name cache has not been loaded yet.'); } if (PACKAGE_NAME_TO_PROJECT_NAME_CACHE[packageName]) { return PACKAGE_NAME_TO_PROJECT_NAME_CACHE[packageName]; } throw new Error(`Could not find project for package '${packageName}'`); } function ProjectNameToPackageName(projectName) { if (!PROJECT_NAME_TO_PACKAGE_NAME_CACHE) { throw new Error('The project to package name cache has not been loaded yet.'); } if (PROJECT_NAME_TO_PACKAGE_NAME_CACHE[projectName]) { return PROJECT_NAME_TO_PACKAGE_NAME_CACHE[projectName]; } throw new Error(`Could not find package for project '${projectName}'`); } function HasProjectWithPackageName(packageName) { if (!PACKAGE_NAME_TO_PROJECT_NAME_CACHE) { throw new Error('The project to package name cache has not been loaded yet.'); } return PACKAGE_NAME_TO_PROJECT_NAME_CACHE[packageName] !== undefined; } //# sourceMappingURL=project-package-name-mapping.js.map