toJson method
Serializes the full report for JSON output.
Implementation
Map<String, Object?> toJson() {
final outdatedDependencies = dependencies.where((entry) {
final latestVersion = entry.dependency.health.latestVersion;
return latestVersion != null &&
latestVersion.isNotEmpty &&
latestVersion != entry.dependency.node.version;
}).length;
final unsupportedPackages = dependencies
.where((entry) => entry.dependency.health.isDiscontinued)
.length;
final vulnerableDependencies = dependencies.where((entry) {
return entry.riskScore.classification == RiskClassification.critical;
}).length;
return <String, Object?>{
'schema_version': '0.1.0',
'schemaVersion': 'v1',
'generatedAt': generatedAt.toIso8601String(),
'projectName': projectName,
'projectVersion': projectVersion,
'rootPath': rootPath,
'includeTransitive': includeTransitive,
'offline': offline,
'graph': graph.toJson(),
'summary': <String, Object?>{
'vulnerable_dependencies': vulnerableDependencies,
'outdated_dependencies': outdatedDependencies,
'unsupported_packages': unsupportedPackages,
...summary,
},
if (platformReadiness.isNotEmpty) 'platformReadiness': platformReadiness,
'dependencies': dependencies
.map((DependencyRiskEntry entry) => entry.toJson())
.toList(growable: false),
'overallScore': overallScore,
};
}