Add support for 'ignored_advisories' field (dart-lang/pubspec_parse#118)

diff --git a/pkgs/pubspec_parse/CHANGELOG.md b/pkgs/pubspec_parse/CHANGELOG.md
index 7444f4f..87dd5ca 100644
--- a/pkgs/pubspec_parse/CHANGELOG.md
+++ b/pkgs/pubspec_parse/CHANGELOG.md
@@ -1,6 +1,7 @@
 ## 1.2.4-wip
 
 - Require Dart 3.0
+- Added support for `ignored_advisories` field.
 
 ## 1.2.3
 
diff --git a/pkgs/pubspec_parse/lib/src/pubspec.dart b/pkgs/pubspec_parse/lib/src/pubspec.dart
index 3eb73cc..f6934ee 100644
--- a/pkgs/pubspec_parse/lib/src/pubspec.dart
+++ b/pkgs/pubspec_parse/lib/src/pubspec.dart
@@ -47,6 +47,9 @@
   /// Optional field to list the topics that this packages belongs to.
   final List<String>? topics;
 
+  /// Optional field to list advisories to be ignored by the client.
+  final List<String>? ignoredAdvisories;
+
   /// Optional field for specifying included screenshot files.
   @JsonKey(fromJson: parseScreenshots)
   final List<Screenshot>? screenshots;
@@ -110,6 +113,7 @@
     this.issueTracker,
     this.funding,
     this.topics,
+    this.ignoredAdvisories,
     this.screenshots,
     this.documentation,
     this.description,
diff --git a/pkgs/pubspec_parse/lib/src/pubspec.g.dart b/pkgs/pubspec_parse/lib/src/pubspec.g.dart
index 6229994..fc28571 100644
--- a/pkgs/pubspec_parse/lib/src/pubspec.g.dart
+++ b/pkgs/pubspec_parse/lib/src/pubspec.g.dart
@@ -34,6 +34,8 @@
                   .toList()),
           topics: $checkedConvert('topics',
               (v) => (v as List<dynamic>?)?.map((e) => e as String).toList()),
+          ignoredAdvisories: $checkedConvert('ignored_advisories',
+              (v) => (v as List<dynamic>?)?.map((e) => e as String).toList()),
           screenshots: $checkedConvert(
               'screenshots', (v) => parseScreenshots(v as List?)),
           documentation: $checkedConvert('documentation', (v) => v as String?),
@@ -55,6 +57,7 @@
       fieldKeyMap: const {
         'publishTo': 'publish_to',
         'issueTracker': 'issue_tracker',
+        'ignoredAdvisories': 'ignored_advisories',
         'devDependencies': 'dev_dependencies',
         'dependencyOverrides': 'dependency_overrides'
       },
diff --git a/pkgs/pubspec_parse/test/parse_test.dart b/pkgs/pubspec_parse/test/parse_test.dart
index 31042f1..6251f41 100644
--- a/pkgs/pubspec_parse/test/parse_test.dart
+++ b/pkgs/pubspec_parse/test/parse_test.dart
@@ -52,6 +52,7 @@
         'https://patreon.com/example',
       ],
       'topics': ['widget', 'button'],
+      'ignored_advisories': ['111', '222'],
       'screenshots': [
         {'description': 'my screenshot', 'path': 'path/to/screenshot'},
       ],
@@ -79,6 +80,9 @@
     expect(value.topics, hasLength(2));
     expect(value.topics!.first, 'widget');
     expect(value.topics!.last, 'button');
+    expect(value.ignoredAdvisories, hasLength(2));
+    expect(value.ignoredAdvisories!.first, '111');
+    expect(value.ignoredAdvisories!.last, '222');
     expect(value.screenshots, hasLength(1));
     expect(value.screenshots!.first.description, 'my screenshot');
     expect(value.screenshots!.first.path, 'path/to/screenshot');
@@ -425,6 +429,43 @@
     });
   });
 
+  group('ignored_advisories', () {
+    test('not a list', () {
+      expectParseThrowsContaining(
+        {
+          ...defaultPubspec,
+          'ignored_advisories': 1,
+        },
+        "Unsupported value for \"ignored_advisories\". type 'int' is not a subtype of type 'List<dynamic>?'",
+        skipTryPub: true,
+      );
+    });
+
+    test('not a string', () {
+      expectParseThrowsContaining(
+        {
+          ...defaultPubspec,
+          'ignored_advisories': [1],
+        },
+        "Unsupported value for \"ignored_advisories\". type 'int' is not a subtype of type 'String'",
+        skipTryPub: true,
+      );
+    });
+
+    test('invalid data - lenient', () async {
+      final value = await parse(
+        {
+          ...defaultPubspec,
+          'ignored_advisories': [1],
+        },
+        skipTryPub: true,
+        lenient: true,
+      );
+      expect(value.name, 'sample');
+      expect(value.ignoredAdvisories, isNull);
+    });
+  });
+
   group('screenshots', () {
     test('one screenshot', () async {
       final value = await parse({