use of com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency in project hub-detect by blackducksoftware.
the class NpmDependencyConverter method convertPackageMapToDependencies.
public List<NpmDependency> convertPackageMapToDependencies(NpmDependency parent, Map<String, PackageLockDependency> packageLockDependencyMap) {
List<NpmDependency> children = new ArrayList<>();
if (packageLockDependencyMap == null || packageLockDependencyMap.size() == 0) {
return children;
}
for (Map.Entry<String, PackageLockDependency> packageEntry : packageLockDependencyMap.entrySet()) {
String packageName = packageEntry.getKey();
PackageLockDependency packageLockDependency = packageEntry.getValue();
NpmDependency dependency = createNpmDependency(packageName, packageLockDependency.version, packageLockDependency.dev);
dependency.setParent(parent);
children.add(dependency);
List<NpmRequires> requires = convertNameVersionMapToRequires(packageLockDependency.requires);
dependency.addAllRequires(requires);
List<NpmDependency> grandChildren = convertPackageMapToDependencies(dependency, packageLockDependency.dependencies);
dependency.addAllDependencies(grandChildren);
}
return children;
}
use of com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency in project hub-detect by blackducksoftware.
the class NpmLockfileParser method traverse.
private void traverse(NpmDependency npmDependency, MutableDependencyGraph dependencyGraph, boolean atRoot, boolean includeDevDependencies) {
if (!shouldInclude(npmDependency, includeDevDependencies))
return;
npmDependency.getRequires().forEach(required -> {
NpmDependency resolved = lookupDependency(npmDependency, required.getName());
logger.debug("Required package: " + required.getName() + " of version: " + required.getFuzzyVersion());
if (resolved != null) {
logger.debug("Found package: " + resolved.getName() + "with version: " + resolved.getVersion());
if (atRoot) {
dependencyGraph.addChildToRoot(resolved.getGraphDependency());
} else {
dependencyGraph.addChildWithParent(resolved.getGraphDependency(), npmDependency.getGraphDependency());
}
} else {
logger.error("No dependency found for package: " + required.getName());
}
});
npmDependency.getDependencies().forEach(child -> traverse(child, dependencyGraph, false, includeDevDependencies));
}
use of com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency in project hub-detect by blackducksoftware.
the class NpmLockfileParser method parse.
public NpmParseResult parse(final String sourcePath, final Optional<String> packageJsonText, final String lockFileText, final boolean includeDevDependencies) {
final MutableDependencyGraph dependencyGraph = new MutableMapDependencyGraph();
logger.info("Parsing lock file text: ");
logger.debug(lockFileText);
Optional<PackageJson> packageJson = Optional.empty();
if (packageJsonText.isPresent()) {
logger.debug(packageJsonText.get());
packageJson = Optional.of(gson.fromJson(packageJsonText.get(), PackageJson.class));
}
final PackageLock packageLock = gson.fromJson(lockFileText, PackageLock.class);
logger.debug(lockFileText);
logger.info("Processing project.");
if (packageLock.dependencies != null) {
logger.info(String.format("Found %d dependencies.", packageLock.dependencies.size()));
// Convert to our custom format
NpmDependencyConverter dependencyConverter = new NpmDependencyConverter(externalIdFactory);
NpmDependency rootDependency = dependencyConverter.convertLockFile(packageLock, packageJson);
traverse(rootDependency, dependencyGraph, true, includeDevDependencies);
} else {
logger.info("Lock file did not have a 'dependencies' section.");
}
logger.info("Finished processing.");
final ExternalId projectId = externalIdFactory.createNameVersionExternalId(Forge.NPM, packageLock.name, packageLock.version);
final DetectCodeLocation codeLocation = new DetectCodeLocation.Builder(DetectCodeLocationType.NPM, sourcePath, projectId, dependencyGraph).build();
return new NpmParseResult(packageLock.name, packageLock.version, codeLocation);
}
use of com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency in project hub-detect by blackducksoftware.
the class NpmDependencyConverter method convertLockFile.
public NpmDependency convertLockFile(PackageLock packageLock, Optional<PackageJson> packageJsonOptional) {
NpmDependency root = createNpmDependency(packageLock.name, packageLock.version, false);
if (packageLock.dependencies != null) {
List<NpmDependency> children = convertPackageMapToDependencies(root, packageLock.dependencies);
root.addAllDependencies(children);
}
if (packageJsonOptional.isPresent()) {
PackageJson packageJson = packageJsonOptional.get();
if (packageJson.dependencies != null) {
List<NpmRequires> rootRequires = convertNameVersionMapToRequires(packageJson.dependencies);
root.addAllRequires(rootRequires);
}
if (packageJson.devDependencies != null) {
List<NpmRequires> rootDevRequires = convertNameVersionMapToRequires(packageJson.devDependencies);
root.addAllRequires(rootDevRequires);
}
} else {
if (packageLock.dependencies != null) {
List<NpmRequires> requires = packageLock.dependencies.entrySet().stream().map(entry -> new NpmRequires(entry.getKey(), entry.getValue().version)).collect(Collectors.toList());
root.addAllRequires(requires);
}
}
return root;
}
use of com.blackducksoftware.integration.hub.detect.detector.npm.model.NpmDependency in project hub-detect by blackducksoftware.
the class NpmDependencyConverter method createNpmDependency.
private NpmDependency createNpmDependency(String name, String version, Boolean isDev) {
ExternalId externalId = externalIdFactory.createNameVersionExternalId(Forge.NPM, name, version);
Dependency graphDependency = new Dependency(name, version, externalId);
boolean dev = false;
if (isDev != null && isDev == true) {
dev = true;
}
return new NpmDependency(name, version, dev, graphDependency);
}
Aggregations