diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5f08228e..5d6ea75d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ For a full diff see [`4.3.0...main`][4.3.0...main].
 ### Changed
 
 - Started removing `v` prefixes from version constraints ([#1027]), by [@fredden]
+- Started sorting items in the `exclude` and `only` properties of items listed in the `repositories` section ([#1001]), by [@fredden]
 
 ## [`4.3.0`][4.3.0]
 
@@ -655,6 +656,7 @@ For a full diff see [`5d8b3e2...0.1.0`][5d8b3e2...0.1.0].
 [#989]: https://github.com/ergebnis/json-normalizer/pull/989
 [#991]: https://github.com/ergebnis/json-normalizer/pull/991
 [#992]: https://github.com/ergebnis/json-normalizer/pull/992
+[#1001]: https://github.com/ergebnis/json-normalizer/pull/1001
 [#1027]: https://github.com/ergebnis/json-normalizer/pull/1027
 
 [@alexis-saransig-lullabot]: https://github.com/alexis-saransig-lullabot
diff --git a/README.md b/README.md
index 6148dac1..fb48c881 100644
--- a/README.md
+++ b/README.md
@@ -422,6 +422,7 @@ It composes the following normalizers:
 - [`Ergebnis\Composer\Json\Normalizer\Vendor\Composer\BinNormalizer`](#vendorcomposerbinnormalizer)
 - [`Ergebnis\Composer\Json\Normalizer\Vendor\Composer\ConfigHashNormalizer`](#vendorcomposerconfighashnormalizer)
 - [`Ergebnis\Composer\Json\Normalizer\Vendor\Composer\PackageHashNormalizer`](#vendorcomposerpackagehashnormalizer)
+- [`Ergebnis\Composer\Json\Normalizer\Vendor\Composer\RepositoriesHashNormalizer`](#vendorcomposerrepositorieshashnormalizer)
 - [`Ergebnis\Composer\Json\Normalizer\Vendor\Composer\VersionConstraintNormalizer`](#vendorcomposerversionconstraintnormalizer)
 - [`Ergebnis\Composer\Json\Normalizer\Vendor\WithFinalNewLineNormalizer`](#withfinalnewlinenormalizer)
 
@@ -452,6 +453,14 @@ sections, the `Vendor\Composer\PackageHashNormalizer` will sort the packages in
 
 :bulb: This transfers the behaviour from using the [`--sort-packages`](https://getcomposer.org/doc/03-cli.md#require) or [`sort-packages`](https://getcomposer.org/doc/06-config.md#sort-packages) configuration flag in `require` and `require-dev` to other sections.
 
+#### `Vendor\Composer\RepositoriesHashNormalizer`
+
+When `composer.json` contains any configuration in the
+
+- [`repositories`](https://getcomposer.org/doc/04-schema.md#repositories)
+
+section, the `Vendor\Composer\RepositoriesHashNormalizer` will sort the repositories listed in the [`exclude` and `only` properties of repositories](https://getcomposer.org/doc/articles/repository-priorities.md#filtering-packages).
+
 #### `Vendor\Composer\VersionConstraintNormalizer`
 
 When `composer.json` contains version constraints in the
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
index 6f36b8bb..14792add 100644
--- a/psalm-baseline.xml
+++ b/psalm-baseline.xml
@@ -37,11 +37,21 @@
       <code>$value</code>
     </MixedAssignment>
   </file>
+  <file src="src/Vendor/Composer/RepositoriesHashNormalizer.php">
+    <MixedAssignment>
+      <code>$repository</code>
+    </MixedAssignment>
+  </file>
   <file src="src/Vendor/Composer/VersionConstraintNormalizer.php">
     <MixedAssignment>
       <code>$value</code>
     </MixedAssignment>
   </file>
+  <file src="src/Vendor/Composer/WildcardSorter.php">
+    <MixedAssignment>
+      <code>$package</code>
+    </MixedAssignment>
+  </file>
   <file src="test/Fixture/FormatNormalizer/NormalizeNormalizesJson/Scenario.php">
     <PossiblyUnusedMethod>
       <code>key</code>
diff --git a/src/Vendor/Composer/ComposerJsonNormalizer.php b/src/Vendor/Composer/ComposerJsonNormalizer.php
index b69bb848..2a67913b 100644
--- a/src/Vendor/Composer/ComposerJsonNormalizer.php
+++ b/src/Vendor/Composer/ComposerJsonNormalizer.php
@@ -93,6 +93,7 @@ public function __construct(string $schemaUri)
             new BinNormalizer(),
             new ConfigHashNormalizer(),
             new PackageHashNormalizer(),
+            new RepositoriesHashNormalizer(),
             new VersionConstraintNormalizer(new Semver\VersionParser()),
             new Normalizer\WithFinalNewLineNormalizer(),
         );
diff --git a/src/Vendor/Composer/ConfigHashNormalizer.php b/src/Vendor/Composer/ConfigHashNormalizer.php
index 0490ed06..f6945ecd 100644
--- a/src/Vendor/Composer/ConfigHashNormalizer.php
+++ b/src/Vendor/Composer/ConfigHashNormalizer.php
@@ -29,6 +29,12 @@ final class ConfigHashNormalizer implements Normalizer
          */
         'preferred-install',
     ];
+    private readonly WildcardSorter $wildcardSorter;
+
+    public function __construct()
+    {
+        $this->wildcardSorter = new WildcardSorter();
+    }
 
     public function normalize(Json $json): Json
     {
@@ -56,7 +62,7 @@ public function normalize(Json $json): Json
         \ksort($config);
 
         foreach (self::PROPERTIES_WITH_WILDCARDS as $property) {
-            self::sortPropertyWithWildcard(
+            $this->wildcardSorter->sortPropertyWithWildcard(
                 $config,
                 $property,
             );
@@ -72,59 +78,4 @@ public function normalize(Json $json): Json
 
         return Json::fromString($encoded);
     }
-
-    /**
-     * When sorting with wildcards, special care needs to be taken.
-     *
-     * @see https://github.com/ergebnis/json-normalizer/pull/775#issuecomment-1346095415
-     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L85-L86
-     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L626-L646
-     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Package/BasePackage.php#L252-L257
-     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L687-L691
-     */
-    private static function sortPropertyWithWildcard(
-        array &$config,
-        string $property,
-    ): void {
-        if (!\array_key_exists($property, $config)) {
-            return;
-        }
-
-        if (!\is_object($config[$property])) {
-            return;
-        }
-
-        $value = (array) $config[$property];
-
-        if ([] === $value) {
-            return;
-        }
-
-        foreach (\array_keys($value) as $package) {
-            /** @var string $package */
-            if (\str_contains(\rtrim($package, '*'), '*')) {
-                // We cannot reliably sort allow-plugins when there's a wildcard other than at the end of the string.
-                return;
-            }
-        }
-
-        $normalize = static function (string $package): string {
-            // Any key with an asterisk needs to be the last entry in its group
-            return \str_replace(
-                '*',
-                '~',
-                $package,
-            );
-        };
-
-        /** @var array<string, mixed> $value */
-        \uksort($value, static function (string $a, string $b) use ($normalize): int {
-            return \strcmp(
-                $normalize($a),
-                $normalize($b),
-            );
-        });
-
-        $config[$property] = $value;
-    }
 }
diff --git a/src/Vendor/Composer/RepositoriesHashNormalizer.php b/src/Vendor/Composer/RepositoriesHashNormalizer.php
new file mode 100644
index 00000000..c6438486
--- /dev/null
+++ b/src/Vendor/Composer/RepositoriesHashNormalizer.php
@@ -0,0 +1,81 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * Copyright (c) 2018-2023 Andreas Möller
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE.md file that was distributed with this source code.
+ *
+ * @see https://github.com/ergebnis/json-normalizer
+ */
+
+namespace Ergebnis\Json\Normalizer\Vendor\Composer;
+
+use Ergebnis\Json\Json;
+use Ergebnis\Json\Normalizer\Format;
+use Ergebnis\Json\Normalizer\Normalizer;
+
+final class RepositoriesHashNormalizer implements Normalizer
+{
+    private const PROPERTIES_WITH_WILDCARDS = [
+        /**
+         * @see https://getcomposer.org/doc/articles/repository-priorities.md#filtering-packages
+         */
+        'exclude',
+        'only',
+    ];
+    private readonly WildcardSorter $wildcardSorter;
+
+    public function __construct()
+    {
+        $this->wildcardSorter = new WildcardSorter();
+    }
+
+    public function normalize(Json $json): Json
+    {
+        $decoded = $json->decoded();
+
+        if (!\is_object($decoded)) {
+            return $json;
+        }
+
+        if (!\property_exists($decoded, 'repositories')) {
+            return $json;
+        }
+
+        if (!\is_object($decoded->repositories) && !\is_array($decoded->repositories)) {
+            return $json;
+        }
+
+        /** @var array<string, mixed> $repositories */
+        $repositories = (array) $decoded->repositories;
+
+        if ([] === $repositories) {
+            return $json;
+        }
+
+        foreach ($repositories as &$repository) {
+            $repository = (array) $repository;
+
+            foreach (self::PROPERTIES_WITH_WILDCARDS as $property) {
+                $this->wildcardSorter->sortPropertyWithWildcard(
+                    $repository,
+                    $property,
+                    false,
+                );
+            }
+        }
+
+        $decoded->repositories = $repositories;
+
+        /** @var string $encoded */
+        $encoded = \json_encode(
+            $decoded,
+            Format\JsonEncodeOptions::default()->toInt(),
+        );
+
+        return Json::fromString($encoded);
+    }
+}
diff --git a/src/Vendor/Composer/WildcardSorter.php b/src/Vendor/Composer/WildcardSorter.php
new file mode 100644
index 00000000..4714f5e7
--- /dev/null
+++ b/src/Vendor/Composer/WildcardSorter.php
@@ -0,0 +1,85 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * Copyright (c) 2018-2023 Andreas Möller
+ *
+ * For the full copyright and license information, please view
+ * the LICENSE.md file that was distributed with this source code.
+ *
+ * @see https://github.com/ergebnis/json-normalizer
+ */
+
+namespace Ergebnis\Json\Normalizer\Vendor\Composer;
+
+/**
+ * @internal
+ */
+final class WildcardSorter
+{
+    /**
+     * When sorting with wildcards, special care needs to be taken.
+     *
+     * @see https://github.com/ergebnis/json-normalizer/pull/775#issuecomment-1346095415
+     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L85-L86
+     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L626-L646
+     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Package/BasePackage.php#L252-L257
+     * @see https://github.com/composer/composer/blob/2.6.5/src/Composer/Plugin/PluginManager.php#L687-L691
+     */
+    public function sortPropertyWithWildcard(
+        array &$config,
+        string $property,
+        bool $sortByKey = true,
+    ): void {
+        if (!\array_key_exists($property, $config)) {
+            return;
+        }
+
+        if (!\is_object($config[$property]) && !\is_array($config[$property])) {
+            return;
+        }
+
+        $value = (array) $config[$property];
+
+        if ([] === $value) {
+            return;
+        }
+
+        $packages = $sortByKey ? \array_keys($value) : \array_values($value);
+
+        foreach ($packages as $package) {
+            /** @var string $package */
+            if (\str_contains(\rtrim($package, '*'), '*')) {
+                // We cannot reliably sort allow-plugins when there's a wildcard other than at the end of the string.
+                return;
+            }
+        }
+
+        $normalize = static function (string $package): string {
+            // Any key with an asterisk needs to be the last entry in its group
+            return \str_replace(
+                '*',
+                '~',
+                $package,
+            );
+        };
+
+        $callback = static function (string $a, string $b) use ($normalize): int {
+            return \strcmp(
+                $normalize($a),
+                $normalize($b),
+            );
+        };
+
+        if ($sortByKey) {
+            /** @var array<string, mixed> $value */
+            \uksort($value, $callback);
+        } else {
+            /** @var array<mixed, string> $value */
+            \usort($value, $callback);
+        }
+
+        $config[$property] = $value;
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/normalized.json
similarity index 92%
rename from test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/normalized.json
rename to test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/normalized.json
index ed5d95e8..07dc4887 100644
--- a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/normalized.json
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/normalized.json
@@ -17,10 +17,7 @@
     "repositories": [
         {
             "type": "composer",
-            "url": "http://packages.example.com",
-            "only": [
-                "example/*"
-            ]
+            "url": "http://packages.example.com"
         },
         {
             "type": "composer",
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/original.json
similarity index 97%
rename from test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/original.json
rename to test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/original.json
index a476f8b0..165244d6 100644
--- a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/original.json
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/No/original.json
@@ -17,7 +17,6 @@
   "repositories": [
     {
       "url": "http://packages.example.com",
-      "only": [ "example/*" ],
       "type": "composer"
     },
     {
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json
new file mode 100644
index 00000000..31777ed0
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor/one",
+                "vendor/two"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json
new file mode 100644
index 00000000..9ef2543e
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor/two","vendor/one"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
new file mode 100644
index 00000000..be185082
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor-two/*-test",
+                "vendor-one/*-test"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
new file mode 100644
index 00000000..0ea16738
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor-two/*-test","vendor-one/*-test"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
new file mode 100644
index 00000000..0cbb9655
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor-one/*",
+                "vendor-two/*"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
new file mode 100644
index 00000000..c4602c19
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor-two/*","vendor-one/*"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json
new file mode 100644
index 00000000..9ebedc4f
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor/one",
+                "vendor/two"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json
new file mode 100644
index 00000000..9b7dd137
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "only": ["vendor/two","vendor/one"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
new file mode 100644
index 00000000..10d1c9d6
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor-two/*-test",
+                "vendor-one/*-test"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
new file mode 100644
index 00000000..9dfef2a0
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "only": ["vendor-two/*-test","vendor-one/*-test"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
new file mode 100644
index 00000000..9ecf44eb
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": [
+        {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor-one/*",
+                "vendor-two/*"
+            ]
+        }
+    ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
new file mode 100644
index 00000000..d466a358
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsArray/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": [
+    {
+      "url": "http://packages.foo.com",
+      "only": ["vendor-two/*","vendor-one/*"],
+      "type": "composer"
+    }
+  ]
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/normalized.json
similarity index 87%
rename from test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/normalized.json
rename to test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/normalized.json
index fd2553c4..2488df56 100644
--- a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/normalized.json
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/normalized.json
@@ -17,10 +17,7 @@
     "repositories": {
         "foo": {
             "type": "composer",
-            "url": "http://packages.foo.com",
-            "only": [
-                "foo/*"
-            ]
+            "url": "http://packages.foo.com"
         },
         "bar": {
             "type": "composer",
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/original.json
similarity index 96%
rename from test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/original.json
rename to test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/original.json
index 441409df..9598227a 100644
--- a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/original.json
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/No/original.json
@@ -17,7 +17,6 @@
   "repositories": {
     "foo": {
       "url": "http://packages.foo.com",
-      "only": [ "foo/*" ],
       "type": "composer"
     },
     "bar": {
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json
new file mode 100644
index 00000000..16eaa056
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor/one",
+                "vendor/two"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json
new file mode 100644
index 00000000..31692d34
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor/two","vendor/one"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
new file mode 100644
index 00000000..7f625719
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor-two/*-test",
+                "vendor-one/*-test"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
new file mode 100644
index 00000000..3d9318fe
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor-two/*-test","vendor-one/*-test"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
new file mode 100644
index 00000000..ce74ab59
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "exclude": [
+                "vendor-one/*",
+                "vendor-two/*"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
new file mode 100644
index 00000000..6e1b55ff
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithExclude/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "exclude": ["vendor-two/*","vendor-one/*"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json
new file mode 100644
index 00000000..91c3e0e5
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor/one",
+                "vendor/two"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json
new file mode 100644
index 00000000..02e1811d
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "only": ["vendor/two","vendor/one"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
new file mode 100644
index 00000000..ddb15a2f
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor-two/*-test",
+                "vendor-one/*-test"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
new file mode 100644
index 00000000..8b3136ff
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/No/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "only": ["vendor-two/*-test","vendor-one/*-test"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
new file mode 100644
index 00000000..ac9e89ed
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/normalized.json
@@ -0,0 +1,27 @@
+{
+    "name": "ergebnis/json-normalizer",
+    "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+    "license": "MIT",
+    "type": "library",
+    "keywords": [
+        "json",
+        "normalizer"
+    ],
+    "authors": [
+        {
+            "name": "Andreas Möller",
+            "email": "am@localheinz.com"
+        }
+    ],
+    "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+    "repositories": {
+        "foo": {
+            "type": "composer",
+            "url": "http://packages.foo.com",
+            "only": [
+                "vendor-one/*",
+                "vendor-two/*"
+            ]
+        }
+    }
+}
diff --git a/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
new file mode 100644
index 00000000..5724a962
--- /dev/null
+++ b/test/Fixture/Vendor/Composer/ComposerJsonNormalizer/NormalizeNormalizesJson/Json/IsObject/HasEntries/Yes/HasProperty/Repositories/HasEntries/Yes/IsObject/UsesFiltering/Yes/WithOnly/HasWildcard/Yes/WildcardIsAtEnd/Yes/original.json
@@ -0,0 +1,24 @@
+{
+  "name": "ergebnis/json-normalizer",
+  "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.",
+  "license": "MIT",
+  "type": "library",
+  "keywords": [
+    "json",
+    "normalizer"
+  ],
+  "authors": [
+    {
+      "name": "Andreas Möller",
+      "email": "am@localheinz.com"
+    }
+  ],
+  "homepage": "https://getcomposer.org/doc/04-schema.md#repositories",
+  "repositories": {
+    "foo": {
+      "url": "http://packages.foo.com",
+      "only": ["vendor-two/*","vendor-one/*"],
+      "type": "composer"
+    }
+  }
+}
diff --git a/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php b/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php
index d87b7041..7c8ee3cd 100644
--- a/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php
+++ b/test/Unit/Vendor/Composer/ComposerJsonNormalizerTest.php
@@ -28,7 +28,9 @@
 #[Framework\Attributes\CoversClass(Vendor\Composer\ComposerJsonNormalizer::class)]
 #[Framework\Attributes\CoversClass(Vendor\Composer\ConfigHashNormalizer::class)]
 #[Framework\Attributes\CoversClass(Vendor\Composer\PackageHashNormalizer::class)]
+#[Framework\Attributes\CoversClass(Vendor\Composer\RepositoriesHashNormalizer::class)]
 #[Framework\Attributes\CoversClass(Vendor\Composer\VersionConstraintNormalizer::class)]
+#[Framework\Attributes\CoversClass(Vendor\Composer\WildcardSorter::class)]
 #[Framework\Attributes\UsesClass(ChainNormalizer::class)]
 #[Framework\Attributes\UsesClass(Exception\OriginalInvalidAccordingToSchema::class)]
 #[Framework\Attributes\UsesClass(Format\JsonEncodeOptions::class)]