UNPKG

pomanalyzer

Version:

pomanalyzer is a utility to analyze Apache Maven POM XML file

57 lines (50 loc) 1.83 kB
// src/services/dependencyService.js import { readFile } from '../utils/fileUtils.js'; import { parseXml } from '../utils/xmlParser.js'; import { resolveVersion } from '../utils/dependencyResolver.js'; /** * Reads and parses a Maven pom.xml file. * @param {string} filePath - The path to the pom.xml file. * @returns {Promise<Array>} - A promise that resolves to an array of dependencies. */ export async function readPomXml(filePath) { try { const xmlContent = await readFile(filePath); const result = await parseXml(xmlContent); // Use await here const dependencies = extractDependencies(result); return dependencies; } catch (error) { throw new Error(`Error reading pom.xml: ${error.message}`); } } /** * Extracts dependencies from the parsed XML result. * @param {Object} result - The parsed XML result. * @returns {Array} - An array of dependencies. */ function extractDependencies(result) { const dependencies = []; if (!result?.project) { return dependencies; } const properties = result.project.properties?.[0] ?? {}; if (result.project.dependencies?.[0]?.dependency) { dependencies.push( ...result.project.dependencies[0].dependency.map((dep) => ({ groupId: dep.groupId?.[0] ?? 'unknown', artifactId: dep.artifactId?.[0] ?? 'unknown', version: resolveVersion(dep.version?.[0] ?? 'N/A', properties), })) ); } if (result.project.dependencyManagement?.[0]?.dependencies?.[0]?.dependency) { dependencies.push( ...result.project.dependencyManagement[0].dependencies[0].dependency.map((dep) => ({ groupId: dep.groupId?.[0] ?? 'unknown', artifactId: dep.artifactId?.[0] ?? 'unknown', version: resolveVersion(dep.version?.[0] ?? 'N/A', properties), })) ); } return dependencies; }