`outdated` Include replacement text in --json output (#4793)
diff --git a/lib/src/command/outdated.dart b/lib/src/command/outdated.dart
index 8d44a30..91afe72 100644
--- a/lib/src/command/outdated.dart
+++ b/lib/src/command/outdated.dart
@@ -523,6 +523,7 @@
             'package': packageDetails.name,
             'kind': kindString(packageDetails.kind),
             'isDiscontinued': packageDetails.isDiscontinued,
+            'replacedBy': packageDetails.discontinuedReplacedBy,
             'isCurrentRetracted': packageDetails.isCurrentRetracted,
             'isCurrentAffectedByAdvisory':
                 packageDetails.isCurrentAffectedBySecurityAdvisory,
diff --git a/pubspec.lock b/pubspec.lock
index 9ba8696..89eecc0 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -466,4 +466,4 @@
     source: hosted
     version: "2.2.2"
 sdks:
-  dart: ">=3.9.0 <4.0.0"
+  dart: ">=3.11.0 <4.0.0"
diff --git a/test/outdated/outdated_test.dart b/test/outdated/outdated_test.dart
index 392f2fe..21e5b28 100644
--- a/test/outdated/outdated_test.dart
+++ b/test/outdated/outdated_test.dart
@@ -18,8 +18,9 @@
   Future<void> runOutdatedTests({
     Map<String, String>? environment,
     String? workingDirectory,
+    List<List<String>>? extraCommands,
   }) async {
-    const commands = [
+    final commands = [
       ['outdated', '--json'],
       ['outdated', '--no-color'],
       ['outdated', '--no-color', '--no-transitive'],
@@ -28,6 +29,7 @@
       ['outdated', '--no-color', '--no-dev-dependencies'],
       ['outdated', '--no-color', '--no-dependency-overrides'],
       ['outdated', '--json', '--no-dev-dependencies'],
+      ...?extraCommands,
     ];
     for (final args in commands) {
       await run(
@@ -163,7 +165,11 @@
     builder.retractPackageVersion('foo', '1.2.3');
     builder.discontinue('foo');
     builder.discontinue('baz', replacementText: 'newbaz');
-    await ctx.runOutdatedTests();
+    await ctx.runOutdatedTests(
+      extraCommands: [
+        ['outdated', '--json', '--up-to-date'],
+      ],
+    );
   });
 
   testWithGolden('show retracted', (ctx) async {
diff --git a/test/testdata/goldens/outdated/outdated_test/Handles SDK dependencies.txt b/test/testdata/goldens/outdated/outdated_test/Handles SDK dependencies.txt
index db6c118..f751a7f 100644
--- a/test/testdata/goldens/outdated/outdated_test/Handles SDK dependencies.txt
+++ b/test/testdata/goldens/outdated/outdated_test/Handles SDK dependencies.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -138,6 +139,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/circular dependency on root.txt b/test/testdata/goldens/outdated/outdated_test/circular dependency on root.txt
index 6a11af4..3634cbd 100644
--- a/test/testdata/goldens/outdated/outdated_test/circular dependency on root.txt
+++ b/test/testdata/goldens/outdated/outdated_test/circular dependency on root.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -126,6 +127,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/do not report ignored advisories.txt b/test/testdata/goldens/outdated/outdated_test/do not report ignored advisories.txt
index 3fe9be4..d8ba107 100644
--- a/test/testdata/goldens/outdated/outdated_test/do not report ignored advisories.txt
+++ b/test/testdata/goldens/outdated/outdated_test/do not report ignored advisories.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -129,6 +130,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/do not show advisories if no version is affected.txt b/test/testdata/goldens/outdated/outdated_test/do not show advisories if no version is affected.txt
index 3fe9be4..d8ba107 100644
--- a/test/testdata/goldens/outdated/outdated_test/do not show advisories if no version is affected.txt
+++ b/test/testdata/goldens/outdated/outdated_test/do not show advisories if no version is affected.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -129,6 +130,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/latest version reported while locked on a prerelease can be a prerelease.txt b/test/testdata/goldens/outdated/outdated_test/latest version reported while locked on a prerelease can be a prerelease.txt
index 0106141..a737a29 100644
--- a/test/testdata/goldens/outdated/outdated_test/latest version reported while locked on a prerelease can be a prerelease.txt
+++ b/test/testdata/goldens/outdated/outdated_test/latest version reported while locked on a prerelease can be a prerelease.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -27,6 +28,7 @@
       "package": "mop",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -153,6 +155,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -172,6 +175,7 @@
       "package": "mop",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/mutually incompatible newer versions.txt b/test/testdata/goldens/outdated/outdated_test/mutually incompatible newer versions.txt
index 6bcf73b..536c274 100644
--- a/test/testdata/goldens/outdated/outdated_test/mutually incompatible newer versions.txt
+++ b/test/testdata/goldens/outdated/outdated_test/mutually incompatible newer versions.txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -27,6 +28,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -145,6 +147,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -164,6 +167,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/newer versions available.txt b/test/testdata/goldens/outdated/outdated_test/newer versions available.txt
index d71ce8f..ea442ca 100644
--- a/test/testdata/goldens/outdated/outdated_test/newer versions available.txt
+++ b/test/testdata/goldens/outdated/outdated_test/newer versions available.txt
@@ -8,6 +8,7 @@
       "package": "builder",
       "kind": "dev",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -27,6 +28,7 @@
       "package": "dev_trans",
       "kind": "transitive",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -44,6 +46,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -63,6 +66,7 @@
       "package": "retracted",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -82,6 +86,7 @@
       "package": "transitive",
       "kind": "transitive",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -101,6 +106,7 @@
       "package": "transitive2",
       "kind": "transitive",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
@@ -116,6 +122,7 @@
       "package": "transitive3",
       "kind": "transitive",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
@@ -324,6 +331,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -343,6 +351,7 @@
       "package": "retracted",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -362,6 +371,7 @@
       "package": "transitive",
       "kind": "transitive",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/no lockfile.txt b/test/testdata/goldens/outdated/outdated_test/no lockfile.txt
index 85ee6b3..4c9ddc1 100644
--- a/test/testdata/goldens/outdated/outdated_test/no lockfile.txt
+++ b/test/testdata/goldens/outdated/outdated_test/no lockfile.txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
@@ -25,6 +26,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
@@ -165,6 +167,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
@@ -182,6 +185,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": null,
diff --git a/test/testdata/goldens/outdated/outdated_test/only report unignored advisory.txt b/test/testdata/goldens/outdated/outdated_test/only report unignored advisory.txt
index d504535..d17192e 100644
--- a/test/testdata/goldens/outdated/outdated_test/only report unignored advisory.txt
+++ b/test/testdata/goldens/outdated/outdated_test/only report unignored advisory.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -171,6 +172,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/overridden dependencies - no resolution.txt b/test/testdata/goldens/outdated/outdated_test/overridden dependencies - no resolution.txt
index 8145ca0..a437932 100644
--- a/test/testdata/goldens/outdated/outdated_test/overridden dependencies - no resolution.txt
+++ b/test/testdata/goldens/outdated/outdated_test/overridden dependencies - no resolution.txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -30,6 +31,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -150,6 +152,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -172,6 +175,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/overridden dependencies with retraction- no resolution .txt b/test/testdata/goldens/outdated/outdated_test/overridden dependencies with retraction- no resolution .txt
index 4ce544f..ca88172 100644
--- a/test/testdata/goldens/outdated/outdated_test/overridden dependencies with retraction- no resolution .txt
+++ b/test/testdata/goldens/outdated/outdated_test/overridden dependencies with retraction- no resolution .txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -30,6 +31,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -168,6 +170,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -190,6 +193,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/overridden dependencies.txt b/test/testdata/goldens/outdated/outdated_test/overridden dependencies.txt
index 34fba73..1fd6232 100644
--- a/test/testdata/goldens/outdated/outdated_test/overridden dependencies.txt
+++ b/test/testdata/goldens/outdated/outdated_test/overridden dependencies.txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -30,6 +31,7 @@
       "package": "baz",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -52,6 +54,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -180,6 +183,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -202,6 +206,7 @@
       "package": "baz",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -224,6 +229,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/reports dependencies from all of workspace.txt b/test/testdata/goldens/outdated/outdated_test/reports dependencies from all of workspace.txt
index c4e53af..0be051c 100644
--- a/test/testdata/goldens/outdated/outdated_test/reports dependencies from all of workspace.txt
+++ b/test/testdata/goldens/outdated/outdated_test/reports dependencies from all of workspace.txt
@@ -8,6 +8,7 @@
       "package": "dep",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -29,6 +30,7 @@
       "package": "dep_a",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -48,6 +50,7 @@
       "package": "dev_dep_a",
       "kind": "dev",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -205,6 +208,7 @@
       "package": "dep",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -226,6 +230,7 @@
       "package": "dep_a",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - all versions.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - all versions.txt
index e337e31..38517e8 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - all versions.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - all versions.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -171,6 +172,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - current also retracted.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - current also retracted.txt
index c0fe144..980a341 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - current also retracted.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - current also retracted.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -177,6 +178,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt
index f76341f..2a59e3c 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - current, same package mentioned twice.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -171,6 +172,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - current.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - current.txt
index f76341f..2a59e3c 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - current.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - current.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -171,6 +172,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - latest also discontinued.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - latest also discontinued.txt
index 3a06936..6a7cc67 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - latest also discontinued.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - latest also discontinued.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -177,6 +178,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - latest.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - latest.txt
index 42c5f22..fcb7745 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - latest.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - latest.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -171,6 +172,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show advisory - several advisories.txt b/test/testdata/goldens/outdated/outdated_test/show advisory - several advisories.txt
index 6d4a6df..98bed3d 100644
--- a/test/testdata/goldens/outdated/outdated_test/show advisory - several advisories.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show advisory - several advisories.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
@@ -189,6 +190,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": false,
       "isCurrentAffectedByAdvisory": true,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show discontinued and retracted.txt b/test/testdata/goldens/outdated/outdated_test/show discontinued and retracted.txt
index d3b9547..7c65cf5 100644
--- a/test/testdata/goldens/outdated/outdated_test/show discontinued and retracted.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show discontinued and retracted.txt
@@ -8,6 +8,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -25,6 +26,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -194,6 +196,7 @@
       "package": "bar",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -211,6 +214,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
diff --git a/test/testdata/goldens/outdated/outdated_test/show discontinued with no latest version.txt b/test/testdata/goldens/outdated/outdated_test/show discontinued with no latest version.txt
index 6f171e6..3bf0af7 100644
--- a/test/testdata/goldens/outdated/outdated_test/show discontinued with no latest version.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show discontinued with no latest version.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -149,6 +150,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": true,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -165,3 +167,90 @@
   ]
 }
 
+-------------------------------- END OF OUTPUT ---------------------------------
+
+## Section 8
+$ pub outdated --json --up-to-date
+{
+  "packages": [
+    {
+      "package": "bar",
+      "kind": "direct",
+      "isDiscontinued": false,
+      "replacedBy": null,
+      "isCurrentRetracted": false,
+      "isCurrentAffectedByAdvisory": false,
+      "current": {
+        "version": "1.0.0"
+      },
+      "upgradable": {
+        "version": "1.0.0"
+      },
+      "resolvable": {
+        "version": "1.0.0"
+      },
+      "latest": {
+        "version": "1.0.0"
+      }
+    },
+    {
+      "package": "baz",
+      "kind": "direct",
+      "isDiscontinued": true,
+      "replacedBy": "newbaz",
+      "isCurrentRetracted": false,
+      "isCurrentAffectedByAdvisory": false,
+      "current": {
+        "version": "1.0.0"
+      },
+      "upgradable": {
+        "version": "1.0.0"
+      },
+      "resolvable": {
+        "version": "1.0.0"
+      },
+      "latest": {
+        "version": "1.0.0"
+      }
+    },
+    {
+      "package": "foo",
+      "kind": "direct",
+      "isDiscontinued": true,
+      "replacedBy": null,
+      "isCurrentRetracted": true,
+      "isCurrentAffectedByAdvisory": false,
+      "current": {
+        "version": "1.2.3"
+      },
+      "upgradable": {
+        "version": "1.2.3"
+      },
+      "resolvable": {
+        "version": "1.2.3"
+      },
+      "latest": null
+    },
+    {
+      "package": "transitive",
+      "kind": "transitive",
+      "isDiscontinued": false,
+      "replacedBy": null,
+      "isCurrentRetracted": false,
+      "isCurrentAffectedByAdvisory": false,
+      "current": {
+        "version": "1.2.3"
+      },
+      "upgradable": {
+        "version": "1.2.3"
+      },
+      "resolvable": {
+        "version": "1.2.3"
+      },
+      "latest": {
+        "version": "1.2.3"
+      }
+    }
+  ]
+}
+
diff --git a/test/testdata/goldens/outdated/outdated_test/show retracted.txt b/test/testdata/goldens/outdated/outdated_test/show retracted.txt
index b1c29dd..25a17c7 100644
--- a/test/testdata/goldens/outdated/outdated_test/show retracted.txt
+++ b/test/testdata/goldens/outdated/outdated_test/show retracted.txt
@@ -8,6 +8,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {
@@ -147,6 +148,7 @@
       "package": "foo",
       "kind": "direct",
       "isDiscontinued": false,
+      "replacedBy": null,
       "isCurrentRetracted": true,
       "isCurrentAffectedByAdvisory": false,
       "current": {