toJson method

Map<String, Object?> toJson()

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,
  };
}