Full Code of composer/composer for AI

main 67dba2adea72 cached
1000 files
5.7 MB
1.6M tokens
4774 symbols
1 requests
Download .txt
Showing preview only (6,218K chars total). Download the full file or copy to clipboard to get everything.
Repository: composer/composer
Branch: main
Commit: 67dba2adea72
Files: 1000
Total size: 5.7 MB

Directory structure:
gitextract_iy3i6irn/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── support-request---question.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── autoloader.yml
│       ├── close-stale-support.yml
│       ├── conductor.yaml
│       ├── continuous-integration.yml
│       ├── lint.yml
│       ├── php32bit.yml
│       ├── phpstan.yml
│       └── release.yml
├── .gitignore
├── .php-cs-fixer.php
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── PORTING_INFO
├── README.md
├── UPGRADE-2.0.md
├── bin/
│   ├── compile
│   └── composer
├── composer.json
├── doc/
│   ├── 00-intro.md
│   ├── 01-basic-usage.md
│   ├── 02-libraries.md
│   ├── 03-cli.md
│   ├── 04-schema.md
│   ├── 05-repositories.md
│   ├── 06-config.md
│   ├── 07-runtime.md
│   ├── 08-community.md
│   ├── articles/
│   │   ├── aliases.md
│   │   ├── authentication-for-private-packages.md
│   │   ├── autoloader-optimization.md
│   │   ├── composer-platform-dependencies.md
│   │   ├── custom-installers.md
│   │   ├── handling-private-packages.md
│   │   ├── plugins.md
│   │   ├── repository-priorities.md
│   │   ├── resolving-merge-conflicts.md
│   │   ├── scripts.md
│   │   ├── troubleshooting.md
│   │   ├── vendor-binaries.md
│   │   └── versions.md
│   ├── dev/
│   │   └── DefaultPolicy.md
│   ├── faqs/
│   │   ├── how-do-i-install-a-package-to-a-custom-path-for-my-framework.md
│   │   ├── how-to-install-composer-programmatically.md
│   │   ├── how-to-install-untrusted-packages-safely.md
│   │   ├── how-to-use-composer-behind-a-proxy.md
│   │   ├── should-i-commit-the-dependencies-in-my-vendor-directory.md
│   │   ├── which-version-numbering-system-does-composer-itself-use.md
│   │   ├── why-are-unbound-version-constraints-a-bad-idea.md
│   │   ├── why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md
│   │   └── why-cant-composer-load-repositories-recursively.md
│   └── fixtures/
│       ├── fixtures.md
│       ├── repo-composer-plain/
│       │   └── packages.json
│       └── repo-composer-with-providers/
│           ├── p/
│           │   ├── bar/
│           │   │   └── baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json
│           │   ├── foo/
│           │   │   └── bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json
│           │   ├── gar/
│           │   │   └── nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json
│           │   ├── provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json
│           │   └── qux/
│           │       └── quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json
│           └── packages.json
├── phpstan/
│   ├── baseline-8.4.neon
│   ├── baseline.neon
│   ├── config.neon
│   ├── ignore-by-php-version.neon.php
│   └── rules.neon
├── phpunit.xml.dist
├── res/
│   ├── composer-lock-schema.json
│   ├── composer-repository-schema.json
│   └── composer-schema.json
├── src/
│   ├── Composer/
│   │   ├── Advisory/
│   │   │   ├── AuditConfig.php
│   │   │   ├── Auditor.php
│   │   │   ├── IgnoredSecurityAdvisory.php
│   │   │   ├── PartialSecurityAdvisory.php
│   │   │   └── SecurityAdvisory.php
│   │   ├── Autoload/
│   │   │   ├── AutoloadGenerator.php
│   │   │   ├── ClassLoader.php
│   │   │   └── ClassMapGenerator.php
│   │   ├── Cache.php
│   │   ├── Command/
│   │   │   ├── AboutCommand.php
│   │   │   ├── ArchiveCommand.php
│   │   │   ├── AuditCommand.php
│   │   │   ├── BaseCommand.php
│   │   │   ├── BaseConfigCommand.php
│   │   │   ├── BaseDependencyCommand.php
│   │   │   ├── BumpCommand.php
│   │   │   ├── CheckPlatformReqsCommand.php
│   │   │   ├── ClearCacheCommand.php
│   │   │   ├── CompletionTrait.php
│   │   │   ├── ConfigCommand.php
│   │   │   ├── CreateProjectCommand.php
│   │   │   ├── DependsCommand.php
│   │   │   ├── DiagnoseCommand.php
│   │   │   ├── DumpAutoloadCommand.php
│   │   │   ├── ExecCommand.php
│   │   │   ├── FundCommand.php
│   │   │   ├── GlobalCommand.php
│   │   │   ├── HomeCommand.php
│   │   │   ├── InitCommand.php
│   │   │   ├── InstallCommand.php
│   │   │   ├── LicensesCommand.php
│   │   │   ├── OutdatedCommand.php
│   │   │   ├── PackageDiscoveryTrait.php
│   │   │   ├── ProhibitsCommand.php
│   │   │   ├── ReinstallCommand.php
│   │   │   ├── RemoveCommand.php
│   │   │   ├── RepositoryCommand.php
│   │   │   ├── RequireCommand.php
│   │   │   ├── RunScriptCommand.php
│   │   │   ├── ScriptAliasCommand.php
│   │   │   ├── SearchCommand.php
│   │   │   ├── SelfUpdateCommand.php
│   │   │   ├── ShowCommand.php
│   │   │   ├── StatusCommand.php
│   │   │   ├── SuggestsCommand.php
│   │   │   ├── UpdateCommand.php
│   │   │   └── ValidateCommand.php
│   │   ├── Compiler.php
│   │   ├── Composer.php
│   │   ├── Config/
│   │   │   ├── ConfigSourceInterface.php
│   │   │   └── JsonConfigSource.php
│   │   ├── Config.php
│   │   ├── Console/
│   │   │   ├── Application.php
│   │   │   ├── GithubActionError.php
│   │   │   ├── HtmlOutputFormatter.php
│   │   │   └── Input/
│   │   │       ├── InputArgument.php
│   │   │       └── InputOption.php
│   │   ├── DependencyResolver/
│   │   │   ├── Decisions.php
│   │   │   ├── DefaultPolicy.php
│   │   │   ├── GenericRule.php
│   │   │   ├── LocalRepoTransaction.php
│   │   │   ├── LockTransaction.php
│   │   │   ├── MultiConflictRule.php
│   │   │   ├── Operation/
│   │   │   │   ├── InstallOperation.php
│   │   │   │   ├── MarkAliasInstalledOperation.php
│   │   │   │   ├── MarkAliasUninstalledOperation.php
│   │   │   │   ├── OperationInterface.php
│   │   │   │   ├── SolverOperation.php
│   │   │   │   ├── UninstallOperation.php
│   │   │   │   └── UpdateOperation.php
│   │   │   ├── PolicyInterface.php
│   │   │   ├── Pool.php
│   │   │   ├── PoolBuilder.php
│   │   │   ├── PoolOptimizer.php
│   │   │   ├── Problem.php
│   │   │   ├── Request.php
│   │   │   ├── Rule.php
│   │   │   ├── Rule2Literals.php
│   │   │   ├── RuleSet.php
│   │   │   ├── RuleSetGenerator.php
│   │   │   ├── RuleSetIterator.php
│   │   │   ├── RuleWatchChain.php
│   │   │   ├── RuleWatchGraph.php
│   │   │   ├── RuleWatchNode.php
│   │   │   ├── SecurityAdvisoryPoolFilter.php
│   │   │   ├── Solver.php
│   │   │   ├── SolverBugException.php
│   │   │   ├── SolverProblemsException.php
│   │   │   └── Transaction.php
│   │   ├── Downloader/
│   │   │   ├── ArchiveDownloader.php
│   │   │   ├── ChangeReportInterface.php
│   │   │   ├── DownloadManager.php
│   │   │   ├── DownloaderInterface.php
│   │   │   ├── DvcsDownloaderInterface.php
│   │   │   ├── FileDownloader.php
│   │   │   ├── FilesystemException.php
│   │   │   ├── FossilDownloader.php
│   │   │   ├── GitDownloader.php
│   │   │   ├── GzipDownloader.php
│   │   │   ├── HgDownloader.php
│   │   │   ├── MaxFileSizeExceededException.php
│   │   │   ├── PathDownloader.php
│   │   │   ├── PerforceDownloader.php
│   │   │   ├── PharDownloader.php
│   │   │   ├── RarDownloader.php
│   │   │   ├── SvnDownloader.php
│   │   │   ├── TarDownloader.php
│   │   │   ├── TransportException.php
│   │   │   ├── VcsCapableDownloaderInterface.php
│   │   │   ├── VcsDownloader.php
│   │   │   ├── XzDownloader.php
│   │   │   └── ZipDownloader.php
│   │   ├── EventDispatcher/
│   │   │   ├── Event.php
│   │   │   ├── EventDispatcher.php
│   │   │   ├── EventSubscriberInterface.php
│   │   │   └── ScriptExecutionException.php
│   │   ├── Exception/
│   │   │   ├── IrrecoverableDownloadException.php
│   │   │   └── NoSslException.php
│   │   ├── Factory.php
│   │   ├── Filter/
│   │   │   └── PlatformRequirementFilter/
│   │   │       ├── IgnoreAllPlatformRequirementFilter.php
│   │   │       ├── IgnoreListPlatformRequirementFilter.php
│   │   │       ├── IgnoreNothingPlatformRequirementFilter.php
│   │   │       ├── PlatformRequirementFilterFactory.php
│   │   │       └── PlatformRequirementFilterInterface.php
│   │   ├── IO/
│   │   │   ├── BaseIO.php
│   │   │   ├── BufferIO.php
│   │   │   ├── ConsoleIO.php
│   │   │   ├── IOInterface.php
│   │   │   └── NullIO.php
│   │   ├── InstalledVersions.php
│   │   ├── Installer/
│   │   │   ├── BinaryInstaller.php
│   │   │   ├── BinaryPresenceInterface.php
│   │   │   ├── InstallationManager.php
│   │   │   ├── InstallerEvent.php
│   │   │   ├── InstallerEvents.php
│   │   │   ├── InstallerInterface.php
│   │   │   ├── LibraryInstaller.php
│   │   │   ├── MetapackageInstaller.php
│   │   │   ├── NoopInstaller.php
│   │   │   ├── PackageEvent.php
│   │   │   ├── PackageEvents.php
│   │   │   ├── PluginInstaller.php
│   │   │   ├── ProjectInstaller.php
│   │   │   └── SuggestedPackagesReporter.php
│   │   ├── Installer.php
│   │   ├── Json/
│   │   │   ├── JsonFile.php
│   │   │   ├── JsonFormatter.php
│   │   │   ├── JsonManipulator.php
│   │   │   └── JsonValidationException.php
│   │   ├── PHPStan/
│   │   │   ├── ConfigReturnTypeExtension.php
│   │   │   └── RuleReasonDataReturnTypeExtension.php
│   │   ├── Package/
│   │   │   ├── AliasPackage.php
│   │   │   ├── Archiver/
│   │   │   │   ├── ArchivableFilesFilter.php
│   │   │   │   ├── ArchivableFilesFinder.php
│   │   │   │   ├── ArchiveManager.php
│   │   │   │   ├── ArchiverInterface.php
│   │   │   │   ├── BaseExcludeFilter.php
│   │   │   │   ├── ComposerExcludeFilter.php
│   │   │   │   ├── GitExcludeFilter.php
│   │   │   │   ├── PharArchiver.php
│   │   │   │   └── ZipArchiver.php
│   │   │   ├── BasePackage.php
│   │   │   ├── Comparer/
│   │   │   │   └── Comparer.php
│   │   │   ├── CompleteAliasPackage.php
│   │   │   ├── CompletePackage.php
│   │   │   ├── CompletePackageInterface.php
│   │   │   ├── Dumper/
│   │   │   │   └── ArrayDumper.php
│   │   │   ├── Link.php
│   │   │   ├── Loader/
│   │   │   │   ├── ArrayLoader.php
│   │   │   │   ├── InvalidPackageException.php
│   │   │   │   ├── JsonLoader.php
│   │   │   │   ├── LoaderInterface.php
│   │   │   │   ├── RootPackageLoader.php
│   │   │   │   └── ValidatingArrayLoader.php
│   │   │   ├── Locker.php
│   │   │   ├── Package.php
│   │   │   ├── PackageInterface.php
│   │   │   ├── RootAliasPackage.php
│   │   │   ├── RootPackage.php
│   │   │   ├── RootPackageInterface.php
│   │   │   └── Version/
│   │   │       ├── StabilityFilter.php
│   │   │       ├── VersionBumper.php
│   │   │       ├── VersionGuesser.php
│   │   │       ├── VersionParser.php
│   │   │       └── VersionSelector.php
│   │   ├── PartialComposer.php
│   │   ├── Platform/
│   │   │   ├── HhvmDetector.php
│   │   │   ├── Runtime.php
│   │   │   └── Version.php
│   │   ├── Plugin/
│   │   │   ├── Capability/
│   │   │   │   ├── Capability.php
│   │   │   │   └── CommandProvider.php
│   │   │   ├── Capable.php
│   │   │   ├── CommandEvent.php
│   │   │   ├── PluginBlockedException.php
│   │   │   ├── PluginEvents.php
│   │   │   ├── PluginInterface.php
│   │   │   ├── PluginManager.php
│   │   │   ├── PostFileDownloadEvent.php
│   │   │   ├── PreCommandRunEvent.php
│   │   │   ├── PreFileDownloadEvent.php
│   │   │   └── PrePoolCreateEvent.php
│   │   ├── Question/
│   │   │   └── StrictConfirmationQuestion.php
│   │   ├── Repository/
│   │   │   ├── AdvisoryProviderInterface.php
│   │   │   ├── ArrayRepository.php
│   │   │   ├── ArtifactRepository.php
│   │   │   ├── CanonicalPackagesTrait.php
│   │   │   ├── ComposerRepository.php
│   │   │   ├── CompositeRepository.php
│   │   │   ├── ConfigurableRepositoryInterface.php
│   │   │   ├── FilesystemRepository.php
│   │   │   ├── FilterRepository.php
│   │   │   ├── InstalledArrayRepository.php
│   │   │   ├── InstalledFilesystemRepository.php
│   │   │   ├── InstalledRepository.php
│   │   │   ├── InstalledRepositoryInterface.php
│   │   │   ├── InvalidRepositoryException.php
│   │   │   ├── LockArrayRepository.php
│   │   │   ├── PackageRepository.php
│   │   │   ├── PathRepository.php
│   │   │   ├── PearRepository.php
│   │   │   ├── PlatformRepository.php
│   │   │   ├── RepositoryFactory.php
│   │   │   ├── RepositoryInterface.php
│   │   │   ├── RepositoryManager.php
│   │   │   ├── RepositorySecurityException.php
│   │   │   ├── RepositorySet.php
│   │   │   ├── RepositoryUtils.php
│   │   │   ├── RootPackageRepository.php
│   │   │   ├── Vcs/
│   │   │   │   ├── ForgejoDriver.php
│   │   │   │   ├── FossilDriver.php
│   │   │   │   ├── GitBitbucketDriver.php
│   │   │   │   ├── GitDriver.php
│   │   │   │   ├── GitHubDriver.php
│   │   │   │   ├── GitLabDriver.php
│   │   │   │   ├── HgDriver.php
│   │   │   │   ├── PerforceDriver.php
│   │   │   │   ├── SvnDriver.php
│   │   │   │   ├── VcsDriver.php
│   │   │   │   └── VcsDriverInterface.php
│   │   │   ├── VcsRepository.php
│   │   │   ├── VersionCacheInterface.php
│   │   │   ├── WritableArrayRepository.php
│   │   │   └── WritableRepositoryInterface.php
│   │   ├── Script/
│   │   │   ├── Event.php
│   │   │   └── ScriptEvents.php
│   │   ├── SelfUpdate/
│   │   │   ├── Keys.php
│   │   │   └── Versions.php
│   │   └── Util/
│   │       ├── AuthHelper.php
│   │       ├── Bitbucket.php
│   │       ├── ComposerMirror.php
│   │       ├── ConfigValidator.php
│   │       ├── ErrorHandler.php
│   │       ├── Filesystem.php
│   │       ├── Forgejo.php
│   │       ├── ForgejoRepositoryData.php
│   │       ├── ForgejoUrl.php
│   │       ├── Git.php
│   │       ├── GitHub.php
│   │       ├── GitLab.php
│   │       ├── Hg.php
│   │       ├── Http/
│   │       │   ├── CurlDownloader.php
│   │       │   ├── CurlResponse.php
│   │       │   ├── ProxyItem.php
│   │       │   ├── ProxyManager.php
│   │       │   ├── RequestProxy.php
│   │       │   └── Response.php
│   │       ├── HttpDownloader.php
│   │       ├── IniHelper.php
│   │       ├── Loop.php
│   │       ├── MetadataMinifier.php
│   │       ├── NoProxyPattern.php
│   │       ├── PackageInfo.php
│   │       ├── PackageSorter.php
│   │       ├── Perforce.php
│   │       ├── Platform.php
│   │       ├── ProcessExecutor.php
│   │       ├── RemoteFilesystem.php
│   │       ├── Silencer.php
│   │       ├── StreamContextFactory.php
│   │       ├── Svn.php
│   │       ├── SyncHelper.php
│   │       ├── Tar.php
│   │       ├── TlsHelper.php
│   │       ├── Url.php
│   │       └── Zip.php
│   └── bootstrap.php
└── tests/
    ├── Composer/
    │   └── Test/
    │       ├── Advisory/
    │       │   ├── AuditConfigTest.php
    │       │   └── AuditorTest.php
    │       ├── AllFunctionalTest.php
    │       ├── ApplicationTest.php
    │       ├── Autoload/
    │       │   ├── AutoloadGeneratorTest.php
    │       │   ├── ClassLoaderTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── Namespaced/
    │       │   │   │   └── Foo.php
    │       │   │   ├── Pearlike/
    │       │   │   │   └── Foo.php
    │       │   │   ├── SubNamespace/
    │       │   │   │   ├── Bar.php
    │       │   │   │   └── Foo.php
    │       │   │   ├── autoload_classmap.php
    │       │   │   ├── autoload_classmap2.php
    │       │   │   ├── autoload_classmap3.php
    │       │   │   ├── autoload_classmap4.php
    │       │   │   ├── autoload_classmap5.php
    │       │   │   ├── autoload_classmap6.php
    │       │   │   ├── autoload_classmap7.php
    │       │   │   ├── autoload_classmap8.php
    │       │   │   ├── autoload_classmap9.php
    │       │   │   ├── autoload_files.php
    │       │   │   ├── autoload_files2.php
    │       │   │   ├── autoload_files_duplicates.php
    │       │   │   ├── autoload_files_files_by_dependency.php
    │       │   │   ├── autoload_files_functions.php
    │       │   │   ├── autoload_files_functions_with_removed_extra.php
    │       │   │   ├── autoload_files_target_dir.php
    │       │   │   ├── autoload_functions.php
    │       │   │   ├── autoload_functions_by_dependency.php
    │       │   │   ├── autoload_main.php
    │       │   │   ├── autoload_main2.php
    │       │   │   ├── autoload_main3.php
    │       │   │   ├── autoload_main4.php
    │       │   │   ├── autoload_main5.php
    │       │   │   ├── autoload_phar.php
    │       │   │   ├── autoload_phar_psr4.php
    │       │   │   ├── autoload_phar_static.php
    │       │   │   ├── autoload_psr4.php
    │       │   │   ├── autoload_psr4_2.php
    │       │   │   ├── autoload_psr4_3.php
    │       │   │   ├── autoload_real_files_by_dependency.php
    │       │   │   ├── autoload_real_functions.php
    │       │   │   ├── autoload_real_functions_with_include_paths.php
    │       │   │   ├── autoload_real_functions_with_removed_include_paths_and_autolad_files.php
    │       │   │   ├── autoload_real_include_path.php
    │       │   │   ├── autoload_real_target_dir.php
    │       │   │   ├── autoload_static_files_by_dependency.php
    │       │   │   ├── autoload_static_functions.php
    │       │   │   ├── autoload_static_functions_with_include_paths.php
    │       │   │   ├── autoload_static_functions_with_removed_include_paths_and_autolad_files.php
    │       │   │   ├── autoload_static_include_path.php
    │       │   │   ├── autoload_static_target_dir.php
    │       │   │   ├── autoload_target_dir.php
    │       │   │   ├── autoload_vendors.php
    │       │   │   ├── autoload_vendors_meta.php
    │       │   │   ├── include_paths.php
    │       │   │   ├── include_paths_functions.php
    │       │   │   ├── include_paths_functions_with_removed_extra.php
    │       │   │   └── platform/
    │       │   │       ├── no_extensions_required.php
    │       │   │       ├── no_php_required.php
    │       │   │       ├── no_php_upper_bound.php
    │       │   │       ├── php_64bit_required.php
    │       │   │       ├── replaced_provided_exts.php
    │       │   │       ├── specific_php_64bit_required.php
    │       │   │       ├── specific_php_release.php
    │       │   │       └── typical.php
    │       │   └── MinimumVersionSupport/
    │       │       ├── .gitignore
    │       │       ├── Foo.php
    │       │       ├── composer.json
    │       │       ├── main.php
    │       │       └── test.php
    │       ├── CacheTest.php
    │       ├── Command/
    │       │   ├── AboutCommandTest.php
    │       │   ├── ArchiveCommandTest.php
    │       │   ├── AuditCommandTest.php
    │       │   ├── BaseDependencyCommandTest.php
    │       │   ├── BumpCommandTest.php
    │       │   ├── CheckPlatformReqsCommandTest.php
    │       │   ├── ClearCacheCommandTest.php
    │       │   ├── ConfigCommandTest.php
    │       │   ├── DiagnoseCommandTest.php
    │       │   ├── DumpAutoloadCommandTest.php
    │       │   ├── ExecCommandTest.php
    │       │   ├── FundCommandTest.php
    │       │   ├── GlobalCommandTest.php
    │       │   ├── HomeCommandTest.php
    │       │   ├── InitCommandTest.php
    │       │   ├── InstallCommandTest.php
    │       │   ├── LicensesCommandTest.php
    │       │   ├── ReinstallCommandTest.php
    │       │   ├── RemoveCommandTest.php
    │       │   ├── RepositoryCommandTest.php
    │       │   ├── RequireCommandTest.php
    │       │   ├── RunScriptCommandTest.php
    │       │   ├── SearchCommandTest.php
    │       │   ├── SelfUpdateCommandTest.php
    │       │   ├── ShowCommandTest.php
    │       │   ├── StatusCommandTest.php
    │       │   ├── SuggestsCommandTest.php
    │       │   ├── UpdateCommandTest.php
    │       │   └── ValidateCommandTest.php
    │       ├── CompletionFunctionalTest.php
    │       ├── ComposerTest.php
    │       ├── Config/
    │       │   ├── Fixtures/
    │       │   │   ├── addLink/
    │       │   │   │   ├── conflict-from-empty.json
    │       │   │   │   ├── conflict-from-oneOfEverything.json
    │       │   │   │   ├── conflict-from-twoOfEverything.json
    │       │   │   │   ├── provide-from-empty.json
    │       │   │   │   ├── provide-from-oneOfEverything.json
    │       │   │   │   ├── provide-from-twoOfEverything.json
    │       │   │   │   ├── replace-from-empty.json
    │       │   │   │   ├── replace-from-oneOfEverything.json
    │       │   │   │   ├── replace-from-twoOfEverything.json
    │       │   │   │   ├── require-dev-from-empty.json
    │       │   │   │   ├── require-dev-from-oneOfEverything.json
    │       │   │   │   ├── require-dev-from-twoOfEverything.json
    │       │   │   │   ├── require-from-empty.json
    │       │   │   │   ├── require-from-oneOfEverything.json
    │       │   │   │   ├── require-from-twoOfEverything.json
    │       │   │   │   ├── suggest-from-empty.json
    │       │   │   │   ├── suggest-from-oneOfEverything.json
    │       │   │   │   └── suggest-from-twoOfEverything.json
    │       │   │   ├── composer-empty.json
    │       │   │   ├── composer-one-of-everything.json
    │       │   │   ├── composer-repositories.json
    │       │   │   ├── composer-two-of-everything.json
    │       │   │   ├── config/
    │       │   │   │   ├── config-with-exampletld-repository-and-options.json
    │       │   │   │   ├── config-with-exampletld-repository-as-list.json
    │       │   │   │   ├── config-with-exampletld-repository.json
    │       │   │   │   └── config-with-packagist-false.json
    │       │   │   └── removeLink/
    │       │   │       ├── conflict-to-empty-after.json
    │       │   │       ├── conflict-to-empty.json
    │       │   │       ├── conflict-to-oneOfEverything.json
    │       │   │       ├── conflict-to-twoOfEverything.json
    │       │   │       ├── provide-to-empty-after.json
    │       │   │       ├── provide-to-empty.json
    │       │   │       ├── provide-to-oneOfEverything.json
    │       │   │       ├── provide-to-twoOfEverything.json
    │       │   │       ├── replace-to-empty-after.json
    │       │   │       ├── replace-to-empty.json
    │       │   │       ├── replace-to-oneOfEverything.json
    │       │   │       ├── replace-to-twoOfEverything.json
    │       │   │       ├── require-dev-to-empty-after.json
    │       │   │       ├── require-dev-to-empty.json
    │       │   │       ├── require-dev-to-oneOfEverything.json
    │       │   │       ├── require-dev-to-twoOfEverything.json
    │       │   │       ├── require-to-empty-after.json
    │       │   │       ├── require-to-empty.json
    │       │   │       ├── require-to-oneOfEverything.json
    │       │   │       ├── require-to-twoOfEverything.json
    │       │   │       ├── suggest-to-empty-after.json
    │       │   │       ├── suggest-to-empty.json
    │       │   │       ├── suggest-to-oneOfEverything.json
    │       │   │       └── suggest-to-twoOfEverything.json
    │       │   └── JsonConfigSourceTest.php
    │       ├── ConfigTest.php
    │       ├── Console/
    │       │   └── HtmlOutputFormatterTest.php
    │       ├── DefaultConfigTest.php
    │       ├── DependencyResolver/
    │       │   ├── DefaultPolicyTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── poolbuilder/
    │       │   │   │   ├── alias-priority-conflicting.test
    │       │   │   │   ├── alias-with-reference.test
    │       │   │   │   ├── constraint-expansion-works-with-exact-versions.test
    │       │   │   │   ├── filter-impossible-packages-locked-replacer.test
    │       │   │   │   ├── filter-impossible-packages-only-required-provides.test
    │       │   │   │   ├── filter-impossible-packages-only-required-replaces.test
    │       │   │   │   ├── filter-impossible-packages-only-required.test
    │       │   │   │   ├── filter-impossible-packages-provides.test
    │       │   │   │   ├── filter-impossible-packages-replaces.test
    │       │   │   │   ├── filter-impossible-packages.test
    │       │   │   │   ├── fixed-packages-do-not-load-from-repos.test
    │       │   │   │   ├── fixed-packages-replaced-do-not-load-from-repos.test
    │       │   │   │   ├── load-replaced-package-if-replacer-dropped.test
    │       │   │   │   ├── load-replaced-root-package-if-replacer-dropped.test
    │       │   │   │   ├── mirrored-path-repo/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── multi-repo-replace-partial-update-all.test
    │       │   │   │   ├── multi-repo-replace.test
    │       │   │   │   ├── must-expand-root-reqs.test
    │       │   │   │   ├── package-versions-are-not-loaded-if-not-required-expansion.test
    │       │   │   │   ├── package-versions-are-not-loaded-if-not-required-recursive.test
    │       │   │   │   ├── packages-that-do-not-exist.test
    │       │   │   │   ├── partial-update-transitive-deps-no-root-unfix.test
    │       │   │   │   ├── partial-update-transitive-deps-unfix.test
    │       │   │   │   ├── partial-update-unfixes-path-repo-replacer-with-transitive-deps.test
    │       │   │   │   ├── partial-update-unfixes-path-repos-always-but-not-their-transitive-deps.test
    │       │   │   │   ├── partial-update-unfixing-locked-deps.test
    │       │   │   │   ├── partial-update-unfixing-replacers.test
    │       │   │   │   ├── partial-update-unfixing-with-replacers-providers.test
    │       │   │   │   ├── partial-update-unfixing-with-replacers.test
    │       │   │   │   ├── partial-update.test
    │       │   │   │   ├── root-requirements-avoid-loading-further-versions.test
    │       │   │   │   ├── stability-flags-take-over-minimum-stability-and-filter-packages.test
    │       │   │   │   ├── symlinked-path-repo/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symlinked-path-repo-replacer/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── symlinked-path-repo-with-replaced-deps/
    │       │   │   │       └── composer.json
    │       │   │   └── pooloptimizer/
    │       │   │       ├── aliases.test
    │       │   │       ├── basic-prefer-highest.test
    │       │   │       ├── basic-prefer-lowest.test
    │       │   │       ├── complex-prefer-lowest.test
    │       │   │       ├── conflict.test
    │       │   │       ├── conflict2.test
    │       │   │       ├── group-by-required.test
    │       │   │       ├── locked-fixed-untouched.test
    │       │   │       └── replaces.test
    │       │   ├── PoolBuilderTest.php
    │       │   ├── PoolOptimizerTest.php
    │       │   ├── PoolTest.php
    │       │   ├── RequestTest.php
    │       │   ├── RuleSetIteratorTest.php
    │       │   ├── RuleSetTest.php
    │       │   ├── RuleTest.php
    │       │   ├── SecurityAdvisoryPoolFilterTest.php
    │       │   ├── SolverTest.php
    │       │   └── TransactionTest.php
    │       ├── DocumentationTest.php
    │       ├── Downloader/
    │       │   ├── ArchiveDownloaderTest.php
    │       │   ├── DownloadManagerTest.php
    │       │   ├── FileDownloaderTest.php
    │       │   ├── FossilDownloaderTest.php
    │       │   ├── GitDownloaderTest.php
    │       │   ├── HgDownloaderTest.php
    │       │   ├── PerforceDownloaderTest.php
    │       │   ├── XzDownloaderTest.php
    │       │   └── ZipDownloaderTest.php
    │       ├── EventDispatcher/
    │       │   └── EventDispatcherTest.php
    │       ├── FactoryTest.php
    │       ├── Filter/
    │       │   └── PlatformRequirementFilter/
    │       │       ├── IgnoreAllPlatformRequirementFilterTest.php
    │       │       ├── IgnoreListPlatformRequirementFilterTest.php
    │       │       ├── IgnoreNothingPlatformRequirementFilterTest.php
    │       │       └── PlatformRequirementFilterFactoryTest.php
    │       ├── Fixtures/
    │       │   ├── functional/
    │       │   │   ├── create-project-command.test
    │       │   │   ├── create-project-shows-full-hash-for-dev-packages/
    │       │   │   │   └── packages.json
    │       │   │   ├── create-project-shows-full-hash-for-dev-packages.test
    │       │   │   ├── installed-versions/
    │       │   │   │   ├── Hooks.php
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-console/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── symfony-process/
    │       │   │   │       └── composer.json
    │       │   │   ├── installed-versions.test
    │       │   │   ├── installed-versions2/
    │       │   │   │   ├── Hooks.php
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-console/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-process/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── vendor/
    │       │   │   │       ├── autoload.php
    │       │   │   │       ├── composer/
    │       │   │   │       │   ├── ClassLoader.php
    │       │   │   │       │   ├── InstalledVersions.php
    │       │   │   │       │   ├── LICENSE
    │       │   │   │       │   ├── autoload_classmap.php
    │       │   │   │       │   ├── autoload_files.php
    │       │   │   │       │   ├── autoload_namespaces.php
    │       │   │   │       │   ├── autoload_psr4.php
    │       │   │   │       │   ├── autoload_real.php
    │       │   │   │       │   ├── autoload_static.php
    │       │   │   │       │   ├── installed.json
    │       │   │   │       │   ├── installed.php
    │       │   │   │       │   └── platform_check.php
    │       │   │   │       ├── plugin/
    │       │   │   │       │   ├── a/
    │       │   │   │       │   │   ├── PluginA.php
    │       │   │   │       │   │   └── composer.json
    │       │   │   │       │   └── b/
    │       │   │   │       │       ├── PluginB.php
    │       │   │   │       │       └── composer.json
    │       │   │   │       └── symfony/
    │       │   │   │           ├── console/
    │       │   │   │           │   └── composer.json
    │       │   │   │           ├── filesystem/
    │       │   │   │           │   ├── CHANGELOG.md
    │       │   │   │           │   ├── Exception/
    │       │   │   │           │   │   ├── ExceptionInterface.php
    │       │   │   │           │   │   ├── FileNotFoundException.php
    │       │   │   │           │   │   ├── IOException.php
    │       │   │   │           │   │   ├── IOExceptionInterface.php
    │       │   │   │           │   │   └── InvalidArgumentException.php
    │       │   │   │           │   ├── Filesystem.php
    │       │   │   │           │   ├── LICENSE
    │       │   │   │           │   ├── README.md
    │       │   │   │           │   └── composer.json
    │       │   │   │           ├── polyfill-ctype/
    │       │   │   │           │   ├── Ctype.php
    │       │   │   │           │   ├── LICENSE
    │       │   │   │           │   ├── README.md
    │       │   │   │           │   ├── bootstrap.php
    │       │   │   │           │   ├── bootstrap80.php
    │       │   │   │           │   └── composer.json
    │       │   │   │           └── process/
    │       │   │   │               └── composer.json
    │       │   │   ├── installed-versions2.test
    │       │   │   ├── plugin-autoloading-only-loads-dependencies/
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── deps-pkg/
    │       │   │   │   │   ├── composer.json
    │       │   │   │   │   └── exec.php
    │       │   │   │   ├── evil-pkg/
    │       │   │   │   │   ├── composer.json
    │       │   │   │   │   └── exec.php
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── vendor/
    │       │   │   │       ├── autoload.php
    │       │   │   │       ├── composer/
    │       │   │   │       │   ├── ClassLoader.php
    │       │   │   │       │   ├── InstalledVersions.php
    │       │   │   │       │   ├── LICENSE
    │       │   │   │       │   ├── autoload_classmap.php
    │       │   │   │       │   ├── autoload_files.php
    │       │   │   │       │   ├── autoload_namespaces.php
    │       │   │   │       │   ├── autoload_psr4.php
    │       │   │   │       │   ├── autoload_real.php
    │       │   │   │       │   ├── autoload_static.php
    │       │   │   │       │   ├── installed.json
    │       │   │   │       │   └── installed.php
    │       │   │   │       └── evil/
    │       │   │   │           └── pkg/
    │       │   │   │               ├── composer.json
    │       │   │   │               └── exec.php
    │       │   │   └── plugin-autoloading-only-loads-dependencies.test
    │       │   ├── installer/
    │       │   │   ├── SAMPLE
    │       │   │   ├── abandoned-listed.test
    │       │   │   ├── alias-in-complex-constraints.test
    │       │   │   ├── alias-in-lock.test
    │       │   │   ├── alias-in-lock2.test
    │       │   │   ├── alias-on-unloadable-package.test
    │       │   │   ├── alias-solver-problems.test
    │       │   │   ├── alias-solver-problems2.test
    │       │   │   ├── alias-with-reference.test
    │       │   │   ├── aliased-priority-conflicting.test
    │       │   │   ├── aliased-priority.test
    │       │   │   ├── aliases-with-require-dev.test
    │       │   │   ├── broken-deps-do-not-replace.test
    │       │   │   ├── circular-dependency-errors.test
    │       │   │   ├── circular-dependency.test
    │       │   │   ├── circular-dependency2.test
    │       │   │   ├── conflict-against-provided-by-dep-package-works.test
    │       │   │   ├── conflict-against-provided-package-works.test
    │       │   │   ├── conflict-against-replaced-by-dep-package-problem.test
    │       │   │   ├── conflict-against-replaced-package-problem.test
    │       │   │   ├── conflict-between-dependents.test
    │       │   │   ├── conflict-between-root-and-dependent.test
    │       │   │   ├── conflict-downgrade-nested.test
    │       │   │   ├── conflict-downgrade.test
    │       │   │   ├── conflict-on-root-with-alias-prevents-update-if-not-required.test
    │       │   │   ├── conflict-with-alias-in-lock-does-prevents-install.test
    │       │   │   ├── conflict-with-alias-prevents-update-if-not-required.test
    │       │   │   ├── conflict-with-alias-prevents-update.test
    │       │   │   ├── conflict-with-all-dependencies-option-dont-recommend-to-use-it.test
    │       │   │   ├── deduplicate-solver-problems.test
    │       │   │   ├── disjunctive-multi-constraints.test
    │       │   │   ├── full-update-minimal-changes.test
    │       │   │   ├── github-issues-4319.test
    │       │   │   ├── github-issues-4795-2.test
    │       │   │   ├── github-issues-4795.test
    │       │   │   ├── github-issues-7051.test
    │       │   │   ├── github-issues-8902.test
    │       │   │   ├── github-issues-8903.test
    │       │   │   ├── github-issues-9012.test
    │       │   │   ├── github-issues-9290.test
    │       │   │   ├── hint-main-rename.test
    │       │   │   ├── install-aliased-alias.test
    │       │   │   ├── install-branch-alias-composer-repo/
    │       │   │   │   └── packages.json
    │       │   │   ├── install-branch-alias-composer-repo.test
    │       │   │   ├── install-dev-using-dist.test
    │       │   │   ├── install-dev.test
    │       │   │   ├── install-forces-reinstall-if-abandon-changes.test
    │       │   │   ├── install-from-incomplete-lock-with-ignore.test
    │       │   │   ├── install-from-incomplete-lock.test
    │       │   │   ├── install-from-lock-removes-package.test
    │       │   │   ├── install-funding-notice-env.test
    │       │   │   ├── install-funding-notice-not-displayed-env.test
    │       │   │   ├── install-funding-notice.test
    │       │   │   ├── install-ignore-platform-package-requirement-list.test
    │       │   │   ├── install-ignore-platform-package-requirement-wildcard.test
    │       │   │   ├── install-ignore-platform-package-requirements.test
    │       │   │   ├── install-missing-alias-from-lock.test
    │       │   │   ├── install-overridden-platform-packages.test
    │       │   │   ├── install-package-and-its-provider-skips-original.test
    │       │   │   ├── install-prefers-repos-over-package-versions.test
    │       │   │   ├── install-reference.test
    │       │   │   ├── install-security-advisory-matching-dependency.test
    │       │   │   ├── install-self-from-root.test
    │       │   │   ├── install-simple.test
    │       │   │   ├── install-without-lock.test
    │       │   │   ├── load-replaced-package-if-replacer-dropped.test
    │       │   │   ├── outdated-lock-file-fails-install.test
    │       │   │   ├── outdated-lock-file-with-new-platform-reqs-fails.test
    │       │   │   ├── partial-update-always-updates-symlinked-path-repos.test
    │       │   │   ├── partial-update-downgrades-non-allow-listed-unstable.test
    │       │   │   ├── partial-update-forces-dev-reference-from-lock-for-non-updated-packages.test
    │       │   │   ├── partial-update-from-lock-with-root-alias.test
    │       │   │   ├── partial-update-from-lock.test
    │       │   │   ├── partial-update-installs-from-lock-even-missing.test
    │       │   │   ├── partial-update-keeps-older-dep-if-still-required-with-provide.test
    │       │   │   ├── partial-update-keeps-older-dep-if-still-required.test
    │       │   │   ├── partial-update-loads-root-aliases-for-path-repos.test
    │       │   │   ├── partial-update-security-advisory-matching-locked-dep-with-dependencies.test
    │       │   │   ├── partial-update-security-advisory-matching-locked-dep.test
    │       │   │   ├── partial-update-with-dependencies-provide.test
    │       │   │   ├── partial-update-with-dependencies-replace.test
    │       │   │   ├── partial-update-with-deps-warns-root.test
    │       │   │   ├── partial-update-with-symlinked-path-repos.test
    │       │   │   ├── partial-update-without-lock.test
    │       │   │   ├── platform-ext-solver-problems.test
    │       │   │   ├── plugins-are-installed-first.test
    │       │   │   ├── prefer-lowest-branches.test
    │       │   │   ├── problems-reduce-versions.test
    │       │   │   ├── provider-can-coexist-with-other-version-of-provided.test
    │       │   │   ├── provider-conflicts.test
    │       │   │   ├── provider-conflicts2.test
    │       │   │   ├── provider-conflicts3.test
    │       │   │   ├── provider-dev-require-can-satisfy-require.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided-conflict.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided-indirect.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided.test
    │       │   │   ├── provider-packages-can-be-installed-if-selected.test
    │       │   │   ├── provider-packages-can-be-installed-together-with-provided-if-both-installable.test
    │       │   │   ├── provider-packages-can-not-be-installed-unless-selected.test
    │       │   │   ├── provider-satisfies-its-own-requirement.test
    │       │   │   ├── remove-deletes-unused-deps.test
    │       │   │   ├── remove-does-nothing-if-removal-requires-update-of-dep.test
    │       │   │   ├── replace-alias.test
    │       │   │   ├── replace-priorities.test
    │       │   │   ├── replace-range-require-single-version.test
    │       │   │   ├── replace-root-require.test
    │       │   │   ├── replaced-packages-should-not-be-installed-when-installing-from-lock.test
    │       │   │   ├── replaced-packages-should-not-be-installed.test
    │       │   │   ├── replacer-satisfies-its-own-requirement.test
    │       │   │   ├── repositories-priorities.test
    │       │   │   ├── repositories-priorities2.test
    │       │   │   ├── repositories-priorities3.test
    │       │   │   ├── repositories-priorities4.test
    │       │   │   ├── repositories-priorities5.test
    │       │   │   ├── root-alias-change-with-circular-dep.test
    │       │   │   ├── root-alias-gets-loaded-for-locked-pkgs.test
    │       │   │   ├── root-requirements-do-not-affect-locked-versions.test
    │       │   │   ├── solver-problem-with-hash-in-branch.test
    │       │   │   ├── solver-problems-with-disabled-platform.test
    │       │   │   ├── solver-problems.test
    │       │   │   ├── suggest-installed.test
    │       │   │   ├── suggest-prod-nolock.test
    │       │   │   ├── suggest-prod.test
    │       │   │   ├── suggest-replaced.test
    │       │   │   ├── suggest-uninstalled.test
    │       │   │   ├── unbounded-conflict-does-not-match-default-branch-with-branch-alias.test
    │       │   │   ├── unbounded-conflict-does-not-match-default-branch-with-numeric-branch.test
    │       │   │   ├── unbounded-conflict-matches-default-branch.test
    │       │   │   ├── update-abandoned-package-required-but-blocked-via-audit-config.test
    │       │   │   ├── update-alias-lock.test
    │       │   │   ├── update-alias-lock2.test
    │       │   │   ├── update-alias.test
    │       │   │   ├── update-all-dry-run.test
    │       │   │   ├── update-all.test
    │       │   │   ├── update-allow-list-locked-require.test
    │       │   │   ├── update-allow-list-minimal-changes.test
    │       │   │   ├── update-allow-list-patterns-with-all-dependencies.test
    │       │   │   ├── update-allow-list-patterns-with-dependencies.test
    │       │   │   ├── update-allow-list-patterns-with-root-dependencies.test
    │       │   │   ├── update-allow-list-patterns-without-dependencies.test
    │       │   │   ├── update-allow-list-patterns.test
    │       │   │   ├── update-allow-list-reads-lock.test
    │       │   │   ├── update-allow-list-removes-unused.test
    │       │   │   ├── update-allow-list-require-new-replace.test
    │       │   │   ├── update-allow-list-warns-non-existing-patterns.test
    │       │   │   ├── update-allow-list-with-dependencies-alias.test
    │       │   │   ├── update-allow-list-with-dependencies-new-requirement.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new-replace-mutual.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new-replace.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new.test
    │       │   │   ├── update-allow-list-with-dependencies.test
    │       │   │   ├── update-allow-list-with-dependency-conflict.test
    │       │   │   ├── update-allow-list.test
    │       │   │   ├── update-changes-url.test
    │       │   │   ├── update-dev-ignores-providers.test
    │       │   │   ├── update-dev-packages-updates-repo-url.test
    │       │   │   ├── update-dev-to-new-ref-picks-up-changes.test
    │       │   │   ├── update-downgrades-unstable-packages.test
    │       │   │   ├── update-ignore-platform-package-requirement-list-upper-bounds.test
    │       │   │   ├── update-ignore-platform-package-requirement-list.test
    │       │   │   ├── update-ignore-platform-package-requirement-wildcard.test
    │       │   │   ├── update-ignore-platform-package-requirements.test
    │       │   │   ├── update-installed-alias-dry-run.test
    │       │   │   ├── update-installed-alias.test
    │       │   │   ├── update-installed-reference-dry-run.test
    │       │   │   ├── update-installed-reference.test
    │       │   │   ├── update-mirrors-changes-url.test
    │       │   │   ├── update-mirrors-fails-with-new-req.test
    │       │   │   ├── update-no-dev-still-resolves-dev.test
    │       │   │   ├── update-no-install.test
    │       │   │   ├── update-package-present-in-lock-but-not-at-all-in-remote.test
    │       │   │   ├── update-package-present-in-lock-but-not-in-remote-due-to-min-stability.test
    │       │   │   ├── update-package-present-in-lock-but-not-in-remote.test
    │       │   │   ├── update-package-present-in-lower-repo-prio-but-not-main-due-to-min-stability.test
    │       │   │   ├── update-picks-up-change-of-vcs-type.test
    │       │   │   ├── update-prefer-lowest-stable.test
    │       │   │   ├── update-reference-picks-latest.test
    │       │   │   ├── update-reference.test
    │       │   │   ├── update-removes-unused-locked-dep.test
    │       │   │   ├── update-requiring-decision-reverts-and-learning-positive-literals.test
    │       │   │   ├── update-security-advisory-matching-direct-dependency.test
    │       │   │   ├── update-security-advisory-matching-indirect-dependency.test
    │       │   │   ├── update-syncs-outdated.test
    │       │   │   ├── update-to-empty-from-blank.test
    │       │   │   ├── update-to-empty-from-locked.test
    │       │   │   ├── update-with-all-dependencies.test
    │       │   │   ├── update-without-lock.test
    │       │   │   ├── updating-dev-from-lock-removes-old-deps.test
    │       │   │   └── updating-dev-updates-url-and-reference.test
    │       │   └── installer-slow/
    │       │       └── github-issues-7665.test
    │       ├── IO/
    │       │   ├── BufferIOTest.php
    │       │   ├── ConsoleIOTest.php
    │       │   └── NullIOTest.php
    │       ├── InstalledVersionsTest.php
    │       ├── Installer/
    │       │   ├── BinaryInstallerTest.php
    │       │   ├── InstallationManagerTest.php
    │       │   ├── InstallerEventTest.php
    │       │   ├── LibraryInstallerTest.php
    │       │   ├── MetapackageInstallerTest.php
    │       │   └── SuggestedPackagesReporterTest.php
    │       ├── InstallerTest.php
    │       ├── Json/
    │       │   ├── ComposerSchemaTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── composer-lock-merge-conflict-complex-crlf.txt
    │       │   │   ├── composer-lock-merge-conflict-complex.txt
    │       │   │   ├── composer-lock-merge-conflict-extended.txt
    │       │   │   ├── composer-lock-merge-conflict-simple-crlf.txt
    │       │   │   ├── composer-lock-merge-conflict-simple.txt
    │       │   │   ├── composer.json
    │       │   │   └── tabs.json
    │       │   ├── JsonFileTest.php
    │       │   ├── JsonFormatterTest.php
    │       │   ├── JsonManipulatorTest.php
    │       │   └── JsonValidationExceptionTest.php
    │       ├── Mock/
    │       │   ├── FactoryMock.php
    │       │   ├── HttpDownloaderMock.php
    │       │   ├── IOMock.php
    │       │   ├── InstallationManagerMock.php
    │       │   ├── InstalledFilesystemRepositoryMock.php
    │       │   ├── ProcessExecutorMock.php
    │       │   └── VersionGuesserMock.php
    │       ├── Package/
    │       │   ├── Archiver/
    │       │   │   ├── ArchivableFilesFinderTest.php
    │       │   │   ├── ArchiveManagerTest.php
    │       │   │   ├── ArchiverTestCase.php
    │       │   │   ├── GitExcludeFilterTest.php
    │       │   │   ├── PharArchiverTest.php
    │       │   │   └── ZipArchiverTest.php
    │       │   ├── BasePackageTest.php
    │       │   ├── CompletePackageTest.php
    │       │   ├── Dumper/
    │       │   │   └── ArrayDumperTest.php
    │       │   ├── Loader/
    │       │   │   ├── ArrayLoaderTest.php
    │       │   │   ├── RootPackageLoaderTest.php
    │       │   │   └── ValidatingArrayLoaderTest.php
    │       │   ├── LockerTest.php
    │       │   ├── RootAliasPackageTest.php
    │       │   └── Version/
    │       │       ├── VersionBumperTest.php
    │       │       ├── VersionGuesserTest.php
    │       │       ├── VersionParserTest.php
    │       │       └── VersionSelectorTest.php
    │       ├── Platform/
    │       │   ├── HhvmDetectorTest.php
    │       │   ├── RuntimeTest.php
    │       │   └── VersionTest.php
    │       ├── Plugin/
    │       │   ├── Fixtures/
    │       │   │   ├── files_autoload_which_should_not_run.php
    │       │   │   ├── plugin-v1/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v2/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v3/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v4/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   ├── Plugin1.php
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v5/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin5.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v6/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin6.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v7/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin7.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v8/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   ├── CommandProvider.php
    │       │   │   │   │   └── Plugin8.php
    │       │   │   │   └── composer.json
    │       │   │   └── plugin-v9/
    │       │   │       ├── Installer/
    │       │   │       │   └── Plugin.php
    │       │   │       └── composer.json
    │       │   ├── Mock/
    │       │   │   ├── Capability.php
    │       │   │   └── CapablePluginInterface.php
    │       │   └── PluginInstallerTest.php
    │       ├── Question/
    │       │   └── StrictConfirmationQuestionTest.php
    │       ├── Repository/
    │       │   ├── ArrayRepositoryTest.php
    │       │   ├── ArtifactRepositoryTest.php
    │       │   ├── ComposerRepositoryTest.php
    │       │   ├── CompositeRepositoryTest.php
    │       │   ├── FilesystemRepositoryTest.php
    │       │   ├── FilterRepositoryTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── installed.php
    │       │   │   ├── installed_complex.php
    │       │   │   ├── installed_relative.php
    │       │   │   └── path/
    │       │   │       ├── with-version/
    │       │   │       │   └── composer.json
    │       │   │       └── without-version/
    │       │   │           └── composer.json
    │       │   ├── InstalledRepositoryTest.php
    │       │   ├── PathRepositoryTest.php
    │       │   ├── PlatformRepositoryTest.php
    │       │   ├── RepositoryFactoryTest.php
    │       │   ├── RepositoryManagerTest.php
    │       │   ├── RepositoryUtilsTest.php
    │       │   ├── Vcs/
    │       │   │   ├── ForgejoDriverTest.php
    │       │   │   ├── FossilDriverTest.php
    │       │   │   ├── GitBitbucketDriverTest.php
    │       │   │   ├── GitDriverTest.php
    │       │   │   ├── GitHubDriverTest.php
    │       │   │   ├── GitLabDriverTest.php
    │       │   │   ├── HgDriverTest.php
    │       │   │   ├── PerforceDriverTest.php
    │       │   │   └── SvnDriverTest.php
    │       │   └── VcsRepositoryTest.php
    │       ├── Script/
    │       │   └── EventTest.php
    │       ├── TestCase.php
    │       └── Util/
    │           ├── AuthHelperTest.php
    │           ├── BitbucketTest.php
    │           ├── ConfigValidatorTest.php
    │           ├── ErrorHandlerTest.php
    │           ├── FilesystemTest.php
    │           ├── Fixtures/
    │           │   ├── composer_commit-ref.json
    │           │   ├── composer_provide-replace-requirements.json
    │           │   ├── composer_scripts-aliases.json
    │           │   └── composer_scripts-descriptions.json
    │           ├── ForgejoTest.php
    │           ├── ForgejoUrlTest.php
    │           ├── GitHubTest.php
    │           ├── GitLabTest.php
    │           ├── GitTest.php
    │           ├── Http/
    │           │   ├── ProxyItemTest.php
    │           │   ├── ProxyManagerTest.php
    │           │   └── RequestProxyTest.php
    │           ├── HttpDownloaderTest.php
    │           ├── IniHelperTest.php
    │           ├── MetadataMinifierTest.php
    │           ├── NoProxyPatternTest.php
    │           ├── PackageSorterTest.php
    │           ├── PerforceTest.php
    │           ├── PlatformTest.php
    │           ├── ProcessExecutorTest.php
    │           ├── RemoteFilesystemTest.php
    │           ├── SilencerTest.php
    │           ├── StreamContextFactoryTest.php
    │           ├── SvnTest.php
    │           ├── TarTest.php
    │           ├── TlsHelperTest.php
    │           ├── UrlTest.php
    │           └── ZipTest.php
    ├── bootstrap.php
    ├── complete.phpunit.xml
    └── console-application.php

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
indent_size = 4
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true

[*.yml]
indent_size = 2


================================================
FILE: .gitattributes
================================================
# Auto-detect text files, ensure they use LF.
*       text=auto eol=lf

# These files are always considered text and should use LF.
# See core.whitespace @ https://git-scm.com/docs/git-config for whitespace flags.
*.php   text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4 diff=php
*.json  text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4
*.test  text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=4
*.yml   text eol=lf whitespace=blank-at-eol,blank-at-eof,space-before-tab,tab-in-indent,tabwidth=2

# Exclude non-essential files from dist
/.github/ export-ignore
/doc export-ignore
/phpstan/* export-ignore
/tests/ export-ignore
/.editorconfig export-ignore
/.gitattributes export-ignore
/.gitignore export-ignore
/.php-cs-fixer.php export-ignore
/CHANGELOG.md export-ignore
/CODE_OF_CONDUCT.md export-ignore
/phpunit.xml.dist export-ignore
/PORTING_INFO export-ignore
/README.md export-ignore
/UPGRADE-2.0.md export-ignore

# Ref https://github.com/composer/composer/issues/11507
/phpstan/rules.neon -export-ignore


================================================
FILE: .github/CONTRIBUTING.md
================================================
Contributing to Composer
========================

Please note that this project is released with a
[Contributor Code of Conduct](https://github.com/composer/composer/blob/main/CODE_OF_CONDUCT.md).
By participating in this project you agree to abide by its terms.

Reporting Issues
----------------

When reporting issues, please try to be as descriptive as possible, and include
as much relevant information as you can. A step by step guide on how to
reproduce the issue will greatly increase the chances of your issue being
resolved in a timely manner.

For example, if you are experiencing a problem while running one of the
commands, please provide full output of said command in very very verbose mode
(`-vvv`, e.g. `composer install -vvv`).

If your issue involves installing, updating or resolving dependencies, the
chance of us being able to reproduce your issue will be much higher if you
share your `composer.json` with us.

Coding Style Fixes
------------------

We do not accept CS fixes pull requests. Fixes are done by the project maintainers when appropriate to avoid causing too many unnecessary conflicts between branches and pull requests.

Security Reports
----------------

Please send any sensitive issue to [security@packagist.org](mailto:security@packagist.org). Thanks!

Installation from Source
------------------------

Prior to contributing to Composer, you must be able to run the test suite.
To achieve this, you need to acquire the Composer source code:

1. Run `git clone https://github.com/composer/composer.git`
2. Download the [`composer.phar`](https://getcomposer.org/composer.phar) executable
3. Run Composer to get the dependencies: `cd composer && php ../composer.phar install`

You can run the test suite by executing `vendor/bin/simple-phpunit` when inside the
composer directory, and run Composer by executing the `bin/composer`.

To test your modified Composer code against another project, run
`php /path/to/composer/bin/composer` inside that project's directory.

Contributing policy
-------------------

Fork the project, create a feature branch, and send us a pull request.

To ensure a consistent code base, you should make sure the code follows
the [PSR-2 Coding Standards](http://www.php-fig.org/psr/psr-2/). You can also
run [php-cs-fixer](https://github.com/FriendsOfPHP/PHP-CS-Fixer) with the
configuration file that can be found in the project root directory.

If you would like to help, take a look at the [list of open issues](https://github.com/composer/composer/issues).


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
type: Bug
assignees: ''

---

My `composer.json`:

```json
...replace me...
```

Output of `composer diagnose`:

```
...replace me...
```

When I run this command: <!-- run it with `-vvv` added to it ideally to get full debug output -->

```
...replace me...
```

I get the following output: <!-- FULL OUTPUT please, not just what you think is relevant -->

```
...replace me...
```

And I expected this to happen:


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
type: Feature
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/ISSUE_TEMPLATE/support-request---question.md
================================================
---
name: Support request / question
about: Confused, looking for assistance, and you don't like GitHub Discussions?
title: ''
type: Support
assignees: ''

---

My `composer.json`:

```json
...replace me...
```

Output of `composer diagnose`:

```
...replace me...
```

When I run this command: <!-- run it with `-vvv` added to it ideally to get full debug output -->

```
...replace me...
```

I get the following output: <!-- FULL OUTPUT please, not just what you think is relevant -->

```
...replace me...
```

And I expected this to happen:


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    labels: []


================================================
FILE: .github/pull_request_template.md
================================================
<!-- Please remember to select the appropriate branch:

For bug fixes pick the oldest branch where the fix applies (e.g. `2.4` if that version is affected, `1.10` if it is a critical fix that should be fixed in Composer 1, otherwise `main`)

For new features and everything else, use the main branch. -->


================================================
FILE: .github/workflows/autoloader.yml
================================================
name: "Autoloader"

on:
  push:
    paths-ignore:
      - 'doc/**'
  pull_request:
    paths-ignore:
      - 'doc/**'

permissions:
  contents: read

jobs:
  tests:
    name: "Autoloader"

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - name: "Install Composer dependencies"
        run: "composer config platform --unset && composer install"

      - name: "Dump autoloader in the test directory using latest Composer"
        run: "./bin/composer install -d tests/Composer/Test/Autoload/MinimumVersionSupport"

      - name: "Install oldest supported PHP version for autoloader"
        uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl, zip"
          ini-values: "memory_limit=-1"
          php-version: "5.6"

      - name: "Check the autoloader can be executed"
        run: "php main.php"
        working-directory: tests/Composer/Test/Autoload/MinimumVersionSupport


================================================
FILE: .github/workflows/close-stale-support.yml
================================================
name: Mark and close stale support issues

on:
  schedule:
  - cron: '32 1 * * *'

jobs:
  stale:

    runs-on: ubuntu-latest
    permissions:
      issues: write
      pull-requests: write

    steps:
    - uses: actions/stale@b5d41d4e1d5dceea10e7104786b73624c18a190f # v10.2.0
      with:
        repo-token: ${{ secrets.GITHUB_TOKEN }}
        days-before-stale: 180
        days-before-close: 15
        stale-issue-message: 'This issue has been automatically marked Stale and will be closed in 15 days if no further activity happens.'
        stale-issue-label: 'Stale'
        close-issue-reason: 'not_planned'
        only-issue-types: 'Support'
        exempt-all-milestones: true
        ascending: true


================================================
FILE: .github/workflows/conductor.yaml
================================================
# See the Conductor setup guide at https://packagist.com/docs/conductor/getting-started

on:
    repository_dispatch:
        types:
            - dependency_update

name: Private Packagist Conductor

permissions:
    contents: write

jobs:
    conductor:
        name: Private Packagist Conductor
        runs-on: "ubuntu-latest"

        steps:
            - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

            # Install PHP. You can also replace this step by
            # reusing an existing workflow that sets up PHP.
            # Additional services required to run composer
            # install/update, such as Node.js or a database,
            # must be set up here too.
            - name: Install PHP
              uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
              with:
                  php-version: "latest"
                  coverage: "none"

            # See the Conductor GitHub Action at https://github.com/packagist/conductor-github-action
            - name: "Running Conductor"
              uses: packagist/conductor-github-action@v1


================================================
FILE: .github/workflows/continuous-integration.yml
================================================
name: "Continuous Integration"

on:
  push:
    paths-ignore:
      - 'doc/**'
  pull_request:
    paths-ignore:
      - 'doc/**'

env:
  COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist"
  COMPOSER_UPDATE_FLAGS: ""

permissions:
  contents: read

jobs:
  tests:
    name: "CI"

    runs-on: ${{ matrix.os }}
    continue-on-error: ${{ matrix.experimental }}

    strategy:
      matrix:
        php-version:
          - "7.2"
          - "7.3"
          - "7.4"
          - "8.0"
          - "8.1"
          - "8.2"
          - "8.3"
          - "8.4"
        dependencies: [locked]
        os: [ubuntu-latest]
        experimental: [false]
        include:
          - php-version: "7.2"
            dependencies: highest
            os: ubuntu-latest
            experimental: false
          - php-version: "7.2"
            dependencies: lowest
            os: ubuntu-latest
            experimental: false
          - php-version: "8.4"
            dependencies: highest
            os: ubuntu-latest
            experimental: false
          - php-version: "8.4"
            os: windows-latest
            dependencies: locked
            experimental: false
          - php-version: "8.4"
            os: macos-latest
            dependencies: locked
            experimental: false
          - php-version: "8.5"
            dependencies: lowest-ignore
            os: ubuntu-latest
            experimental: true
          - php-version: "8.5"
            dependencies: highest-ignore
            os: ubuntu-latest
            experimental: true

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl, zip"
          ini-values: "memory_limit=-1, phar.readonly=0, error_reporting=E_ALL, display_errors=On, display_startup_errors=On"
          php-version: "${{ matrix.php-version }}"
          tools: composer

      - name: "Handle lowest dependencies update"
        if: "contains(matrix.dependencies, 'lowest')"
        run: |
          echo "COMPOSER_UPDATE_FLAGS=$COMPOSER_UPDATE_FLAGS --prefer-lowest" >> $GITHUB_ENV
          echo "COMPOSER_LOWEST_DEPS_TEST=1" >> $GITHUB_ENV

      - name: "Handle ignore-platform-reqs dependencies update"
        if: "contains(matrix.dependencies, 'ignore')"
        run: "echo \"COMPOSER_FLAGS=$COMPOSER_FLAGS --ignore-platform-req=php\" >> $GITHUB_ENV"

      - name: "Remove platform config to get latest dependencies for current PHP version when build is not locked"
        if: "contains(matrix.dependencies, 'highest') || contains(matrix.dependencies, 'lowest')"
        run: "composer config platform --unset"

      - name: "Allow dev releases for latest-deps builds to catch problems earlier"
        if: "contains(matrix.dependencies, 'highest')"
        run: "composer config minimum-stability dev"

      - name: "Update dependencies from composer.json using composer binary provided by system"
        if: "contains(matrix.dependencies, 'highest') || contains(matrix.dependencies, 'lowest')"
        run: "composer update ${{ env.COMPOSER_UPDATE_FLAGS }} ${{ env.COMPOSER_FLAGS }}"

      - name: "Install dependencies from composer.lock using composer binary provided by system"
        if: "matrix.dependencies == 'locked'"
        run: "composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Run install again using composer binary from source"
        run: "bin/composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Make source binary the one used by default (Linux / macOS)"
        if: "!contains(matrix.os, 'windows')"
        run: |
          echo -e "$(pwd)/bin\n$(cat $GITHUB_PATH)" > $GITHUB_PATH
          echo -e "COMPOSER_BINARY=$(pwd)/bin/composer" >> $GITHUB_ENV

      - name: "Make source binary the one used by default (Windows)"
        if: "contains(matrix.os, 'windows')"
        run: |
          $(
              (echo "$(Get-Location)\bin")
              (Get-Content $env:GITHUB_PATH -Raw)
          ) | Set-Content $env:GITHUB_PATH
          echo "COMPOSER_BINARY=$(Get-Location)\bin\composer" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append

      - name: "Prepare git environment"
        run: "git config --global user.name composer && git config --global user.email composer@example.com"

      - name: "Run tests"
        if: "matrix.php-version != '7.3'"
        run: "vendor/bin/simple-phpunit --verbose"

      - name: "Run complete test suite on 7.3"
        if: "matrix.php-version == '7.3'"
        run: "vendor/bin/simple-phpunit --configuration tests/complete.phpunit.xml"

  validation:
    name: "Composer validation"

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl, zip"
          ini-values: "memory_limit=-1, phar.readonly=0, error_reporting=E_ALL, display_errors=On, display_startup_errors=On"
          php-version: "7.4"
          tools: composer

      - name: "Install dependencies"
        run: "composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Validate composer.json"
        run: "bin/composer validate --strict"


================================================
FILE: .github/workflows/lint.yml
================================================
name: "PHP Lint"

on:
  push:
    paths-ignore:
      - 'doc/**'
  pull_request:
    paths-ignore:
      - 'doc/**'

permissions:
  contents: read

jobs:
  tests:
    name: "Lint"

    runs-on: ubuntu-latest

    strategy:
      matrix:
        php-version:
          - "7.2"
          - "nightly"

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          php-version: "${{ matrix.php-version }}"
          coverage: none

      - uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0
        with:
          dependency-versions: highest

      - name: "Lint PHP files"
        run: |
          hasErrors=0
          for f in $(find src/ tests/ -type f -name '*.php' ! -path '*/vendor/*')
          do
            { error="$(php -derror_reporting=-1 -ddisplay_errors=1 -l -f $f 2>&1 1>&3 3>&-)"; } 3>&1;
            if [ "$error" != "" ]; then
              while IFS= read -r line; do echo "::error file=$f::$line"; done <<< "$error"
              hasErrors=1
            fi
          done
          if [ $hasErrors -eq 1 ]; then
            exit 1
          fi


================================================
FILE: .github/workflows/php32bit.yml
================================================
name: "Continuous Integration (32bit)"

on:
  push:
    branches:
      - main
    paths-ignore:
      - 'doc/**'

env:
  COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --prefer-dist"
  COMPOSER_UPDATE_FLAGS: ""

permissions:
  contents: read

jobs:
  tests:
    name: "CI"

    runs-on: ubuntu-latest
    container: shivammathur/node:latest-i386

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl, zip"
          ini-values: "memory_limit=-1, phar.readonly=0, error_reporting=E_ALL, display_errors=On, display_startup_errors=On"
          php-version: "8.4"
          tools: composer

      - name: "Install dependencies from composer.lock using composer binary provided by system"
        run: "composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Run install again using composer binary from source"
        run: "bin/composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Make source binary the one used by default"
        run: |
          echo -e "$(pwd)/bin\n$(cat $GITHUB_PATH)" > $GITHUB_PATH
          echo -e "COMPOSER_BINARY=$(pwd)/bin/composer" >> $GITHUB_ENV
          git config --global --add safe.directory $(pwd)

      - name: "Prepare git environment"
        run: "git config --global user.name composer && git config --global user.email composer@example.com"

      - name: "Run tests"
        run: "vendor/bin/simple-phpunit --verbose"


================================================
FILE: .github/workflows/phpstan.yml
================================================
name: "PHPStan"

on:
  push:
    paths-ignore:
      - 'doc/**'
  pull_request:
    paths-ignore:
      - 'doc/**'

env:
  COMPOSER_FLAGS: "--ansi --no-interaction --prefer-dist"
  SYMFONY_PHPUNIT_VERSION: ""

permissions:
  contents: read

jobs:
  tests:
    name: "PHPStan"

    runs-on: ubuntu-latest
    continue-on-error: ${{ matrix.experimental }}

    strategy:
      matrix:
        include:
          - php-version: "7.2"
            experimental: false
          - php-version: "8.4"
            experimental: true
      fail-fast: false

    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl, zip"
          ini-values: "memory_limit=-1"
          php-version: "${{ matrix.php-version }}"

      - name: "Determine composer cache directory"
        id: "determine-composer-cache-directory"
        run: "echo \"directory=$(composer config cache-dir)\" >> $GITHUB_OUTPUT"

      - name: "Cache dependencies installed with composer"
        uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
        with:
          path: "${{ steps.determine-composer-cache-directory.outputs.directory }}"
          key: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}-${{ hashFiles('**/composer.lock') }}"
          restore-keys: "php-${{ matrix.php-version }}-symfony-php-unit-version-${{ env.SYMFONY_PHPUNIT_VERSION }}"

      - name: "Install highest dependencies"
        if: "matrix.experimental == true"
        run: "composer config platform --unset && composer update ${{ env.COMPOSER_FLAGS }}"

      - name: "Install locked dependencies"
        if: "matrix.experimental == false"
        run: "composer config platform --unset && composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Initialize PHPUnit sources"
        run: "vendor/bin/simple-phpunit --filter NO_TEST_JUST_AUTOLOAD_THANKS"

      - name: "Run PHPStan"
        run: "composer phpstan"


================================================
FILE: .github/workflows/release.yml
================================================
name: "Release"

on:
  push:
    tags:
      - "*"

permissions:
  contents: read

env:
  COMPOSER_FLAGS: "--ansi --no-interaction --no-progress --no-suggest --prefer-dist"

jobs:
  build:
    permissions:
      contents: write # for gh to create a release
      id-token: write # for actions/attest to create a attestation certificate
      attestations: write # for actions/attest to upload the attestation
    name: Upload Release Asset
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2

      - uses: shivammathur/setup-php@accd6127cb78bee3e8082180cb391013d204ef9f # 2.37.0
        with:
          coverage: "none"
          extensions: "intl"
          ini-values: "memory_limit=-1"
          php-version: "8.4"

      - name: "Install dependencies from composer.lock using composer binary provided by system"
        run: "composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Run install again using composer binary from source"
        run: "bin/composer install ${{ env.COMPOSER_FLAGS }}"

      - name: "Validate composer.json"
        run: "bin/composer validate"

      - name: Build phar file
        run: "php -d phar.readonly=0 bin/compile"

      - name: Generate build provenance attestation
        uses: actions/attest@59d89421af93a897026c735860bf21b6eb4f7b26 # v4.1.0
        with:
          subject-path: '${{ github.workspace }}/composer.phar'

      - name: Configure GPG key and sign phar
        run: |
          mkdir -p ~/.gnupg/
          chmod 0700 ~/.gnupg/
          echo "$GPG_SIGNING_KEY" > ~/.gnupg/private.key
          gpg --import ~/.gnupg/private.key
          gpg -u contact@packagist.com --detach-sign --output composer.phar.asc composer.phar
        env:
          GPG_SIGNING_KEY: |
            ${{ secrets.GPG_KEY_161DFBE342889F01DDAC4E61CBB3D576F2A0946F }}

      - name: Create release
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh release create "${{ github.ref_name }}" --title "${{ github.ref_name }}" --notes TODO --draft --verify-tag

      - name: Upload release assets
        env:
          GH_TOKEN: ${{ github.token }}
        run: gh release upload "${{ github.ref_name }}" composer.phar composer.phar.asc --clobber

      # This step requires a secret token with `pull` access to composer/docker. The default
      # secrets.GITHUB_TOKEN is scoped to this repository only which is not sufficient.
      - name: "Open issue @ Docker repository"
        uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
        with:
          github-token: ${{ secrets.PUBLIC_REPO_ACCESS_TOKEN }}
          script: |
            // create new issue on Docker repository
            github.rest.issues.create({
              owner: "${{ github.repository_owner }}",
              repo: "docker",
              title: `New Composer tag: ${{ github.ref_name }}`,
              body: `https://github.com/${{ github.repository }}/releases/tag/${{ github.ref_name }}`,
            });


================================================
FILE: .gitignore
================================================
/.settings
/.project
/.buildpath
/composer.phar
/vendor
/nbproject
/tests/composer-test.phar
.phpunit.result.cache
phpunit.xml
.vagrant
Vagrantfile
.idea
.vscode
.php-cs-fixer.cache


================================================
FILE: .php-cs-fixer.php
================================================
<?php

$header = <<<EOF
This file is part of Composer.

(c) Nils Adermann <naderman@naderman.de>
    Jordi Boggiano <j.boggiano@seld.be>

For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.
EOF;

$finder = PhpCsFixer\Finder::create()
    ->files()
    ->in(__DIR__.'/src')
    ->in(__DIR__.'/tests')
    ->name('*.php')
    ->notPath('Fixtures')
    ->notPath('Composer/Autoload/ClassLoader.php')
    ->notPath('Composer/InstalledVersions.php')
    ->notPath('Composer/Test/Autoload/MinimumVersionSupport')
;

$config = new PhpCsFixer\Config();
return $config
    ->setParallelConfig(PhpCsFixer\Runner\Parallel\ParallelConfigFactory::detect())
    ->setRules([
        '@PSR2' => true,
        'binary_operator_spaces' => true,
        'blank_line_before_statement' => ['statements' => ['declare', 'return']],
        'cast_spaces' => ['space' => 'single'],
        'header_comment' => ['header' => $header],
        'statement_indentation' => ['stick_comment_to_next_continuous_control_statement' => true],
        'include' => true,

        'class_attributes_separation' => ['elements' => ['method' => 'one', 'trait_import' => 'none']],
        'no_blank_lines_after_class_opening' => true,
        'no_blank_lines_after_phpdoc' => true,
        'no_empty_statement' => true,
        'no_extra_blank_lines' => true,
        'no_leading_namespace_whitespace' => true,
        'no_trailing_comma_in_singleline' => true,
        'no_whitespace_in_blank_line' => true,
        'object_operator_without_whitespace' => true,
        //'phpdoc_align' => true,
        'phpdoc_indent' => true,
        'no_empty_comment' => true,
        'no_empty_phpdoc' => true,
        'phpdoc_no_access' => true,
        'phpdoc_no_package' => true,
        //'phpdoc_order' => true,
        'phpdoc_scalar' => true,
        'phpdoc_trim' => true,
        'phpdoc_types' => true,
        'psr_autoloading' => true,
        'blank_lines_before_namespace' => true,
        'standardize_not_equals' => true,
        'ternary_operator_spaces' => true,
        'trailing_comma_in_multiline' => ['elements' => ['arrays']],
        'unary_operator_spaces' => true,

        // imports
        'no_unused_imports' => true,
        'fully_qualified_strict_types' => true,
        'single_line_after_imports' => true,
        //'global_namespace_import' => ['import_classes' => true],
        'no_leading_import_slash' => true,
        'single_import_per_statement' => true,

        // PHP 7.2 migration
        'array_syntax' => true,
        'list_syntax' => true,
        'regular_callable_call' => true,
        'static_lambda' => true,
        'nullable_type_declaration_for_default_null_value' => true,
        'explicit_indirect_variable' => true,
        'visibility_required' => ['elements' => ['property', 'method', 'const']],
        'non_printable_character' => true,
        'combine_nested_dirname' => true,
        'random_api_migration' => true,
        'ternary_to_null_coalescing' => true,
        'phpdoc_to_param_type' => false,
        'declare_strict_types' => true,
        'no_superfluous_phpdoc_tags' => [
            'allow_mixed' => true,
        ],

        // TODO php 7.4 migration (one day..)
        // 'phpdoc_to_property_type' => true,
    ])
    ->setUsingCache(true)
    ->setRiskyAllowed(true)
    ->setFinder($finder)
;


================================================
FILE: CHANGELOG.md
================================================
### [2.9.5] 2026-01-29

  * Added support for new `pie` `download-url-methods` (#12727)
  * Fixed detection of 7z when installed as 7za on some linux systems (#12731)
  * Fixed warning because of the symfony/process CVE, 2.9.4 had a workaround already

### [2.9.4] 2026-01-22

  * Added active plugins to the diagnose command output (#12706)
  * Fixed `HTTP/3` causing issues with proxies (#12699)
  * Fixed `show` command regression with long descriptions containing unicode characters (#12704)
  * Fixed regression handling invalid unicode sequences in output (#12707)
  * Fixed `git rev-list` usages to support older pre-2.33 git versions (#12705)
  * Fixed issue handling paths with `=` in them on Windows (#12726)

### [2.9.3] 2025-12-30

  * Security: Fixed ANSI sequence injection (GHSA-59pp-r3rg-353g / CVE-2025-67746)
  * Fixed `COMPOSER_NO_SECURITY_BLOCKING` env var not being respected for `updates` done via the `install` command, and added `--no-security-blocking` flag to `install` as well (#12677)
  * Fixed `update --lock` / `update mirrors` not working when locked packages contain vulnerabilities (#12645)
  * Fixed `client-certificate` authentication implementation (#12667)
  * Fixed `php-ext` schema not being validated in ValidatingArrayLoader (#12694)
  * Fixed crash when `--bump-after-update` is used and the lock file is disabled (#12660)
  * Fixed support for SecureTransport + LibreSSL on macOS (#12615)
  * Fixed display of reasons for why advisories are ignored (#12668)
  * Fixed compatibility issues when git has log.showSignature enabled (#12666)
  * Fixed curl downloader not retrying when a timeout (err 28) failure occurs (#12662)
  * Fixed EventDispatcher requiring a full Composer instance to function (#12629)

### [2.9.2] 2025-11-19

  * Added new `--no-security-blocking` flag to disable/configure security blocking (#12617)
  * Added a way to set [`audit > ignore`](https://getcomposer.org/doc/06-config.md#detailed-format-with-apply-scope-) to act only on audits or only on security blocking (#12618, #12612)
  * Fixed `config` command not being able to set the new audit settings (#12609)
  * Fixed handling audit.ignore to support CVE ids while doing security blocking, but advisory IDs are still preferred for performance reasons (#12624)
  * Fixed partial updates failing when another package in the lock file has a known security advisory (#12626)

### [2.9.1] 2025-11-13

  * Fixed regression in phpunit binary proxies (#12601)
  * Fixed script handler autoloading issues (#12606)
  * Fixed null call of Command::setDescription in some cases (#12605)
  * Fixed --prefer-lowest builds sometimes failing due to the filtering of versions with known vulnerabilities (#12603)

### [2.9.0] 2025-11-13

  * Fixed a couple minor issues with --bump-after-update (#12598)
  * Various docs fixes

### [2.9.0-RC1] 2025-11-07

  * Bumped `composer-plugin-api` to `2.9.0`
  * Added automatic blocking of packages with security advisories from updates (#11956)
  * Added `audit > block-insecure` config setting to control blocking of updates to package versions with known security advisories (defaults to `true`) (#11956)
  * Added `audit > block-abandoned` config setting to control blocking of updates to abandoned packages (defaults to `false`) (#11956)
  * Added `audit > ignore-abandoned` config setting to ignore some packages (#12572)
  * Added `--ignore-unreachable` flag to `audit` command to allow running audit in environments that do not have access to some repos (#12470)
  * Added `repository` command to add, remove, or update repositories more easily (#12388)
  * Updated `repositories` structure to contain a name attribute and being stored preferably as list instead of object (#12388)
  * Added support for `--minimal-changes` full updates where only packages that need changing to satisfy modified constraints are updated (#12349)
  * Added `update-with-minimal-changes` config setting (and `COMPOSER_MINIMAL_CHANGES` env var) to default to minimal changes (#12545)
  * Added support for `forgejo` / codeberg.org repositories (#12307)
  * Added automatic recovery of simple lock file conflicts when running `update` with a file that has a content-hash conflict (#11517)
  * Added support for HTTP/3 if libcurl supports it (#12363)
  * Added support for custom header authentication (#12372)
  * Added support for client TLS certificates (#12406)
  * Added `--locked` flag to `licenses` command to show data from the lock file instead of installed packages (#12595)
  * Added `SHELL_VERBOSITY` env var to control verbosity of shell scripts (#12473)
  * Added support for running `init` without interaction (#12546)
  * Added `COMPOSER_PREFER_DEV_OVER_PRERELEASE` env var for use in development together with `--prefer-lowest` builds (#12585)
  * Added support for Windows Sudo to elevate during self-update (#12543)
  * Improved performance of script handlers by reducing ad-hoc autoloader creation (#12456)
  * Fixed display of dist refs for dev versions when source is missing (#12562)
  * Fixed issue not showing abandoned warnings when a package is abandoned without new release (#12423)
  * Fixed compatibility issues with Symfony 7
  * Fixed issues with PHP preloading being hard to debug (#12528)

### [2.8.12] 2025-09-19

  * Fixed json schema issues with version validation (#12512)
  * Fixed PHP 8.5 deprecation warnings (#12513)
  * Fixed support for Bitbucket API tokens (#12515)
  * Fixed handling of spaces in paths when using binaries (#12524)
  * Fixed `config --global` path resolution issue (#12537)
  * Reduced peak memory usage while loading packages (#12516)
  * Dropped react/promise 2.x support

### [2.8.11] 2025-08-21

  * Fixed PHP 8.5 deprecation warnings (#12504, #12493, #12505)
  * Fixed `bump` command handling of 0.x versions (#12468)
  * Fixed psr-4 warnings being shown in some cases when using symlinked directories (#12480)
  * Fixed `audit` command failing hard if any advisory constraint was invalid (#12507)

### [2.8.10] 2025-07-10

  * Fixed plugins appearing loaded despite not being loaded yet in some edge cases (#12442)
  * Fixed forward compatibility with Symfony 7.4 (#12445)
  * Fixed deprecation warning on PHP 8.4 when platform check fails (#12453)
  * Fixed support for new planner role in GitLab (#12426)
  * Fixed Bitbucket regression introduced in 2.8.0 (#12462)
  * Fixed json schema issues with version validation (#12438)
  * Fixed git prompt breaking some systems (#12437)
  * Fixed warning on PHP 8.5 when curl is not loaded (#12472)

### [2.8.9] 2025-05-13

  * Fixed json schema issues with version validation (#12376)
  * Fixed `bump-after-update` triggering after an `update --lock`, which makes no sense (#12371)
  * Fixed zip bomb false positives when unpacking using `ZipArchive` (#12409)
  * Fixed creation of empty archives (#12408)
  * Removed output of script being run when running via `composer <script-name>` (#12383)

### [2.8.8] 2025-04-04

  * Fixed json schema issues with version validation (#12367)
  * Fixed issues running on 32bit machines (#12365)

### [2.8.7] 2025-04-03

  * Bumped justinrainbow/json-schema dependency to 6.x (#12348)
  * Added `COMPOSER_MAX_PARALLEL_PROCESS` env var to control max amount of parallel processes Composer will start (#12356)
  * Added zstd/brotli presence in `diagnose` command output
  * Fixed error handler to avoid spamming deprecation notices (#12360)
  * Fixed InstalledVersions returning duplicate data at Composer runtime (#12225)
  * Fixed handling of `--with ...` constraints to make them apply to packages replaced a package with a different name (#12353)
  * Fixed deprecation warnings showing up in IDE code inspections within the vendor dir (#12331)
  * Fixed a few json schema completeness issues (#12332, #12321)
  * Fixed issue autoloading files with a .phar inside the path (#12326)

### [2.8.6] 2025-02-25

  * Added `COMPOSER_WITH_DEPENDENCIES` and `COMPOSER_WITH_ALL_DEPENDENCIES` env vars to enable the `--with[-all]-dependencies` flags (#12289)
  * Added `COMPOSER_SKIP_SCRIPTS` env var to tell Composer to skip certain script handlers by script names (comma separated) (#12290)
  * Added error hint when Avast is detected together with curl certificate errors (#9894)
  * Fixed handling of backslash in folder names when creating archives (#12327)
  * Fixed detection of containerd for containers to avoid warning about root usage (#12299)

### [2.8.5] 2025-01-21

  * Added build provenance attestation so you can also now download and verify phar files from GitHub releases:

        gh release --repo composer/composer download --pattern composer.phar
        gh attestation verify --repo composer/composer composer.phar

  * Fixed unsupported `funding` values causing parse errors in packages (#12247)
  * Fixed support for a few newer funding formats (#12257)
  * Fixed InstalledVersions regression from 2.8.4 when `reload()` is used (#12269)
  * Fixed psr-0/psr-4 rules having unstable order in `vendor/composer/autoload*.php` (#12263)
  * Fixed a few warnings happening incorrectly in edge cases (#12284, #12268, #12283)

### [2.8.4] 2024-12-11

  * Fixed exit code of the `audit` command not being meaningful (now 1 for vulnerabilities and 2 for abandoned, 3 for both) (#12203)
  * Fixed issue on plugin upgrade when it defines multiple classes (#12226)
  * Fixed duplicate errors appearing in the output depending on php settings (#12214)
  * Fixed InstalledVersions returning duplicate data in some instances (#12225)
  * Fixed installed.php sorting to be deterministic (#12197)
  * Fixed `bump-after-update` failing when using inline constraints (#12223)
  * Fixed `create-project` command to now disable symlinking when used with a path repo as argument (#12222)
  * Fixed `validate --no-check-publish` to hide publish errors entirely as they are irrelevant (#12196)
  * Fixed `audit` command returning a failing code when composer audit fails as this should not trigger build failures, but running audit as standard part of your build is probably a terrible idea anyway (#12196)
  * Fixed curl usage to disable multiplexing on broken versions when proxies are in use (#12207)

### [2.8.3] 2024-11-17

  * Fixed windows handling of process discovery (#12180)
  * Fixed react/promise requirement to allow 2.x installs again (#12188)
  * Fixed some issues when lock:false is set in require and bump commands

### [2.8.2] 2024-10-29

  * Fixed crash while suggesting providers if they have no description (#12152)
  * Fixed issues creating lock files violating the schema in some circumstances (#12149)
  * Fixed `create-project` regression in 2.8.1 when using path repos with relative paths (#12150)
  * Fixed ctrl-C aborts not working inside text prompts (#12106)
  * Fixed git failing silently when git cannot read a repo due to ownership violations (#12178)
  * Fixed handling of signals in non-PHP binaries run via proxies (#12176)

### [2.8.1] 2024-10-04

  * Fixed `init` command regression when no license is provided (#12145)
  * Fixed `--strict-ambiguous` flag handling whereas it sometimes did not report all issues (#12148)
  * Fixed `create-project` to inherit the target folder's permissions for installed project files (#12146)
  * Fixed a few cases where the prompt for using a parent dir's composer.json fails to work correctly (#8023)

### [2.8.0] 2024-10-02

  * BC Warning: Fixed `https_proxy` env var falling back to `http_proxy`'s value. The fallback and warning have now been removed per the 2.7.3 release notes (#11938, #11915)
  * Added `--patch-only` flag to the `update` command to restrict updates to patch versions and make an update of all deps safer (#12122)
  * Added `--abandoned` flag to the `audit` command to configure how abandoned packages should be treated, overriding the `audit.abandoned` config setting (#12091)
  * Added `--ignore-severity` flag to the `audit` command to ignore one or more advisory severities (#12132)
  * Added `--bump-after-update` flag to the `update` command to run bump after the update is done (#11942)
  * Added a way to control which `scripts` receive additional CLI arguments and where they appear in the command, see [the docs](https://getcomposer.org/doc/articles/scripts.md#controlling-additional-arguments) (#12086)
  * Added `allow-missing-requirements` config setting to skip the error when the lock file is not fulfilling the composer.json's dependencies (#11966)
  * Added a JSON schema for the composer.lock file (#12123)
  * Added better support for Bitbucket app passwords when cloning repos / installing from source (#12103)
  * Added `--type` flag to filter packages by type(s) in the `reinstall` command (#12114)
  * Added `--strict-ambiguous` flag to the `dump-autoload` command to make it return with an error code if duplicate classes are found (#12119)
  * Added warning in `dump-autoload` when vendor files have been deleted (#12139)
  * Added warnings for each missing platform package when running `create-project` to avoid having to run it again and again (#12120)
  * Added sorting of packages in allow-plugins when `sort-packages` is enabled (#11348)
  * Added suggestion of provider packages / polyfills when an ext or lib package is missing (#12113)
  * Improved interactive package update selection by first outputting all packages and their possible updates (#11990)
  * Improved dependency resolution failure output by sorting the output in a deterministic and (often) more logical way (#12111)
  * Fixed PHP 8.4 deprecation warnings about `E_STRICT` (#12116)
  * Fixed `init` command to validate the given license identifier (#12115)
  * Fixed version guessing to be more deterministic on feature branches if it appears that it could come from either of two mainline branches (#12129)
  * Fixed COMPOSER_ROOT_VERSION env var handling to treat 1.2 the same as 1.2.x-dev and not 1.2.0 (#12109)
  * Fixed require command skipping new stability flags from the lock file, causing invalid lock file diffs (#12112)
  * Fixed php://stdin potentially being open several times when running Composer programmatically (#12107)
  * Fixed handling of platform packages in why-not command and partial updates (#12110)
  * Reverted "Fixed transport-options.ssl for local cert authorization being stored in lock file making them less portable (#12019)" from 2.7.8 as it was broken

### [2.7.9] 2024-09-04

  * Fixed Docker detection breaking on constrained environments (#12095)
  * Fixed upstream issue in bash completion script, it is recommended to update it using the `completion` command (#12015)

### [2.7.8] 2024-08-22

  * Added `release-age`, `release-date` and `latest-release-date` in the JSON output of `outdated` (#12053)
  * Fixed PHP 8.4 deprecation warnings
  * Fixed addressability of branches containing `#` signs (#12042)
  * Fixed `bump` command not handling some `~` constraints correctly (#12038)
  * Fixed COMPOSER_AUTH not taking precedence over ./auth.json (#12084)
  * Fixed `relative: true` sometimes not being respected in path repo symlinks (#12092)
  * Fixed copy from cache sometimes failing on VirtualBox shared folders (#12057)
  * Fixed PSR-4 autoloading order regression in some edge case (#12063)
  * Fixed duplicate lib-* packages causing issues when having pecl + core versions of the same PHP extension (#12093)
  * Fixed transport-options.ssl for local cert authorization being stored in lock file making them less portable (#12019)
  * Fixed memory issues when installing large binaries (#12032)
  * Fixed `archive` command crashing when a path cannot be realpath'd on windows (#11544)
  * API: Deprecated BasePackage::$stabilities in favor of BasePackage::STABILITIES (685add70ec)
  * Improved Docker detection (#12062)

### [2.7.7] 2024-06-10

  * Security: Fixed command injection via malicious git branch name (GHSA-47f6-5gq3-vx9c / CVE-2024-35241)
  * Security: Fixed multiple command injections via malicious git/hg branch names (GHSA-v9qv-c7wm-wgmf / CVE-2024-35242)
  * Security: Fixed secure-http checks that could be bypassed by using malformed URL formats (fa3b9582c)
  * Security: Fixed Filesystem::isLocalPath including windows-specific checks on linux (3c37a67c)
  * Security: Fixed perforce argument escaping (3773f775)
  * Security: Fixed handling of zip bombs when extracting archives (de5f7e32)
  * Security: Fixed Windows command parameter escaping to prevent abuse of unicode characters with best fit encoding conversion (3130a7455, 04a63b324)
  * Fixed PSR violations for classes not matching the namespace of a rule being hidden, this may lead to new violations being shown (#11957)
  * Fixed UX when a plugin is still in vendor dir but is not required nor allowed anymore after changing branches (#12000)
  * Fixed new platform requirements from composer.json not being checked if the lock file is outdated (#12001)
  * Fixed ability for `config` command to remove autoload keys (#11967)
  * Fixed empty `type` support in `init` command (#11999)
  * Fixed git clone errors when `safe.bareRepository` is set to `strict` in the git config (#11969)
  * Fixed regression showing network errors on PHP <8.1 (#11974)
  * Fixed some color bleed from a few warnings (#11972)

### [2.7.6] 2024-05-04

  * Fixed regression when script handlers add an autoloader which uses a private callback (#11960)

### [2.7.5] 2024-05-03

  * Added `uninstall` alias to `remove` command (#11951)
  * Added workaround for broken curl versions 8.7.0/8.7.1 causing transport exceptions (#11913)
  * Fixed root usage warnings showing up within Podman containers (#11946)
  * Fixed config command not handling objects correctly in some conditions (#11945)
  * Fixed binary proxies not containing the correct path if the project dir is a symlink (#11947)
  * Fixed Composer autoloader being overruled by project autoloaders when they are loaded by event handlers (scripts/plugins) (#11955)
  * Fixed TransportException (http failures) not having a distinct exit code, should now exit with `100` as code (#11954)

### [2.7.4] 2024-04-22

  * Fixed regression (`Call to undefined method ProxyManager::needsTransitionWarning()`) with projects requiring composer/composer in an pre-2.7.3 version (#11943, #11940)

### [2.7.3] 2024-04-19

  * BC Warning: Fixed `https_proxy` env var falling back to `http_proxy`'s value, this is still in place but with a warning for now, and https_proxy can now be set empty to remove the fallback. Composer 2.8.0 will remove the fallback so make sure you heed the warnings (#11915)
  * Fixed `show` and `outdated` commands to remove leading `v` in e.g. `v1.2.3` when showing lists of packages (#11925)
  * Fixed `audit` command not showing any id when no CVE is present, the advisory ID is now shown (#11892)
  * Fixed the warning about a missing default version showing for packages with `project` type as those are typically not versioned and do not have cyclic dependencies (#11885)
  * Fixed PHP 8.4 deprecation warnings
  * Fixed `clear-cache` command to respect the config.cache-dir setting from the local composer.json (#11921)
  * Fixed `status` command not handling failed download/install promises correctly (#11889)
  * Added support for `buy_me_a_coffee` in GitHub funding files (#11902)
  * Added `hg` support for SSH urls (#11878)
  * Fixed some env vars with an integer value causing a crash (#11908)
  * Fixed context data not being output when using IOInterface as a PSR-3 logger (#11882)

### [2.7.2] 2024-03-11

  * Added info about the PHP version when running `composer --version` (#11866)
  * Added warning when the root version cannot be detected (#11858)
  * Fixed plugins still being enabled in a few contexts when running as root (c3efff91f)
  * Fixed `outdated --ignore ...` still attempting to load the latest version of the ignored packages (#11863)
  * Fixed handling of broken symlinks in the middle of an install path (#11864)
  * Fixed `update --lock` still incorrectly updating some metadata (#11850, #11787)

### [2.7.1] 2024-02-09

  * Added several warnings when plugins are disabled to hint at common problems people had with 2.7.0 (#11842)
  * Fixed `diagnose` auditing of Composer dependencies failing when running from the phar

### [2.7.0] 2024-02-08

  * Security: Fixed code execution and possible privilege escalation via compromised vendor dir contents (GHSA-7c6p-848j-wh5h / CVE-2024-24821)
  * Changed the default of the `audit.abandoned` config setting to `fail`, set it to `report` or `ignore` if you do not want this, or set it via `COMPOSER_AUDIT_ABANDONED` env var (#11643)
  * Added --minimal-changes (-m) flag to `update`/`require`/`remove` commands to perform partial update with --with-dependencies while changing only what is absolutely necessary in transitive dependencies (#11665)
  * Added --sort-by-age (-A) flag to `outdated`/`show` commands to allow sorting by and displaying the release date (most outdated first) (#11762)
  * Added support for `--self` combined with `--installed` or `--locked` in `show` command, to add the root package to the package list being output (#11785)
  * Added severity information to `audit` command output (#11702)
  * Added `scripts-aliases` top level key in composer.json to define aliases for custom scripts you defined (#11666)
  * Added IPv4 fallback on connection timeout, as well as a `COMPOSER_IPRESOLVE` env var to force IPv4 or IPv6, set it to `4` or `6` (#11791)
  * Added support for wildcards in `outdated`'s --ignore arg (#11831)
  * Added support for `bump` command bumping `*` to `>=current version` (#11694)
  * Added detection of constraints that cannot possibly match anything to `validate` command (#11829)
  * Added package source information to the output of `install` when running in very verbose (-vv) mode (#11763)
  * Added audit of Composer's own bundled dependencies in `diagnose` command (#11761)
  * Added GitHub token expiration date to `diagnose` command output (#11688)
  * Added non-zero status code to why/why-not commands (#11796)
  * Added error when calling `show --direct <package>` with an indirect/transitive dependency (#11728)
  * Added `COMPOSER_FUND=0` env var to hide calls for funding (#11779)
  * Fixed `bump` command not bumping packages required with a `v` prefix (#11764)
  * Fixed automatic disabling of plugins when running non-interactive as root
  * Fixed `update --lock` not keeping the dist reference/url/checksum pinned (#11787)
  * Fixed `require` command crashing at the end if no lock file is present (#11814)
  * Fixed root aliases causing problems when auditing locked dependencies (#11771)
  * Fixed handling of versions with 4 components in `require` command (#11716)
  * Fixed compatibility issues with Symfony 7
  * Fixed composer.json remaining behind after a --dry-run of the `require` command (#11747)
  * Fixed warnings being shown incorrectly under some circumstances (#11786, #11760, #11803)

### [2.6.6] 2023-12-08

  * Fixed symfony/console requirement to exclude 7.x as Composer 2.6 is not compatible, 2.7 will be (#11741)
  * Fixed libpq parsing to use the global constant if available (#11684)
  * Fixed error output when updating with a temporary constraint fails (#11692)

### [2.6.5] 2023-10-06

  * Fixed error when vendor dir contains broken symlinks (#11670)
  * Fixed composer.lock missing from Composer's zip archives (#11674)
  * Fixed AutoloadGenerator::dump() non-BC signature change in 2.6.4 (cb363b0e8)

### [2.6.4] 2023-09-29

  * Security: Fixed possible remote code execution vulnerability if composer.phar is publicly accessible, executable as PHP, and register_argc_argv is enabled in php.ini (GHSA-jm6m-4632-36hf / CVE-2023-43655)
  * Fixed json output of abandoned packages in audit command (#11647)
  * Performance improvement in pool optimization step (#11638)
  * Performance improvement in `show -a <packagename>` (#11659)

### [2.6.3] 2023-09-15

  * Added audit.abandoned config setting. Can be set to `ignore`, `report` (current default) or `fail` (future default in 2.7) to make the audit command report abandoned packages as a security problem (#11639)
  * Added a warning when duplicates `files` autoload rules are detected (#11109)
  * Fixed unhandled promise rejection regression (#11620)
  * Fixed loading of root aliases on path repo packages when doing partial updates (#11632)
  * Fixed `archive` command not producing the correct output if the temp dir is a symlink (#11636)
  * Fixed some replaced packages being incorrectly missing when unlocked in a partial update (#11629)

### [2.6.2] 2023-09-03

  * Reverted "Fixed binary proxies causing scripts inspecting `$_SERVER['SCRIPT_NAME']` to detect them, they are now more transparent (#11562)" which caused a regression (#11617)
  * Fixed non-zero exit code on failed audits to only apply to `install --audit` runs and not implicit audits with `require`, `create-project` or `update` commands (#11616)
  * Fixed `create-project` infinite post-install loop in some circumstances (#11613)

### [2.6.1] 2023-09-01

  * Reverted "Fixed executability of non-php binaries which are not marked executable (#11557)" which caused a regression (#11612)

### [2.6.0] 2023-09-01

  * Added audit.ignore config setting to ignore security advisories by id or CVE id (#11556, #11605)
  * Added `rm` alias to the `remove` command (#11367)
  * Added runtime platform check to verify the php-64bit requirement is met (#11334)
  * Added platform package detection for lib-pq-libpq and lib-rdkafka-librdkafka (#11418)
  * Added `--dry-run` to `dump-autoload` command to allow running --strict-psr checks without modifying the filesystem (#11608)
  * Added support for `bump`ing patch level in `~1.2.3` constraints (#11590)
  * Added prompt in `require` if the package name is not found but similar ones exist (#11284)
  * Added support for env vars and `~` in repository paths for vcs and artifact repositories (#11453)
  * Added support for local directory paths for repositories of type `composer` (#11526)
  * Added links to package homepages in `why`/`why-not` command output (#11308)
  * Added a `security` key to the `support` key of composer.json to set the URL to the vulnerability disclosure policy (#11271)
  * Added support for gathering security advisories from multiple repositories for a single package (#11436)
  * Fixed `install` exit code to be non-zero (5) if a requested security audit failed (#11362)
  * ~~Fixed binary proxies causing scripts inspecting `$_SERVER['SCRIPT_NAME']` to detect them, they are now more transparent (#11562)~~ (Reverted in 2.6.2)
  * ~~Fixed executability of non-php binaries which are not marked executable (#11557)~~ (Reverted in 2.6.1)
  * Fixed `mtime` modification of the vendor dir to only happen when packages are modified, and not require lock file modification to happen (#11593)
  * Fixed `create-project` using the wrong composer.json file if one was set via the `COMPOSER` env var (#11493)
  * Fixed json editing to preserve indentation when updating json files (#11390)
  * Fixed handling of broken junctions on windows (#11550)
  * Fixed parsing of lib-curl-openssl version with OSX SecureTransport (#11534)
  * Fixed svn repo parsing in some edge cases (#11350)
  * Fixed handling of archive URLs without file extension (#11520)
  * Performance improvement in pool optimization step (#11449, #11450)

### [2.5.8] 2023-06-09

  * Fixed regression in edge cases where root package gets added to a repository already during the install process (#11495)
  * Fixed EventDispatcher on windows picking bat files when using "@php binary" (#11490)
  * Fixed ICU CLDR version parsing failing the whole process when ICU cannot initialize the resource bundle (#11492)
  * Fixed type declarations on ClassLoader (#11500)

### [2.5.7] 2023-05-24

  * Fixed regression preventing autoloading the dependencies of metapackages when running --no-dev (#11481)

### [2.5.6] 2023-05-24

  * BC Warning: Installers and `InstallationManager::getInstallPath` will now return `null` instead of an empty string for metapackages' paths. This may have adverse effects on plugin code using this expecting always a string but it is unlikely (#11455)
  * Fixed metapackages showing their install path as the root package's path instead of empty (#11455)
  * Fixed lock file verification on `install` to deal better with `replace`/`provide` (#11475)
  * Fixed lock file having a more recent modification time than the vendor dir when `require` guesses the constraint after resolution (#11405)
  * Fixed numeric default branches with a `v` prefix being treated as non-numeric ones and receiving an alias like e.g. dev-main would (e51d755a08)
  * Fixed binary proxies not being transparent when included by another PHP process and returning a value (#11454)
  * Fixed support for plugin classes being marked as `readonly` (#11404)
  * Fixed `getmypid` being required as it is not always available (#11401)
  * Fixed authentication issue when downloading several files from private Bitbucket in parallel (#11464)

### [2.5.5] 2023-03-21

  * Fixed basic auth failures resulting in infinite retry loop (#11320)
  * Fixed GitHub rate limit reporting (#11366)
  * Fixed InstalledVersions error in Composer 1 compatibility edge case (#11304)
  * Fixed issue displaying solver problems with branch names containing `%` signs (#11359)
  * Fixed race condition in cache validity detection when running Composer highly concurrently (#11375)
  * Fixed various minor config command issues (#11353, #11302)

### [2.5.4] 2023-02-15

  * Fixed extra.plugin-optional support in PluginInstaller when doing pre-install checks (#11318)

### [2.5.3] 2023-02-10

  * Added extra.plugin-optional support for allow auto-disabling unknown plugins which are not critical when running non-interactive (#11315)

### [2.5.2] 2023-02-04

  * Added warning when `require` auto-selects a feature branch as that is probably not desired (#11270)
  * Fixed `self.version` requirements reporting lock file integrity errors when changing branches (#11283)
  * Fixed `require` regression which broke the --fixed flag (#11247)
  * Fixed security audit reports loading when exclude/only filter rules are used on a repository (#11281)
  * Fixed autoloading regression on PHP 5.6 (#11285)
  * Fixed archive command including an existing archive into itself if run repeatedly (#11239)
  * Fixed dev package prompt in `require` not appearing in some conditions (#11287)

### [2.5.1] 2022-12-22

  * Fixed ClassLoader regression which made it fail if serialized (e.g. within PHPUnit process isolation) (#11237)
  * Fixed preg type error in svn version guessing (#11231)

### [2.5.0] 2022-12-20

  * BC Warning: To prevent abuse of our includeFile() function it is now gone, it was not part of the official API but may still cause issues if some code incorrectly relied on it (#11015)
  * Improved version guessing of `require` command to use the dependency resolution result instead of using the latest available version (except if you run with --no-update) (#11160)
  * Improved version selection in `archive` command (#11230)
  * Added autocompletion of config option names in the `config` command (#11130)
  * Added support for writing [custom commands as Command classes](https://getcomposer.org/doc/articles/scripts.md#writing-custom-commands) (#11151)
  * Added hard failure when installing from a lock file which does not satisfy the composer.json requirements (#11195)
  * Added warning when the outdated command rejects a new package due to unmet platform requirements (#11113)
  * Added support for `bump` command to bump `>=x` to `>=installed-version` (#11179)
  * Added `--download-only` flag to `install` command to only download and prime the cache with the package archives (#11041)
  * Added autoconfiguration of `github-domains`/`gitlab-domains` when GitHub/GitLab credentials are configured for a custom domain (#11062)
  * Added hard failure (throw) if COMPOSER_AUTH is present and malformed JSON (#11085)
  * Added interactive prompt to `run-script` and `exec` commands if run without any argument (#11157)
  * Added interactive prompt where to store credentials when a project-local auth.json exists (#11188)
  * Fixed full disk warning to be shown when less than 100MiB is available (#11190)
  * Fixed cache keys to allow `_` to avoid conflicts between package names like `a-b` and `a_b` (#11229)
  * Fixed docker compatibility by making paths more portable even if the project is installed at `/` (#11169)

### [2.4.4] 2022-10-27

  * Added extra debug output when a zip extraction fails while on GitHub Actions (#11148)
  * Fixed cache write failures when the cache dir gets removed during a composer run (#11076)
  * Fixed 2.4.3 regression in loading Composer on SMB/network shares (#11077)
  * Fixed `--dry-run` flag missing from `bump` command (#11047)
  * Fixed `status` command reporting differences when the source ref is a tag (#11155)
  * Fixed outdated command outputting legend on stdout instead of stderr
  * Fixed URL sanitizer to handle new GitHub personal access tokens format (#11137)

### [2.4.3] 2022-10-14

  * BC Break: The json format of `audit` command now has `reportedAt` as an RFC3339 string instead of an object which was a mistake (#11120)
  * Fixed json format of `audit` command which was missing affectedVersions (#11120)
  * Fixed plugin commands not being loaded during bash completions (#11074)
  * Fixed parsing of inline aliases within complex constraints with `||` or `,` (#11086)
  * Fixed min-php version check in autoload.php to avoid crashing sites running on PHP 5.5 or below silently with a 200 (#11091)
  * Fixed JsonFile reading files without checking if they are readable first (#11077)
  * Fixed `require` command with `--dry-run` failing when requiring a package requiring stability flag extraction (#11112)

### [2.4.2] 2022-09-14

  * Fixed bash completion hanging when running as root without `COMPOSER_ALLOW_SUPERUSER` set (#11024)
  * Fixed handling of plugin activation when running as root without `COMPOSER_ALLOW_SUPERUSER` set so it always happens after prompting, or does not happen if input is non-interactive
  * Fixed package filter on `bump` command (#11053)
  * Fixed handling of --ignore-platform-req with upper-bound ignores to not apply to conflict rules (#11037)
  * Fixed handling of `COMPOSER_DISCARD_CHANGES` when set to `0`
  * Fixed handling of zero-major versions in `outdated` command with `--major-only` (#11032)
  * Fixed `show --platform` regression since 2.4.0 when running in a directory without composer.json (#11046)
  * Fixed a few strict type errors

### [2.4.1] 2022-08-20

  * Added a `COMPOSER_NO_AUDIT` env var to easily apply the new --no-audit flag in CI (#10998)
  * Fixed `show` command showing packages in two sections, this was only meant for the `outdated` command (#11000)
  * Fixed local git repos being copied to cache unnecessarily (#11001)
  * Fixed git cache invalidation issue when a git tag gets created after the cache has loaded a given reference (#11004)

### [2.4.0] 2022-08-16

  * Added `json` format output to the new `audit` command (#10965)
  * Added `json` format output to the `check-platform-reqs` command (#10979)
  * Added GitLab 15+ token refresh support (#10988)
  * Fixed `COMPOSER_NO_DEV` so it also works with `require` and `remove`'s `--update-no-dev` (#10995)
  * Fixed various bash completion issues

### [2.4.0-RC1] 2022-07-21

  * Added bash completions for Composer commands, package names, etc (see [how to setup](https://getcomposer.org/doc/03-cli.md#bash-completions)) (#10320)
  * Added `bump` command to bump requirements to the currently installed version (#10829)
  * Added `audit` command to check for known security vulnerabilities in installed packages (#10798, #10898)
  * Added automatic auditing of security vulnerabilities after `update` is done, can be overridden with `--no-audit` (#10798, #10898)
  * Added `--audit` to `install` command to also do an audit (#10798, #10898)
  * Added `r` alias to `require` command (#10953)
  * Added `composer/class-map-generator` dependency to replace `Composer\Autoload\ClassMapGenerator` which is now deprecated (#10885)
  * Added `--locked` to `depends`/`prohibits` commands (#10834)
  * Added `--strict-psr` flag to `dump-autoload` command to fail the process if PSR violations were detected, useful for CI (#10886)
  * Added `COMPOSER_PREFER_STABLE` and `COMPOSER_PREFER_LOWEST` env vars to turn on `--prefer-stable`/`--prefer-lowest` on `update` and `require` command, useful for CI (#10919)
  * Added support for temporary update constraints on all packages (now also including non-root dependencies) (#10773)
  * Added `--major-only` flag to the `outdated` command to show only packages with major version updates (#10827)
  * Added sections for direct and transitive deps in `outdated` command output (#10779)
  * Added ability for cache GC to clean up `vcs` and `repo` caches (#10826)
  * Added `--gc` flag to `clear-cache` to only trigger a garbage collection instead of clearing everything (#10826)
  * Added signal (SIGINT, SIGTERM, SIGHUP) handling to ensure we wait for the child process to exit before Composer exits to avoid dropping output (#10958)
  * Added prompt suggesting using `--dev` when requiring packages with `dev`/`testing`/`static analysis` keywords present (#10960)
  * Added warning in `require`, `init` and `create-project` commands when the latest version of a package cannot be used due to platform requirements (#10896)

### [2.3.10] 2022-07-13

  * Fixed plugins from CWD/vendor being loaded in some cases like create-project or validate even though the target directory is outside of CWD (#10935)
  * Fixed support for legacy (Composer 1.x, e.g. hirak/prestissimo) plugins which will not warn/error anymore if not in allow-plugins, as they are anyway not loaded (#10928)
  * Fixed pre-install check for allowed plugins not taking --no-plugins into account (#10925)
  * Fixed support for disable_functions containing disk_free_space (#10936)
  * Fixed RootPackageRepository usages to always clone the root package to avoid interoperability issues with plugins (#10940)

### [2.3.9] 2022-07-05

  * Fixed non-interactive behavior of allow-plugins to throw instead of continue with a warning to avoid broken installs (#10920)
  * Fixed allow-plugins BC mode to ensure old lock files created pre-2.2 can be installed with only a warning but plugins fully loaded (#10920)
  * Fixed deprecation notice (#10921)
  * Fixed type errors (#10924)

### [2.3.8] 2022-07-01

  * Fixed support for `cache-read-only` where the filesystem is not writable (#10906)
  * Fixed type error when using `allow-plugins: true` (#10909)
  * Fixed @putenv scripts receiving arguments passed to the command (#10846)
  * Fixed support for spaces in paths with binary proxies on Windows (#10836)
  * Fixed type error in GitDownloader if branches cannot be listed (#10888)
  * Fixed RootPackageInterface issue on PHP 5.3.3 (#10895)
  * Fixed type errors (#10904, #10897)

### [2.3.7] 2022-06-06

  * Fixed a few PHPStan ConfigReturnTypeExtension bugs
  * Fixed Config default for auth configs to be empty arrays instead of null, fixes issues with diagnose command (#10814)
  * Fixed handling of broken symlinks when checking whether a package is still installed (#6708)
  * Fixed bin proxies to allow a proxy to include another one safely (#10823)
  * Fixed openssl 3.x version parsing as it is now semver compliant
  * Fixed type error when a json file cannot be read (#10818)
  * Fixed parsing of multi-line arrays in funding.yml (#10784)

### [2.3.6] 2022-06-01

  * Added `Composer\PHPStan\ConfigReturnTypeExtension` to improve return types of `Config::get()` which you can also use in plugins CI (#10635)
  * Fixed name validation regex in schema causing issues with JS IDEs like VS Code (#10811)
  * Fixed unnecessary HTTP request in BitbucketDriver (#10729)
  * Fixed invalid credentials loop when setting up GitLab token (#10748)
  * Fixed PHP 8.2 deprecations (#10766)
  * Fixed lock file changes being output even when the lock file creation is disabled
  * Fixed race condition when multiple requests asking for auth on the same hostname fired concurrently (#10763)
  * Fixed quoting of commas on Windows (#10775)
  * Fixed issue installing path repos with a disabled symlink function (#10786)
  * Fixed various type errors (#10753, #10739, #10751)

### [2.3.5] 2022-04-13

  * Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)
  * Added warning when downloading a file with `verify_peer[_name]` disabled (#10722)
  * Fixed curl downloader not retrying when a DNS resolution failure occurs (#10716)
  * Fixed composer.lock file still being used/read when the `lock` config option is disabled (#10726)
  * Fixed `validate` command checking the lock file even if the `lock` option is disabled (#10723)
  * Fixed detection of default branch name when it changed since a git repo was mirrored in cache dir (#10701)

### [2.3.4] 2022-04-07

  * Fixed the generated autoload.php to support running on PHP 5.6+ (down from 7.0+) and warn clearly on older PHP versions (#10714)
  * Fixed run-script --list flag regression (#10710)
  * Fixed curl downloader handling of DNS resolution failures to do an automatic retry (#10716)
  * Fixed script handling of external commands not setting the Path env correctly on windows (#10700)
  * Fixed various type errors (#10694, #10696, #10702, #10712, #10703)

### [2.3.3] 2022-04-01

  * Added --2.2 flag to `self-update` to pin the Composer version to the 2.2 LTS range (#10682)
  * Added missing config.bitbucket-oauth in composer-schema.json
  * Fixed type errors in SvnDriver (#10681)
  * Fixed --version output to match the pre-2.3 one (#10684)
  * Fixed config/auth.json files not being validated against the composer-schema.json (#10685)
  * Fixed generation of autoload crashing if a package has a broken path (#10688)
  * Fixed GitDriver state issue when reusing old cache dirs and the default branch was renamed (#10687)
  * Updated semver, jsonlint deps for minor fixes
  * Removed dev-master=>dev-main alias from #10372 as it does not work when reloading from lock file and extracting dev deps (#10651)

### [2.3.2] 2022-03-30

  * Fixed type error when running `exec` command (#10672)
  * Fixed endless loop in plugin activation prompt when input is not fully interactive yet appears to be (#10648)
  * Fixed type error in ComposerRepository (#10675)
  * Fixed issues loading platform packages where the version of a library cannot be established (#10631)

### [2.3.1] 2022-03-30

  * Fixed type error when HOME env var is not set (#10670)

### [2.3.0] 2022-03-30

  * Fixed many strict types errors (#10646, #10642, #10647, #10658, #10656, #10665, #10660, #10663, #10662)

### [2.3.0-RC2] 2022-03-20

  * Fixed invalid return value in ComposerRepository::findPackage (#10622)
  * Fixed many `show` command issues due to a flipped condition (#10623)
  * Fixed `phpversion()` handling when it returns false due to an extension defining no version (#10631)
  * Fixed `remove` command failing when no `allow-plugin` is defined in config (#10629)
  * Performance improvement in Composer bootstrapping (version guessing) when on a feature branch (#10632)

### [2.3.0-RC1] 2022-03-16

  * BC Break: the minimum PHP version is now 7.2.5+, use the [Composer 2.2 LTS](https://github.com/composer/composer/issues/10340) if you are stuck with an older PHP (#10343)
  * BC Break: added native parameter & return types to many internal APIs, we explicitly left the most extended/implemented symbols untouched but if this causes problems nonetheless please report it ASAP (#10547, #10561)
  * BC Break: added visibility to all constants, a few internal ones have been made private/protected, if this causes problems please report it ASAP (#10550)
  * BC Break: the minimum supported Symfony components version is now 5.4, this only affects you if you are requiring composer/composer directly however, which is generally frowned upon
  * Bumped `composer-plugin-api` to `2.3.0`
  * Bumped bundled Symfony components from 2.8 to 5.4 🥳
  * Added `declare(strict_types=1)` to all the classes, which for sure could cause regressions in edge cases, please report with stack traces (#10567)
  * Added `--patch-only` to the `outdated` command to only show updates to patch versions and ignore new major/minor versions (#10589)
  * Added clickable links to various commands for terminals which support it (#10430)
  * Added ProcessExecutor ability to receive commands as arrays by (internals/plugin change only) (#10435)
  * Added abandoned flag to `show`/`outdated` commands JSON-formatted output (#10485)
  * Added config.reference option to `path` repositories to configure the way the reference is generated, and possibly reduce composer.lock conflicts (#10488)
  * Added automatic removal of allow-plugins rules when removing a plugin via the `remove` command (#10615)
  * Added `COMPOSER_IGNORE_PLATFORM_REQ` & `COMPOSER_IGNORE_PLATFORM_REQS` env vars to configure the equivalent flags (#10616)
  * Added support for Symfony 6.0 components
  * Added support for psr/log 3.x (#10454)
  * Fixed symlink creation in linux VM guest filesystems to be recognized by Windows (#10592)
  * Performance improvement in pool optimization step (#10585)

### [2.2.17] 2022-07-13

  * Fixed plugins from CWD/vendor being loaded in some cases like create-project or validate even though the target directory is outside of CWD (#10935)
  * Fixed support for legacy (Composer 1.x, e.g. hirak/prestissimo) plugins which will not warn/error anymore if not in allow-plugins, as they are anyway not loaded (#10928)
  * Fixed pre-install check for allowed plugins not taking --no-plugins into account (#10925)
  * Fixed support for disable_functions containing disk_free_space (#10936)
  * Fixed RootPackageRepository usages to always clone the root package to avoid interoperability issues with plugins (#10940)

### [2.2.16] 2022-07-05

  * Fixed non-interactive behavior of allow-plugins to throw instead of continue with a warning to avoid broken installs (#10920)
  * Fixed allow-plugins BC mode to ensure old lock files created pre-2.2 can be installed with only a warning but plugins fully loaded (#10920)
  * Fixed deprecation notice (#10921)

### [2.2.15] 2022-07-01

  * Fixed support for `cache-read-only` where the filesystem is not writable (#10906)
  * Fixed type error when using `allow-plugins: true` (#10909)
  * Fixed @putenv scripts receiving arguments passed to the command (#10846)
  * Fixed support for spaces in paths with binary proxies on Windows (#10836)
  * Fixed type error in GitDownloader if branches cannot be listed (#10888)
  * Fixed RootPackageInterface issue on PHP 5.3.3 (#10895)

### [2.2.14] 2022-06-06

  * Fixed handling of broken symlinks when checking whether a package is still installed (#6708)
  * Fixed name validation regex in schema causing issues with JS IDEs like VS Code (#10811)
  * Fixed bin proxies to allow a proxy to include another one safely (#10823)
  * Fixed gitlab-token JSON schema definition (#10800)
  * Fixed openssl 3.x version parsing as it is now semver compliant
  * Fixed type error when a json file cannot be read (#10818)
  * Fixed parsing of multi-line arrays in funding.yml (#10784)

### [2.2.13] 2022-05-25

  * Fixed invalid credentials loop when setting up GitLab token (#10748)
  * Fixed PHP 8.2 deprecations (#10766)
  * Fixed lock file changes being output even when the lock file creation is disabled
  * Fixed race condition when multiple requests asking for auth on the same hostname fired concurrently (#10763)
  * Fixed quoting of commas on Windows (#10775)
  * Fixed issue installing path repos with a disabled symlink function (#10786)

### [2.2.12] 2022-04-13

  * Security: Fixed command injection vulnerability in HgDriver/GitDriver (GHSA-x7cr-6qr6-2hh6 / CVE-2022-24828)
  * Fixed curl downloader not retrying when a DNS resolution failure occurs (#10716)
  * Fixed composer.lock file still being used/read when the `lock` config option is disabled (#10726)
  * Fixed `validate` command checking the lock file even if the `lock` option is disabled (#10723)

### [2.2.11] 2022-04-01

  * Added missing config.bitbucket-oauth in composer-schema.json
  * Added --2.2 flag to `self-update` to pin the Composer version to the 2.2 LTS range (#10682)
  * Updated semver, jsonlint deps for minor fixes
  * Fixed generation of autoload crashing if a package has a broken path (#10688)
  * Removed dev-master=>dev-main alias from #10372 as it does not work when reloading from lock file and extracting dev deps (#10651)

### [2.2.10] 2022-03-29

  * Fixed Bitbucket authorization detection due to API changes (#10657)
  * Fixed validate command warning about dist/source keys if defined (#10655)
  * Fixed deletion/handling of corrupted 0-bytes zip archives (#10666)

### [2.2.9] 2022-03-15

  * Fixed regression with plugins that modify install path of packages, [see docs](https://getcomposer.org/doc/articles/plugins.md#plugin-modifies-install-path) if you are authoring such a plugin (#10621)

### [2.2.8] 2022-03-15

  * Fixed `files` autoloading sort order to be fully deterministic (#10617)
  * Fixed pool optimization pass edge cases (#10579)
  * Fixed `require` command failing when `self.version` is used as constraint (#10593)
  * Fixed --no-ansi / undecorated output still showing color in repo warnings (#10601)
  * Performance improvement in pool optimization step (composer/semver#131)

### [2.2.7] 2022-02-25

  * Allow installation together with composer/xdebug-handler ^3 (#10528)
  * Fixed support for packages with no licenses in `licenses` command output (#10537)
  * Fixed handling of `allow-plugins: false` which kept warning (#10530)
  * Fixed enum parsing in classmap generation when the enum keyword is not lowercased (#10521)
  * Fixed author parsing in `init` command requiring an email whereas the schema allows a name only (#10538)
  * Fixed issues in `require` command when requiring packages which do not exist (but are provided by something else you require) (#10541)
  * Performance improvement in pool optimization step (#10546)

### [2.2.6] 2022-02-04

  * BC Break: due to an oversight, the `COMPOSER_BIN_DIR` env var for binaries added in Composer 2.2.2 had to be renamed to `COMPOSER_RUNTIME_BIN_DIR` (#10512)
  * Fixed enum parsing in classmap generation with syntax like `enum foo:string` without space after `:` (#10498)
  * Fixed package search not urlencoding the input (#10500)
  * Fixed `reinstall` command not firing `pre-install-cmd`/`post-install-cmd` events (#10514)
  * Fixed edge case in path repositories where a symlink: true option would be ignored on old Windows and old PHP combos (#10482)
  * Fixed test suite compatibility with latest symfony/console releases (#10499)
  * Fixed some error reporting edge cases (#10484, #10451, #10493)

### [2.2.5] 2022-01-21

  * Disabled `composer/package-versions-deprecated` by default as it can function using `Composer\InstalledVersions` at runtime (#10458)
  * Fixed artifact repositories crashing if a phar file was present in the directory (#10406)
  * Fixed binary proxy issue on PHP <8 when fseek is used on the proxied binary path (#10468)
  * Fixed handling of non-string versions in package repositories metadata (#10470)

### [2.2.4] 2022-01-08

  * Fixed handling of process timeout when running async processes during installation
  * Fixed GitLab API handling when projects have a repository disabled (#10440)
  * Fixed reading of environment variables (e.g. APPDATA) containing unicode characters to workaround a PHP bug on Windows (#10434)
  * Fixed partial update issues with path repos missing if a path repo is required by a path repo (#10431)
  * Fixed support for sourcing binaries via the new bin proxies ([#10389](https://github.com/composer/composer/issues/10389#issuecomment-1007372740))
  * Fixed messaging when GitHub tokens need SSO authorization (#10432)

### [2.2.3] 2021-12-31

  * Fixed issue with PHPUnit and process isolation now including PHPUnit <6.5 (#10387)
  * Fixed interoperability issue with laminas/laminas-zendframework-bridge and Composer 2.2 (#10401)
  * Fixed binary proxies for shell scripts to work correctly when they are symlinked (jakzal/phpqa#336)
  * Fixed overly greedy pool optimization in cases where a locked package is not required by anything anymore in a partial update (#10405)

### [2.2.2] 2021-12-29

  * Added [`COMPOSER_BIN_DIR` env var and `_composer_bin_dir` global](https://getcomposer.org/doc/articles/vendor-binaries.md#finding-the-composer-bin-dir-from-a-binary) containing the path to the bin-dir for binaries. Packages relying on finding the bin dir with `$BASH_SOURCES[0]` will need to update their binaries (#10402)
  * Fixed issue when new binary proxies are combined with PHPUnit and process isolation (#10387)
  * Fixed deprecation warnings when using Symfony 5.4+ and requiring composer/composer itself (#10404)
  * Fixed UX of plugin warnings (#10381)

### [2.2.1] 2021-12-22

  * Fixed plugin autoloading including files autoload rules from the root package (#10382)
  * Fixed issue parsing php files with unterminated comments found inside backticks (#10385)

### [2.2.0] 2021-12-22

  * Added support for using `dev-main` as the default path repo package version if no VCS info is available (#10372)
  * Added --no-scripts as a globally supported flag to all Composer commands to disable scripts execution (#10371)
  * Fixed self-update failing in some edge cases due to loading plugins (#10371)
  * Fixed display of conflicts showing the wrong package name in some conditions (#10355)

### [2.2.0-RC1] 2021-12-08

  * Bumped `composer-runtime-api` and `composer-plugin-api` to `2.2.0`
  * UX Change: Added [`allow-plugins`](https://getcomposer.org/doc/06-config.md#allow-plugins) config value to enhance security against runtime execution, this will prompt you the first time you use a plugin and may hang pipelines if they aren't using --no-interaction (-n) as they should (#10314)
  * Added an optimization pass to reduce the amount of redundant inspected during resolution, drastically improving memory and CPU usage (#9261, #9620)
  * Added a [global $_composer_autoload_path variable](https://getcomposer.org/doc/articles/vendor-binaries.md#finding-the-composer-autoloader-from-a-binary) containing the path to autoload.php for binaries (#10137)
  * Added wildcard support to --ignore-platform-req (e.g. `ext-*`) (#10083)
  * Added support for ignoring the upper bound of platform requirements using "name+" notation e.g. using `--ignore-platform-req=php+` would allow installing a package requiring `php: 8.0.*` on PHP 8.1, but not on PHP 7.4. Useful for CI builds of upcoming PHP versions (#10318)
  * Added support for setting platform packages to false in config.platform to disable/hide them (#10308)
  * Added [`use-parent-dir`](https://getcomposer.org/doc/06-config.md#use-parent-dir) option to configure the prompt for using composer.json in upper directory when none is present in current dir (#10307)
  * Added [`composer` platform package](https://getcomposer.org/doc/articles/composer-platform-dependencies.md) which is always the exact version of Composer running unlike `composer-*-api` packages (#10313)
  * Added a --source flag to `config` command to show where config values are loaded from (#10129)
  * Added support for `files` autoloaders in the runtime scripts/plugins contexts (#10065)
  * Added retry behavior on certain http status and curl error codes (#10162)
  * Added abandoned flag display in search command output
  * Added support for --ignore-platform-reqs in `outdated` command (#10293)
  * Added --only-vendor (-O) flag to `search` command to search (and return) vendor names (#10336)
  * Added COMPOSER_NO_DEV environment variable to set the --no-dev flag (#10262)
  * Fixed `archive` command to behave more like git archive, gitignore/hgignore are not taken into account anymore, and gitattributes support was improved (#10309)
  * Fixed unlocking of replacers when a replaced package is unlocked (#10280)
  * Fixed auto-unlocked path repo packages also unlocking their transitive deps when -w/-W is used (#10157)
  * Fixed handling of recursive package links (e.g. requiring or replacing oneself)
  * Fixed env var reads to check $_SERVER and $_ENV before getenv for broader ecosystem compatibility (#10218)
  * Fixed `archive` command to produce archives with files sorted by name (#10274)
  * Fixed VcsRepository issues where server failure could cause missing tags/branches (#10319)
  * Fixed some error reporting issues (#10283, #10339)

### [2.1.14] 2021-11-30

  * Fixed invalid release build

### [2.1.13] 2021-11-30

  * Removed `symfony/console ^6` support as we cannot be compatible until Composer 2.3.0 is released. If you have issues with Composer required as a dependency + Symfony make sure you stay on Symfony 5.4 for now. (#10321)

### [2.1.12] 2021-11-09

  * Fixed issues in proxied binary files relying on __FILE__ / __DIR__ on php <8 (#10261)
  * Fixed 9999999-dev being shown in some cases by the `show` command (#10260)
  * Fixed GitHub Actions output escaping regression on PHP 8.1 (#10250)

### [2.1.11] 2021-11-02

  * Fixed issues in proxied binary files when using declare() on php <8 (#10249)
  * Fixed GitHub Actions output escaping issues (#10243)

### [2.1.10] 2021-10-29

  * Added type annotations to all classes, which may have an effect on CI/static analysis for people using Composer as a dependency (#10159)
  * Fixed CurlDownloader requesting gzip encoding even when no gzip support is present (#10153)
  * Fixed regression in 2.1.6 where the help command was not working for plugin commands (#10147)
  * Fixed warning showing when an invalid cache dir is configured but unused (#10125)
  * Fixed `require` command reverting changes even though dependency resolution succeeded when something fails in scripts for example (#10118)
  * Fixed `require` not finding the right package version when some newly required extension is missing from the system (#10167)
  * Fixed proxied binary file issues, now using output buffering (e1dbd65aff)
  * Fixed and improved error reporting in several edge cases (#9804, #10136, #10163, #10224, #10209)
  * Fixed some more Windows CLI parameter escaping edge cases

### [2.1.9] 2021-10-05

  * Security: Fixed command injection vulnerability on Windows (GHSA-frqg-7g38-6gcf / CVE-2021-41116)
  * Fixed classmap parsing with a new class parser which does not rely on regexes anymore (#10107)
  * Fixed inline git credentials showing up in output in some conditions (#10115)
  * Fixed support for running updates while offline as long as the cache contains enough information (#10116)
  * Fixed `show --all foo/bar` which as of 2.0.0 was not showing all versions anymore but only the installed one (#10095)
  * Fixed VCS repos ignoring some versions silently when the API rate limit is reached (#10132)
  * Fixed CA bundle to remove the expired Let's Encrypt root CA

### [2.1.8] 2021-09-15

  * Fixed regression in 2.1.7 when parsing classmaps in files containing invalid Unicode (#10102)

### [2.1.7] 2021-09-14

  * Added many type annotations internally, which may have an effect on CI/static analysis for people using Composer as a dependency. This work will continue in following releases
  * Fixed regression in 2.1.6 when parsing classmaps with empty heredocs (#10067)
  * Fixed regression in 2.1.6 where list command was not showing plugin commands (#10075)
  * Fixed issue handling package updates where the package type changed (#10076)
  * Fixed docker being detected as WSL when run inside WSL (#10094)

### [2.1.6] 2021-08-19

  * Updated internal PHAR signatures to be SHA512 instead of SHA1
  * Fixed uncaught exception handler regression (#10022)
  * Fixed more PHP 8.1 deprecation warnings (#10036, #10038, #10061)
  * Fixed corrupted zips in the cache from blocking installs until a cache clear, the bad archives are now deleted automatically on first failure (#10028)
  * Fixed URL sanitizer handling of new github tokens (#10048)
  * Fixed issue finding classes with very long heredocs in classmap autoload (#10050)
  * Fixed proc_open being required for simple installs from zip, as well as diagnose (#9253)
  * Fixed path repository bug causing symlinks to be left behind after a package is uninstalled (#10023)
  * Fixed issue in 7-zip support on windows with certain archives (#10058)
  * Fixed bootstrapping process to avoid loading the composer.json and plugins until necessary, speeding things up slightly (#10064)
  * Fixed lib-openssl detection on FreeBSD (#10046)
  * Fixed support for `ircs://` protocol for support.irc composer.json entries

### [2.1.5] 2021-07-23

  * Fixed `create-project` creating a `php:` directory in the directory it was executed in (#10020, #10021)
  * Fixed curl downloader to respect default_socket_timeout if it is bigger than our default 300s (#10018)

### [2.1.4] 2021-07-22

  * Fixed PHP 8.1 deprecation warnings (#10008)
  * Fixed support for working within UNC/WSL paths on Windows (#9993)
  * Fixed 7-zip support to also be looked up on Linux/macOS as 7z or 7zz (#9951)
  * Fixed repositories' `only`/`exclude` properties to avoid matching names as sub-strings of full package names (#10001)
  * Fixed open_basedir regression from #9855
  * Fixed schema errors being reported incorrectly in some conditions (#9986)
  * Fixed `archive` command not working with async archive extraction
  * Fixed `init` command being able to generate an invalid composer.json (#9986)

### [2.1.3] 2021-06-09

  * Add "symlink" option for "bin-compat" config to force symlinking even on WSL/Windows (#9959)
  * Fixed source binaries not being made executable when symlinks cannot be used (#9961)
  * Fixed more deletion edge cases (#9955, #9956)
  * Fixed `dump-autoload` command not dispatching scripts anymore, regressed in 2.1.2 (#9954)

### [2.1.2] 2021-06-07

  * Added `--dev` to `dump-autoload` command to allow force-dumping dev autoload rules even if dev requirements are not present (#9946)
  * Fixed `--no-scripts` disabling events for plugins too instead of only disabling script handlers, using `--no-plugins` is the way to disable plugins (#9942)
  * Fixed handling of deletions during package installs on some filesystems (#9945, #9947)
  * Fixed undefined array access when using "@php <absolute path>" in a script handler (#9943)
  * Fixed usage of InstalledVersions when loaded from composer/composer installed as a dependency and runtime Composer is v1 (#9937)

### [2.1.1] 2021-06-04

  * Fixed regression in autoload generation when --no-scripts is used (#9935)
  * Fixed `outdated` color legend to have the right color in the right place (#9939)
  * Fixed PCRE bug causing a previously valid pattern to fail to match (#9941)
  * Fixed JsonFile::validateSchema regression when used as a library to validate custom schema files (#9938)

### [2.1.0] 2021-06-03

  * Fixed PHP 8.1 deprecation warning (#9932)
  * Fixed env var handling when variables_order includes E and symfony/console 3.3.15+ is in use (#9930)

### [2.1.0-RC1] 2021-06-02

  * Bumped `composer-runtime-api` and `composer-plugin-api` to `2.1.0`
  * UX Change: The default install method for packages is now always dist/zip, even for dev packages, added `--prefer-install=auto` if you want the old behavior (#9603)
  * UX Change: Packages from `path` repositories which are symlinked in the vendor dir will always be updated in partial updates to avoid mistakes when the original composer.json changes but the symlinked package is not explicitly updated (#9765)
  * Added `reinstall` command that takes one or more package names, including wildcard (`*`) support, and removes then reinstalls them in the exact same version they had (#9915)
  * Added support for parallel package installs on Windows via [7-Zip](https://www.7-zip.org/) if it is installed (#9875)
  * Added detection of invalid composer.lock files that do not fulfill the composer.json requirements to `validate` command (#9899)
  * Added `InstalledVersions::getInstalledPackagesByType(string $type)` to retrieve installed plugins for example, [read more](https://getcomposer.org/doc/07-runtime.md#knowing-which-packages-of-a-given-type-are-installed) (#9699)
  * Added `InstalledVersions::getInstalledPath(string $packageName)` to retrieve the install path of a given package, [read more](https://getcomposer.org/doc/07-runtime.md#knowing-the-path-in-which-a-package-is-installed) (#9699)
  * Added flag to `InstalledVersions::isInstalled()` to allow excluding dev requirements from that check (#9682)
  * Added support for PHP 8.1 enums in autoloader / classmap generation (#9670)
  * Added support for using `@php binary-name foo` in scripts to refer to a binary without using its full path, but forcing to use the same PHP version as Composer used (#9726)
  * Added `--format=json` support to the `fund` command (#9678)
  * Added `--format=json` support to the `search` command (#9747)
  * Added `COMPOSER_DEV_MODE` env var definition within the run-script command for compatibility (#9793)
  * Added async uninstall of packages (#9618)
  * Added color legend to `outdated` and `show --latest` commands (#9716)
  * Added `secure-svn-domains` config option to mark secure svn:// hostnames and suppress warnings without disabling secure-http (#9872)
  * Added `gitlab-protocol` config option to allow forcing `git` or `http` URLs for all gitlab repos loaded inline, instead of the default of git for private and http for public (#9401)
  * Added generation of autoload rules in `init` command (#9829)
  * Added source/dist validation in `validate` command
  * Added automatic detection of WSL when generating binaries and use `bin-compat:full` implicitly (#9855)
  * Added automatic detection of the --no-dev state for `dump-autoload` based on the last install run (#9714)
  * Added warning/prompt to `require` command if requiring a package that already exists in require-dev or vice versa (#9542)
  * Added information about package conflicts in the `why`/`why-not` commands (#9693)
  * Removed version argument from `why` command as it was not needed (#9729)
  * Fixed `why-not` command to always require a specific version as it is useless without (#9729)
  * Fixed cache dir on macOS to follow OS guidelines, it is now in ~/Library/Caches/composer (#9898)
  * Fixed composer.json JSON schema to avoid having name/description required by default (#9912)
  * Fixed support for running inside WSL paths from a Windows PHP/Composer (#9861)
  * Fixed InstalledVersions to include the original doc blocks when installed from a Composer phar file
  * Fixed `require` command to use `*` as constraint for extensions bundled with PHP instead of duplicating the PHP constraint (#9483)
  * Fixed `search` output to be aligned and avoid wrapped long lines to be more readable (#9455)
  * Error output improvements for many cases (#9876, #9837, #9928, and some smaller improvements)

### [2.0.14] 2021-05-21

  * Updated composer/xdebug-handler to 2.0 which adds supports for Xdebug 3
  * Fixed handling of inline-update-constraints with references or stability flags (#9847)
  * Fixed async processes erroring in an unclear way when they failed to start (#9808)
  * Fixed support for the upcoming Symfony 6.0 release when Composer is installed as a library (#9896)
  * Fixed progress output missing newlines on PowerShell, and disable progress output by default when CI env var is present (#9621)
  * Fixed support for Vagrant/VirtualBox filesystem slowness when installing binaries from packages (#9627)
  * Fixed type annotations for the InstalledVersions class
  * Deprecated InstalledVersions::getRawData in favor of InstalledVersions::getAllRawData (#9816)

### [2.0.13] 2021-04-27

  * Security: Fixed command injection vulnerability in HgDriver/HgDownloader and hardened other VCS drivers and downloaders (GHSA-h5h8-pc6h-jvvx / CVE-2021-29472)
  * Fixed install step at the end of the init command to take new dependencies into account correctly
  * Fixed `update --lock` listing updates which were not really happening (#9812)
  * Fixed support for --no-dev combined with --locked in outdated and show commands (#9788)

### [2.0.12] 2021-04-01

  * Fixed support for new GitHub OAuth token format (#9757)
  * Fixed support for Vagrant/VirtualBox filesystem slowness by adding short sleeps in some places (#9627)
  * Fixed unclear error reporting when a package is in the lock file but not in the remote repositories (#9750)
  * Fixed processes silently ignoring the CWD when it does not exist
  * Fixed new Windows bin handling to avoid proxying phar files (#9742)
  * Fixed issue extracting archives into paths that already exist, fixing problems with some custom installers (composer/installers#479)
  * Fixed support for branch names starting with master/trunk/default (#9739)
  * Fixed self-update to preserve phar file permissions on Windows (#9733)
  * Fixed detection of hg version when localized (#9753)
  * Fixed git execution failures to also include the stdout output (#9720)

### [2.0.11] 2021-02-24

  * Reverted "Fixed runtime autoloader registration (for plugins and script handlers) to prefer the project dependencies over the bundled Composer ones" as it caused more problems than expected

### [2.0.10] 2021-02-23

  * Added COMPOSER_MAX_PARALLEL_HTTP to let people set a lower amount of parallel requests if needed
  * Fixed autoloader registration when plugins are loaded, which may impact plugins relying on this bug (if you use `symfony/flex` make sure you upgrade it to 1.12.2+ to fix `dump-env` issues)
  * Fixed `exec` command suppressing output in some circumstances
  * Fixed Windows/cmd.exe support for script handlers defined as `path/to/foo`, which are now rewritten internally to `path\to\foo` when needed
  * Fixed bin handling on Windows for PHP scripts, to more closely match symlinks and allow `@php vendor/bin/foo` to work cross-platform
  * Fixed Git for Windows/Git Bash not being detected correctly as an interactive shell (regression since 2.0.7)
  * Fixed regression handling some private Bitbucket repository clones
  * Fixed Ctrl-C/SIGINT handling during downloads to correctly abort as soon as possible
  * Fixed runtime autoloader registration (for plugins and script handlers) to prefer the project dependencies over the bundled Composer ones
  * Fixed numeric default branches being aliased as 9999999-dev internally. This alias now only applies to default branches being non-numeric (e.g. `dev-main`)
  * Fixed support for older lib-sodium versions
  * Fixed various minor issues

### [2.0.9] 2021-01-27

  * Added warning if the curl extension is not enabled as it significantly degrades performance
  * Fixed InstalledVersions to report all packages when several vendor dirs are present in the same runtime
  * Fixed download speed when downloading large files
  * Fixed `archive` and path repo copies mishandling some .gitignore paths
  * Fixed root package classes not being available to the plugins/scripts during the initial install
  * Fixed cache writes to be atomic and better support multiple Composer processes running in parallel
  * Fixed preg jit issues when `config` or `require` modifies large composer.json files
  * Fixed compatibility with envs having open_basedir restrictions
  * Fixed exclude-from-classmap causing regex issues when having too many paths
  * Fixed compatibility issue with Symfony 4/5
  * Several small performance and debug output improvements

### [2.0.8] 2020-12-03

  * Fixed packages with aliases not matching conflicts which match the alias
  * Fixed invalid reports of uncommitted changes when using non-default remotes in vendor dir
  * Fixed curl error handling edge cases
  * Fixed cached git repositories becoming stale by having a `git gc` applied to them periodically
  * Fixed issue initializing plugins when using dev packages
  * Fixed update --lock / mirrors failing to update in some edge cases
  * Fixed partial update with --with-dependencies failing in some edge cases with some nonsensical error

### [2.0.7] 2020-11-13

  * Fixed detection of TTY mode, made input non-interactive automatically if STDIN is not a TTY
  * Fixed root aliases not being present in lock file if not required by anything else
  * Fixed `remove` command requiring a lock file to be present
  * Fixed `Composer\InstalledVersions` to always contain up to date data during installation
  * Fixed `status` command breaking on slow networks
  * Fixed order of POST_PACKAGE_* events to occur together once all installations of a package batch are done

### [2.0.6] 2020-11-07

  * Fixed regression in 2.0.5 dealing with custom installers which do not pass absolute paths

### [2.0.5] 2020-11-06

  * Disabled platform-check verification of extensions by default (now defaulting `php-only`), set platform-check to `true` if you want a complete check
  * Improved platform-check handling of issue reporting
  * Fixed platform-check to only check non-dev requires even if require-dev dependencies are installed
  * Fixed issues dealing with custom installers which return trailing slashes in getInstallPath (ideally avoid doing this as there might be other issues left)
  * Fixed issues when curl functions are disabled
  * Fixed gitlab-domains/github-domains to make sure if they are overridden the default value remains present
  * Fixed issues removing/upgrading packages from path repositories on Windows
  * Fixed regression in 2.0.4 when handling of git@bitbucket.org URLs in vcs repositories
  * Fixed issue running create-project in current directory on Windows

### [2.0.4] 2020-10-30

  * Fixed `check-platform-req` command not being clear on what packages are checked, and added a --lock flag to explicitly check the locked packages
  * Fixed `config` & `create-project` adding of repositories to make sure they are prepended as order is much more important in Composer 2, also added a --append flag to `config` to restore the old behavior in the unlikely case this is needed
  * Fixed curl downloader failing on old PHP releases or when using self-signed SSL certificates
  * Fixed Bitbucket API authentication issue

### [2.0.3] 2020-10-28

  * Fixed bug in `outdated` command where dev packages with branch-aliases where always shown as being outdated
  * Fixed issue in lock file interoperability with composer 1.x when using `dev-master as xxx` aliases
  * Fixed new `--locked` option being missing from `outdated` command, for checking outdated packages directly from the lock file
  * Fixed a few debug/error reporting strings

### [2.0.2] 2020-10-25

  * Fixed regression handling `composer show -s` in projects where no version can be guessed from VCS
  * Fixed regression handling partial updates/`require` when a lock file was missing
  * Fixed interop issue with plugins that need to update dist URLs of packages, [see docs](https://getcomposer.org/doc/articles/plugins.md#plugin-modifies-downloads) if you need this

### [2.0.1] 2020-10-24

  * Fixed crash on PHP 8

### [2.0.0] 2020-10-24

  * Fixed proxy handling issues when combined with our new curl-based downloader
  * Fixed solver bug resulting in endless loops in some cases
  * Fixed solver output being extremely long due to learnt rules
  * Fixed solver bug with multi literals
  * Fixed a couple minor regressions

### [2.0.0-RC2] 2020-10-14

  * Breaking: Removed `OperationInterface::getReason` as the data was not accurate
  * Added automatic removal of packages which are not required anymore whenever an update is done, this will purge packages previously left over by partial updates and `require`/`remove`
  * Added shorthand aliases `-w` for `--with-dependencies` and `-W` for `--with-all-dependencies` on `update`/`require`/`remove` commands
  * Added `COMPOSER_DEBUG_EVENTS=1` env var support for plugin authors to figure out which events are triggered when
  * Added `setCustomCacheKey` to `PreFileDownloadEvent` and fixed a cache bug for integrations changing the processed url of package archives
  * Added `Composer\Util\SyncHelper` for plugin authors to deal with async Promises more easily
  * Added `$composer->getLoop()->getHttpDownloader()` to get access to the main HttpDownloader instance in plugins
  * Added a non-zero exit code (2) and warning to `remove` command when a package to be removed could not be removed
  * Added `--apcu-autoloader-prefix` (or `--apcu-prefix` for `dump-autoload` command) flag to let people use apcu autoloading in a deterministic output way if that is needed
  * Fixed version guesser to look at remote branches as well as local ones
  * Lots of minor bug fixes and improvements

### [2.0.0-RC1] 2020-09-10

  * Added more advanced filtering to avoid loading all versions of all referenced packages when resolving dependencies, which should reduce memory usage further in some cases
  * Added support for many new `lib-*` packages in the platform repository and improved version detection for some `ext-*` and `lib-*` packages
  * Added an `--ask` flag to `create-project` command to make Composer prompt for the install dir name, [useful for project install instructions](https://github.com/composer/composer/pull/9181)
  * Added support for tar in artifact repositories
  * Added a `cache-read-only` config option to make the cache usable in read only mode for containers and such
  * Added better error reporting for a few more specific cases
  * Added a new optional `available-package-patterns` attribute for v2-format Composer repositories, see [UPGRADE](UPGRADE-2.0.md) for details
  * Fixed more PHP 8 compatibility issues
  * Lots of minor bug fixes for regressions

### [2.0.0-alpha3] 2020-08-03

  * Breaking: Zip archives loaded by artifact repositories must now have a composer.json on top level, or a max of one folder on top level of the archive
  * Added --no-dev support to `show` and `outdated` commands to skip dev requirements
  * Added support for multiple --repository flags being passed into the `create-project` command, only useful in combination with `--add-repository` to persist them to composer.json
  * Added a new optional `list` API endpoint for v2-format Composer repositories, see [UPGRADE](UPGRADE-2.0.md) for details
  * Fixed `show -a` command not listing anything
  * Fixed solver bug where it ended in a "Reached invalid decision id 0"
  * Fixed updates of git-installed packages on windows
  * Lots of minor bug fixes

### [2.0.0-alpha2] 2020-06-24

  * Added parallel installation of packages (requires OSX/Linux/WSL, and that `unzip` is present in PATH)
  * Added optimization of constraints by compiling them to PHP code, which should reduce CPU time of updates
  * Added handling of Ctrl-C on Windows for PHP 7.4+
  * Added better support for default branch names other than `master`
  * Added --format=summary flag to `license` command
  * Fixed issue in platform check when requiring ext-zend-opcache
  * Fixed inline aliases issues
  * Fixed git integration issue when signatures are set to be shown by default

### [2.0.0-alpha1] 2020-06-03

  * Breaking: This is a major release and while we tried to keep things compatible for most users, you might want to have a look at the [UPGRADE](UPGRADE-2.0.md) guides
  * Many CPU and memory performance improvements
  * The update command is now much more deterministic as it does not take the already installed packages into account
  * Package installation now performs all network operations first before doing any changes on disk, to reduce the chances of ending up with a partially updated vendor dir
  * Partial updates and require/remove are now much faster as they only load the metadata required for the updated packages
  * Added a [platform-check step](doc/07-runtime.md#platform-check) when vendor/autoload.php gets initialized which checks the current PHP version/extensions match what is expected and fails hard otherwise. Can be disabled with the platform-check config option
  * Added a [`Composer\InstalledVersions`](doc/07-runtime.md#installed-versions) class which is autoloaded in every project and lets you check which packages/versions are present at runtime
  * Added a `composer-runtime-api` virtual package which you can require (as e.g. `^2.0`) to ensure things like the InstalledVersions class above are present. It will effectively force people to use Composer 2.x to install your project
  * Added support for parallel downloads of package metadata and zip files, this requires that the curl extension is present and we thus strongly recommend enabling curl
  * Added much clearer dependency resolution error reporting for common error cases
  * Added support for updating to a specific version with partial updates, as well as a [--with flag](doc/03-cli.md#update--u) to pass in temporary constraint overrides
  * Added support for TTY mode on Linux/OSX/WSL so that script handlers now run in interactive mode
  * Added `only`, `exclude` and `canonical` options to all repositories, see [repository priorities](https://getcomposer.org/repoprio) for details
  * Added support for lib-zip platform package
  * Added `pre-operations-exec` event to be fired before the packages get installed/upgraded/removed
  * Added `pre-pool-create` event to be fired before the package pool for the dependency solver is created, which lets you modify the list of packages going in
  * Added `post-file-download` event to be fired after package dist files are downloaded, which lets you do additional checks on the files
  * Added --locked flag to `show` command to see the packages from the composer.lock file
  * Added --unused flag to `remove` command to make sure any packages which are not needed anymore get removed
  * Added --dry-run flag to `require` and `remove` commands
  * Added --no-install flag to `update`, `require` and `remove` commands to disable the install step and only do the update step (composer.lock file update)
  * Added --with-dependencies and --with-all-dependencies flag aliases to `require` and `remove` commands for consistency with `update`
  * Added more info to `vendor/composer/installed.json`, a dev key stores whether dev requirements were installed, and every package now has an install-path key with its install location
  * Added COMPOSER_DISABLE_NETWORK which if set makes Composer do its best to run offline. This can be useful when you have poor connectivity or to do benchmarking without network jitter
  * Added --json and --merge flags to `config` command to allow editing complex `extra.*` values by using json as input
  * Added confirmation prompt when running Composer as superuser in interactive mode
  * Added --no-check-version to `validate` command to remove the warning in case the version is defined
  * Added --ignore-platform-req (without s) to all commands supporting --ignore-platform-reqs, which accepts a package name so you can ignore only specific platform requirements
  * Added support for wildcards (`*`) in classmap autoloader paths
  * Added support for configuring GitLab deploy tokens in addition to private tokens, see [gitlab-token](doc/06-config.md#gitlab-token)
  * Added support for package version guessing for require and init command to take all platform packages into account, not just php version
  * Fixed package ordering when autoloading and especially when loading plugins, to make sure dependencies are loaded before their dependents
  * Fixed suggest output being very spammy, it now is only one line long and shows more rarely
  * Fixed conflict rules like e.g. >=5 from matching dev-master, as it is not normalized to 9999999-dev internally anymore

### [1.10.23] 2021-10-05

  * Security: Fixed command injection vulnerability on Windows (GHSA-frqg-7g38-6gcf / CVE-2021-41116)

### [1.10.22] 2021-04-27

  * Security: Fixed command injection vulnerability in HgDriver/HgDownloader and hardened other VCS drivers and downloaders (GHSA-h5h8-pc6h-jvvx / CVE-2021-29472)

### [1.10.21] 2021-04-01

  * Fixed support for new GitHub OAuth token format
  * Fixed processes silently ignoring the CWD when it does not exist

### [1.10.20] 2021-01-27

  * Fixed exclude-from-classmap causing regex issues when having too many paths
  * Fixed compatibility issue with Symfony 4/5

### [1.10.19] 2020-12-04

  * Fixed regression on PHP 8.0

### [1.10.18] 2020-12-03

  * Allow installation on PHP 8.0

### [1.10.17] 2020-10-30

  * Fixed Bitbucket API authentication issue
  * Fixed parsing of Composer 2 lock files breaking in some rare conditions

### [1.10.16] 2020-10-24

  * Added warning to `validate` command for cases where packages provide/replace a package that they also require
  * Fixed JSON schema validation issue with PHPStorm
  * Fixed symlink handling in `archive` command

### [1.10.15] 2020-10-13

  * Fixed path repo version guessing issue

### [1.10.14] 2020-10-13

  * Fixed version guesser to look at remote branches as well as local ones
  * Fixed path repositories version guessing to handle edge cases where version is different from the VCS-guessed version
  * Fixed COMPOSER env var causing issues when combined with the `global ` command
  * Fixed a few issues dealing with PHP without openssl extension (not recommended at all but sometimes needed for testing)

### [1.10.13] 2020-09-09

  * Fixed regressions with old version validation
  * Fixed invalid root aliases not being reported

### [1.10.12] 2020-09-08

  * Fixed regressions with old version validation

### [1.10.11] 2020-09-08

  * Fixed more PHP 8 compatibility issues
  * Fixed regression in handling of CTRL-C when xdebug is loaded
  * Fixed `status` handling of broken symlinks

### [1.10.10] 2020-08-03

  * Fixed `create-project` not triggering events while installing the root package
  * Fixed PHP 8 compatibility issue
  * Fixed `self-update` to avoid automatically upgrading to the next major version once it becomes stable

### [1.10.9] 2020-07-16

  * Fixed Bitbucket redirect loop when credentials are outdated
  * Fixed GitLab auth prompt wording
  * Fixed `self-update` handling of files requiring admin permissions to write to on Windows (it now does a UAC prompt)
  * Fixed parsing issues in funding.yml files

### [1.10.8] 2020-06-24

  * Fixed compatibility issue with git being configured to show signatures by default
  * Fixed discarding of local changes when updating packages to include untracked files
  * Several minor fixes

### [1.10.7] 2020-06-03

  * Fixed PHP 8 deprecations
  * Fixed detection of pcntl_signal being in disabled_functions when pcntl_async_signal is allowed

### [1.10.6] 2020-05-06

  * Fixed version guessing to take composer-runtime-api and composer-plugin-api requirements into account to avoid selecting packages which require Composer 2
  * Fixed package name validation to allow several dashes following each other
  * Fixed post-status-cmd script not firing when there were no changes to be displayed
  * Fixed composer-runtime-api support on Composer 1.x, the package is now present as 1.0.0
  * Fixed support for composer show --name-only --self
  * Fixed detection of GitLab URLs when handling authentication in some cases

### [1.10.5] 2020-04-10

  * Fixed self-update on PHP <5.6, seriously please upgrade people, it's time
  * Fixed 1.10.2 regression with PATH resolution in scripts

### [1.10.4] 2020-04-09

  * Fixed 1.10.2 regression in path symlinking with absolute path repos

### [1.10.3] 2020-04-09

  * Fixed invalid --2 flag warning in `self-update` when no channel is requested

### [1.10.2] 2020-04-09

  * Added --1 flag to `self-update` command which can be added to automated self-update runs to make sure it won't automatically jump to 2.0 once that is released
  * Fixed path repository symlinks being made relative when the repo url is defined as absolute paths
  * Fixed potential issues when using "composer ..." in scripts and composer/composer was also required in the project
  * Fixed 1.10.0 regression when downloading GitHub archives from non-API URLs
  * Fixed handling of malformed info in fund command
  * Fixed Symfony5 compatibility issues in a few commands

### [1.10.1] 2020-03-13

  * Fixed path repository warning on empty path when using wildcards
  * Fixed superfluous warnings when generating optimized autoloaders

### [1.10.0] 2020-03-10

  * Added `bearer` auth config to authenticate using `Authorization: Bearer <token>` headers
  * Added `plugin-api-version` in composer.lock so third-party tools can know which Composer version was used to generate a lock file
  * Fixed composer fund command and funding info parsing to be more useful
  * Fixed issue where --no-dev autoload generation was excluding some packages which should not have been excluded
  * Fixed 1.10-RC regression in create project's handling of absolute paths

### [1.10.0-RC] 2020-02-14

  * Breaking: `composer global exec ...` now executes the process in the current working directory instead of executing it in the global directory.
  * Warning: Added a warning when class names are being loaded by a PSR-4 or PSR-0 rule only due to classmap optimization, but would not otherwise be autoloadable. Composer 2.0 will stop autoloading these classes so make sure you fix your autoload configs.
  * Added new funding key to composer.json to describe ways your package's maintenance can be funded. This reads info from GitHub's FUNDING.yml by default so better configure it there so it shows on GitHub and Composer/Packagist
  * Added `composer fund` command to show funding info of your dependencies
  * Added support for --format=json output for show command when showing a single package
  * Added support for configuring suggestions using config command, e.g. `composer config suggest.foo/bar some text`
  * Added support for configuring fine-grained preferred-install using config command, e.g. `composer config preferred-install.foo/* dist`
  * Added `@putenv` script handler to set environment variables from composer.json for following scripts
  * Added `lock` option that can be set to false, in which case no composer.lock file will be generated
  * Added --add-repository flag to create-project command which will persist the repo given in --repository into the composer.json of the package being installed
  * Added support for IPv6 addresses in NO_PROXY
  * Added package homepage display in the show command
  * Added debug info about HTTP authentications
  * Added Symfony 5 compatibility
  * Added --fixed flag to require command to make it use a fixed constraint instead of a ^x.y constraint when adding the requirement
  * Fixed exclude-from-classmap matching subsets of directories e.g. foo/ was excluding foobar/
  * Fixed archive command to persist file permissions inside the zip files
  * Fixed init/require command to avoid suggesting packages which are already selected in the search results
  * Fixed create-project UX issues
  * Fixed filemtime for `vendor/composer/*` files is now only changing when the files actually change
  * Fixed issues detecting docker environment with an active open_basedir

### [1.9.3] 2020-02-04

  * Fixed GitHub deprecation of access_token query parameter, now using Authorization header

### [1.9.2] 2020-01-14

  * Fixed minor git driver bugs
  * Fixed schema validation for version field to allow `dev-*` versions too
  * Fixed external processes' output being formatted even though it should not
  * Fixed issue with path repositories when trying to install feature branches

### [1.9.1] 2019-11-01

  * Fixed various credential handling issues with gitlab and github
  * Fixed credentials being present in git remotes in Composer cache and vendor directory when not using SSH keys
  * Fixed `composer why` not listing replacers as a reason something is present
  * Fixed various PHP 7.4 compatibility issues
  * Fixed root warnings always present in Docker containers, setting COMPOSER_ALLOW_SUPERUSER is not necessary anymore
  * Fixed GitHub access tokens leaking into debug-verbosity output
  * Fixed several edge case issues detecting GitHub, Bitbucket and GitLab repository types
  * Fixed Composer asking if you want to use a composer.json in a parent directory when ran in non-interactive mode
  * Fixed classmap autoloading issue finding classes located within a few non-PHP context blocks (?>...<?php)

### [1.9.0] 2019-08-02

  * Breaking: artifact repositories with URLs containing port numbers and requiring authentication now require you to configure http-basic auth for the `host:port` pair explicitly
  * Added a `--no-cache` flag available on all commands to run with the cache disabled
  * Added PHP_BINARY as env var pointing to the PHP process when executing Composer scripts as shell scripts
  * Added a `use-github-api` config option which can set the `no-api` flag on all GitHub VCS repositories declared
  * Added a static helper you can prepend to a script to avoid process timeouts, `"Composer\\Config::disableProcessTimeout"`
  * Added Event::getOriginatingEvent to retrieve an event's original event when a script handler forwards to another one
  * Added support for autoloading directly from a phar file
  * Fixed loading order of plugins to always initialize them in order of dependencies
  * Fixed various network-mount related issues
  * Fixed --ignore-platform-reqs not ignoring conflict rules against platform packages

### [1.8.6] 2019-06-11

  * Fixed handling of backslash-escapes handling in composer.json when using the require command
  * Fixed create-project not following classmap-authoritative and apcu-autoloader config values
  * Fixed HHVM version warning showing up in some cases when it was not in use

### [1.8.5] 2019-04-09

  * HHVM 4.0 is no longer compatible with Composer. Please use PHP instead going forward.
  * Added forward compatibility with upcoming 2.0 changes
  * Fixed support for PHP 7.3-style heredoc/nowdoc syntax changes in autoload generation
  * Fixed require command usage when combined with --ignore-platform-reqs
  * Fixed and cleaned up various Windows junctions handling issues

### [1.8.4] 2019-02-11

  * Fixed long standing solver bug leading to odd solving issues in edge cases, see #7946
  * Fixed HHVM support for upcoming releases
  * Fixed unix proxy for binaries to be POSIX compatible instead of breaking some shells
  * Fixed invalid deprecation warning for composer-plugin-api
  * Fixed edge case issues with Windows junctions when working with path repositories

### [1.8.3] 2019-01-30

  * Fixed regression when executing partial updates

### [1.8.2] 2019-01-29

  * Fixed invalid deprecation warning for ext-pdo_mysql and similar
  * Updated to latest xdebug-handler

### [1.8.1] 2019-01-29

  * Deprecated support for non-standard package names (anything with uppercase, or no / in it). Make sure to follow the warnings if you see any to avoid problems in 2.0.
  * Fixed some packages missing from the autoloader config when installing with --no-dev
  * Fixed support for cloning GitLab repos using OAuth tokens instead of SSH keys
  * Fixed metapackage installs/updates missing from output
  * Fixed --with-dependencies / --with-all-dependencies not updating some packages in some edge cases
  * Fixed compatibility with Symfony 4.2 deprecations
  * Fixed temp dir not being cleaned up on download error while archiving packages
  * Updated to latest ca-bundle

### [1.8.0] 2018-12-03

  * Changed `post-package-install` / `post-package-update` event to be fired *after* the lock file has been updated as opposed to before
  * Added support for removing packages using a wildcard with the `remove` command, e.g. `composer remove foo/*`
  * Added `chat` to the list of `support` channels you can list in composer.json
  * Added signal handling on require command to restore the composer.json in case of abort
  * Added `--ignore` to `outdated` command to pass one or more packages that you do not want to be listed
  * Added `--no-dev` to `check-platform-reqs` command to skip dev requirements even if they are installed
  * Added support for running plugin commands from sub-directories within a project much like other Composer commands
  * Added support for running Composer via phpdbg
  * Added `lib-imagick` platform package
  * Fixed validate command always checking for disabled checks when used with `--strict`

### [1.7.3] 2018-11-01

  * Fixed handling of replace/conflict rules. This may affect dependency resolution in some edge cases.
  * Fixed Bitbucket API support and migrated all calls to API v2 as v1 is deprecated
  * Fixed support for lib-openssl 1.1.1 having only lowercase algorithm names
  * Fixed escaping of URLs in Perforce and Svn drivers
  * Fixed `show` command not respecting `--path` when a single package name was given
  * Fixed regression in 1.7.2's handling of metapackages

### [1.7.2] 2018-08-16

  * Fixed reporting of authentication/rate limiting issues for GitHub API access
  * Fixed `create-project` not checking the checking the latest commit out when a cache was already present
  * Fixed reporting of errors when `global` command can not switch the working directory
  * Fixed PHP 5.3 JSON encoding issues with complex unicode character sequences
  * Updated to latest ca-bundle and xdebug-handler projects, see related changelogs

### [1.7.1] 2018-08-07

  * Fixed issue autoloading plugins in require-dev in some conditions
  * Fixed handling of SSL to repo.packagist.org on very old PHP versions

### [1.7.0] 2018-08-03

  * Added the overridden platform config's PHP version in the `diagnose` command output
  * Fixed --no-plugins not being respected in a few commands
  * Fixed 1.7.0-RC regression in output showing <warn> instead of proper colors
  * Fixed 1.7.0-RC regression in output missing "Loading from cache" output on package install

### [1.7.0-RC] 2018-07-24

  * Changed default repository URL from packagist.org to repo.packagist.org, this might affect people with strict firewall rules
  * Changed output from Updating to Downgrading when performing package downgrades, this might affect anything parsing output
  * Several minor performance improvements
  * Added basic authentication support for mercurial repos
  * Added explicit `i` and `u` aliases for the `install` and `update` commands
  * Added support for `show` command to output json format with --tree
  * Added support for {glob,braces} support in the path repository's path argument
  * Added support in `status` command for showing diffs in vendor dir even for packages installed as dist/zip archives
  * Added `--remove-vcs` flag to `create-project` command to avoid prompting for keeping VCS files
  * Added `--no-secure-http` flag to `create-project` command to bypass https (use at your own risk)
  * Added `pre-command-run` event that lets plugins modify arguments
  * Added RemoteFilesystem::getRemoteContents extension point
  * Fixed setting scripts via `config` command

### [1.6.5] 2018-05-04

  * Fixed regression in 1.6.4 causing strange update behaviors with dev packages
  * Fixed regression in 1.6.4 color support detection for Windows
  * Fixed issues dealing with broken symlinks when switching branches and using path repositories
  * Fixed JSON schema for package repositories
  * Fixed issues on computers set to Turkish locale
  * Fixed classmap parsing of files using short-open-tags when they are disabled in php

### [1.6.4] 2018-04-13

  * Security fixes in some edge case scenarios, recommended update for all users
  * Fixed regression in version guessing of path repositories
  * Fixed removing aliased packages from the repository, which might resolve some odd update bugs
  * Fixed updating of package URLs for GitLab
  * Fixed run-script --list failing when script handlers were defined
  * Fixed init command not respecting the current php version when selecting package versions
  * Fixed handling of uppercase package names in why/why-not commands
  * Fixed exclude-from-classmap symlink handling
  * Fixed filesystem permissions of PEAR binaries
  * Improved performance of subversion repos
  * Other minor fixes

### [1.6.3] 2018-01-31

  * Fixed GitLab downloads failing in some edge cases
  * Fixed ctrl-C handling during create-project
  * Fixed GitHub VCS repositories not prompting for a token in some conditions
  * Fixed SPDX license identifiers being case sensitive
  * Fixed and clarified a few dependency resolution error reporting strings
  * Fixed SVN commit log fetching in verbose mode when using private repositories

### [1.6.2] 2018-01-05

  * Fixed more autoloader regressions
  * Fixed support for updating dist refs in gitlab URLs

### [1.6.1] 2018-01-04

  * Fixed upgrade regression due to some autoloader cleanups
  * Fixed some overly loose version constraints

### [1.6.0] 2018-01-04

  * Added support for SPDX license identifiers v3.0, deprecates GPL/LGPL/AGPL identifiers, which should now have a `-only` or `-or-later` suffix added.
  * Added support for COMPOSER_MEMORY_LIMIT env var to make Composer set the PHP memory limit explicitly
  * Added support for simple strings for the `bin`
  * Fixed `check-platform-reqs` bug in version checking

### [1.6.0-RC] 2017-12-19

  * Improved performance of installs and updates from git clones when checking out known commits
  * Added `check-platform-reqs` command that checks that your PHP and extensions versions match the platform requirements of the installed packages
  * Added `--with-all-dependencies` to the `update` and `require` commands which updates all dependencies of the listed packages, including those that are direct root requirements
  * Added `scripts-descriptions` key to composer.json to customize the description and document your custom commands
  * Added support for the uppercase NO_PROXY env var
  * Added support for COMPOSER_DEFAULT_{AUTHOR,LICENSE,EMAIL,VENDOR} env vars to pre-populate init command values
  * Added support for local fossil repositories
  * Added suggestions for alternative spellings when entering packages in `init` and `require` commands and nothing can be found
  * Fixed installed.json data to be sorted alphabetically by package name
  * Fixed compatibility with Symfony 4.x components that Composer uses

### [1.5.6] - 2017-12-18

  * Fixed root package version guessed when a tag is checked out
  * Fixed support for GitLab repos hosted on non-standard ports
  * Fixed regression in require command when requiring unstable packages, part 3

### [1.5.5] - 2017-12-01

  * Fixed regression in require command when requiring unstable packages, part 2

### [1.5.4] - 2017-12-01

  * Fixed regression in require command when requiring unstable packages

### [1.5.3] - 2017-11-30

  * Fixed require/remove commands reverting the composer.json change when a non-solver-related error occurs
  * Fixed GitLabDriver to support installations of GitLab not at the root of the domain
  * Fixed create-project not following the optimize-autoloader flag of the root package
  * Fixed Authorization header being forwarded across domains after a redirect
  * Improved some error messages for clarity

### [1.5.2] - 2017-09-11

  * Fixed GitLabDriver looping endlessly in some conditions
  * Fixed GitLabDriver support for unauthenticated requests
  * Fixed GitLab zip downloads not triggering credentials prompt if unauthenticated
  * Fixed path repository support of COMPOSER_ROOT_VERSION, it now applies to all path repos within the same git repository
  * Fixed path repository handling of copies to avoid copying VCS files and others
  * Fixed sub-directory call to ignore list and create-project commands as well as calls to Composer using --working-dir
  * Fixed invalid warning appearing when calling `remove` on an non-stable package

### [1.5.1] - 2017-08-09

  * Fixed regression in GitLabDriver with repos containing >100 branches or tags
  * Fixed sub-directory call support to respect the COMPOSER env var

### [1.5.0] - 2017-08-08

  * Changed the package install order to ensure that plugins are always installed as soon as possible
  * Added ability to call composer from within sub-directories of a project
  * Added support for GitLab API v4
  * Added support for GitLab sub-groups
  * Added some more rules to composer validate
  * Added support for reading the `USER` env when guessing the username in `composer init`
  * Added warning when uncompressing files with the same name but difference cases on case insensitive filesystems
  * Added `htaccess-protect` option / `COMPOSER_HTACCESS_PROTECT` env var to disable the .htaccess creation in home dir (defaults to true)
  * Improved `clear-cache` command
  * Minor improvements/fixes and many documentation updates

### [1.4.3] - 2017-08-06

  * Fixed GitLab URLs
  * Fixed root package version detection using latest git versions
  * Fixed inconsistencies in date format in composer.lock when installing from source
  * Fixed Mercurial support regression
  * Fixed exclude-from-classmap not being applied when autoloading files for Composer plugins
  * Fixed exclude-from-classmap being ignored when cwd has the wrong case on case insensitive filesystems
  * Fixed several other minor issues

### [1.4.2] - 2017-05-17

  * Fixed Bitbucket API handler parsing old deleted branches in hg repos
  * Fixed regression in gitlab downloads
  * Fixed output inconsistencies
  * Fixed unicode handling in `init` command for author names
  * Fixed useless warning when doing partial updates/removes on packages that are not currently installed
  * Fixed Xdebug disabling issue when combined with disable_functions and allow_url_fopen CLI overrides

### [1.4.1] - 2017-03-10

  * Fixed `apcu-autoloader` config option being ignored in `dump-autoload` command
  * Fixed json validation not allowing boolean for trunk-path, branches-path and tags-path in svn repos
  * Fixed json validation not allowing repository URLs without scheme

### [1.4.0] - 2017-03-08

  * Improved memory usage of dependency solver
  * Added `--format json` option to the `outdated` and `show` command to get machine readable package listings
  * Added `--ignore-filters` flag to `archive` command to bypass the .gitignore and co
  * Added support for `outdated` output without ansi colors
  * Added support for Bitbucket API v2
  * Changed the require command to follow minimum-stability / prefer-stable values when picking a version
  * Fixed regression when using composer in a Mercurial repository

### [1.3.3] - 2017-03-08

  * **Capifony users beware**: This release has output format tweaks that mess up capifony interactive mode, see #6233
  * Improved baseline psr-4 autoloader performance for projects with many nested namespaces configured
  * Fixed issues with gitlab API access when the token had insufficient permissions
  * Fixed some HHVM strict type issues
  * Fixed version guessing of headless git checkouts in some conditions
  * Fixed compatibility with subversion 1.8
  * Fixed version guessing not working with svn/hg
  * Fixed script/exec errors not being output correctly
  * Fixed PEAR repository bug with pear.php.net

### [1.3.2] - 2017-01-27

  * Added `COMPOSER_BINARY` env var that is defined within the scope of a Composer run automatically with the path to the phar file
  * Fixed create-project ending in a detached HEAD when installing aliased packages
  * Fixed composer show not returning non-zero exit code when the package does not exist
  * Fixed `@composer` handling in scripts when --working-dir is used together with it
  * Fixed private-GitLab handling of repos with dashes in them

### [1.3.1] - 2017-01-07

  * Fixed dist downloads from Bitbucket
  * Fixed some regressions related to xdebug disabling
  * Fixed `--minor-only` flag in `outdated` command
  * Fixed handling of config.platform.php which did not replace other `php-*` package's versions

### [1.3.0] - 2016-12-24

  * Fixed handling of annotated git tags vs lightweight tags leading to useless updates sometimes
  * Fixed ext-xdebug not being require-able anymore due to automatic xdebug disabling
  * Fixed case insensitivity of remove command

### [1.3.0-RC] - 2016-12-11

  * Added workaround for xdebug performance impact by restarting PHP without xdebug automatically in case it is enabled
  * Added `--minor-only` to the `outdated` command to only show updates to minor versions and ignore new major versions
  * Added `--apcu-autoloader` to the `update`/`install` commands and `--apcu` to `dump-autoload` to enable an APCu-caching autoloader, which can be more efficient than --classmap-authoritative if you attempt to autoload many classes that do not exist, or if you can not use authoritative classmaps for some reason
  * Added summary of operations to be executed before they run, and made execution output more compact
  * Added `php-debug` and `php-zts` virtual platform packages
  * Added `gitlab-token` auth config for GitLab private tokens
  * Added `--strict` to the `outdated` command to return a non-zero exit code when there are outdated packages
  * Added ability to call php scripts using the current php interpreter (instead of finding php in PATH by default) in script handlers via `@php ...`
  * Added `COMPOSER_ALLOW_XDEBUG` env var to circumvent the Xdebug-disabling behavior
  * Added `COMPOSER_MIRROR_PATH_REPOS` env var to force mirroring of path repositories vs symlinking
  * Added `COMPOSER_DEV_MODE` env var that is set by Composer to forward the dev mode to script handlers
  * Fixed support for git 2.11
  * Fixed output from zip and rar leaking out when an error occurred
  * Removed `hash` from composer.lock, only `content-hash` is now used which should reduce conflicts
  * Minor fixes and performance improvements

### [1.2.4] - 2016-12-06

  * Fixed regression in output handling of scripts from 1.2.3
  * Fixed support for LibreSSL detection as lib-openssl
  * Fixed issue with Zend Guard in the autoloader bootstrapping
  * Fixed support for loading partial provider repositories

### [1.2.3] - 2016-12-01

  * Fixed bug in HgDriver failing to identify BitBucket repositories
  * Fixed support for loading partial provider repositories

### [1.2.2] - 2016-11-03

  * Fixed selection of packages based on stability to be independent from package repository order
  * Fixed POST_DEPENDENCIES_SOLVING not containing some operations in edge cases
  * Fixed issue handling GitLab URLs containing dots and other special characters
  * Fixed issue on Windows when running composer at the root of a drive
  * Minor fixes

### [1.2.1] - 2016-09-12

  * Fixed edge case issues with the static autoloader
  * Minor fixes

### [1.2.0] - 2016-07-19

  * Security: Fixed [httpoxy](https://httpoxy.org/) vulnerability
  * Fixed `home` command to avoid rogue output on unix
  * Fixed output of git clones to clearly state when clones are from cache
  * (from 1.2 RC) Fixed ext-network-ipv6 to be php-ipv6

### [1.2.0-RC] - 2016-07-04

  * Added caching of git repositories if you have git 2.3+ installed. Repositories will now be cached once and then cloned from local cache so subsequent installs should be faster
  * Added detection of HEAD changes to the `status` command. If you `git checkout X` in a vendor directory for example it will tell you that it is not at the version that was installed
  * Added a virtual `php-ipv6` extension to require PHP compiled with IPv6 support
  * Added `--no-suggest` to `install` and `update` commands to skip output of suggestions at the end
  * Added `--type` to the `search` command to restrict to a given package type
  * Added fossil support as alternative to git/svn/.. for package downloads
  * Improved BitBucket OAuth support
  * Added support for blocking cache operations using COMPOSER_CACHE_DIR=/dev/null (or NUL on windows)
  * Added support for using declare(strict_types=1) in plugins
  * Added `--prefer-stable` and `--prefer-lowest` to the `require` command
  * Added `--no-scripts` to the `require` and `remove` commands
  * Added `_comment` top level key to the schema to endorse using it as a place to store comments (it can be a string or array of strings)
  * Added support for justinrainbow/json-schema 2.0
  * Fixed binaries not being re-installed if deleted by users or the bin-dir changes. `update` and `install` will now re-install them
  * Many minor UX and docs improvements

### [1.1.3] - 2016-06-26

  * Fixed bitbucket oauth instructions
  * Fixed version parsing issue
  * Fixed handling of bad proxies that modify JSON content on the fly

### [1.1.2] - 2016-05-31

  * Fixed degraded mode issue when accessing packagist.org
  * Fixed GitHub access_token being added on subsequent requests in case of redirections
  * Fixed exclude-from-classmap not working in some circumstances
  * Fixed openssl warning preventing the use of config command for disabling tls

### [1.1.1] - 2016-05-17

  * Fixed regression in handling of #reference which made it update every time
  * Fixed dev platform requirements being required even in --no-dev install from a lock file
  * Fixed parsing of extension versions that do not follow valid numbers, we now try to parse x.y.z and ignore the rest
  * Fixed exact constraints warnings appearing for 0.x versions
  * Fixed regression in the `remove` command

### [1.1.0] - 2016-05-10

  * Added fallback to SSH for https bitbucket URLs
  * Added BaseCommand::isProxyCommand that can be overridden to mark a command as being a mere proxy, which helps avoid duplicate warnings etc on composer startup
  * Fixed archiving generating long paths in zip files on Windows

### [1.1.0-RC] - 2016-04-29

  * Added ability for plugins to register their own composer commands
  * Optimized the autoloader initialization using static loading on PHP 5.6 and above, this reduces the load time for large classmaps to almost nothing
  * Added `--latest` to `show` command to show the latest version available of your dependencies
  * Added `--outdated` to `show` command an `composer outdated` alias for it, to show only packages in need of update
  * Added `--direct` to `show` and `outdated` commands to show only your direct dependencies in the listing
  * Added support for editing all top-level properties (name, minimum-stability, ...) as well as extra values via the `config` command
  * Added abandoned state warning to the `show` and `outdated` commands when listing latest packages
  * Added support for `~/` and `$HOME/` in the path repository paths
  * Added support for wildcards in the `show` command package filter, e.g. `composer show seld/*`
  * Added ability to call composer itself from scripts via `@composer ...`
  * Added untracked files detection to the `status` command
  * Added warning to `validate` command when using exact-version requires
  * Added warning once per domain when accessing insecure URLs with secure-http disabled
  * Added a dependency on composer/ca-bundle (extracted CA bundle management to a standalone lib)
  * Added support for empty directories when archiving to tar
  * Added an `init` event for plugins to react to, which occurs right after a Composer instance is fully initialized
  * Added many new detections of problems in the `why-not`/`prohibits` command to figure out why something does not get installed in the expected version
  * Added a deprecation notice for script event listeners that use legacy script classes
  * Fixed abandoned state not showing up if you had a package installed before it was marked abandoned
  * Fixed --no-dev updates creating an incomplete lock file, everything is now always resolved on update
  * Fixed partial updates in case the vendor dir was not up to date with the lock file

### [1.0.3] - 2016-04-29

  * Security: Fixed possible command injection from the env vars into our sudo detection
  * Fixed interactive authentication with gitlab
  * Fixed class name replacement in plugins
  * Fixed classmap generation mistakenly detecting anonymous classes
  * Fixed auto-detection of stability flags in complex constraints like `2.0-dev || ^1.5`
  * Fixed content-length handling when redirecting to very small responses

### [1.0.2] - 2016-04-21

  * Fixed regression in 1.0.1 on systems with mbstring.func_overload enabled
  * Fixed regression in 1.0.1 that made dev packages update to the latest reference even if not whitelisted in a partial update
  * Fixed init command ignoring the COMPOSER env var for choosing the json file name
  * Fixed error reporting bug when the dependency resolution fails
  * Fixed handling of `$` sign in composer config command in some cases it could corrupt the json file

### [1.0.1] - 2016-04-18

  * Fixed URL updating when a package's URL changes, composer.lock now contains the right URL including correct reference
  * Fixed URL updating of the origin git remote as well for packages installed as git clone
  * Fixed binary .bat files generated from linux being incompatible with windows cmd
  * Fixed handling of paths with trailing slashes in path repository
  * Fixed create-project not using platform config when selecting a package
  * Fixed self-update not showing the channel it uses to perform the update
  * Fixed file downloads not failing loudly when the content does not match the Content-Length header
  * Fixed secure-http detecting some malformed URLs as insecure
  * Updated CA bundle

### [1.0.0] - 2016-04-05

  * Added support for bitbucket-oauth configuration
  * Added warning when running composer as super user, set COMPOSER_ALLOW_SUPERUSER=1 to hide the warning if you really must
  * Added PluginManager::getGlobalComposer getter to retrieve the global instance (which can be null!)
  * Fixed dependency solver error reporting in many cases it now shows you proper errors instead of just saying a package does not exist
  * Fixed output of failed downloads appearing as 100% done instead of Failed
  * Fixed handling of empty directories when archiving, they are not skipped anymore
  * Fixed installation of broken plugins corrupting the vendor state when combined with symlinked path repositories

### [1.0.0-beta2] - 2016-03-27

  * Break: The `install` command now turns into an `update` command automatically if you have no composer.lock. This was done only half-way before which caused inconsistencies
  * Break: By default the `remove` command now removes dependencies as well, and --update-with-dependencies is deprecated. Use --no-update-with-dependencies to get old behavior
  * Added support for update channels in `self-update`. All users will now update to stable builds by default. Run `self-update` with `--snapshot`, `--preview` or `--stable` to switch between update channels.
  * Added support for SSL_CERT_DIR env var and openssl.capath ini value
  * Added some conflict detection in `why-not` command
  * Added suggestion of root package's suggests in `create-project` command
  * Fixed `create-project` ignoring --ignore-platform-reqs when choosing a version of the package
  * Fixed `search` command in a directory without composer.json
  * Fixed path repository handling of symlinks on windows
  * Fixed PEAR repo handling to prefer HTTPS mirrors over HTTP ones
  * Fixed handling of Path env var on Windows, only PATH was accepted before
  * Small error reporting and docs improvements

### [1.0.0-beta1] - 2016-03-03

  * Break: By default we now disable any non-secure protocols (http, git, svn). This may lead to issues if you rely on those. See `secure-http` config option.
  * Break: `show` / `list` command now only show installed packages by default. An `--all` option is added to show all packages.
  * Added VCS repo support for the GitLab API, see also `gitlab-oauth` and `gitlab-domains` config options
  * Added `prohibits` / `why-not` command to show what blocks an upgrade to a given package:version pair
  * Added --tree / -t to the `show` command to see all your installed packages in a tree view
  * Added --interactive / -i to the `update` command, which lets you pick packages to update interactively
  * Added `exec` command to run binaries while having bin-dir in the PATH for convenience
  * Added --root-reqs to the `update` command to update only your direct, first degree dependencies
  * Added `cafile` and `capath` config options to control HTTPS certificate authority
  * Added pubkey verification of composer.phar when running self-update
  * Added possibility to configure per-package `preferred-install` types for more flexibility between prefer-source and prefer-dist
  * Added unpushed-changes detection when updating dependencies and in the `status` command
  * Added COMPOSER_AUTH env var that lets you pass a json configuration like the auth.json file
  * Added `secure-http` and `disable-tls` config options to control HTTPS/HTTP
  * Added warning when Xdebug is enabled as it reduces performance quite a bit, hide it with COMPOSER_DISABLE_XDEBUG_WARN=1 if you must
  * Added duplicate key detection when loading composer.json
  * Added `sort-packages` config option to force sorting of the requirements when using the `require` command
  * Added support for the XDG Base Directory spec on linux
  * Added XzDownloader for xz file support
  * Fixed SSL support to fully verify peers in all PHP versions, unsecure HTTP is also disabled by default
  * Fixed stashing and cleaning up of untracked files when updating packages
  * Fixed plugins being enabled after installation even when --no-plugins
  * Many small bug fixes and additions

### [1.0.0-alpha11] - 2015-11-14

  * Added config.platform to let you specify what your target environment looks like and make sure you do not inadvertently install dependencies that would break it
  * Added `exclude-from-classmap` in the autoload config that lets you ignore sub-paths of classmapped directories, or psr-0/4 directories when building optimized autoloaders
  * Added `path` repository type to install/symlink packages from local paths
  * Added possibility to reference script handlers from within other handlers using @script-name to reduce duplication
  * Added `suggests` command to show what packages are suggested, use -v to see more details
  * Added `content-hash` inside the composer.lock to restrict the warnings about outdated lock file to some specific changes in the composer.json file
  * Added `archive-format` and `archive-dir` config options to specify default values for the archive command
  * Added --classmap-authoritative to `install`, `update`, `require`, `remove` and `dump-autoload` commands, forcing the optimized classmap to be authoritative
  * Added -A / --with-dependencies to the `validate` command to allow validating all your dependencies recursively
  * Added --strict to the `validate` command to treat any warning as an error that then returns a non-zero exit code
  * Added a dependency on composer/semver, which is the externalized lib for all the version constraints parsing and handling
  * Added support for classmap autoloading to load plugin classes and script handlers
  * Added `bin-compat` config option that if set to `full` will create .bat proxy for binaries even if Composer runs in a linux VM
  * Added SPDX 2.0 support, and externalized that in a composer/spdx-licenses lib
  * Added warnings when the classmap autoloader finds duplicate classes
  * Added --file to the `archive` command to choose the filename
  * Added Ctrl+C handling in create-project to cancel the operation cleanly
  * Fixed version guessing to use ^ always, default to stable versions, and avoid versions that require a higher php version than you have
  * Fixed the lock file switching back and forth between old and new URL when a package URL is changed and many people run updates
  * Fixed partial updates updating things they shouldn't when the current vendor dir was out of date with the lock file
  * Fixed PHAR file creation to be more reproducible and always generate the exact same phar file from a given source
  * Fixed issue when checking out git branches or tags that are also the name of a file in the repo
  * Many minor fixes and documentation additions and UX improvements

### [1.0.0-alpha10] - 2015-04-14

  * Break: The following event classes are deprecated and you should update your script handlers to use the new ones in type hints:
    - `Composer\Script\CommandEvent` is deprecated, use `Composer\Script\Event`
    - `Composer\Script\PackageEvent` is deprecated, use `Composer\Installer\PackageEvent`
  * Break: Output is now split between stdout and stderr. Any irrelevant output to each command is on stderr as per unix best practices.
  * Added support for npm-style semver operators (`^` and `-` ranges, ` ` = AND, `||` = OR)
  * Added --prefer-lowest to `update` command to allow testing a package with the lowest declared dependencies
  * Added support for parsing semver build metadata `+anything` at the end of versions
  * Added --sort-packages option to `require` command for sorting dependencies
  * Added --no-autoloader to `install` and `update` commands to skip autoload generation
  * Added --list to `run-script` command to see available scripts
  * Added --absolute to `config` command to get back absolute paths
  * Added `classmap-authoritative` config option, if enabled only the classmap info will be used by the composer autoloader
  * Added support for branch-alias on numeric branches
  * Added support for the `https_proxy`/`HTTPS_PROXY` env vars used only for https URLs
  * Added support for using real composer repos as local paths in `create-project` command
  * Added --no-dev to `licenses` command
  * Added support for PHP 7.0 nightly builds
  * Fixed detection of stability when parsing multiple constraints
  * Fixed installs from lock file containing updated composer.json requirement
  * Fixed the autoloader suffix in vendor/autoload.php changing in every build
  * Many minor fixes, documentation additions and UX improvements

### [1.0.0-alpha9] - 2014-12-07

  * Added `remove` command to do the reverse of `require`
  * Added --ignore-platform-reqs to `install`/`update` commands to install even if you are missing a php extension or have an invalid php version
  * Added a warning when abandoned packages are being installed
  * Added auto-selection of the version constraint in the `require` command, which can now be used simply as `composer require foo/bar`
  * Added ability to define custom composer commands using scripts
  * Added `browse` command to open a browser to the given package's repo URL (or homepage with `-H`)
  * Added an `autoload-dev` section to declare dev-only autoload rules + a --no-dev flag to dump-autoload
  * Added an `auth.json` file, with `store-auths` config option
  * Added a `http-basic` config option to store login/pwds to hosts
  * Added failover to source/dist and vice-versa in case a download method fails
  * Added --path (-P) flag to the show command to see the install path of packages
  * Added --update-with-dependencies and --update-no-dev flags to the require command
  * Added `optimize-autoloader` config option to force the `-o` flag from the config
  * Added `clear-cache` command
  * Added a GzipDownloader to download single gzipped files
  * Added `ssh` support in the `github-protocols` config option
  * Added `pre-dependencies-solving` and `post-dependencies-solving` events
  * Added `pre-archive-cmd` and `post-archive-cmd` script events to the `archive` command
  * Added a `no-api` flag to GitHub VCS repos to skip the API but still get zip downloads
  * Added http-basic auth support for private git repos not on github
  * Added support for autoloading `.hh` files when running HHVM
  * Added support for PHP 5.6
  * Added support for OTP auth when retrieving a GitHub API key
  * Fixed isolation of `files` autoloaded scripts to ensure they can not affect anything
  * Improved performance of solving dependencies
  * Improved SVN and Perforce support
  * A boatload of minor fixes, documentation additions and UX improvements

### [1.0.0-alpha8] - 2014-01-06

  * Break: The `install` command now has --dev enabled by default. --no-dev can be used to install without dev requirements
  * Added `composer-plugin` package type to allow extensibility, and deprecated `composer-installer`
  * Added `psr-4` autoloading support and deprecated `target-dir` since it is a better alternative
  * Added --no-plugins flag to replace --no-custom-installers where available
  * Added `global` command to operate Composer in a user-global directory
  * Added `licenses` command to list the license of all your dependencies
  * Added `pre-status-cmd` and `post-status-cmd` script events to the `status` command
  * Added `post-root-package-install` and `post-create-project-cmd` script events to the `create-project` command
  * Added `pre-autoload-dump` script event
  * Added --rollback flag to self-update
  * Added --no-install flag to create-project to skip installing the dependencies
  * Added a `hhvm` platform package to require Facebook's HHVM implementation of PHP
  * Added `github-domains` config option to allow using GitHub Enterprise with Composer's GitHub support
  * Added `prepend-autoloader` config option to allow appending Composer's autoloader instead of the default prepend behavior
  * Added Perforce support to the VCS repository
  * Added a vendor/composer/autoload_files.php file that lists all files being included by the files autoloader
  * Added support for the `no_proxy` env var and other proxy support improvements
  * Added many robustness tweaks to make sure zip downloads work more consistently and corrupted caches are invalidated
  * Added the release date to `composer -V` output
  * Added `autoloader-suffix` config option to allow overriding the randomly generated autoloader class suffix
  * Fixed BitBucket API usage
  * Fixed parsing of inferred stability flags that are more stable than the minimum stability
  * Fixed installation order of plugins/custom installers
  * Fixed tilde and wildcard version constraints to be more intuitive regarding stabilities
  * Fixed handling of target-dir changes when updating packages
  * Improved performance of the class loader
  * Improved memory usage and performance of solving dependencies
  * Tons of minor bug fixes and improvements

### [1.0.0-alpha7] - 2013-05-04

  * Break: For forward compatibility, you should change your deployment scripts to run `composer install --no-dev`. The install command will install dev dependencies by default starting in the next release
  * Break: The `update` command now has --dev enabled by default. --no-dev can be used to update without dev requirements, but it will create an incomplete lock file and is discouraged
  * Break: Removed support for lock files created before 2012-09-15 due to their outdated unusable format
  * Added `prefer-stable` flag to pick stable packages over unstable ones when possible
  * Added `preferred-install` config option to always enable --prefer-source or --prefer-dist
  * Added `diagnose` command to system/network checks and find common problems
  * Added wildcard support in the update whitelist, e.g. to update all packages of a vendor do `composer update vendor/*`
  * Added `archive` command to archive the current directory or a given package
  * Added `run-script` command to manually trigger scripts
  * Added `proprietary` as valid license identifier for non-free code
  * Added a `php-64bit` platform package that you can require to force a 64bit php
  * Added a `lib-ICU` platform package
  * Added a new official package type `project` for project-bootstrapping packages
  * Added zip/dist local cache to speed up repetitive installations
  * Added `post-autoload-dump` script event
  * Added `Event::getDevMode` to let script handlers know if dev requirements are being installed
  * Added `discard-changes` config option to control the default behavior when updating "dirty" dependencies
  * Added `use-include-path` config option to make the autoloader look for files in the include path too
  * Added `cache-ttl`, `cache-files-ttl` and `cache-files-maxsize` config option
  * Added `cache-dir`, `cache-files-dir`, `cache-repo-dir` and `cache-vcs-dir` config option
  * Added support for using http(s) authentication to non-github repos
  * Added support for using multiple autoloaders at once (e.g. PHPUnit + application both using Composer autoloader)
  * Added support for .inc files for classmap autoloading (legacy support, do not do this on new projects!)
  * Added support for version constraints in show command, e.g. `composer show monolog/monolog 1.4.*`
  * Added support for svn repositories containing packages in a deeper path (see package-path option)
  * Added an `artifact` repository to scan a directory containing zipped packages
  * Added --no-dev flag to `install` and `update` commands
  * Added --stability (-s) flag to create-project to lower the required stability
  * Added --no-progress to `install` and `update` to hide the progress indicators
  * Added --available (-a) flag to the `show` command to display only available packages
  * Added --name-only (-N) flag to the `show` command to show only package names (one per line, no formatting)
  * Added --optimize-autoloader (-o) flag to optimize the autoloader from the `install` and `update` commands
  * Added -vv and -vvv flags to get more verbose output, can be useful to debug some issues
  * Added COMPOSER_NO_INTERACTION env var to do the equivalent of --no-interaction (should be set on build boxes, CI, PaaS)
  * Added PHP 5.2 compatibility to the autoloader configuration files so they can be used to configure another autoloader
  * Fixed handling of platform requirements of the root package when installing from lock
  * Fixed handling of require-dev dependencies
  * Fixed handling of unstable packages that should be downgraded to stable packages when updating to new version constraints
  * Fixed parsing of the `~` operator combined with unstable versions
  * Fixed the `require` command corrupting the json if the new requirement was invalid
  * Fixed support of aliases used together with `<version>#<reference>` constraints
  * Improved output of dependency solver problems by grouping versions of a package together
  * Improved performance of classmap generation
  * Improved mercurial support in various places
  * Improved lock file format to minimize unnecessary diffs
  * Improved the `config` command to support all options
  * Improved the coverage of the `validate` command
  * Tons of minor bug fixes and improvements

### [1.0.0-alpha6] - 2012-10-23

  * Schema: Added ability to pass additional options to repositories (i.e. ssh keys/client certificates to secure private repos)
  * Schema: Added a new `~` operator that should be preferred over `>=`, see https://getcomposer.org/doc/01-basic-usage.md#package-version-constraints
  * Schema: Version constraints `<x.y` are assumed to be `<x.y-dev` unless specified as `<x.y-stable` to reduce confusion
  * Added `config` command to edit/list config values, including --global switch for system config
  * Added OAuth token support for the GitHub API
  * Added ability to specify CLI commands as scripts in addition to PHP callbacks
  * Added --prefer-dist flag to force installs of dev packages from zip archives instead of clones
  * Added --working-dir (-d) flag to change the working directory
  * Added --profile flag to all commands to display execution time and memory usage
  * Added `github-protocols` config key to define the order of preferred protocols for github.com clones
  * Added ability to interactively reset changes to vendor dirs while updating
  * Added support for hg bookmarks in the hg driver
  * Added support for svn repositories not following the standard trunk/branch/tags scheme
  * Fixed git clones of dev versions so that you end up on a branch and not in detached HEAD
  * Fixed "Package not installed" issues with --dev installs
  * Fixed the lock file format to be a snapshot of all the package info at the time of update
  * Fixed order of autoload requires to follow package dependencies
  * Fixed rename() failures with "Access denied" on windows
  * Improved memory usage to be more reasonable and not grow with the repository size
  * Improved performance and memory usage of installs from composer.lock
  * Improved performance of a few essential code paths
  * Many bug small fixes and docs improvements

### [1.0.0-alpha5] - 2012-08-18

  * Added `dump-autoload` command to only regenerate the autoloader
  * Added --optimize to `dump-autoload` to generate a more performant classmap-based autoloader for production
  * Added `status` command to show if any source-installed dependency has local changes, use --verbose to see changed files
  * Added --verbose flag to `install` and `update` that shows the new commits when updating source-installed dependencies
  * Added --no-update flag to `require` to only modify the composer.json file but skip the update
  * Added --no-custom-installers and --no-scripts to `install`, `update` and `create-project` to prevent all automatic code execution
  * Added support for installing archives that contain only a single file
  * Fixed APC related issues in the autoload script on high load websites
  * Fixed installation of branches containing capital letters
  * Fixed installation of custom dev versions/branches
  * Improved the coverage of the `validate` command
  * Improved PEAR scripts/binaries support
  * Improved and fixed the output of various commands
  * Improved error reporting on network failures and some other edge cases
  * Various minor bug fixes and docs improvements

### [1.0.0-alpha4] - 2012-07-04

  * Break: The default `minimum-stability` is now `stable`, [read more](https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion)
  * Break: Custom installers now receive the IO instance and a Composer instance in their constructor
  * Schema: Added references for dev versions, requiring `dev-master#abcdef` for example will force the abcdef commit
  * Schema: Added `support` key with some more metadata (email, issues, forum, wiki, irc, source)
  * Schema: Added `!=` operator for version constraints in `require`/`require-dev`
  * Added a recommendation for package names to be `lower-cased/with-dashes`, it will be enforced for new packages on Pacakgist
  * Added `require` command to add a package to your requirements and install it
  * Added a whitelist to `update`. Calling `composer update foo/bar foo/baz` allows you to update only those packages
  * Added support for overriding repositories in the system config (define repositories in `~/.composer/config.json`)
  * Added `lib-*` packages to the platform repository, e.g. `lib-pcre` contains the pcre version
  * Added caching of GitHub metadata (faster startup time with custom GitHub VCS repos)
  * Added caching of SVN metadata (faster startup time with custom SVN VCS repos)
  * Added support for file:// URLs to GitDriver
  * Added --self flag to the `show` command to display the infos of the root package
  * Added --dev flag to `create-project` command
  * Added --no-scripts to `install` and `update` commands to avoid triggering the scripts
  * Added `COMPOSER_ROOT_VERSION` env var to specify the version of the root package (fixes some edge cases)
  * Added support for multiple custom installers in one package
  * Added files autoloading method which requires files on every request, e.g. to load functional code
  * Added automatic recovery for lock files that contain references to rewritten (force pushed) commits
  * Improved PEAR repositories support and package.xml extraction
  * Improved and fixed the output of various commands
  * Fixed the order of installation of requirements (they are always installed before the packages requiring them)
  * Cleaned up / refactored the dependency solver code as well as the output for unsolvable requirements
  * Various bug fixes and docs improvements

### [1.0.0-alpha3] - 2012-05-13

  * Schema: Added `require-dev` for development-time requirements (tests, etc), install with --dev
  * Schema: Added author.role to list the author's role in the project
  * Schema: Added `minimum-stability` + `@<stability>` flags in require for restricting packages to a certain stability
  * Schema: Removed `recommend`
  * Schema: `suggest` is now informational and can use any description for a package, not only a constraint
  * Break: vendor/.composer/autoload.php has been moved to vendor/autoload.php, other files are now in vendor/composer/
  * Added caching of repository metadata (faster startup times & failover if packagist is down)
  * Added removal of packages that are not needed anymore
  * Added include_path support for legacy projects that are full of require_once statements
  * Added installation notifications API to allow better statistics on Composer repositories
  * Added support for proxies that require authentication
  * Added support for private github repositories over https
  * Added autoloading support for root packages that use target-dir
  * Added awareness of the root package presence and support for it's provide/replace/conflict keys
  * Added IOInterface::isDecorated to test for colored output support
  * Added validation of licenses based on the [SPDX registry](https://spdx.org/licenses/)
  * Improved repository protocol to have large cacheable parts
  * Fixed various bugs relating to package aliasing, proxy configuration, binaries
  * Various bug fixes and docs improvements

### [1.0.0-alpha2] - 2012-04-03

  * Added `create-project` command to install a project from scratch with composer
  * Added automated `classmap` autoloading support for non-PSR-0 compliant projects
  * Added human readable error reporting when deps can not be solved
  * Added support for private GitHub and SVN repositories (use --no-interaction for CI)
  * Added "file" downloader type to download plain files
  * Added support for authentication with svn repositories
  * Added autoload support for PEAR repositories
  * Improved clones from GitHub which now automatically select between git/https/http protocols
  * Improved `validate` command to give more feedback
  * Improved the `search` & `show` commands output
  * Removed dependency on filter_var
  * Various robustness & error handling improvements, docs fixes and more bug fixes

### 1.0.0-alpha1 - 2012-03-01

  * Initial release

[2.9.5]: https://github.com/composer/composer/compare/2.9.4...2.9.5
[2.9.4]: https://github.com/composer/composer/compare/2.9.3...2.9.4
[2.9.3]: https://github.com/composer/composer/compare/2.9.2...2.9.3
[2.9.2]: https://github.com/composer/composer/compare/2.9.1...2.9.2
[2.9.1]: https://github.com/composer/composer/compare/2.9.0...2.9.1
[2.9.0]: https://github.com/composer/composer/compare/2.9.0-RC1...2.9.0
[2.9.0-RC1]: https://github.com/composer/composer/compare/2.8.12...2.9.0-RC1
[2.8.12]: https://github.com/composer/composer/compare/2.8.11...2.8.12
[2.8.11]: https://github.com/composer/composer/compare/2.8.10...2.8.11
[2.8.10]: https://github.com/composer/composer/compare/2.8.9...2.8.10
[2.8.9]: https://github.com/composer/composer/compare/2.8.8...2.8.9
[2.8.8]: https://github.com/composer/composer/compare/2.8.7...2.8.8
[2.8.7]: https://github.com/composer/composer/compare/2.8.6...2.8.7
[2.8.6]: https://github.com/composer/composer/compare/2.8.5...2.8.6
[2.8.5]: https://github.com/composer/composer/compare/2.8.4...2.8.5
[2.8.4]: https://github.com/composer/composer/compare/2.8.3...2.8.4
[2.8.3]: https://github.com/composer/composer/compare/2.8.2...2.8.3
[2.8.2]: https://github.com/composer/composer/compare/2.8.1...2.8.2
[2.8.1]: https://github.com/composer/composer/compare/2.8.0...2.8.1
[2.8.0]: https://github.com/composer/composer/compare/2.7.9...2.8.0
[2.7.9]: https://github.com/composer/composer/compare/2.7.8...2.7.9
[2.7.8]: https://github.com/composer/composer/compare/2.7.7...2.7.8
[2.7.7]: https://github.com/composer/composer/compare/2.7.6...2.7.7
[2.7.6]: https://github.com/composer/composer/compare/2.7.5...2.7.6
[2.7.5]: https://github.com/composer/composer/compare/2.7.4...2.7.5
[2.7.4]: https://github.com/composer/composer/compare/2.7.3...2.7.4
[2.7.3]: https://github.com/composer/composer/compare/2.7.2...2.7.3
[2.7.2]: https://github.com/composer/composer/compare/2.7.1...2.7.2
[2.7.1]: https://github.com/composer/composer/compare/2.7.0...2.7.1
[2.7.0]: https://github.com/composer/composer/compare/2.6.6...2.7.0
[2.6.6]: https://github.com/composer/composer/compare/2.6.5...2.6.6
[2.6.5]: https://github.com/composer/composer/compare/2.6.4...2.6.5
[2.6.4]: https://github.com/composer/composer/compare/2.6.3...2.6.4
[2.6.3]: https://github.com/composer/composer/compare/2.6.2...2.6.3
[2.6.2]: https://github.com/composer/composer/compare/2.6.1...2.6.2
[2.6.1]: https://github.com/composer/composer/compare/2.6.0...2.6.1
[2.6.0]: https://github.com/composer/composer/compare/2.5.8...2.6.0
[2.5.8]: https://github.com/composer/composer/compare/2.5.7...2.5.8
[2.5.7]: https://github.com/composer/composer/compare/2.5.6...2.5.7
[2.5.6]: https://github.com/composer/composer/compare/2.5.5...2.5.6
[2.5.5]: https://github.com/composer/composer/compare/2.5.4...2.5.5
[2.5.4]: https://github.com/composer/composer/compare/2.5.3...2.5.4
[2.5.3]: https://github.com/composer/composer/compare/2.5.2...2.5.3
[2.5.2]: https://github.com/composer/composer/compare/2.5.1...2.5.2
[2.5.1]: https://github.com/composer/composer/compare/2.5.0...2.5.1
[2.5.0]: https://github.com/composer/composer/compare/2.4.4...2.5.0
[2.4.4]: https://github.com/composer/composer/compare/2.4.3...2.4.4
[2.4.3]: https://github.com/composer/composer/compare/2.4.2...2.4.3
[2.4.2]: https://github.com/composer/composer/compare/2.4.1...2.4.2
[2.4.1]: https://github.com/composer/composer/compare/2.4.0...2.4.1
[2.4.0]: https://github.com/composer/composer/compare/2.4.0-RC1...2.4.0
[2.4.0-RC1]: https://github.com/composer/composer/compare/2.3.10...2.4.0-RC1
[2.3.10]: https://github.com/composer/composer/compare/2.3.9...2.3.10
[2.3.9]: https://github.com/composer/composer/compare/2.3.8...2.3.9
[2.3.8]: https://github.com/composer/composer/compare/2.3.7...2.3.8
[2.3.7]: https://github.com/composer/composer/compare/2.3.6...2.3.7
[2.3.6]: https://github.com/composer/composer/compare/2.3.5...2.3.6
[2.3.5]: https://github.com/composer/composer/compare/2.3.4...2.3.5
[2.3.4]: https://github.com/composer/composer/compare/2.3.3...2.3.4
[2.3.3]: https://github.com/composer/composer/compare/2.3.2...2.3.3
[2.3.2]: https://github.com/composer/composer/compare/2.3.1...2.3.2
[2.3.1]: https://github.com/composer/composer/compare/2.3.0...2.3.1
[2.3.0]: https://github.com/composer/composer/compare/2.3.0-RC2...2.3.0
[2.3.0-RC2]: https://github.com/composer/composer/compare/2.3.0-RC1...2.3.0-RC2
[2.3.0-RC1]: https://github.com/composer/composer/compare/2.2.9...2.3.0-RC1
[2.2.17]: https://github.com/composer/composer/compare/2.2.16...2.2.17
[2.2.16]: https://github.com/composer/composer/compare/2.2.15...2.2.16
[2.2.15]: https://github.com/composer/composer/compare/2.2.14...2.2.15
[2.2.14]: https://github.com/composer/composer/compare/2.2.13...2.2.14
[2.2.13]: https://github.com/composer/composer/compare/2.2.12...2.2.13
[2.2.12]: https://github.com/composer/composer/compare/2.2.11...2.2.12
[2.2.11]: https://github.com/composer/composer/compare/2.2.10...2.2.11
[2.2.10]: https://github.com/composer/composer/compare/2.2.9...2.2.10
[2.2.9]: https://github.com/composer/composer/compare/2.2.8...2.2.9
[2.2.8]: https://github.com/composer/composer/compare/2.2.7...2.2.8
[2.2.7]: https://github.com/composer/composer/compare/2.2.6...2.2.7
[2.2.6]: https://github.com/composer/composer/compare/2.2.5...2.2.6
[2.2.5]: https://github.com/composer/composer/compare/2.2.4...2.2.5
[2.2.4]: https://github.com/composer/composer/compare/2.2.3...2.2.4
[2.2.3]: https://github.com/composer/composer/compare/2.2.2...2.2.3
[2.2.2]: https://github.com/composer/composer/compare/2.2.1...2.2.2
[2.2.1]: https://github.com/composer/composer/compare/2.2.0...2.2.1
[2.2.0]: https://github.com/composer/composer/compare/2.2.0-RC1...2.2.0
[2.2.0-RC1]: https://github.com/composer/composer/compare/2.1.14...2.2.0-RC1
[2.1.14]: https://github.com/composer/composer/compare/2.1.13...2.1.14
[2.1.13]: https://github.com/composer/composer/compare/2.1.12...2.1.13
[2.1.12]: https://github.com/composer/composer/compare/2.1.11...2.1.12
[2.1.11]: https://github.com/composer/composer/compare/2.1.10...2.1.11
[2.1.10]: https://github.com/composer/composer/compare/2.1.9...2.1.10
[2.1.9]: https://github.com/composer/composer/compare/2.1.8...2.1.9
[2.1.8]: https://github.com/composer/composer/compare/2.1.7...2.1.8
[2.1.7]: https://github.com/composer/composer/compare/2.1.6...2.1.7
[2.1.6]: https://github.com/composer/composer/compare/2.1.5...2.1.6
[2.1.5]: https://github.com/composer/composer/compare/2.1.4...2.1.5
[2.1.4]: https://github.com/composer/composer/compare/2.1.3...2.1.4
[2.1.3]: https://github.com/composer/composer/compare/2.1.2...2.1.3
[2.1.2]: https://github.com/composer/composer/compare/2.1.1...2.1.2
[2.1.1]: https://github.com/composer/composer/compare/2.1.0...2.1.1
[2.1.0]: https://github.com/composer/composer/compare/2.1.0-RC1...2.1.0
[2.1.0-RC1]: https://github.com/composer/composer/compare/2.0.14...2.1.0-RC1
[2.0.14]: https://github.com/composer/composer/compare/2.0.13...2.0.14
[2.0.13]: https://github.com/composer/composer/compare/2.0.12...2.0.13
[2.0.12]: https://github.com/composer/composer/compare/2.0.11...2.0.12
[2.0.11]: https://github.com/composer/composer/compare/2.0.10...2.0.11
[2.0.10]: https://github.com/composer/composer/compare/2.0.9...2.0.10
[2.0.9]: https://github.com/composer/composer/compare/2.0.8...2.0.9
[2.0.8]: https://github.com/composer/composer/compare/2.0.7...2.0.8
[2.0.7]: https://github.com/composer/composer/compare/2.0.6...2.0.7
[2.0.6]: https://github.com/composer/composer/compare/2.0.5...2.0.6
[2.0.5]: https://github.com/composer/composer/compare/2.0.4...2.0.5
[2.0.4]: https://github.com/composer/composer/compare/2.0.3...2.0.4
[2.0.3]: https://github.com/composer/composer/compare/2.0.2...2.0.3
[2.0.2]: https://github.com/composer/composer/compare/2.0.1...2.0.2
[2.0.1]: https://github.com/composer/composer/compare/2.0.0...2.0.1
[2.0.0]: https://github.com/composer/composer/compare/2.0.0-RC2...2.0.0
[2.0.0-RC2]: https://github.com/composer/composer/compare/2.0.0-RC1...2.0.0-RC2
[2.0.0-RC1]: https://github.com/composer/composer/compare/2.0.0-alpha3...2.0.0-RC1
[2.0.0-alpha3]: https://github.com/composer/composer/compare/2.0.0-alpha2...2.0.0-alpha3
[2.0.0-alpha2]: https://github.com/composer/composer/compare/2.0.0-alpha1...2.0.0-alpha2
[2.0.0-alpha1]: https://github.com/composer/composer/compare/1.10.7...2.0.0-alpha1
[1.10.23]: https://github.com/composer/composer/compare/1.10.22...1.10.23
[1.10.22]: https://github.com/composer/composer/compare/1.10.21...1.10.22
[1.10.21]: https://github.com/composer/composer/compare/1.10.20...1.10.21
[1.10.20]: https://github.com/composer/composer/compare/1.10.19...1.10.20
[1.10.19]: https://github.com/composer/composer/compare/1.10.18...1.10.19
[1.10.18]: https://github.com/composer/composer/compare/1.10.17...1.10.18
[1.10.17]: https://github.com/composer/composer/compare/1.10.16...1.10.17
[1.10.16]: https://github.com/composer/composer/compare/1.10.15...1.10.16
[1.10.15]: https://github.com/composer/composer/compare/1.10.14...1.10.15
[1.10.14]: https://github.com/composer/composer/compare/1.10.13...1.10.14
[1.10.13]: https://github.com/composer/composer/compare/1.10.12...1.10.13
[1.10.12]: https://github.com/composer/composer/compare/1.10.11...1.10.12
[1.10.11]: https://github.com/composer/composer/compare/1.10.10...1.10.11
[1.10.10]: https://github.com/composer/composer/compare/1.10.9...1.10.10
[1.10.9]: https://github.com/composer/composer/compare/1.10.8...1.10.9
[1.10.8]: https://github.com/composer/composer/compare/1.10.7...1.10.8
[1.10.7]: https://github.com/composer/composer/compare/1.10.6...1.10.7
[1.10.6]: https://github.com/composer/composer/compare/1.10.5...1.10.6
[1.10.5]: https://github.com/composer/composer/compare/1.10.4...1.10.5
[1.10.4]: https://github.com/composer/composer/compare/1.10.3...1.10.4
[1.10.3]: https://github.com/composer/composer/compare/1.10.2...1.10.3
[1.10.2]: https://github.com/composer/composer/compare/1.10.1...1.10.2
[1.10.1]: https://github.com/composer/composer/compare/1.10.0...1.10.1
[1.10.0]: https://github.com/composer/composer/compare/1.10.0-RC...1.10.0
[1.10.0-RC]: https://github.com/composer/composer/compare/1.9.3...1.10.0-RC
[1.9.3]: https://github.com/composer/composer/compare/1.9.2...1.9.3
[1.9.2]: https://github.com/composer/composer/compare/1.9.1...1.9.2
[1.9.1]: https://github.com/composer/composer/compare/1.9.0...1.9.1
[1.9.0]: https://github.com/composer/composer/compare/1.8.6...1.9.0
[1.8.6]: https://github.com/composer/composer/compare/1.8.5...1.8.6
[1.8.5]: https://github.com/composer/composer/compare/1.8.4...1.8.5
[1.8.4]: https://github.com/composer/composer/compare/1.8.3...1.8.4
[1.8.3]: https://github.com/composer/composer/compare/1.8.2...1.8.3
[1.8.2]: https://github.com/composer/composer/compare/1.8.1...1.8.2
[1.8.1]: https://github.com/composer/composer/compare/1.8.0...1.8.1
[1.8.0]: https://github.com/composer/composer/compare/1.7.3...1.8.0
[1.7.3]: https://github.com/composer/composer/compare/1.7.2...1.7.3
[1.7.2]: https://github.com/composer/composer/compare/1.7.1...1.7.2
[1.7.1]: https://github.com/composer/composer/compare/1.7.0...1.7.1
[1.7.0]: https://github.com/composer/composer/compare/1.7.0-RC...1.7.0
[1.7.0-RC]: https://github.com/composer/composer/compare/1.6.5...1.7.0-RC
[1.6.5]: https://github.com/composer/composer/compare/1.6.4...1.6.5
[1.6.4]: https://github.com/composer/composer/compare/1.6.3...1.6.4
[1.6.3]: https://github.com/composer/composer/compare/1.6.2...1.6.3
[1.6.2]: https://github.com/composer/composer/compare/1.6.1...1.6.2
[1.6.1]: https://github.com/composer/composer/compare/1.6.0...1.6.1
[1.6.0]: https://github.com/composer/composer/compare/1.6.0-RC...1.6.0
[1.6.0-RC]: https://github.com/composer/composer/compare/1.5.6...1.6.0-RC
[1.5.6]: https://github.com/composer/composer/compare/1.5.5...1.5.6
[1.5.5]: https://github.com/composer/composer/compare/1.5.4...1.5.5
[1.5.4]: https://github.com/composer/composer/compare/1.5.3...1.5.4
[1.5.3]: https://github.com/composer/composer/compare/1.5.2...1.5.3
[1.5.2]: https://github.com/composer/composer/compare/1.5.1...1.5.2
[1.5.1]: https://github.com/composer/composer/compare/1.5.0...1.5.1
[1.5.0]: https://github.com/composer/composer/compare/1.4.3...1.5.0
[1.4.3]: https://github.com/composer/composer/compare/1.4.2...1.4.3
[1.4.2]: https://github.com/composer/composer/compare/1.4.1...1.4.2
[1.4.1]: https://github.com/composer/composer/compare/1.4.0...1.4.1
[1.4.0]: https://github.com/composer/composer/compare/1.3.3...1.4.0
[1.3.3]: https://github.com/composer/composer/compare/1.3.2...1.3.3
[1.3.2]: https://github.com/composer/composer/compare/1.3.1...1.3.2
[1.3.1]: https://github.com/composer/composer/compare/1.3.0...1.3.1
[1.3.0]: https://github.com/composer/composer/compare/1.3.0-RC...1.3.0
[1.3.0-RC]: https://github.com/composer/composer/compare/1.2.4...1.3.0-RC
[1.2.4]: https://github.com/composer/composer/compare/1.2.3...1.2.4
[1.2.3]: https://github.com/composer/composer/compare/1.2.2...1.2.3
[1.2.2]: https://github.com/composer/composer/compare/1.2.1...1.2.2
[1.2.1]: https://github.com/composer/composer/compare/1.2.0...1.2.1
[1.2.0]: https://github.com/composer/composer/compare/1.2.0-RC...1.2.0
[1.2.0-RC]: https://github.com/composer/composer/compare/1.1.3...1.2.0-RC
[1.1.3]: https://github.com/composer/composer/compare/1.1.2...1.1.3
[1.1.2]: https://github.com/composer/composer/compare/1.1.1...1.1.2
[1.1.1]: https://github.com/composer/composer/compare/1.1.0...1.1.1
[1.1.0]: https://github.com/composer/composer/compare/1.0.3...1.1.0
[1.1.0-RC]: https://github.com/composer/composer/compare/1.0.3...1.1.0-RC
[1.0.3]: https://github.com/composer/composer/compare/1.0.2...1.0.3
[1.0.2]: https://github.com/composer/composer/compare/1.0.1...1.0.2
[1.0.1]: https://github.com/composer/composer/compare/1.0.0...1.0.1
[1.0.0]: https://github.com/composer/composer/compare/1.0.0-beta2...1.0.0
[1.0.0-beta2]: https://github.com/composer/composer/compare/1.0.0-beta1...1.0.0-beta2
[1.0.0-beta1]: https://github.com/composer/composer/compare/1.0.0-alpha11...1.0.0-beta1
[1.0.0-alpha11]: https://github.com/composer/composer/compare/1.0.0-alpha10...1.0.0-alpha11
[1.0.0-alpha10]: https://github.com/composer/composer/compare/1.0.0-alpha9...1.0.0-alpha10
[1.0.0-alpha9]: https://github.com/composer/composer/compare/1.0.0-alpha8...1.0.0-alpha9
[1.0.0-alpha8]: https://github.com/composer/composer/compare/1.0.0-alpha7...1.0.0-alpha8
[1.0.0-alpha7]: https://github.com/composer/composer/compare/1.0.0-alpha6...1.0.0-alpha7
[1.0.0-alpha6]: https://github.com/composer/composer/compare/1.0.0-alpha5...1.0.0-alpha6
[1.0.0-alpha5]: https://github.com/composer/composer/compare/1.0.0-alpha4...1.0.0-alpha5
[1.0.0-alpha4]: https://github.com/composer/composer/compare/1.0.0-alpha3...1.0.0-alpha4
[1.0.0-alpha3]: https://github.com/composer/composer/compare/1.0.0-alpha2...1.0.0-alpha3
[1.0.0-alpha2]: https://github.com/composer/composer/compare/1.0.0-alpha1...1.0.0-alpha2


================================================
FILE: CODE_OF_CONDUCT.md
================================================

# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
  and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
  community

Examples of unacceptable behavior include:

* The use of sexualized language or imagery, and sexual attention or advances of
  any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
  without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
  professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
contact@packagist.org.
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[Mozilla CoC]: https://github.com/mozilla/diversity
[FAQ]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations


================================================
FILE: LICENSE
================================================
Copyright (c) Nils Adermann, Jordi Boggiano

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.


================================================
FILE: PORTING_INFO
================================================
 * add rule
 *  p = direct literal; always < 0 for installed rpm rules
 *  d, if < 0 direct literal, if > 0 offset into whatprovides, if == 0 rule is assertion (look at p only)
 *
 *
 * A requires b, b provided by B1,B2,B3 => (-A|B1|B2|B3)
 *
 * p < 0 : pkg id of A
 * d > 0 : Offset in whatprovidesdata (list of providers of b)
 *
 * A conflicts b, b provided by B1,B2,B3 => (-A|-B1), (-A|-B2), (-A|-B3)
 * p < 0 : pkg id of A
 * d < 0 : Id of solvable (e.g. B1)
 *
 * d == 0: unary rule, assertion => (A) or (-A)
 *
 *   Install:    p > 0, d = 0   (A)             user requested install
 *   Remove:     p < 0, d = 0   (-A)            user requested remove (also: uninstallable)
 *   Requires:   p < 0, d > 0   (-A|B1|B2|...)  d: <list of providers for requirement of p>
 *   Updates:    p > 0, d > 0   (A|B1|B2|...)   d: <list of updates for solvable p>
 *   Conflicts:  p < 0, d < 0   (-A|-B)         either p (conflict issuer) or d (conflict provider) (binary rule)
 *                                              also used for obsoletes
 *   ?:          p > 0, d < 0   (A|-B)
 *   No-op ?:    p = 0, d = 0   (null)          (used as policy rule placeholder)
 *
 *   resulting watches:
 *   ------------------
 *   Direct assertion (no watch needed)( if d <0 ) --> d = 0, w1 = p, w2 = 0
 *   Binary rule: p = first literal, d = 0, w2 = second literal, w1 = p
 *   every other : w1 = p, w2 = whatprovidesdata[d];
 *   Disabled rule: w1 = 0
 *
 *   always returns a rule for non-rpm rules



p > 0, d = 0, (A), w1 = p, w2 = 0
p < 0, d = 0, (-A), w1 = p, w2 = 0
p !=0, d = 0, (p|q), w1 = p, w2 = q


================================================
FILE: README.md
================================================
<p align="center">
    <a href="https://getcomposer.org">
        <img src="https://getcomposer.org/img/logo-composer-transparent.png" alt="Composer">
    </a>
</p>
<h1 align="center">Dependency Management for PHP</h1>

Composer helps you declare, manage, and install dependencies of PHP projects.

See [https://getcomposer.org/](https://getcomposer.org/) for more information and documentation.

[![Continuous Integration](https://github.com/composer/composer/actions/workflows/continuous-integration.yml/badge.svg?branch=main)](https://github.com/composer/composer/actions/workflows/continuous-integration.yml?query=branch%3Amain)

Installation / Usage
--------------------

Download and install Composer by following the [official instructions](https://getcomposer.org/download/).

For usage, see [the documentation](https://getcomposer.org/doc/).

Packages
--------

Find public packages on [Packagist.org](https://packagist.org).

For private package hosting take a look at [Private Packagist](https://packagist.com).

Community
---------

Follow [@packagist](https://twitter.com/packagist) or [@seldaek](https://twitter.com/seldaek) on Twitter for announcements, or check the [#composerphp](https://twitter.com/search?q=%23composerphp&src=typed_query&f=live) hashtag.

For support, Stack Overflow offers a good collection of
[Composer related questions](https://stackoverflow.com/questions/tagged/composer-php), or you can use the [GitHub discussions](https://github.com/composer/composer/discussions).

Please note that this project is released with a
[Contributor Code of Conduct](https://www.contributor-covenant.org/version/1/4/code-of-conduct/).
By participating in this project and its community you agree to abide by those terms.

Requirements
------------

#### Latest Composer

PHP 7.2.5 or above for the latest version.

#### Composer 2.2 LTS (Long Term Support)

PHP versions 5.3.2 - 8.1 are still supported via the LTS releases of Composer (2.2.x). If you
run the installer or the `self-update` command the appropriate Composer version for your PHP
should be automatically selected.

#### Binary dependencies

- `unzip` (or `7z`/`7zz`)
- `gzip`
- `tar`
- `unrar`
- `xz`
- Git (`git`)
- Mercurial (`hg`)
- Fossil (`fossil`)
- Perforce (`p4`)
- Subversion (`svn`)

The need for these binary dependencies may vary depending on individual use cases. For most users,
only 2 dependencies are essential for Composer: `unzip` (or `7z`/`7zz`), and `git`. If the
[`ext-zip`](https://www.php.net/manual/en/zip.installation.php) extension is available, only `git`
is needed, but this is not recommended.

Authors
-------

- Nils Adermann  | [GitHub](https://github.com/naderman)  | [Twitter](https://twitter.com/naderman) | <naderman@naderman.de> | [naderman.de](https://naderman.de)
- Jordi Boggiano | [GitHub](https://github.com/Seldaek) | [Twitter](https://twitter.com/seldaek) | <j.boggiano@seld.be> | [seld.be](https://seld.be)

See also the list of [contributors](https://github.com/composer/composer/contributors) who participated in this project.

Security Reports
----------------

Please send any sensitive issue to [security@packagist.org](mailto:security@packagist.org). Thanks!

License
-------

Composer is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.

Acknowledgments
---------------

- This project's Solver started out as a PHP port of openSUSE's
  [Libzypp satsolver](https://en.opensuse.org/openSUSE:Libzypp_satsolver).


================================================
FILE: UPGRADE-2.0.md
================================================
# Upgrade guides for Composer 1.x to 2.0

## For composer CLI users

- The new platform-check feature means that Composer checks the runtime PHP version and available extensions to ensure they match the project dependencies. If a mismatch is found, it exits with error details to make sure problems are not overlooked. To avoid issues when deploying to production it is recommended to run `composer check-platform-reqs` with the production PHP process as part of your build or deployment process.
- If a package exists in a higher priority repository, it will now be entirely ignored in lower priority repositories. See [repository priorities](https://getcomposer.org/repoprio) for details.
- Invalid PSR-0 / PSR-4 class configurations will not autoload anymore in optimized-autoloader mode, as per the warnings introduced in 1.10
- On linux systems supporting the XDG Base Directory Specification, Composer will now prefer using XDG_CONFIG_DIR/composer over `~/.composer` if both are available (1.x used `~/.composer` first)
- Package names now must comply to our [naming guidelines](doc/04-schema.md#name) or Composer will abort, as per the warnings introduced in 1.8.1
- Deprecated --no-suggest flag as it is not needed anymore
- PEAR support (repository, downloader, etc.) has been removed
- `update` now lists changes to the lock file first (update step), and then the changes applied when installing the lock file to the vendor dir (install step)
- `HTTPS_PROXY_REQUEST_FULLURI` if not specified will now default to false as this seems to work better in most environments
- `dev-trunk`, `dev-master` and `dev-default` are no longer aliases for each other. The exact branch names are now preserved.

## For integrators and plugin authors

- composer-plugin-api has been bumped to 2.0.0 - you can detec
Download .txt
gitextract_iy3i6irn/

├── .editorconfig
├── .gitattributes
├── .github/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   ├── feature_request.md
│   │   └── support-request---question.md
│   ├── dependabot.yml
│   ├── pull_request_template.md
│   └── workflows/
│       ├── autoloader.yml
│       ├── close-stale-support.yml
│       ├── conductor.yaml
│       ├── continuous-integration.yml
│       ├── lint.yml
│       ├── php32bit.yml
│       ├── phpstan.yml
│       └── release.yml
├── .gitignore
├── .php-cs-fixer.php
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── LICENSE
├── PORTING_INFO
├── README.md
├── UPGRADE-2.0.md
├── bin/
│   ├── compile
│   └── composer
├── composer.json
├── doc/
│   ├── 00-intro.md
│   ├── 01-basic-usage.md
│   ├── 02-libraries.md
│   ├── 03-cli.md
│   ├── 04-schema.md
│   ├── 05-repositories.md
│   ├── 06-config.md
│   ├── 07-runtime.md
│   ├── 08-community.md
│   ├── articles/
│   │   ├── aliases.md
│   │   ├── authentication-for-private-packages.md
│   │   ├── autoloader-optimization.md
│   │   ├── composer-platform-dependencies.md
│   │   ├── custom-installers.md
│   │   ├── handling-private-packages.md
│   │   ├── plugins.md
│   │   ├── repository-priorities.md
│   │   ├── resolving-merge-conflicts.md
│   │   ├── scripts.md
│   │   ├── troubleshooting.md
│   │   ├── vendor-binaries.md
│   │   └── versions.md
│   ├── dev/
│   │   └── DefaultPolicy.md
│   ├── faqs/
│   │   ├── how-do-i-install-a-package-to-a-custom-path-for-my-framework.md
│   │   ├── how-to-install-composer-programmatically.md
│   │   ├── how-to-install-untrusted-packages-safely.md
│   │   ├── how-to-use-composer-behind-a-proxy.md
│   │   ├── should-i-commit-the-dependencies-in-my-vendor-directory.md
│   │   ├── which-version-numbering-system-does-composer-itself-use.md
│   │   ├── why-are-unbound-version-constraints-a-bad-idea.md
│   │   ├── why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md
│   │   └── why-cant-composer-load-repositories-recursively.md
│   └── fixtures/
│       ├── fixtures.md
│       ├── repo-composer-plain/
│       │   └── packages.json
│       └── repo-composer-with-providers/
│           ├── p/
│           │   ├── bar/
│           │   │   └── baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json
│           │   ├── foo/
│           │   │   └── bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json
│           │   ├── gar/
│           │   │   └── nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json
│           │   ├── provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json
│           │   └── qux/
│           │       └── quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json
│           └── packages.json
├── phpstan/
│   ├── baseline-8.4.neon
│   ├── baseline.neon
│   ├── config.neon
│   ├── ignore-by-php-version.neon.php
│   └── rules.neon
├── phpunit.xml.dist
├── res/
│   ├── composer-lock-schema.json
│   ├── composer-repository-schema.json
│   └── composer-schema.json
├── src/
│   ├── Composer/
│   │   ├── Advisory/
│   │   │   ├── AuditConfig.php
│   │   │   ├── Auditor.php
│   │   │   ├── IgnoredSecurityAdvisory.php
│   │   │   ├── PartialSecurityAdvisory.php
│   │   │   └── SecurityAdvisory.php
│   │   ├── Autoload/
│   │   │   ├── AutoloadGenerator.php
│   │   │   ├── ClassLoader.php
│   │   │   └── ClassMapGenerator.php
│   │   ├── Cache.php
│   │   ├── Command/
│   │   │   ├── AboutCommand.php
│   │   │   ├── ArchiveCommand.php
│   │   │   ├── AuditCommand.php
│   │   │   ├── BaseCommand.php
│   │   │   ├── BaseConfigCommand.php
│   │   │   ├── BaseDependencyCommand.php
│   │   │   ├── BumpCommand.php
│   │   │   ├── CheckPlatformReqsCommand.php
│   │   │   ├── ClearCacheCommand.php
│   │   │   ├── CompletionTrait.php
│   │   │   ├── ConfigCommand.php
│   │   │   ├── CreateProjectCommand.php
│   │   │   ├── DependsCommand.php
│   │   │   ├── DiagnoseCommand.php
│   │   │   ├── DumpAutoloadCommand.php
│   │   │   ├── ExecCommand.php
│   │   │   ├── FundCommand.php
│   │   │   ├── GlobalCommand.php
│   │   │   ├── HomeCommand.php
│   │   │   ├── InitCommand.php
│   │   │   ├── InstallCommand.php
│   │   │   ├── LicensesCommand.php
│   │   │   ├── OutdatedCommand.php
│   │   │   ├── PackageDiscoveryTrait.php
│   │   │   ├── ProhibitsCommand.php
│   │   │   ├── ReinstallCommand.php
│   │   │   ├── RemoveCommand.php
│   │   │   ├── RepositoryCommand.php
│   │   │   ├── RequireCommand.php
│   │   │   ├── RunScriptCommand.php
│   │   │   ├── ScriptAliasCommand.php
│   │   │   ├── SearchCommand.php
│   │   │   ├── SelfUpdateCommand.php
│   │   │   ├── ShowCommand.php
│   │   │   ├── StatusCommand.php
│   │   │   ├── SuggestsCommand.php
│   │   │   ├── UpdateCommand.php
│   │   │   └── ValidateCommand.php
│   │   ├── Compiler.php
│   │   ├── Composer.php
│   │   ├── Config/
│   │   │   ├── ConfigSourceInterface.php
│   │   │   └── JsonConfigSource.php
│   │   ├── Config.php
│   │   ├── Console/
│   │   │   ├── Application.php
│   │   │   ├── GithubActionError.php
│   │   │   ├── HtmlOutputFormatter.php
│   │   │   └── Input/
│   │   │       ├── InputArgument.php
│   │   │       └── InputOption.php
│   │   ├── DependencyResolver/
│   │   │   ├── Decisions.php
│   │   │   ├── DefaultPolicy.php
│   │   │   ├── GenericRule.php
│   │   │   ├── LocalRepoTransaction.php
│   │   │   ├── LockTransaction.php
│   │   │   ├── MultiConflictRule.php
│   │   │   ├── Operation/
│   │   │   │   ├── InstallOperation.php
│   │   │   │   ├── MarkAliasInstalledOperation.php
│   │   │   │   ├── MarkAliasUninstalledOperation.php
│   │   │   │   ├── OperationInterface.php
│   │   │   │   ├── SolverOperation.php
│   │   │   │   ├── UninstallOperation.php
│   │   │   │   └── UpdateOperation.php
│   │   │   ├── PolicyInterface.php
│   │   │   ├── Pool.php
│   │   │   ├── PoolBuilder.php
│   │   │   ├── PoolOptimizer.php
│   │   │   ├── Problem.php
│   │   │   ├── Request.php
│   │   │   ├── Rule.php
│   │   │   ├── Rule2Literals.php
│   │   │   ├── RuleSet.php
│   │   │   ├── RuleSetGenerator.php
│   │   │   ├── RuleSetIterator.php
│   │   │   ├── RuleWatchChain.php
│   │   │   ├── RuleWatchGraph.php
│   │   │   ├── RuleWatchNode.php
│   │   │   ├── SecurityAdvisoryPoolFilter.php
│   │   │   ├── Solver.php
│   │   │   ├── SolverBugException.php
│   │   │   ├── SolverProblemsException.php
│   │   │   └── Transaction.php
│   │   ├── Downloader/
│   │   │   ├── ArchiveDownloader.php
│   │   │   ├── ChangeReportInterface.php
│   │   │   ├── DownloadManager.php
│   │   │   ├── DownloaderInterface.php
│   │   │   ├── DvcsDownloaderInterface.php
│   │   │   ├── FileDownloader.php
│   │   │   ├── FilesystemException.php
│   │   │   ├── FossilDownloader.php
│   │   │   ├── GitDownloader.php
│   │   │   ├── GzipDownloader.php
│   │   │   ├── HgDownloader.php
│   │   │   ├── MaxFileSizeExceededException.php
│   │   │   ├── PathDownloader.php
│   │   │   ├── PerforceDownloader.php
│   │   │   ├── PharDownloader.php
│   │   │   ├── RarDownloader.php
│   │   │   ├── SvnDownloader.php
│   │   │   ├── TarDownloader.php
│   │   │   ├── TransportException.php
│   │   │   ├── VcsCapableDownloaderInterface.php
│   │   │   ├── VcsDownloader.php
│   │   │   ├── XzDownloader.php
│   │   │   └── ZipDownloader.php
│   │   ├── EventDispatcher/
│   │   │   ├── Event.php
│   │   │   ├── EventDispatcher.php
│   │   │   ├── EventSubscriberInterface.php
│   │   │   └── ScriptExecutionException.php
│   │   ├── Exception/
│   │   │   ├── IrrecoverableDownloadException.php
│   │   │   └── NoSslException.php
│   │   ├── Factory.php
│   │   ├── Filter/
│   │   │   └── PlatformRequirementFilter/
│   │   │       ├── IgnoreAllPlatformRequirementFilter.php
│   │   │       ├── IgnoreListPlatformRequirementFilter.php
│   │   │       ├── IgnoreNothingPlatformRequirementFilter.php
│   │   │       ├── PlatformRequirementFilterFactory.php
│   │   │       └── PlatformRequirementFilterInterface.php
│   │   ├── IO/
│   │   │   ├── BaseIO.php
│   │   │   ├── BufferIO.php
│   │   │   ├── ConsoleIO.php
│   │   │   ├── IOInterface.php
│   │   │   └── NullIO.php
│   │   ├── InstalledVersions.php
│   │   ├── Installer/
│   │   │   ├── BinaryInstaller.php
│   │   │   ├── BinaryPresenceInterface.php
│   │   │   ├── InstallationManager.php
│   │   │   ├── InstallerEvent.php
│   │   │   ├── InstallerEvents.php
│   │   │   ├── InstallerInterface.php
│   │   │   ├── LibraryInstaller.php
│   │   │   ├── MetapackageInstaller.php
│   │   │   ├── NoopInstaller.php
│   │   │   ├── PackageEvent.php
│   │   │   ├── PackageEvents.php
│   │   │   ├── PluginInstaller.php
│   │   │   ├── ProjectInstaller.php
│   │   │   └── SuggestedPackagesReporter.php
│   │   ├── Installer.php
│   │   ├── Json/
│   │   │   ├── JsonFile.php
│   │   │   ├── JsonFormatter.php
│   │   │   ├── JsonManipulator.php
│   │   │   └── JsonValidationException.php
│   │   ├── PHPStan/
│   │   │   ├── ConfigReturnTypeExtension.php
│   │   │   └── RuleReasonDataReturnTypeExtension.php
│   │   ├── Package/
│   │   │   ├── AliasPackage.php
│   │   │   ├── Archiver/
│   │   │   │   ├── ArchivableFilesFilter.php
│   │   │   │   ├── ArchivableFilesFinder.php
│   │   │   │   ├── ArchiveManager.php
│   │   │   │   ├── ArchiverInterface.php
│   │   │   │   ├── BaseExcludeFilter.php
│   │   │   │   ├── ComposerExcludeFilter.php
│   │   │   │   ├── GitExcludeFilter.php
│   │   │   │   ├── PharArchiver.php
│   │   │   │   └── ZipArchiver.php
│   │   │   ├── BasePackage.php
│   │   │   ├── Comparer/
│   │   │   │   └── Comparer.php
│   │   │   ├── CompleteAliasPackage.php
│   │   │   ├── CompletePackage.php
│   │   │   ├── CompletePackageInterface.php
│   │   │   ├── Dumper/
│   │   │   │   └── ArrayDumper.php
│   │   │   ├── Link.php
│   │   │   ├── Loader/
│   │   │   │   ├── ArrayLoader.php
│   │   │   │   ├── InvalidPackageException.php
│   │   │   │   ├── JsonLoader.php
│   │   │   │   ├── LoaderInterface.php
│   │   │   │   ├── RootPackageLoader.php
│   │   │   │   └── ValidatingArrayLoader.php
│   │   │   ├── Locker.php
│   │   │   ├── Package.php
│   │   │   ├── PackageInterface.php
│   │   │   ├── RootAliasPackage.php
│   │   │   ├── RootPackage.php
│   │   │   ├── RootPackageInterface.php
│   │   │   └── Version/
│   │   │       ├── StabilityFilter.php
│   │   │       ├── VersionBumper.php
│   │   │       ├── VersionGuesser.php
│   │   │       ├── VersionParser.php
│   │   │       └── VersionSelector.php
│   │   ├── PartialComposer.php
│   │   ├── Platform/
│   │   │   ├── HhvmDetector.php
│   │   │   ├── Runtime.php
│   │   │   └── Version.php
│   │   ├── Plugin/
│   │   │   ├── Capability/
│   │   │   │   ├── Capability.php
│   │   │   │   └── CommandProvider.php
│   │   │   ├── Capable.php
│   │   │   ├── CommandEvent.php
│   │   │   ├── PluginBlockedException.php
│   │   │   ├── PluginEvents.php
│   │   │   ├── PluginInterface.php
│   │   │   ├── PluginManager.php
│   │   │   ├── PostFileDownloadEvent.php
│   │   │   ├── PreCommandRunEvent.php
│   │   │   ├── PreFileDownloadEvent.php
│   │   │   └── PrePoolCreateEvent.php
│   │   ├── Question/
│   │   │   └── StrictConfirmationQuestion.php
│   │   ├── Repository/
│   │   │   ├── AdvisoryProviderInterface.php
│   │   │   ├── ArrayRepository.php
│   │   │   ├── ArtifactRepository.php
│   │   │   ├── CanonicalPackagesTrait.php
│   │   │   ├── ComposerRepository.php
│   │   │   ├── CompositeRepository.php
│   │   │   ├── ConfigurableRepositoryInterface.php
│   │   │   ├── FilesystemRepository.php
│   │   │   ├── FilterRepository.php
│   │   │   ├── InstalledArrayRepository.php
│   │   │   ├── InstalledFilesystemRepository.php
│   │   │   ├── InstalledRepository.php
│   │   │   ├── InstalledRepositoryInterface.php
│   │   │   ├── InvalidRepositoryException.php
│   │   │   ├── LockArrayRepository.php
│   │   │   ├── PackageRepository.php
│   │   │   ├── PathRepository.php
│   │   │   ├── PearRepository.php
│   │   │   ├── PlatformRepository.php
│   │   │   ├── RepositoryFactory.php
│   │   │   ├── RepositoryInterface.php
│   │   │   ├── RepositoryManager.php
│   │   │   ├── RepositorySecurityException.php
│   │   │   ├── RepositorySet.php
│   │   │   ├── RepositoryUtils.php
│   │   │   ├── RootPackageRepository.php
│   │   │   ├── Vcs/
│   │   │   │   ├── ForgejoDriver.php
│   │   │   │   ├── FossilDriver.php
│   │   │   │   ├── GitBitbucketDriver.php
│   │   │   │   ├── GitDriver.php
│   │   │   │   ├── GitHubDriver.php
│   │   │   │   ├── GitLabDriver.php
│   │   │   │   ├── HgDriver.php
│   │   │   │   ├── PerforceDriver.php
│   │   │   │   ├── SvnDriver.php
│   │   │   │   ├── VcsDriver.php
│   │   │   │   └── VcsDriverInterface.php
│   │   │   ├── VcsRepository.php
│   │   │   ├── VersionCacheInterface.php
│   │   │   ├── WritableArrayRepository.php
│   │   │   └── WritableRepositoryInterface.php
│   │   ├── Script/
│   │   │   ├── Event.php
│   │   │   └── ScriptEvents.php
│   │   ├── SelfUpdate/
│   │   │   ├── Keys.php
│   │   │   └── Versions.php
│   │   └── Util/
│   │       ├── AuthHelper.php
│   │       ├── Bitbucket.php
│   │       ├── ComposerMirror.php
│   │       ├── ConfigValidator.php
│   │       ├── ErrorHandler.php
│   │       ├── Filesystem.php
│   │       ├── Forgejo.php
│   │       ├── ForgejoRepositoryData.php
│   │       ├── ForgejoUrl.php
│   │       ├── Git.php
│   │       ├── GitHub.php
│   │       ├── GitLab.php
│   │       ├── Hg.php
│   │       ├── Http/
│   │       │   ├── CurlDownloader.php
│   │       │   ├── CurlResponse.php
│   │       │   ├── ProxyItem.php
│   │       │   ├── ProxyManager.php
│   │       │   ├── RequestProxy.php
│   │       │   └── Response.php
│   │       ├── HttpDownloader.php
│   │       ├── IniHelper.php
│   │       ├── Loop.php
│   │       ├── MetadataMinifier.php
│   │       ├── NoProxyPattern.php
│   │       ├── PackageInfo.php
│   │       ├── PackageSorter.php
│   │       ├── Perforce.php
│   │       ├── Platform.php
│   │       ├── ProcessExecutor.php
│   │       ├── RemoteFilesystem.php
│   │       ├── Silencer.php
│   │       ├── StreamContextFactory.php
│   │       ├── Svn.php
│   │       ├── SyncHelper.php
│   │       ├── Tar.php
│   │       ├── TlsHelper.php
│   │       ├── Url.php
│   │       └── Zip.php
│   └── bootstrap.php
└── tests/
    ├── Composer/
    │   └── Test/
    │       ├── Advisory/
    │       │   ├── AuditConfigTest.php
    │       │   └── AuditorTest.php
    │       ├── AllFunctionalTest.php
    │       ├── ApplicationTest.php
    │       ├── Autoload/
    │       │   ├── AutoloadGeneratorTest.php
    │       │   ├── ClassLoaderTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── Namespaced/
    │       │   │   │   └── Foo.php
    │       │   │   ├── Pearlike/
    │       │   │   │   └── Foo.php
    │       │   │   ├── SubNamespace/
    │       │   │   │   ├── Bar.php
    │       │   │   │   └── Foo.php
    │       │   │   ├── autoload_classmap.php
    │       │   │   ├── autoload_classmap2.php
    │       │   │   ├── autoload_classmap3.php
    │       │   │   ├── autoload_classmap4.php
    │       │   │   ├── autoload_classmap5.php
    │       │   │   ├── autoload_classmap6.php
    │       │   │   ├── autoload_classmap7.php
    │       │   │   ├── autoload_classmap8.php
    │       │   │   ├── autoload_classmap9.php
    │       │   │   ├── autoload_files.php
    │       │   │   ├── autoload_files2.php
    │       │   │   ├── autoload_files_duplicates.php
    │       │   │   ├── autoload_files_files_by_dependency.php
    │       │   │   ├── autoload_files_functions.php
    │       │   │   ├── autoload_files_functions_with_removed_extra.php
    │       │   │   ├── autoload_files_target_dir.php
    │       │   │   ├── autoload_functions.php
    │       │   │   ├── autoload_functions_by_dependency.php
    │       │   │   ├── autoload_main.php
    │       │   │   ├── autoload_main2.php
    │       │   │   ├── autoload_main3.php
    │       │   │   ├── autoload_main4.php
    │       │   │   ├── autoload_main5.php
    │       │   │   ├── autoload_phar.php
    │       │   │   ├── autoload_phar_psr4.php
    │       │   │   ├── autoload_phar_static.php
    │       │   │   ├── autoload_psr4.php
    │       │   │   ├── autoload_psr4_2.php
    │       │   │   ├── autoload_psr4_3.php
    │       │   │   ├── autoload_real_files_by_dependency.php
    │       │   │   ├── autoload_real_functions.php
    │       │   │   ├── autoload_real_functions_with_include_paths.php
    │       │   │   ├── autoload_real_functions_with_removed_include_paths_and_autolad_files.php
    │       │   │   ├── autoload_real_include_path.php
    │       │   │   ├── autoload_real_target_dir.php
    │       │   │   ├── autoload_static_files_by_dependency.php
    │       │   │   ├── autoload_static_functions.php
    │       │   │   ├── autoload_static_functions_with_include_paths.php
    │       │   │   ├── autoload_static_functions_with_removed_include_paths_and_autolad_files.php
    │       │   │   ├── autoload_static_include_path.php
    │       │   │   ├── autoload_static_target_dir.php
    │       │   │   ├── autoload_target_dir.php
    │       │   │   ├── autoload_vendors.php
    │       │   │   ├── autoload_vendors_meta.php
    │       │   │   ├── include_paths.php
    │       │   │   ├── include_paths_functions.php
    │       │   │   ├── include_paths_functions_with_removed_extra.php
    │       │   │   └── platform/
    │       │   │       ├── no_extensions_required.php
    │       │   │       ├── no_php_required.php
    │       │   │       ├── no_php_upper_bound.php
    │       │   │       ├── php_64bit_required.php
    │       │   │       ├── replaced_provided_exts.php
    │       │   │       ├── specific_php_64bit_required.php
    │       │   │       ├── specific_php_release.php
    │       │   │       └── typical.php
    │       │   └── MinimumVersionSupport/
    │       │       ├── .gitignore
    │       │       ├── Foo.php
    │       │       ├── composer.json
    │       │       ├── main.php
    │       │       └── test.php
    │       ├── CacheTest.php
    │       ├── Command/
    │       │   ├── AboutCommandTest.php
    │       │   ├── ArchiveCommandTest.php
    │       │   ├── AuditCommandTest.php
    │       │   ├── BaseDependencyCommandTest.php
    │       │   ├── BumpCommandTest.php
    │       │   ├── CheckPlatformReqsCommandTest.php
    │       │   ├── ClearCacheCommandTest.php
    │       │   ├── ConfigCommandTest.php
    │       │   ├── DiagnoseCommandTest.php
    │       │   ├── DumpAutoloadCommandTest.php
    │       │   ├── ExecCommandTest.php
    │       │   ├── FundCommandTest.php
    │       │   ├── GlobalCommandTest.php
    │       │   ├── HomeCommandTest.php
    │       │   ├── InitCommandTest.php
    │       │   ├── InstallCommandTest.php
    │       │   ├── LicensesCommandTest.php
    │       │   ├── ReinstallCommandTest.php
    │       │   ├── RemoveCommandTest.php
    │       │   ├── RepositoryCommandTest.php
    │       │   ├── RequireCommandTest.php
    │       │   ├── RunScriptCommandTest.php
    │       │   ├── SearchCommandTest.php
    │       │   ├── SelfUpdateCommandTest.php
    │       │   ├── ShowCommandTest.php
    │       │   ├── StatusCommandTest.php
    │       │   ├── SuggestsCommandTest.php
    │       │   ├── UpdateCommandTest.php
    │       │   └── ValidateCommandTest.php
    │       ├── CompletionFunctionalTest.php
    │       ├── ComposerTest.php
    │       ├── Config/
    │       │   ├── Fixtures/
    │       │   │   ├── addLink/
    │       │   │   │   ├── conflict-from-empty.json
    │       │   │   │   ├── conflict-from-oneOfEverything.json
    │       │   │   │   ├── conflict-from-twoOfEverything.json
    │       │   │   │   ├── provide-from-empty.json
    │       │   │   │   ├── provide-from-oneOfEverything.json
    │       │   │   │   ├── provide-from-twoOfEverything.json
    │       │   │   │   ├── replace-from-empty.json
    │       │   │   │   ├── replace-from-oneOfEverything.json
    │       │   │   │   ├── replace-from-twoOfEverything.json
    │       │   │   │   ├── require-dev-from-empty.json
    │       │   │   │   ├── require-dev-from-oneOfEverything.json
    │       │   │   │   ├── require-dev-from-twoOfEverything.json
    │       │   │   │   ├── require-from-empty.json
    │       │   │   │   ├── require-from-oneOfEverything.json
    │       │   │   │   ├── require-from-twoOfEverything.json
    │       │   │   │   ├── suggest-from-empty.json
    │       │   │   │   ├── suggest-from-oneOfEverything.json
    │       │   │   │   └── suggest-from-twoOfEverything.json
    │       │   │   ├── composer-empty.json
    │       │   │   ├── composer-one-of-everything.json
    │       │   │   ├── composer-repositories.json
    │       │   │   ├── composer-two-of-everything.json
    │       │   │   ├── config/
    │       │   │   │   ├── config-with-exampletld-repository-and-options.json
    │       │   │   │   ├── config-with-exampletld-repository-as-list.json
    │       │   │   │   ├── config-with-exampletld-repository.json
    │       │   │   │   └── config-with-packagist-false.json
    │       │   │   └── removeLink/
    │       │   │       ├── conflict-to-empty-after.json
    │       │   │       ├── conflict-to-empty.json
    │       │   │       ├── conflict-to-oneOfEverything.json
    │       │   │       ├── conflict-to-twoOfEverything.json
    │       │   │       ├── provide-to-empty-after.json
    │       │   │       ├── provide-to-empty.json
    │       │   │       ├── provide-to-oneOfEverything.json
    │       │   │       ├── provide-to-twoOfEverything.json
    │       │   │       ├── replace-to-empty-after.json
    │       │   │       ├── replace-to-empty.json
    │       │   │       ├── replace-to-oneOfEverything.json
    │       │   │       ├── replace-to-twoOfEverything.json
    │       │   │       ├── require-dev-to-empty-after.json
    │       │   │       ├── require-dev-to-empty.json
    │       │   │       ├── require-dev-to-oneOfEverything.json
    │       │   │       ├── require-dev-to-twoOfEverything.json
    │       │   │       ├── require-to-empty-after.json
    │       │   │       ├── require-to-empty.json
    │       │   │       ├── require-to-oneOfEverything.json
    │       │   │       ├── require-to-twoOfEverything.json
    │       │   │       ├── suggest-to-empty-after.json
    │       │   │       ├── suggest-to-empty.json
    │       │   │       ├── suggest-to-oneOfEverything.json
    │       │   │       └── suggest-to-twoOfEverything.json
    │       │   └── JsonConfigSourceTest.php
    │       ├── ConfigTest.php
    │       ├── Console/
    │       │   └── HtmlOutputFormatterTest.php
    │       ├── DefaultConfigTest.php
    │       ├── DependencyResolver/
    │       │   ├── DefaultPolicyTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── poolbuilder/
    │       │   │   │   ├── alias-priority-conflicting.test
    │       │   │   │   ├── alias-with-reference.test
    │       │   │   │   ├── constraint-expansion-works-with-exact-versions.test
    │       │   │   │   ├── filter-impossible-packages-locked-replacer.test
    │       │   │   │   ├── filter-impossible-packages-only-required-provides.test
    │       │   │   │   ├── filter-impossible-packages-only-required-replaces.test
    │       │   │   │   ├── filter-impossible-packages-only-required.test
    │       │   │   │   ├── filter-impossible-packages-provides.test
    │       │   │   │   ├── filter-impossible-packages-replaces.test
    │       │   │   │   ├── filter-impossible-packages.test
    │       │   │   │   ├── fixed-packages-do-not-load-from-repos.test
    │       │   │   │   ├── fixed-packages-replaced-do-not-load-from-repos.test
    │       │   │   │   ├── load-replaced-package-if-replacer-dropped.test
    │       │   │   │   ├── load-replaced-root-package-if-replacer-dropped.test
    │       │   │   │   ├── mirrored-path-repo/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── multi-repo-replace-partial-update-all.test
    │       │   │   │   ├── multi-repo-replace.test
    │       │   │   │   ├── must-expand-root-reqs.test
    │       │   │   │   ├── package-versions-are-not-loaded-if-not-required-expansion.test
    │       │   │   │   ├── package-versions-are-not-loaded-if-not-required-recursive.test
    │       │   │   │   ├── packages-that-do-not-exist.test
    │       │   │   │   ├── partial-update-transitive-deps-no-root-unfix.test
    │       │   │   │   ├── partial-update-transitive-deps-unfix.test
    │       │   │   │   ├── partial-update-unfixes-path-repo-replacer-with-transitive-deps.test
    │       │   │   │   ├── partial-update-unfixes-path-repos-always-but-not-their-transitive-deps.test
    │       │   │   │   ├── partial-update-unfixing-locked-deps.test
    │       │   │   │   ├── partial-update-unfixing-replacers.test
    │       │   │   │   ├── partial-update-unfixing-with-replacers-providers.test
    │       │   │   │   ├── partial-update-unfixing-with-replacers.test
    │       │   │   │   ├── partial-update.test
    │       │   │   │   ├── root-requirements-avoid-loading-further-versions.test
    │       │   │   │   ├── stability-flags-take-over-minimum-stability-and-filter-packages.test
    │       │   │   │   ├── symlinked-path-repo/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symlinked-path-repo-replacer/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── symlinked-path-repo-with-replaced-deps/
    │       │   │   │       └── composer.json
    │       │   │   └── pooloptimizer/
    │       │   │       ├── aliases.test
    │       │   │       ├── basic-prefer-highest.test
    │       │   │       ├── basic-prefer-lowest.test
    │       │   │       ├── complex-prefer-lowest.test
    │       │   │       ├── conflict.test
    │       │   │       ├── conflict2.test
    │       │   │       ├── group-by-required.test
    │       │   │       ├── locked-fixed-untouched.test
    │       │   │       └── replaces.test
    │       │   ├── PoolBuilderTest.php
    │       │   ├── PoolOptimizerTest.php
    │       │   ├── PoolTest.php
    │       │   ├── RequestTest.php
    │       │   ├── RuleSetIteratorTest.php
    │       │   ├── RuleSetTest.php
    │       │   ├── RuleTest.php
    │       │   ├── SecurityAdvisoryPoolFilterTest.php
    │       │   ├── SolverTest.php
    │       │   └── TransactionTest.php
    │       ├── DocumentationTest.php
    │       ├── Downloader/
    │       │   ├── ArchiveDownloaderTest.php
    │       │   ├── DownloadManagerTest.php
    │       │   ├── FileDownloaderTest.php
    │       │   ├── FossilDownloaderTest.php
    │       │   ├── GitDownloaderTest.php
    │       │   ├── HgDownloaderTest.php
    │       │   ├── PerforceDownloaderTest.php
    │       │   ├── XzDownloaderTest.php
    │       │   └── ZipDownloaderTest.php
    │       ├── EventDispatcher/
    │       │   └── EventDispatcherTest.php
    │       ├── FactoryTest.php
    │       ├── Filter/
    │       │   └── PlatformRequirementFilter/
    │       │       ├── IgnoreAllPlatformRequirementFilterTest.php
    │       │       ├── IgnoreListPlatformRequirementFilterTest.php
    │       │       ├── IgnoreNothingPlatformRequirementFilterTest.php
    │       │       └── PlatformRequirementFilterFactoryTest.php
    │       ├── Fixtures/
    │       │   ├── functional/
    │       │   │   ├── create-project-command.test
    │       │   │   ├── create-project-shows-full-hash-for-dev-packages/
    │       │   │   │   └── packages.json
    │       │   │   ├── create-project-shows-full-hash-for-dev-packages.test
    │       │   │   ├── installed-versions/
    │       │   │   │   ├── Hooks.php
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-console/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── symfony-process/
    │       │   │   │       └── composer.json
    │       │   │   ├── installed-versions.test
    │       │   │   ├── installed-versions2/
    │       │   │   │   ├── Hooks.php
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-console/
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── symfony-process/
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── vendor/
    │       │   │   │       ├── autoload.php
    │       │   │   │       ├── composer/
    │       │   │   │       │   ├── ClassLoader.php
    │       │   │   │       │   ├── InstalledVersions.php
    │       │   │   │       │   ├── LICENSE
    │       │   │   │       │   ├── autoload_classmap.php
    │       │   │   │       │   ├── autoload_files.php
    │       │   │   │       │   ├── autoload_namespaces.php
    │       │   │   │       │   ├── autoload_psr4.php
    │       │   │   │       │   ├── autoload_real.php
    │       │   │   │       │   ├── autoload_static.php
    │       │   │   │       │   ├── installed.json
    │       │   │   │       │   ├── installed.php
    │       │   │   │       │   └── platform_check.php
    │       │   │   │       ├── plugin/
    │       │   │   │       │   ├── a/
    │       │   │   │       │   │   ├── PluginA.php
    │       │   │   │       │   │   └── composer.json
    │       │   │   │       │   └── b/
    │       │   │   │       │       ├── PluginB.php
    │       │   │   │       │       └── composer.json
    │       │   │   │       └── symfony/
    │       │   │   │           ├── console/
    │       │   │   │           │   └── composer.json
    │       │   │   │           ├── filesystem/
    │       │   │   │           │   ├── CHANGELOG.md
    │       │   │   │           │   ├── Exception/
    │       │   │   │           │   │   ├── ExceptionInterface.php
    │       │   │   │           │   │   ├── FileNotFoundException.php
    │       │   │   │           │   │   ├── IOException.php
    │       │   │   │           │   │   ├── IOExceptionInterface.php
    │       │   │   │           │   │   └── InvalidArgumentException.php
    │       │   │   │           │   ├── Filesystem.php
    │       │   │   │           │   ├── LICENSE
    │       │   │   │           │   ├── README.md
    │       │   │   │           │   └── composer.json
    │       │   │   │           ├── polyfill-ctype/
    │       │   │   │           │   ├── Ctype.php
    │       │   │   │           │   ├── LICENSE
    │       │   │   │           │   ├── README.md
    │       │   │   │           │   ├── bootstrap.php
    │       │   │   │           │   ├── bootstrap80.php
    │       │   │   │           │   └── composer.json
    │       │   │   │           └── process/
    │       │   │   │               └── composer.json
    │       │   │   ├── installed-versions2.test
    │       │   │   ├── plugin-autoloading-only-loads-dependencies/
    │       │   │   │   ├── composer.json
    │       │   │   │   ├── deps-pkg/
    │       │   │   │   │   ├── composer.json
    │       │   │   │   │   └── exec.php
    │       │   │   │   ├── evil-pkg/
    │       │   │   │   │   ├── composer.json
    │       │   │   │   │   └── exec.php
    │       │   │   │   ├── plugin-a/
    │       │   │   │   │   ├── PluginA.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   ├── plugin-b/
    │       │   │   │   │   ├── PluginB.php
    │       │   │   │   │   └── composer.json
    │       │   │   │   └── vendor/
    │       │   │   │       ├── autoload.php
    │       │   │   │       ├── composer/
    │       │   │   │       │   ├── ClassLoader.php
    │       │   │   │       │   ├── InstalledVersions.php
    │       │   │   │       │   ├── LICENSE
    │       │   │   │       │   ├── autoload_classmap.php
    │       │   │   │       │   ├── autoload_files.php
    │       │   │   │       │   ├── autoload_namespaces.php
    │       │   │   │       │   ├── autoload_psr4.php
    │       │   │   │       │   ├── autoload_real.php
    │       │   │   │       │   ├── autoload_static.php
    │       │   │   │       │   ├── installed.json
    │       │   │   │       │   └── installed.php
    │       │   │   │       └── evil/
    │       │   │   │           └── pkg/
    │       │   │   │               ├── composer.json
    │       │   │   │               └── exec.php
    │       │   │   └── plugin-autoloading-only-loads-dependencies.test
    │       │   ├── installer/
    │       │   │   ├── SAMPLE
    │       │   │   ├── abandoned-listed.test
    │       │   │   ├── alias-in-complex-constraints.test
    │       │   │   ├── alias-in-lock.test
    │       │   │   ├── alias-in-lock2.test
    │       │   │   ├── alias-on-unloadable-package.test
    │       │   │   ├── alias-solver-problems.test
    │       │   │   ├── alias-solver-problems2.test
    │       │   │   ├── alias-with-reference.test
    │       │   │   ├── aliased-priority-conflicting.test
    │       │   │   ├── aliased-priority.test
    │       │   │   ├── aliases-with-require-dev.test
    │       │   │   ├── broken-deps-do-not-replace.test
    │       │   │   ├── circular-dependency-errors.test
    │       │   │   ├── circular-dependency.test
    │       │   │   ├── circular-dependency2.test
    │       │   │   ├── conflict-against-provided-by-dep-package-works.test
    │       │   │   ├── conflict-against-provided-package-works.test
    │       │   │   ├── conflict-against-replaced-by-dep-package-problem.test
    │       │   │   ├── conflict-against-replaced-package-problem.test
    │       │   │   ├── conflict-between-dependents.test
    │       │   │   ├── conflict-between-root-and-dependent.test
    │       │   │   ├── conflict-downgrade-nested.test
    │       │   │   ├── conflict-downgrade.test
    │       │   │   ├── conflict-on-root-with-alias-prevents-update-if-not-required.test
    │       │   │   ├── conflict-with-alias-in-lock-does-prevents-install.test
    │       │   │   ├── conflict-with-alias-prevents-update-if-not-required.test
    │       │   │   ├── conflict-with-alias-prevents-update.test
    │       │   │   ├── conflict-with-all-dependencies-option-dont-recommend-to-use-it.test
    │       │   │   ├── deduplicate-solver-problems.test
    │       │   │   ├── disjunctive-multi-constraints.test
    │       │   │   ├── full-update-minimal-changes.test
    │       │   │   ├── github-issues-4319.test
    │       │   │   ├── github-issues-4795-2.test
    │       │   │   ├── github-issues-4795.test
    │       │   │   ├── github-issues-7051.test
    │       │   │   ├── github-issues-8902.test
    │       │   │   ├── github-issues-8903.test
    │       │   │   ├── github-issues-9012.test
    │       │   │   ├── github-issues-9290.test
    │       │   │   ├── hint-main-rename.test
    │       │   │   ├── install-aliased-alias.test
    │       │   │   ├── install-branch-alias-composer-repo/
    │       │   │   │   └── packages.json
    │       │   │   ├── install-branch-alias-composer-repo.test
    │       │   │   ├── install-dev-using-dist.test
    │       │   │   ├── install-dev.test
    │       │   │   ├── install-forces-reinstall-if-abandon-changes.test
    │       │   │   ├── install-from-incomplete-lock-with-ignore.test
    │       │   │   ├── install-from-incomplete-lock.test
    │       │   │   ├── install-from-lock-removes-package.test
    │       │   │   ├── install-funding-notice-env.test
    │       │   │   ├── install-funding-notice-not-displayed-env.test
    │       │   │   ├── install-funding-notice.test
    │       │   │   ├── install-ignore-platform-package-requirement-list.test
    │       │   │   ├── install-ignore-platform-package-requirement-wildcard.test
    │       │   │   ├── install-ignore-platform-package-requirements.test
    │       │   │   ├── install-missing-alias-from-lock.test
    │       │   │   ├── install-overridden-platform-packages.test
    │       │   │   ├── install-package-and-its-provider-skips-original.test
    │       │   │   ├── install-prefers-repos-over-package-versions.test
    │       │   │   ├── install-reference.test
    │       │   │   ├── install-security-advisory-matching-dependency.test
    │       │   │   ├── install-self-from-root.test
    │       │   │   ├── install-simple.test
    │       │   │   ├── install-without-lock.test
    │       │   │   ├── load-replaced-package-if-replacer-dropped.test
    │       │   │   ├── outdated-lock-file-fails-install.test
    │       │   │   ├── outdated-lock-file-with-new-platform-reqs-fails.test
    │       │   │   ├── partial-update-always-updates-symlinked-path-repos.test
    │       │   │   ├── partial-update-downgrades-non-allow-listed-unstable.test
    │       │   │   ├── partial-update-forces-dev-reference-from-lock-for-non-updated-packages.test
    │       │   │   ├── partial-update-from-lock-with-root-alias.test
    │       │   │   ├── partial-update-from-lock.test
    │       │   │   ├── partial-update-installs-from-lock-even-missing.test
    │       │   │   ├── partial-update-keeps-older-dep-if-still-required-with-provide.test
    │       │   │   ├── partial-update-keeps-older-dep-if-still-required.test
    │       │   │   ├── partial-update-loads-root-aliases-for-path-repos.test
    │       │   │   ├── partial-update-security-advisory-matching-locked-dep-with-dependencies.test
    │       │   │   ├── partial-update-security-advisory-matching-locked-dep.test
    │       │   │   ├── partial-update-with-dependencies-provide.test
    │       │   │   ├── partial-update-with-dependencies-replace.test
    │       │   │   ├── partial-update-with-deps-warns-root.test
    │       │   │   ├── partial-update-with-symlinked-path-repos.test
    │       │   │   ├── partial-update-without-lock.test
    │       │   │   ├── platform-ext-solver-problems.test
    │       │   │   ├── plugins-are-installed-first.test
    │       │   │   ├── prefer-lowest-branches.test
    │       │   │   ├── problems-reduce-versions.test
    │       │   │   ├── provider-can-coexist-with-other-version-of-provided.test
    │       │   │   ├── provider-conflicts.test
    │       │   │   ├── provider-conflicts2.test
    │       │   │   ├── provider-conflicts3.test
    │       │   │   ├── provider-dev-require-can-satisfy-require.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided-conflict.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided-indirect.test
    │       │   │   ├── provider-gets-picked-together-with-other-version-of-provided.test
    │       │   │   ├── provider-packages-can-be-installed-if-selected.test
    │       │   │   ├── provider-packages-can-be-installed-together-with-provided-if-both-installable.test
    │       │   │   ├── provider-packages-can-not-be-installed-unless-selected.test
    │       │   │   ├── provider-satisfies-its-own-requirement.test
    │       │   │   ├── remove-deletes-unused-deps.test
    │       │   │   ├── remove-does-nothing-if-removal-requires-update-of-dep.test
    │       │   │   ├── replace-alias.test
    │       │   │   ├── replace-priorities.test
    │       │   │   ├── replace-range-require-single-version.test
    │       │   │   ├── replace-root-require.test
    │       │   │   ├── replaced-packages-should-not-be-installed-when-installing-from-lock.test
    │       │   │   ├── replaced-packages-should-not-be-installed.test
    │       │   │   ├── replacer-satisfies-its-own-requirement.test
    │       │   │   ├── repositories-priorities.test
    │       │   │   ├── repositories-priorities2.test
    │       │   │   ├── repositories-priorities3.test
    │       │   │   ├── repositories-priorities4.test
    │       │   │   ├── repositories-priorities5.test
    │       │   │   ├── root-alias-change-with-circular-dep.test
    │       │   │   ├── root-alias-gets-loaded-for-locked-pkgs.test
    │       │   │   ├── root-requirements-do-not-affect-locked-versions.test
    │       │   │   ├── solver-problem-with-hash-in-branch.test
    │       │   │   ├── solver-problems-with-disabled-platform.test
    │       │   │   ├── solver-problems.test
    │       │   │   ├── suggest-installed.test
    │       │   │   ├── suggest-prod-nolock.test
    │       │   │   ├── suggest-prod.test
    │       │   │   ├── suggest-replaced.test
    │       │   │   ├── suggest-uninstalled.test
    │       │   │   ├── unbounded-conflict-does-not-match-default-branch-with-branch-alias.test
    │       │   │   ├── unbounded-conflict-does-not-match-default-branch-with-numeric-branch.test
    │       │   │   ├── unbounded-conflict-matches-default-branch.test
    │       │   │   ├── update-abandoned-package-required-but-blocked-via-audit-config.test
    │       │   │   ├── update-alias-lock.test
    │       │   │   ├── update-alias-lock2.test
    │       │   │   ├── update-alias.test
    │       │   │   ├── update-all-dry-run.test
    │       │   │   ├── update-all.test
    │       │   │   ├── update-allow-list-locked-require.test
    │       │   │   ├── update-allow-list-minimal-changes.test
    │       │   │   ├── update-allow-list-patterns-with-all-dependencies.test
    │       │   │   ├── update-allow-list-patterns-with-dependencies.test
    │       │   │   ├── update-allow-list-patterns-with-root-dependencies.test
    │       │   │   ├── update-allow-list-patterns-without-dependencies.test
    │       │   │   ├── update-allow-list-patterns.test
    │       │   │   ├── update-allow-list-reads-lock.test
    │       │   │   ├── update-allow-list-removes-unused.test
    │       │   │   ├── update-allow-list-require-new-replace.test
    │       │   │   ├── update-allow-list-warns-non-existing-patterns.test
    │       │   │   ├── update-allow-list-with-dependencies-alias.test
    │       │   │   ├── update-allow-list-with-dependencies-new-requirement.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new-replace-mutual.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new-replace.test
    │       │   │   ├── update-allow-list-with-dependencies-require-new.test
    │       │   │   ├── update-allow-list-with-dependencies.test
    │       │   │   ├── update-allow-list-with-dependency-conflict.test
    │       │   │   ├── update-allow-list.test
    │       │   │   ├── update-changes-url.test
    │       │   │   ├── update-dev-ignores-providers.test
    │       │   │   ├── update-dev-packages-updates-repo-url.test
    │       │   │   ├── update-dev-to-new-ref-picks-up-changes.test
    │       │   │   ├── update-downgrades-unstable-packages.test
    │       │   │   ├── update-ignore-platform-package-requirement-list-upper-bounds.test
    │       │   │   ├── update-ignore-platform-package-requirement-list.test
    │       │   │   ├── update-ignore-platform-package-requirement-wildcard.test
    │       │   │   ├── update-ignore-platform-package-requirements.test
    │       │   │   ├── update-installed-alias-dry-run.test
    │       │   │   ├── update-installed-alias.test
    │       │   │   ├── update-installed-reference-dry-run.test
    │       │   │   ├── update-installed-reference.test
    │       │   │   ├── update-mirrors-changes-url.test
    │       │   │   ├── update-mirrors-fails-with-new-req.test
    │       │   │   ├── update-no-dev-still-resolves-dev.test
    │       │   │   ├── update-no-install.test
    │       │   │   ├── update-package-present-in-lock-but-not-at-all-in-remote.test
    │       │   │   ├── update-package-present-in-lock-but-not-in-remote-due-to-min-stability.test
    │       │   │   ├── update-package-present-in-lock-but-not-in-remote.test
    │       │   │   ├── update-package-present-in-lower-repo-prio-but-not-main-due-to-min-stability.test
    │       │   │   ├── update-picks-up-change-of-vcs-type.test
    │       │   │   ├── update-prefer-lowest-stable.test
    │       │   │   ├── update-reference-picks-latest.test
    │       │   │   ├── update-reference.test
    │       │   │   ├── update-removes-unused-locked-dep.test
    │       │   │   ├── update-requiring-decision-reverts-and-learning-positive-literals.test
    │       │   │   ├── update-security-advisory-matching-direct-dependency.test
    │       │   │   ├── update-security-advisory-matching-indirect-dependency.test
    │       │   │   ├── update-syncs-outdated.test
    │       │   │   ├── update-to-empty-from-blank.test
    │       │   │   ├── update-to-empty-from-locked.test
    │       │   │   ├── update-with-all-dependencies.test
    │       │   │   ├── update-without-lock.test
    │       │   │   ├── updating-dev-from-lock-removes-old-deps.test
    │       │   │   └── updating-dev-updates-url-and-reference.test
    │       │   └── installer-slow/
    │       │       └── github-issues-7665.test
    │       ├── IO/
    │       │   ├── BufferIOTest.php
    │       │   ├── ConsoleIOTest.php
    │       │   └── NullIOTest.php
    │       ├── InstalledVersionsTest.php
    │       ├── Installer/
    │       │   ├── BinaryInstallerTest.php
    │       │   ├── InstallationManagerTest.php
    │       │   ├── InstallerEventTest.php
    │       │   ├── LibraryInstallerTest.php
    │       │   ├── MetapackageInstallerTest.php
    │       │   └── SuggestedPackagesReporterTest.php
    │       ├── InstallerTest.php
    │       ├── Json/
    │       │   ├── ComposerSchemaTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── composer-lock-merge-conflict-complex-crlf.txt
    │       │   │   ├── composer-lock-merge-conflict-complex.txt
    │       │   │   ├── composer-lock-merge-conflict-extended.txt
    │       │   │   ├── composer-lock-merge-conflict-simple-crlf.txt
    │       │   │   ├── composer-lock-merge-conflict-simple.txt
    │       │   │   ├── composer.json
    │       │   │   └── tabs.json
    │       │   ├── JsonFileTest.php
    │       │   ├── JsonFormatterTest.php
    │       │   ├── JsonManipulatorTest.php
    │       │   └── JsonValidationExceptionTest.php
    │       ├── Mock/
    │       │   ├── FactoryMock.php
    │       │   ├── HttpDownloaderMock.php
    │       │   ├── IOMock.php
    │       │   ├── InstallationManagerMock.php
    │       │   ├── InstalledFilesystemRepositoryMock.php
    │       │   ├── ProcessExecutorMock.php
    │       │   └── VersionGuesserMock.php
    │       ├── Package/
    │       │   ├── Archiver/
    │       │   │   ├── ArchivableFilesFinderTest.php
    │       │   │   ├── ArchiveManagerTest.php
    │       │   │   ├── ArchiverTestCase.php
    │       │   │   ├── GitExcludeFilterTest.php
    │       │   │   ├── PharArchiverTest.php
    │       │   │   └── ZipArchiverTest.php
    │       │   ├── BasePackageTest.php
    │       │   ├── CompletePackageTest.php
    │       │   ├── Dumper/
    │       │   │   └── ArrayDumperTest.php
    │       │   ├── Loader/
    │       │   │   ├── ArrayLoaderTest.php
    │       │   │   ├── RootPackageLoaderTest.php
    │       │   │   └── ValidatingArrayLoaderTest.php
    │       │   ├── LockerTest.php
    │       │   ├── RootAliasPackageTest.php
    │       │   └── Version/
    │       │       ├── VersionBumperTest.php
    │       │       ├── VersionGuesserTest.php
    │       │       ├── VersionParserTest.php
    │       │       └── VersionSelectorTest.php
    │       ├── Platform/
    │       │   ├── HhvmDetectorTest.php
    │       │   ├── RuntimeTest.php
    │       │   └── VersionTest.php
    │       ├── Plugin/
    │       │   ├── Fixtures/
    │       │   │   ├── files_autoload_which_should_not_run.php
    │       │   │   ├── plugin-v1/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v2/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v3/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v4/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   ├── Plugin1.php
    │       │   │   │   │   └── Plugin2.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v5/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin5.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v6/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin6.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v7/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   └── Plugin7.php
    │       │   │   │   └── composer.json
    │       │   │   ├── plugin-v8/
    │       │   │   │   ├── Installer/
    │       │   │   │   │   ├── CommandProvider.php
    │       │   │   │   │   └── Plugin8.php
    │       │   │   │   └── composer.json
    │       │   │   └── plugin-v9/
    │       │   │       ├── Installer/
    │       │   │       │   └── Plugin.php
    │       │   │       └── composer.json
    │       │   ├── Mock/
    │       │   │   ├── Capability.php
    │       │   │   └── CapablePluginInterface.php
    │       │   └── PluginInstallerTest.php
    │       ├── Question/
    │       │   └── StrictConfirmationQuestionTest.php
    │       ├── Repository/
    │       │   ├── ArrayRepositoryTest.php
    │       │   ├── ArtifactRepositoryTest.php
    │       │   ├── ComposerRepositoryTest.php
    │       │   ├── CompositeRepositoryTest.php
    │       │   ├── FilesystemRepositoryTest.php
    │       │   ├── FilterRepositoryTest.php
    │       │   ├── Fixtures/
    │       │   │   ├── installed.php
    │       │   │   ├── installed_complex.php
    │       │   │   ├── installed_relative.php
    │       │   │   └── path/
    │       │   │       ├── with-version/
    │       │   │       │   └── composer.json
    │       │   │       └── without-version/
    │       │   │           └── composer.json
    │       │   ├── InstalledRepositoryTest.php
    │       │   ├── PathRepositoryTest.php
    │       │   ├── PlatformRepositoryTest.php
    │       │   ├── RepositoryFactoryTest.php
    │       │   ├── RepositoryManagerTest.php
    │       │   ├── RepositoryUtilsTest.php
    │       │   ├── Vcs/
    │       │   │   ├── ForgejoDriverTest.php
    │       │   │   ├── FossilDriverTest.php
    │       │   │   ├── GitBitbucketDriverTest.php
    │       │   │   ├── GitDriverTest.php
    │       │   │   ├── GitHubDriverTest.php
    │       │   │   ├── GitLabDriverTest.php
    │       │   │   ├── HgDriverTest.php
    │       │   │   ├── PerforceDriverTest.php
    │       │   │   └── SvnDriverTest.php
    │       │   └── VcsRepositoryTest.php
    │       ├── Script/
    │       │   └── EventTest.php
    │       ├── TestCase.php
    │       └── Util/
    │           ├── AuthHelperTest.php
    │           ├── BitbucketTest.php
    │           ├── ConfigValidatorTest.php
    │           ├── ErrorHandlerTest.php
    │           ├── FilesystemTest.php
    │           ├── Fixtures/
    │           │   ├── composer_commit-ref.json
    │           │   ├── composer_provide-replace-requirements.json
    │           │   ├── composer_scripts-aliases.json
    │           │   └── composer_scripts-descriptions.json
    │           ├── ForgejoTest.php
    │           ├── ForgejoUrlTest.php
    │           ├── GitHubTest.php
    │           ├── GitLabTest.php
    │           ├── GitTest.php
    │           ├── Http/
    │           │   ├── ProxyItemTest.php
    │           │   ├── ProxyManagerTest.php
    │           │   └── RequestProxyTest.php
    │           ├── HttpDownloaderTest.php
    │           ├── IniHelperTest.php
    │           ├── MetadataMinifierTest.php
    │           ├── NoProxyPatternTest.php
    │           ├── PackageSorterTest.php
    │           ├── PerforceTest.php
    │           ├── PlatformTest.php
    │           ├── ProcessExecutorTest.php
    │           ├── RemoteFilesystemTest.php
    │           ├── SilencerTest.php
    │           ├── StreamContextFactoryTest.php
    │           ├── SvnTest.php
    │           ├── TarTest.php
    │           ├── TlsHelperTest.php
    │           ├── UrlTest.php
    │           └── ZipTest.php
    ├── bootstrap.php
    ├── complete.phpunit.xml
    └── console-application.php
Download .txt
Showing preview only (489K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4774 symbols across 512 files)

FILE: src/Composer/Advisory/AuditConfig.php
  class AuditConfig (line 21) | class AuditConfig
    method __construct (line 93) | public function __construct(bool $audit, string $auditFormat, string $...
    method parseIgnoreWithApply (line 118) | private static function parseIgnoreWithApply(array $config): array
    method fromConfig (line 177) | public static function fromConfig(Config $config, bool $audit = true, ...

FILE: src/Composer/Advisory/Auditor.php
  class Auditor (line 30) | class Auditor
    method audit (line 75) | public function audit(IOInterface $io, RepositorySet $repoSet, array $...
    method needsCompleteAdvisoryLoad (line 165) | public function needsCompleteAdvisoryLoad(array $advisories, array $ig...
    method filterAbandonedPackages (line 190) | public function filterAbandonedPackages(array $packages, array $ignore...
    method processAdvisories (line 208) | public function processAdvisories(array $allAdvisories, array $ignoreL...
    method countAdvisories (line 274) | private function countAdvisories(array $advisories): array
    method outputAdvisories (line 288) | private function outputAdvisories(IOInterface $io, array $advisories, ...
    method outputAdvisoriesTable (line 313) | private function outputAdvisoriesTable(ConsoleIO $io, array $advisorie...
    method outputAdvisoriesPlain (line 355) | private function outputAdvisoriesPlain(IOInterface $io, array $advisor...
    method outputAbandonedPackages (line 385) | private function outputAbandonedPackages(IOInterface $io, array $packa...
    method getPackageNameWithLink (line 421) | private function getPackageNameWithLink(PackageInterface $package): st...
    method getSeverity (line 428) | private function getSeverity(SecurityAdvisory $advisory): string
    method getAdvisoryId (line 437) | private function getAdvisoryId(SecurityAdvisory $advisory): string
    method getCVE (line 446) | private function getCVE(SecurityAdvisory $advisory): string
    method getURL (line 455) | private function getURL(SecurityAdvisory $advisory): string
    method calculateBitmask (line 467) | private function calculateBitmask(bool $hasVulnerablePackages, bool $h...

FILE: src/Composer/Advisory/IgnoredSecurityAdvisory.php
  class IgnoredSecurityAdvisory (line 18) | class IgnoredSecurityAdvisory extends SecurityAdvisory
    method __construct (line 29) | public function __construct(string $packageName, string $advisoryId, C...
    method jsonSerialize (line 39) | #[\ReturnTypeWillChange]

FILE: src/Composer/Advisory/PartialSecurityAdvisory.php
  class PartialSecurityAdvisory (line 21) | class PartialSecurityAdvisory implements JsonSerializable
    method create (line 45) | public static function create(string $packageName, array $data, Versio...
    method __construct (line 66) | public function __construct(string $packageName, string $advisoryId, C...
    method jsonSerialize (line 76) | #[\ReturnTypeWillChange]

FILE: src/Composer/Advisory/SecurityAdvisory.php
  class SecurityAdvisory (line 18) | class SecurityAdvisory extends PartialSecurityAdvisory
    method __construct (line 59) | public function __construct(string $packageName, string $advisoryId, C...
    method toIgnoredAdvisory (line 74) | public function toIgnoredAdvisory(?string $ignoreReason): IgnoredSecur...
    method jsonSerialize (line 93) | #[\ReturnTypeWillChange]

FILE: src/Composer/Autoload/AutoloadGenerator.php
  class AutoloadGenerator (line 43) | class AutoloadGenerator
    method __construct (line 90) | public function __construct(EventDispatcher $eventDispatcher, ?IOInter...
    method setDevMode (line 101) | public function setDevMode(bool $devMode = true)
    method setClassMapAuthoritative (line 111) | public function setClassMapAuthoritative(bool $classMapAuthoritative)
    method setApcu (line 121) | public function setApcu(bool $apcu, ?string $apcuPrefix = null)
    method setRunScripts (line 132) | public function setRunScripts(bool $runScripts = true)
    method setDryRun (line 140) | public function setDryRun(bool $dryRun = true): void
    method setIgnorePlatformRequirements (line 157) | public function setIgnorePlatformRequirements($ignorePlatformReqs)
    method setPlatformRequirementFilter (line 167) | public function setPlatformRequirementFilter(PlatformRequirementFilter...
    method dump (line 177) | public function dump(Config $config, InstalledRepositoryInterface $loc...
    method buildExclusionRegex (line 485) | private function buildExclusionRegex(string $dir, array $excluded): ?s...
    method buildPackageMap (line 527) | public function buildPackageMap(InstallationManager $installationManag...
    method validatePackage (line 550) | protected function validatePackage(PackageInterface $package)
    method parseAutoloads (line 582) | public function parseAutoloads(array $packageMap, PackageInterface $ro...
    method createLoader (line 625) | public function createLoader(array $autoloads, ?string $vendorDir = null)
    method getIncludePathsFile (line 668) | protected function getIncludePathsFile(array $packageMap, Filesystem $...
    method getIncludeFilesFile (line 717) | protected function getIncludeFilesFile(array $files, Filesystem $files...
    method getPathCode (line 762) | protected function getPathCode(Filesystem $filesystem, string $basePat...
    method getPlatformCheck (line 794) | protected function getPlatformCheck(array $packageMap, $checkPlatform,...
    method getAutoloadFile (line 964) | protected function getAutoloadFile(string $vendorPathToTargetDirCode, ...
    method getAutoloadRealFile (line 1006) | protected function getAutoloadRealFile(bool $useClassMap, bool $useInc...
    method getStaticFile (line 1143) | protected function getStaticFile(string $suffix, string $targetDir, st...
    method parseAutoloadsType (line 1242) | protected function parseAutoloadsType(array $packageMap, string $type,...
    method getFileIdentifier (line 1337) | protected function getFileIdentifier(PackageInterface $package, string...
    method filterPackageMap (line 1349) | protected function filterPackageMap(array $packageMap, RootPackageInte...
    method sortPackageMap (line 1403) | protected function sortPackageMap(array $packageMap)
  function composerRequire (line 1428) | function composerRequire(string $fileIdentifier, string $file): void

FILE: src/Composer/Autoload/ClassLoader.php
  class ClassLoader (line 43) | class ClassLoader
    method __construct (line 106) | public function __construct($vendorDir = null)
    method getPrefixes (line 115) | public function getPrefixes()
    method getPrefixesPsr4 (line 127) | public function getPrefixesPsr4()
    method getFallbackDirs (line 135) | public function getFallbackDirs()
    method getFallbackDirsPsr4 (line 143) | public function getFallbackDirsPsr4()
    method getClassMap (line 151) | public function getClassMap()
    method addClassMap (line 161) | public function addClassMap(array $classMap)
    method add (line 180) | public function add($prefix, $paths, $prepend = false)
    method addPsr4 (line 230) | public function addPsr4($prefix, $paths, $prepend = false)
    method set (line 278) | public function set($prefix, $paths)
    method setPsr4 (line 298) | public function setPsr4($prefix, $paths)
    method setUseIncludePath (line 319) | public function setUseIncludePath($useIncludePath)
    method getUseIncludePath (line 330) | public function getUseIncludePath()
    method setClassMapAuthoritative (line 343) | public function setClassMapAuthoritative($classMapAuthoritative)
    method isClassMapAuthoritative (line 353) | public function isClassMapAuthoritative()
    method setApcuPrefix (line 365) | public function setApcuPrefix($apcuPrefix)
    method getApcuPrefix (line 375) | public function getApcuPrefix()
    method register (line 387) | public function register($prepend = false)
    method unregister (line 408) | public function unregister()
    method loadClass (line 423) | public function loadClass($class)
    method findFile (line 442) | public function findFile($class)
    method getRegisteredLoaders (line 482) | public static function getRegisteredLoaders()
    method findFileWithExtension (line 492) | private function findFileWithExtension($class, $ext)
    method initializeIncludeClosure (line 561) | private static function initializeIncludeClosure()

FILE: src/Composer/Autoload/ClassMapGenerator.php
  class ClassMapGenerator (line 32) | class ClassMapGenerator
    method dump (line 40) | public static function dump(iterable $dirs, string $file): void
    method createMap (line 63) | public static function createMap($path, ?string $excluded = null, ?IOI...

FILE: src/Composer/Cache.php
  class Cache (line 27) | class Cache
    method __construct (line 50) | public function __construct(IOInterface $io, string $cacheDir, string ...
    method setReadOnly (line 66) | public function setReadOnly(bool $readOnly)
    method isReadOnly (line 74) | public function isReadOnly()
    method isUsable (line 82) | public static function isUsable(string $path)
    method isEnabled (line 90) | public function isEnabled()
    method getRoot (line 113) | public function getRoot()
    method read (line 121) | public function read(string $file)
    method write (line 138) | public function write(string $file, string $contents)
    method copyFrom (line 190) | public function copyFrom(string $file, string $source)
    method copyTo (line 213) | public function copyTo(string $file, string $target)
    method gcIsNecessary (line 238) | public function gcIsNecessary()
    method remove (line 259) | public function remove(string $file)
    method clear (line 274) | public function clear()
    method getAge (line 289) | public function getAge(string $file)
    method gc (line 304) | public function gc(int $ttl, int $maxSize)
    method gcVcsCache (line 334) | public function gcVcsCache(int $ttl): bool
    method sha1 (line 356) | public function sha1(string $file)
    method sha256 (line 371) | public function sha256(string $file)
    method getFinder (line 386) | protected function getFinder()

FILE: src/Composer/Command/AboutCommand.php
  class AboutCommand (line 22) | class AboutCommand extends BaseCommand
    method configure (line 24) | protected function configure(): void
    method execute (line 37) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/ArchiveCommand.php
  class ArchiveCommand (line 44) | class ArchiveCommand extends BaseCommand
    method configure (line 50) | protected function configure(): void
    method execute (line 78) | protected function execute(InputInterface $input, OutputInterface $out...
    method archive (line 120) | protected function archive(IOInterface $io, Config $config, ?string $p...
    method selectPackage (line 156) | protected function selectPackage(IOInterface $io, string $packageName,...

FILE: src/Composer/Command/AuditCommand.php
  class AuditCommand (line 26) | class AuditCommand extends BaseCommand
    method configure (line 28) | protected function configure(): void
    method execute (line 55) | protected function execute(InputInterface $input, OutputInterface $out...
    method getPackages (line 102) | private function getPackages(Composer $composer, InputInterface $input...

FILE: src/Composer/Command/BaseCommand.php
  class BaseCommand (line 46) | abstract class BaseCommand extends Command
    method getApplication (line 61) | public function getApplication(): Application
    method getComposer (line 79) | public function getComposer(bool $required = true, ?bool $disablePlugi...
    method requireComposer (line 97) | public function requireComposer(?bool $disablePlugins = null, ?bool $d...
    method tryComposer (line 123) | public function tryComposer(?bool $disablePlugins = null, ?bool $disab...
    method setComposer (line 138) | public function setComposer(Composer $composer)
    method resetComposer (line 148) | public function resetComposer()
    method isProxyCommand (line 161) | public function isProxyCommand()
    method getIO (line 169) | public function getIO()
    method setIO (line 186) | public function setIO(IOInterface $io)
    method complete (line 198) | public function complete(CompletionInput $input, CompletionSuggestions...
    method initialize (line 220) | protected function initialize(InputInterface $input, OutputInterface $...
    method createComposerInstance (line 300) | protected function createComposerInstance(InputInterface $input, IOInt...
    method getPreferredInstallOptions (line 321) | protected function getPreferredInstallOptions(Config $config, InputInt...
    method getPlatformRequirementFilter (line 374) | protected function getPlatformRequirementFilter(InputInterface $input)...
    method formatRequirements (line 397) | protected function formatRequirements(array $requirements)
    method normalizeRequirements (line 416) | protected function normalizeRequirements(array $requirements)
    method renderTable (line 428) | protected function renderTable(array $table, OutputInterface $output)
    method getTerminalWidth (line 438) | protected function getTerminalWidth()
    method getAuditFormat (line 457) | protected function getAuditFormat(InputInterface $input, string $optNa...
    method createAuditConfig (line 476) | protected function createAuditConfig(Config $config, InputInterface $i...

FILE: src/Composer/Command/BaseConfigCommand.php
  class BaseConfigCommand (line 24) | abstract class BaseConfigCommand extends BaseCommand
    method initialize (line 41) | protected function initialize(InputInterface $input, OutputInterface $...
    method getComposerConfigFile (line 86) | protected function getComposerConfigFile(InputInterface $input, Config...
    method getAuthConfigFile (line 98) | protected function getAuthConfigFile(InputInterface $input, Config $co...

FILE: src/Composer/Command/BaseDependencyCommand.php
  class BaseDependencyCommand (line 41) | abstract class BaseDependencyCommand extends BaseCommand
    method doExecute (line 57) | protected function doExecute(InputInterface $input, OutputInterface $o...
    method printTable (line 205) | protected function printTable(OutputInterface $output, array $results)...
    method initStyles (line 241) | protected function initStyles(OutputInterface $output): void
    method printTree (line 264) | protected function printTree(array $results, string $prefix = '', int ...
    method writeTreeLine (line 287) | private function writeTreeLine(string $line): void

FILE: src/Composer/Command/BumpCommand.php
  class BumpCommand (line 34) | final class BumpCommand extends BaseCommand
    method configure (line 41) | protected function configure(): void
    method execute (line 73) | protected function execute(InputInterface $input, OutputInterface $out...
    method doBump (line 89) | public function doBump(
    method updateFileCleanly (line 241) | private function updateFileCleanly(JsonFile $json, array $updates): bool

FILE: src/Composer/Command/CheckPlatformReqsCommand.php
  class CheckPlatformReqsCommand (line 25) | class CheckPlatformReqsCommand extends BaseCommand
    method configure (line 27) | protected function configure(): void
    method execute (line 48) | protected function execute(InputInterface $input, OutputInterface $out...
    method printTable (line 175) | protected function printTable(OutputInterface $output, array $results,...

FILE: src/Composer/Command/ClearCacheCommand.php
  class ClearCacheCommand (line 24) | class ClearCacheCommand extends BaseCommand
    method configure (line 26) | protected function configure(): void
    method execute (line 46) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/CompletionTrait.php
  type CompletionTrait (line 31) | trait CompletionTrait
    method requireComposer (line 36) | abstract public function requireComposer(?bool $disablePlugins = null,...
    method suggestPreferInstall (line 43) | private function suggestPreferInstall(): array
    method suggestRootRequirement (line 51) | private function suggestRootRequirement(): \Closure
    method suggestInstalledPackage (line 63) | private function suggestInstalledPackage(bool $includeRootPackage = tr...
    method suggestInstalledPackageTypes (line 123) | private function suggestInstalledPackageTypes(bool $includeRootPackage...
    method suggestAvailablePackage (line 153) | private function suggestAvailablePackage(int $max = 99): \Closure
    method suggestAvailablePackageInclPlatform (line 214) | private function suggestAvailablePackageInclPlatform(): \Closure
    method suggestPlatformPackage (line 230) | private function suggestPlatformPackage(): \Closure

FILE: src/Composer/Command/ConfigCommand.php
  class ConfigCommand (line 37) | class ConfigCommand extends BaseConfigCommand
    method configure (line 69) | protected function configure(): void
    method initialize (line 160) | protected function initialize(InputInterface $input, OutputInterface $...
    method execute (line 180) | protected function execute(InputInterface $input, OutputInterface $out...
    method handleSingleValue (line 933) | protected function handleSingleValue(string $key, array $callbacks, ar...
    method handleMultiValue (line 964) | protected function handleMultiValue(string $key, array $callbacks, arr...
    method listConfiguration (line 983) | protected function listConfiguration(array $contents, array $rawConten...
    method suggestSettingKeys (line 1038) | private function suggestSettingKeys(): \Closure
    method flattenSettingKeys (line 1129) | private function flattenSettingKeys(array $config, string $prefix = ''...

FILE: src/Composer/Command/CreateProjectCommand.php
  class CreateProjectCommand (line 58) | class CreateProjectCommand extends BaseCommand
    method configure (line 67) | protected function configure(): void
    method execute (line 129) | protected function execute(InputInterface $input, OutputInterface $out...
    method installProject (line 180) | public function installProject(IOInterface $io, Config $config, InputI...
    method installRootPackage (line 330) | protected function installRootPackage(InputInterface $input, IOInterfa...

FILE: src/Composer/Command/DependsCommand.php
  class DependsCommand (line 23) | class DependsCommand extends BaseDependencyCommand
    method configure (line 30) | protected function configure(): void
    method execute (line 54) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/DiagnoseCommand.php
  class DiagnoseCommand (line 53) | class DiagnoseCommand extends BaseCommand
    method configure (line 64) | protected function configure(): void
    method execute (line 81) | protected function execute(InputInterface $input, OutputInterface $out...
    method checkComposerSchema (line 254) | private function checkComposerSchema()
    method checkComposerLockSchema (line 281) | private function checkComposerLockSchema(Locker $locker)
    method checkGit (line 299) | private function checkGit(): string
    method checkHttp (line 325) | private function checkHttp(string $proto, Config $config)
    method checkComposerRepo (line 364) | private function checkComposerRepo(string $url, Config $config)
    method checkHttpProxy (line 403) | private function checkHttpProxy(RequestProxy $proxy, string $protocol)
    method checkGithubOauth (line 438) | private function checkGithubOauth(string $domain, string $token)
    method getGithubRateLimit (line 473) | private function getGithubRateLimit(string $domain, ?string $token = n...
    method checkDiskSpace (line 493) | private function checkDiskSpace(Config $config)
    method checkPubKeys (line 512) | private function checkPubKeys(Config $config)
    method checkVersion (line 544) | private function checkVersion(Config $config)
    method checkComposerAudit (line 568) | private function checkComposerAudit(Config $config)
    method getCurlVersion (line 607) | private function getCurlVersion(): string
    method outputResult (line 641) | private function outputResult($result): void
    method checkPlatform (line 690) | private function checkPlatform()
    method checkConnectivity (line 929) | private function checkConnectivity()
    method checkConnectivityAndComposerNetworkHttpEnablement (line 941) | private function checkConnectivityAndComposerNetworkHttpEnablement()
    method checkComposerNetworkHttpEnablement (line 961) | private function checkComposerNetworkHttpEnablement()

FILE: src/Composer/Command/DumpAutoloadCommand.php
  class DumpAutoloadCommand (line 24) | class DumpAutoloadCommand extends BaseCommand
    method configure (line 26) | protected function configure(): void
    method execute (line 55) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/ExecCommand.php
  class ExecCommand (line 23) | class ExecCommand extends BaseCommand
    method configure (line 25) | protected function configure(): void
    method interact (line 51) | protected function interact(InputInterface $input, OutputInterface $ou...
    method execute (line 75) | protected function execute(InputInterface $input, OutputInterface $out...
    method getBinaries (line 125) | private function getBinaries(bool $forDisplay): array

FILE: src/Composer/Command/FundCommand.php
  class FundCommand (line 31) | class FundCommand extends BaseCommand
    method configure (line 33) | protected function configure(): void
    method execute (line 43) | protected function execute(InputInterface $input, OutputInterface $out...
    method insertFundingData (line 134) | private function insertFundingData(array $fundings, CompletePackageInt...

FILE: src/Composer/Command/GlobalCommand.php
  class GlobalCommand (line 30) | class GlobalCommand extends BaseCommand
    method complete (line 32) | public function complete(CompletionInput $input, CompletionSuggestions...
    method configure (line 59) | protected function configure(): void
    method run (line 94) | public function run(InputInterface $input, OutputInterface $output): int
    method prepareSubcommandInput (line 123) | private function prepareSubcommandInput(InputInterface $input, bool $q...
    method isProxyCommand (line 166) | public function isProxyCommand(): bool

FILE: src/Composer/Command/HomeCommand.php
  class HomeCommand (line 29) | class HomeCommand extends BaseCommand
    method configure (line 36) | protected function configure(): void
    method execute (line 60) | protected function execute(InputInterface $input, OutputInterface $out...
    method handlePackage (line 99) | private function handlePackage(CompletePackageInterface $package, bool...
    method openBrowser (line 123) | private function openBrowser(string $url): void
    method initializeRepos (line 151) | private function initializeRepos(): array

FILE: src/Composer/Command/InitCommand.php
  class InitCommand (line 37) | class InitCommand extends BaseCommand
    method configure (line 48) | protected function configure(): void
    method execute (line 82) | protected function execute(InputInterface $input, OutputInterface $out...
    method initialize (line 206) | protected function initialize(InputInterface $input, OutputInterface $...
    method interact (line 224) | protected function interact(InputInterface $input, OutputInterface $ou...
    method parseAuthorString (line 439) | private function parseAuthorString(string $author): array
    method formatAuthors (line 461) | protected function formatAuthors(string $author): array
    method namespaceFromPackageName (line 476) | public function namespaceFromPackageName(string $packageName): ?string
    method getGitConfig (line 498) | protected function getGitConfig(): array
    method hasVendorIgnore (line 530) | protected function hasVendorIgnore(string $ignoreFile, string $vendor ...
    method addVendorIgnore (line 548) | protected function addVendorIgnore(string $ignoreFile, string $vendor ...
    method isValidEmail (line 562) | protected function isValidEmail(string $email): bool
    method updateDependencies (line 572) | private function updateDependencies(OutputInterface $output): void
    method runDumpAutoloadCommand (line 583) | private function runDumpAutoloadCommand(OutputInterface $output): void
    method hasDependencies (line 597) | private function hasDependencies(array $options): bool
    method sanitizePackageNameComponent (line 605) | private function sanitizePackageNameComponent(string $name): string
    method getDefaultPackageName (line 615) | private function getDefaultPackageName(): string
    method getDefaultAuthor (line 640) | private function getDefaultAuthor(): ?string

FILE: src/Composer/Command/InstallCommand.php
  class InstallCommand (line 31) | class InstallCommand extends BaseCommand
    method configure (line 35) | protected function configure(): void
    method execute (line 80) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/LicensesCommand.php
  class LicensesCommand (line 32) | class LicensesCommand extends BaseCommand
    method configure (line 34) | protected function configure(): void
    method execute (line 58) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/OutdatedCommand.php
  class OutdatedCommand (line 24) | class OutdatedCommand extends BaseCommand
    method configure (line 28) | protected function configure(): void
    method execute (line 68) | protected function execute(InputInterface $input, OutputInterface $out...
    method isProxyCommand (line 131) | public function isProxyCommand(): bool

FILE: src/Composer/Command/PackageDiscoveryTrait.php
  type PackageDiscoveryTrait (line 37) | trait PackageDiscoveryTrait
    method getRepos (line 44) | protected function getRepos(): CompositeRepository
    method getRepositorySet (line 59) | private function getRepositorySet(InputInterface $input, ?string $mini...
    method getMinimumStability (line 74) | private function getMinimumStability(InputInterface $input): string
    method determineRequirements (line 97) | final protected function determineRequirements(InputInterface $input, ...
    method findBestVersionAndNameForPackage (line 284) | private function findBestVersionAndNameForPackage(IOInterface $io, Inp...
    method findSimilar (line 399) | private function findSimilar(string $package): array
    method getPlatformExceptionDetails (line 430) | private function getPlatformExceptionDetails(PackageInterface $candida...

FILE: src/Composer/Command/ProhibitsCommand.php
  class ProhibitsCommand (line 23) | class ProhibitsCommand extends BaseDependencyCommand
    method configure (line 30) | protected function configure(): void
    method execute (line 55) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/ReinstallCommand.php
  class ReinstallCommand (line 33) | class ReinstallCommand extends BaseCommand
    method configure (line 37) | protected function configure(): void
    method execute (line 72) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/RemoveCommand.php
  class RemoveCommand (line 35) | class RemoveCommand extends BaseCommand
    method configure (line 39) | protected function configure(): void
    method execute (line 85) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/RepositoryCommand.php
  class RepositoryCommand (line 36) | class RepositoryCommand extends BaseConfigCommand
    method configure (line 38) | protected function configure(): void
    method execute (line 77) | protected function execute(InputInterface $input, OutputInterface $out...
    method listRepositories (line 220) | private function listRepositories(array $repos): void
    method suggestTypeForAdd (line 261) | private function suggestTypeForAdd(): \Closure
    method suggestRepoNames (line 272) | private function suggestRepoNames(): \Closure

FILE: src/Composer/Command/RequireCommand.php
  class RequireCommand (line 50) | class RequireCommand extends BaseCommand
    method configure (line 72) | protected function configure(): void
    method execute (line 129) | protected function execute(InputInterface $input, OutputInterface $out...
    method getInconsistentRequireKeys (line 360) | private function getInconsistentRequireKeys(array $newRequirements, st...
    method getPackagesByRequireKey (line 379) | private function getPackagesByRequireKey(): array
    method doUpdate (line 405) | private function doUpdate(InputInterface $input, OutputInterface $outp...
    method updateRequirementsAfterResolution (line 513) | private function updateRequirementsAfterResolution(array $requirements...
    method updateFile (line 571) | private function updateFile(JsonFile $json, array $new, string $requir...
    method updateFileCleanly (line 591) | private function updateFileCleanly(JsonFile $json, array $new, string ...
    method interact (line 613) | protected function interact(InputInterface $input, OutputInterface $ou...
    method revertComposerFile (line 617) | private function revertComposerFile(): void

FILE: src/Composer/Command/RunScriptCommand.php
  class RunScriptCommand (line 28) | class RunScriptCommand extends BaseCommand
    method configure (line 48) | protected function configure(): void
    method interact (line 76) | protected function interact(InputInterface $input, OutputInterface $ou...
    method execute (line 103) | protected function execute(InputInterface $input, OutputInterface $out...
    method listScripts (line 143) | protected function listScripts(OutputInterface $output): int
    method getScripts (line 165) | private function getScripts(): array

FILE: src/Composer/Command/ScriptAliasCommand.php
  class ScriptAliasCommand (line 25) | class ScriptAliasCommand extends BaseCommand
    method __construct (line 37) | public function __construct(string $script, ?string $description, arra...
    method configure (line 54) | protected function configure(): void
    method execute (line 77) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/SearchCommand.php
  class SearchCommand (line 30) | class SearchCommand extends BaseCommand
    method configure (line 32) | protected function configure(): void
    method execute (line 55) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/SelfUpdateCommand.php
  class SelfUpdateCommand (line 38) | class SelfUpdateCommand extends BaseCommand
    method configure (line 43) | protected function configure(): void
    method execute (line 79) | protected function execute(InputInterface $input, OutputInterface $out...
    method fetchKeys (line 382) | protected function fetchKeys(IOInterface $io, Config $config): void
    method rollback (line 431) | protected function rollback(OutputInterface $output, string $rollbackD...
    method setLocalPhar (line 465) | protected function setLocalPhar(string $localFilename, string $newFile...
    method cleanBackups (line 514) | protected function cleanBackups(string $rollbackDir, ?string $except =...
    method getLastBackupVersion (line 530) | protected function getLastBackupVersion(string $rollbackDir): ?string
    method getOldInstallationFinder (line 543) | protected function getOldInstallationFinder(string $rollbackDir): Finder
    method validatePhar (line 564) | protected function validatePhar(string $pharFile, ?string &$error): bool
    method isWindowsNonAdminUser (line 590) | protected function isWindowsNonAdminUser(): bool
    method tryAsWindowsAdmin (line 611) | protected function tryAsWindowsAdmin(string $localFilename, string $ne...

FILE: src/Composer/Command/ShowCommand.php
  class ShowCommand (line 63) | class ShowCommand extends BaseCommand
    method configure (line 75) | protected function configure(): void
    method suggestPackageBasedOnMode (line 118) | protected function suggestPackageBasedOnMode(): \Closure
    method execute (line 133) | protected function execute(InputInterface $input, OutputInterface $out...
    method printPackages (line 716) | private function printPackages(IOInterface $io, array $packages, strin...
    method getRootRequires (line 787) | protected function getRootRequires(): array
    method getVersionStyle (line 805) | protected function getVersionStyle(PackageInterface $latestPackage, Pa...
    method getPackage (line 817) | protected function getPackage(InstalledRepository $installedRepo, Repo...
    method printPackageInfo (line 869) | protected function printPackageInfo(CompletePackageInterface $package,...
    method printMeta (line 894) | protected function printMeta(CompletePackageInterface $package, array ...
    method printVersions (line 971) | protected function printVersions(CompletePackageInterface $package, ar...
    method printLinks (line 995) | protected function printLinks(CompletePackageInterface $package, strin...
    method printLicenses (line 1011) | protected function printLicenses(CompletePackageInterface $package): void
    method printPackageInfoAsJson (line 1041) | protected function printPackageInfoAsJson(CompletePackageInterface $pa...
    method appendVersions (line 1121) | private function appendVersions(array $json, array $versions): array
    method appendLicenses (line 1134) | private function appendLicenses(array $json, CompletePackageInterface ...
    method appendAutoload (line 1161) | private function appendAutoload(array $json, CompletePackageInterface ...
    method appendLinks (line 1194) | private function appendLinks(array $json, CompletePackageInterface $pa...
    method appendLink (line 1207) | private function appendLink(array $json, CompletePackageInterface $pac...
    method initStyles (line 1225) | protected function initStyles(OutputInterface $output): void
    method displayPackageTree (line 1246) | protected function displayPackageTree(array $arrayTree): void
    method generatePackageTree (line 1296) | protected function generatePackageTree(
    method displayTree (line 1339) | protected function displayTree(
    method addTree (line 1393) | protected function addTree(
    method updateStatusToVersionStyle (line 1433) | private function updateStatusToVersionStyle(string $updateStatus): string
    method getUpdateStatus (line 1441) | private function getUpdateStatus(PackageInterface $latestPackage, Pack...
    method writeTreeLine (line 1460) | private function writeTreeLine(string $line): void
    method findLatestPackage (line 1473) | private function findLatestPackage(PackageInterface $package, Composer...
    method getRepositorySet (line 1537) | private function getRepositorySet(Composer $composer): RepositorySet
    method getRelativeTime (line 1547) | private function getRelativeTime(DateTimeInterface $releaseDate): string

FILE: src/Composer/Command/StatusCommand.php
  class StatusCommand (line 33) | class StatusCommand extends BaseCommand
    method configure (line 42) | protected function configure(): void
    method execute (line 61) | protected function execute(InputInterface $input, OutputInterface $out...
    method doExecute (line 79) | private function doExecute(InputInterface $input): int

FILE: src/Composer/Command/SuggestsCommand.php
  class SuggestsCommand (line 24) | class SuggestsCommand extends BaseCommand
    method configure (line 28) | protected function configure(): void
    method execute (line 52) | protected function execute(InputInterface $input, OutputInterface $out...

FILE: src/Composer/Command/UpdateCommand.php
  class UpdateCommand (line 44) | class UpdateCommand extends BaseCommand
    method configure (line 48) | protected function configure(): void
    method execute (line 122) | protected function execute(InputInterface $input, OutputInterface $out...
    method getPackagesInteractively (line 308) | private function getPackagesInteractively(IOInterface $io, InputInterf...
    method createVersionSelector (line 378) | private function createVersionSelector(Composer $composer): VersionSel...

FILE: src/Composer/Command/ValidateCommand.php
  class ValidateCommand (line 33) | class ValidateCommand extends BaseCommand
    method configure (line 38) | protected function configure(): void
    method execute (line 67) | protected function execute(InputInterface $input, OutputInterface $out...
    method outputResult (line 141) | private function outputResult(IOInterface $io, string $name, array &$e...

FILE: src/Composer/Compiler.php
  class Compiler (line 30) | class Compiler
    method compile (line 46) | public function compile(string $pharFile = 'composer.phar'): void
    method getRelativeFilePath (line 208) | private function getRelativeFilePath(\SplFileInfo $file): string
    method addFile (line 219) | private function addFile(\Phar $phar, \SplFileInfo $file, bool $strip ...
    method addComposerBin (line 244) | private function addComposerBin(\Phar $phar): void
    method stripWhitespace (line 257) | private function stripWhitespace(string $source): string
    method getStub (line 285) | private function getStub(): string

FILE: src/Composer/Composer.php
  class Composer (line 27) | class Composer extends PartialComposer
    method getVersion (line 70) | public static function getVersion(): string
    method setLocker (line 110) | public function setLocker(Locker $locker): void
    method getLocker (line 115) | public function getLocker(): Locker
    method setDownloadManager (line 120) | public function setDownloadManager(DownloadManager $manager): void
    method getDownloadManager (line 125) | public function getDownloadManager(): DownloadManager
    method setArchiveManager (line 130) | public function setArchiveManager(ArchiveManager $manager): void
    method getArchiveManager (line 135) | public function getArchiveManager(): ArchiveManager
    method setPluginManager (line 140) | public function setPluginManager(PluginManager $manager): void
    method getPluginManager (line 145) | public function getPluginManager(): PluginManager
    method setAutoloadGenerator (line 150) | public function setAutoloadGenerator(AutoloadGenerator $autoloadGenera...
    method getAutoloadGenerator (line 155) | public function getAutoloadGenerator(): AutoloadGenerator

FILE: src/Composer/Config.php
  class Config (line 26) | class Config
    method __construct (line 129) | public function __construct(bool $useEnvironment = true, ?string $base...
    method setBaseDir (line 154) | public function setBaseDir(?string $baseDir): void
    method setConfigSource (line 159) | public function setConfigSource(ConfigSourceInterface $source): void
    method getConfigSource (line 164) | public function getConfigSource(): ConfigSourceInterface
    method setAuthConfigSource (line 169) | public function setAuthConfigSource(ConfigSourceInterface $source): void
    method getAuthConfigSource (line 174) | public function getAuthConfigSource(): ConfigSourceInterface
    method setLocalAuthConfigSource (line 179) | public function setLocalAuthConfigSource(ConfigSourceInterface $source...
    method getLocalAuthConfigSource (line 184) | public function getLocalAuthConfigSource(): ?ConfigSourceInterface
    method merge (line 194) | public function merge(array $config, string $source = self::SOURCE_UNK...
    method getRepositories (line 290) | public function getRepositories(): array
    method get (line 303) | public function get(string $key, int $flags = 0)
    method all (line 499) | public function all(int $flags = 0): array
    method getSourceOfValue (line 511) | public function getSourceOfValue(string $key): string
    method setSourceOfConfigValue (line 521) | private function setSourceOfConfigValue($configValue, string $path, st...
    method raw (line 535) | public function raw(): array
    method has (line 546) | public function has(string $key): bool
    method process (line 559) | private function process($value, int $flags)
    method realpath (line 575) | private function realpath(string $path): string
    method getComposerEnv (line 594) | private function getComposerEnv(string $var)
    method disableRepoByName (line 603) | private function disableRepoByName(string $name): void
    method prohibitUrlByConfig (line 617) | public function prohibitUrlByConfig(string $url, ?IOInterface $io = nu...
    method disableProcessTimeout (line 676) | public static function disableProcessTimeout(): void

FILE: src/Composer/Config/ConfigSourceInterface.php
  type ConfigSourceInterface (line 21) | interface ConfigSourceInterface
    method addRepository (line 30) | public function addRepository(string $name, $config, bool $append = tr...
    method insertRepository (line 40) | public function insertRepository(string $name, $config, string $refere...
    method setRepositoryUrl (line 45) | public function setRepositoryUrl(string $name, string $url): void;
    method removeRepository (line 50) | public function removeRepository(string $name): void;
    method addConfigSetting (line 58) | public function addConfigSetting(string $name, $value): void;
    method removeConfigSetting (line 63) | public function removeConfigSetting(string $name): void;
    method addProperty (line 71) | public function addProperty(string $name, $value): void;
    method removeProperty (line 76) | public function removeProperty(string $name): void;
    method addLink (line 85) | public function addLink(string $type, string $name, string $value): void;
    method removeLink (line 93) | public function removeLink(string $type, string $name): void;
    method getName (line 98) | public function getName(): string;

FILE: src/Composer/Config/JsonConfigSource.php
  class JsonConfigSource (line 28) | class JsonConfigSource implements ConfigSourceInterface
    method __construct (line 43) | public function __construct(JsonFile $file, bool $authConfig = false)
    method getName (line 52) | public function getName(): string
    method addRepository (line 60) | public function addRepository(string $name, $config, bool $append = tr...
    method insertRepository (line 128) | public function insertRepository(string $name, $config, string $refere...
    method setRepositoryUrl (line 186) | public function setRepositoryUrl(string $name, string $url): void
    method removeRepository (line 208) | public function removeRepository(string $name): void
    method addConfigSetting (line 228) | public function addConfigSetting(string $name, $value): void
    method removeConfigSetting (line 248) | public function removeConfigSetting(string $name): void
    method addProperty (line 268) | public function addProperty(string $name, $value): void
    method removeProperty (line 291) | public function removeProperty(string $name): void
    method addLink (line 314) | public function addLink(string $type, string $name, string $value): void
    method removeLink (line 324) | public function removeLink(string $type, string $name): void
    method manipulateJson (line 339) | private function manipulateJson(string $method, callable $fallback, .....
    method arrayUnshiftRef (line 421) | private function arrayUnshiftRef(array &$array, &$value): int

FILE: src/Composer/Console/Application.php
  class Application (line 56) | class Application extends BaseApplication
    method __construct (line 89) | public function __construct(string $name = 'Composer', string $version...
    method __destruct (line 129) | public function __destruct()
    method run (line 133) | public function run(?InputInterface $input = null, ?OutputInterface $o...
    method doRun (line 142) | public function doRun(InputInterface $input, OutputInterface $output):...
    method getNewWorkingDir (line 499) | private function getNewWorkingDir(InputInterface $input): ?string
    method hintCommonErrors (line 510) | private function hintCommonErrors(\Throwable $exception, OutputInterfa...
    method getComposer (line 586) | public function getComposer(bool $required = true, ?bool $disablePlugi...
    method resetComposer (line 623) | public function resetComposer(): void
    method getIO (line 631) | public function getIO(): IOInterface
    method getHelp (line 636) | public function getHelp(): string
    method getDefaultCommands (line 645) | protected function getDefaultCommands(): array
    method getCommandNameBeforeBinding (line 688) | private function getCommandNameBeforeBinding(InputInterface $input): ?...
    method getLongVersion (line 701) | public function getLongVersion(): string
    method getDefaultInputDefinition (line 717) | protected function getDefaultInputDefinition(): InputDefinition
    method getPluginCommands (line 732) | private function getPluginCommands(): array
    method getInitialWorkingDirectory (line 765) | public function getInitialWorkingDirectory()
    method getDisablePluginsByDefault (line 770) | public function getDisablePluginsByDefault(): bool
    method getDisableScriptsByDefault (line 775) | public function getDisableScriptsByDefault(): bool
    method getUseParentDirConfigValue (line 783) | private function getUseParentDirConfigValue()
    method isRunningAsRoot (line 790) | private function isRunningAsRoot(): bool

FILE: src/Composer/Console/GithubActionError.php
  class GithubActionError (line 18) | final class GithubActionError
    method __construct (line 25) | public function __construct(IOInterface  $io)
    method emit (line 30) | public function emit(string $message, ?string $file = null, ?int $line...
    method escapeData (line 47) | private function escapeData(string $data): string
    method escapeProperty (line 57) | private function escapeProperty(string $property): string

FILE: src/Composer/Console/HtmlOutputFormatter.php
  class HtmlOutputFormatter (line 23) | class HtmlOutputFormatter extends OutputFormatter
    method __construct (line 59) | public function __construct(array $styles = [])
    method format (line 64) | public function format(?string $message): ?string
    method formatHtml (line 80) | private function formatHtml(array $matches): string

FILE: src/Composer/Console/Input/InputArgument.php
  class InputArgument (line 31) | class InputArgument extends BaseInputArgument
    method __construct (line 47) | public function __construct(string $name, ?int $mode = null, string $d...
    method complete (line 59) | public function complete(CompletionInput $input, CompletionSuggestions...

FILE: src/Composer/Console/Input/InputOption.php
  class InputOption (line 31) | class InputOption extends BaseInputOption
    method __construct (line 46) | public function __construct(string $name, $shortcut = null, ?int $mode...
    method complete (line 62) | public function complete(CompletionInput $input, CompletionSuggestions...

FILE: src/Composer/DependencyResolver/Decisions.php
  class Decisions (line 21) | class Decisions implements \Iterator, \Countable
    method __construct (line 35) | public function __construct(Pool $pool)
    method decide (line 41) | public function decide(int $literal, int $level, Rule $why): void
    method satisfy (line 50) | public function satisfy(int $literal): bool
    method conflict (line 60) | public function conflict(int $literal): bool
    method decided (line 70) | public function decided(int $literalOrPackageId): bool
    method undecided (line 75) | public function undecided(int $literalOrPackageId): bool
    method decidedInstall (line 80) | public function decidedInstall(int $literalOrPackageId): bool
    method decisionLevel (line 87) | public function decisionLevel(int $literalOrPackageId): int
    method decisionRule (line 97) | public function decisionRule(int $literalOrPackageId): Rule
    method atOffset (line 113) | public function atOffset(int $queueOffset): array
    method validOffset (line 118) | public function validOffset(int $queueOffset): bool
    method lastReason (line 123) | public function lastReason(): Rule
    method lastLiteral (line 128) | public function lastLiteral(): int
    method reset (line 133) | public function reset(): void
    method resetToOffset (line 143) | public function resetToOffset(int $offset): void
    method revertLast (line 151) | public function revertLast(): void
    method count (line 157) | public function count(): int
    method rewind (line 162) | public function rewind(): void
    method current (line 170) | #[\ReturnTypeWillChange]
    method key (line 176) | public function key(): ?int
    method next (line 181) | public function next(): void
    method valid (line 186) | public function valid(): bool
    method isEmpty (line 191) | public function isEmpty(): bool
    method addDecision (line 196) | protected function addDecision(int $literal, int $level): void
    method toString (line 216) | public function toString(?Pool $pool = null): string
    method __toString (line 229) | public function __toString(): string

FILE: src/Composer/DependencyResolver/DefaultPolicy.php
  class DefaultPolicy (line 26) | class DefaultPolicy implements PolicyInterface
    method __construct (line 44) | public function __construct(bool $preferStable = false, bool $preferLo...
    method versionCompare (line 57) | public function versionCompare(PackageInterface $a, PackageInterface $...
    method selectPreferredPackages (line 86) | public function selectPreferredPackages(Pool $pool, array $literals, ?...
    method groupLiteralsByName (line 135) | protected function groupLiteralsByName(Pool $pool, array $literals): a...
    method compareByPriority (line 153) | public function compareByPriority(Pool $pool, BasePackage $a, BasePack...
    method replaces (line 204) | protected function replaces(BasePackage $source, BasePackage $target):...
    method pruneToBestVersion (line 222) | protected function pruneToBestVersion(Pool $pool, array $literals): array
    method pruneRemoteAliases (line 269) | protected function pruneRemoteAliases(Pool $pool, array $literals): array

FILE: src/Composer/DependencyResolver/GenericRule.php
  class GenericRule (line 18) | class GenericRule extends Rule
    method __construct (line 26) | public function __construct(array $literals, $reason, $reasonData)
    method getLiterals (line 39) | public function getLiterals(): array
    method getHash (line 47) | public function getHash()
    method equals (line 65) | public function equals(Rule $rule): bool
    method isAssertion (line 70) | public function isAssertion(): bool
    method __toString (line 78) | public function __toString(): string

FILE: src/Composer/DependencyResolver/LocalRepoTransaction.php
  class LocalRepoTransaction (line 22) | class LocalRepoTransaction extends Transaction
    method __construct (line 24) | public function __construct(RepositoryInterface $lockedRepository, Ins...

FILE: src/Composer/DependencyResolver/LockTransaction.php
  class LockTransaction (line 24) | class LockTransaction extends Transaction
    method __construct (line 53) | public function __construct(Pool $pool, array $presentMap, array $unlo...
    method setResultPackages (line 64) | public function setResultPackages(Pool $pool, Decisions $decisions): void
    method setNonDevPackages (line 81) | public function setNonDevPackages(LockTransaction $extractionResult): ...
    method getNewLockPackages (line 103) | public function getNewLockPackages(bool $devMode, bool $updateMirrors ...
    method updateMirrorAndUrls (line 127) | private function updateMirrorAndUrls(BasePackage $package): BasePackage
    method getAliases (line 177) | public function getAliases(array $aliases): array

FILE: src/Composer/DependencyResolver/MultiConflictRule.php
  class MultiConflictRule (line 20) | class MultiConflictRule extends Rule
    method __construct (line 28) | public function __construct(array $literals, $reason, $reasonData)
    method getLiterals (line 45) | public function getLiterals(): array
    method getHash (line 53) | public function getHash()
    method equals (line 71) | public function equals(Rule $rule): bool
    method isAssertion (line 80) | public function isAssertion(): bool
    method disable (line 89) | public function disable(): void
    method __toString (line 97) | public function __toString(): string

FILE: src/Composer/DependencyResolver/Operation/InstallOperation.php
  class InstallOperation (line 22) | class InstallOperation extends SolverOperation implements OperationInter...
    method __construct (line 31) | public function __construct(PackageInterface $package)
    method getPackage (line 39) | public function getPackage(): PackageInterface
    method show (line 47) | public function show($lock): string
    method format (line 52) | public static function format(PackageInterface $package, bool $lock = ...

FILE: src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php
  class MarkAliasInstalledOperation (line 22) | class MarkAliasInstalledOperation extends SolverOperation implements Ope...
    method __construct (line 31) | public function __construct(AliasPackage $package)
    method getPackage (line 39) | public function getPackage(): AliasPackage
    method show (line 47) | public function show($lock): string

FILE: src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php
  class MarkAliasUninstalledOperation (line 22) | class MarkAliasUninstalledOperation extends SolverOperation implements O...
    method __construct (line 31) | public function __construct(AliasPackage $package)
    method getPackage (line 39) | public function getPackage(): AliasPackage
    method show (line 47) | public function show($lock): string

FILE: src/Composer/DependencyResolver/Operation/OperationInterface.php
  type OperationInterface (line 20) | interface OperationInterface
    method getOperationType (line 27) | public function getOperationType();
    method show (line 35) | public function show(bool $lock);
    method __toString (line 42) | public function __toString();

FILE: src/Composer/DependencyResolver/Operation/SolverOperation.php
  class SolverOperation (line 20) | abstract class SolverOperation implements OperationInterface
    method getOperationType (line 30) | public function getOperationType(): string
    method __toString (line 38) | public function __toString()

FILE: src/Composer/DependencyResolver/Operation/UninstallOperation.php
  class UninstallOperation (line 22) | class UninstallOperation extends SolverOperation implements OperationInt...
    method __construct (line 31) | public function __construct(PackageInterface $package)
    method getPackage (line 39) | public function getPackage(): PackageInterface
    method show (line 47) | public function show($lock): string
    method format (line 52) | public static function format(PackageInterface $package, bool $lock = ...

FILE: src/Composer/DependencyResolver/Operation/UpdateOperation.php
  class UpdateOperation (line 23) | class UpdateOperation extends SolverOperation implements OperationInterface
    method __construct (line 41) | public function __construct(PackageInterface $initial, PackageInterfac...
    method getInitialPackage (line 50) | public function getInitialPackage(): PackageInterface
    method getTargetPackage (line 58) | public function getTargetPackage(): PackageInterface
    method show (line 66) | public function show($lock): string
    method format (line 71) | public static function format(PackageInterface $initialPackage, Packag...

FILE: src/Composer/DependencyResolver/PolicyInterface.php
  type PolicyInterface (line 21) | interface PolicyInterface
    method versionCompare (line 26) | public function versionCompare(PackageInterface $a, PackageInterface $...
    method selectPreferredPackages (line 32) | public function selectPreferredPackages(Pool $pool, array $literals, ?...

FILE: src/Composer/DependencyResolver/Pool.php
  class Pool (line 29) | class Pool implements \Countable
    method __construct (line 58) | public function __construct(array $packages = [], array $unacceptableF...
    method getRemovedVersions (line 72) | public function getRemovedVersions(string $name, ConstraintInterface $...
    method getAllRemovedVersions (line 91) | public function getAllRemovedVersions(): array
    method getRemovedVersionsByPackage (line 99) | public function getRemovedVersionsByPackage(string $objectHash): array
    method getAllRemovedVersionsByPackage (line 111) | public function getAllRemovedVersionsByPackage(): array
    method isSecurityRemovedPackageVersion (line 116) | public function isSecurityRemovedPackageVersion(string $packageName, ?...
    method getSecurityAdvisoryIdentifiersForPackageVersion (line 130) | public function getSecurityAdvisoryIdentifiersForPackageVersion(string...
    method isAbandonedRemovedPackageVersion (line 143) | public function isAbandonedRemovedPackageVersion(string $packageName, ...
    method getAllSecurityRemovedPackageVersions (line 157) | public function getAllSecurityRemovedPackageVersions(): array
    method getAllAbandonedRemovedPackageVersions (line 165) | public function getAllAbandonedRemovedPackageVersions(): array
    method setPackages (line 173) | private function setPackages(array $packages): void
    method getPackages (line 191) | public function getPackages(): array
    method packageById (line 199) | public function packageById(int $id): BasePackage
    method count (line 207) | public function count(): int
    method whatProvides (line 220) | public function whatProvides(string $name, ?ConstraintInterface $const...
    method computeWhatProvides (line 236) | private function computeWhatProvides(string $name, ?ConstraintInterfac...
    method literalToPackage (line 253) | public function literalToPackage(int $literal): BasePackage
    method literalToPrettyString (line 263) | public function literalToPrettyString(int $literal, array $installedMa...
    method match (line 282) | public function match(BasePackage $candidate, string $name, ?Constrain...
    method isUnacceptableFixedOrLockedPackage (line 322) | public function isUnacceptableFixedOrLockedPackage(BasePackage $packag...
    method getUnacceptableFixedOrLockedPackages (line 330) | public function getUnacceptableFixedOrLockedPackages(): array
    method __toString (line 335) | public function __toString(): string

FILE: src/Composer/DependencyResolver/PoolBuilder.php
  class PoolBuilder (line 39) | class PoolBuilder
    method __construct (line 170) | public function __construct(array $acceptableStabilities, array $stabi...
    method setIgnoredTypes (line 188) | public function setIgnoredTypes(array $types): void
    method setAllowedTypes (line 198) | public function setAllowedTypes(?array $types): void
    method buildPool (line 206) | public function buildPool(array $repositories, Request $request): Pool
    method markPackageNameForLoading (line 363) | private function markPackageNameForLoading(Request $request, string $n...
    method loadPackagesMarkedForLoading (line 421) | private function loadPackagesMarkedForLoading(Request $request, array ...
    method loadPackage (line 470) | private function loadPackage(Request $request, array $repositories, Ba...
    method isRootRequire (line 578) | private function isRootRequire(Request $request, string $name): bool
    method getSkippedRootRequires (line 588) | private function getSkippedRootRequires(Request $request, string $name...
    method isUpdateAllowed (line 629) | private function isUpdateAllowed(BasePackage $package): bool
    method warnAboutNonMatchingUpdateAllowList (line 641) | private function warnAboutNonMatchingUpdateAllowList(Request $request)...
    method unlockPackage (line 683) | private function unlockPackage(Request $request, array $repositories, ...
    method markPackageNameForLoadingIfRequired (line 754) | private function markPackageNameForLoadingIfRequired(Request $request,...
    method removeLoadedPackage (line 772) | private function removeLoadedPackage(Request $request, array $reposito...
    method runOptimizer (line 787) | private function runOptimizer(Request $request, Pool $pool): Pool
    method runSecurityAdvisoryFilter (line 820) | private function runSecurityAdvisoryFilter(Pool $pool, array $reposito...

FILE: src/Composer/DependencyResolver/PoolOptimizer.php
  class PoolOptimizer (line 29) | class PoolOptimizer
    method __construct (line 66) | public function __construct(PolicyInterface $policy)
    method optimize (line 71) | public function optimize(Request $request, Pool $pool): Pool
    method prepare (line 96) | private function prepare(Request $request, Pool $pool): void
    method markPackageIrremovable (line 146) | private function markPackageIrremovable(BasePackage $package): void
    method applyRemovalsToPool (line 164) | private function applyRemovalsToPool(Pool $pool): Pool
    method optimizeByIdenticalDependencies (line 181) | private function optimizeByIdenticalDependencies(Request $request, Poo...
    method calculateDependencyHash (line 263) | private function calculateDependencyHash(BasePackage $package): string
    method markPackageForRemoval (line 303) | private function markPackageForRemoval(int $id): void
    method keepPackage (line 317) | private function keepPackage(BasePackage $package, array $identicalDef...
    method optimizeImpossiblePackagesAway (line 372) | private function optimizeImpossiblePackagesAway(Request $request, Pool...
    method extractRequireConstraintsPerPackage (line 438) | private function extractRequireConstraintsPerPackage(string $package, ...
    method extractConflictConstraintsPerPackage (line 452) | private function extractConflictConstraintsPerPackage(string $package,...
    method expandDisjunctiveMultiConstraints (line 462) | private function expandDisjunctiveMultiConstraints(ConstraintInterface...

FILE: src/Composer/DependencyResolver/Problem.php
  class Problem (line 38) | class Problem
    method addRule (line 60) | public function addRule(Rule $rule): void
    method getReasons (line 70) | public function getReasons(): array
    method getPrettyString (line 81) | public function getPrettyString(RepositorySet $repositorySet, Request ...
    method getSortableString (line 117) | private function getSortableString(Pool $pool, Rule $rule): string
    method getRulePriority (line 139) | private function getRulePriority(Rule $rule): int
    method formatDeduplicatedRules (line 166) | public static function formatDeduplicatedRules(array $rules, string $i...
    method isCausedByLock (line 212) | public function isCausedByLock(RepositorySet $repositorySet, Request $...
    method addReason (line 231) | protected function addReason(string $id, Rule $reason): void
    method nextSection (line 242) | public function nextSection(): void
    method getMissingPackageReason (line 251) | public static function getMissingPackageReason(RepositorySet $reposito...
    method getPackageList (line 482) | public static function getPackageList(array $packages, bool $isVerbose...
    method getPlatformPackageVersion (line 526) | private static function getPlatformPackageVersion(Pool $pool, string $...
    method condenseVersionList (line 568) | private static function condenseVersionList(array $versions, int $max,...
    method hasMultipleNames (line 601) | private static function hasMultipleNames(array $packages): bool
    method computeCheckForLowerPrioRepo (line 620) | private static function computeCheckForLowerPrioRepo(Pool $pool, bool ...
    method constraintToText (line 669) | protected static function constraintToText(?ConstraintInterface $const...
    method getProvidersList (line 687) | private static function getProvidersList(RepositorySet $repositorySet,...

FILE: src/Composer/DependencyResolver/Request.php
  class Request (line 24) | class Request
    method __construct (line 60) | public function __construct(?LockArrayRepository $lockedRepository = n...
    method requireName (line 65) | public function requireName(string $packageName, ?ConstraintInterface ...
    method fixPackage (line 84) | public function fixPackage(BasePackage $package): void
    method lockPackage (line 99) | public function lockPackage(BasePackage $package): void
    method fixLockedPackage (line 111) | public function fixLockedPackage(BasePackage $package): void
    method unlockPackage (line 117) | public function unlockPackage(BasePackage $package): void
    method setUpdateAllowList (line 126) | public function setUpdateAllowList(array $updateAllowList, $updateAllo...
    method getUpdateAllowList (line 135) | public function getUpdateAllowList(): array
    method getUpdateAllowTransitiveDependencies (line 140) | public function getUpdateAllowTransitiveDependencies(): bool
    method getUpdateAllowTransitiveRootDependencies (line 145) | public function getUpdateAllowTransitiveRootDependencies(): bool
    method getRequires (line 153) | public function getRequires(): array
    method getFixedPackages (line 161) | public function getFixedPackages(): array
    method isFixedPackage (line 166) | public function isFixedPackage(BasePackage $package): bool
    method getLockedPackages (line 174) | public function getLockedPackages(): array
    method isLockedPackage (line 179) | public function isLockedPackage(PackageInterface $package): bool
    method getFixedOrLockedPackages (line 187) | public function getFixedOrLockedPackages(): array
    method getPresentMap (line 200) | public function getPresentMap(bool $packageIds = false): array
    method getFixedPackagesMap (line 220) | public function getFixedPackagesMap(): array
    method getLockedRepository (line 231) | public function getLockedRepository(): ?LockArrayRepository
    method restrictPackages (line 241) | public function restrictPackages(array $names): void
    method getRestrictedPackages (line 249) | public function getRestrictedPackages(): ?array

FILE: src/Composer/DependencyResolver/Rule.php
  class Rule (line 29) | abstract class Rule
    method __construct (line 62) | public function __construct($reason, $reasonData)
    method getLiterals (line 74) | abstract public function getLiterals(): array;
    method getHash (line 79) | abstract public function getHash();
    method __toString (line 81) | abstract public function __toString(): string;
    method equals (line 83) | abstract public function equals(Rule $rule): bool;
    method getReason (line 88) | public function getReason(): int
    method getReasonData (line 96) | public function getReasonData()
    method getRequiredPackage (line 101) | public function getRequiredPackage(): ?string
    method setType (line 118) | public function setType($type): void
    method getType (line 123) | public function getType(): int
    method disable (line 128) | public function disable(): void
    method enable (line 133) | public function enable(): void
    method isDisabled (line 138) | public function isDisabled(): bool
    method isEnabled (line 143) | public function isEnabled(): bool
    method isAssertion (line 148) | abstract public function isAssertion(): bool;
    method isCausedByLock (line 150) | public function isCausedByLock(RepositorySet $repositorySet, Request $...
    method getSourcePackage (line 200) | public function getSourcePackage(Pool $pool): BasePackage
    method getPrettyString (line 232) | public function getPrettyString(RepositorySet $repositorySet, Request ...
    method formatPackagesUnique (line 444) | protected function formatPackagesUnique(Pool $pool, array $literalsOrP...
    method deduplicateDefaultBranchAlias (line 454) | private function deduplicateDefaultBranchAlias(BasePackage $package): ...

FILE: src/Composer/DependencyResolver/Rule2Literals.php
  class Rule2Literals (line 19) | class Rule2Literals extends Rule
    method __construct (line 32) | public function __construct(int $literal1, int $literal2, $reason, $re...
    method getLiterals (line 48) | public function getLiterals(): array
    method getHash (line 56) | public function getHash()
    method equals (line 69) | public function equals(Rule $rule): bool
    method isAssertion (line 101) | public function isAssertion(): bool
    method __toString (line 109) | public function __toString(): string

FILE: src/Composer/DependencyResolver/RuleSet.php
  class RuleSet (line 23) | class RuleSet implements \IteratorAggregate, \Countable
    method __construct (line 52) | public function __construct()
    method add (line 62) | public function add(Rule $rule, $type): void
    method count (line 106) | public function count(): int
    method ruleById (line 111) | public function ruleById(int $id): Rule
    method getRules (line 117) | public function getRules(): array
    method getIterator (line 122) | public function getIterator(): RuleSetIterator
    method getIteratorFor (line 130) | public function getIteratorFor($types): RuleSetIterator
    method getIteratorWithout (line 151) | public function getIteratorWithout($types): RuleSetIterator
    method getTypes (line 169) | public function getTypes(): array
    method getPrettyString (line 176) | public function getPrettyString(?RepositorySet $repositorySet = null, ...
    method __toString (line 190) | public function __toString(): string

FILE: src/Composer/DependencyResolver/RuleSetGenerator.php
  class RuleSetGenerator (line 25) | class RuleSetGenerator
    method __construct (line 38) | public function __construct(PolicyInterface $policy, Pool $pool)
    method createRequireRule (line 59) | protected function createRequireRule(BasePackage $package, array $prov...
    method createInstallOneOfRule (line 88) | protected function createInstallOneOfRule(array $packages, $reason, $r...
    method createRule2Literals (line 112) | protected function createRule2Literals(BasePackage $issuer, BasePackag...
    method createMultiConflictRule (line 129) | protected function createMultiConflictRule(array $packages, $reason, $...
    method addRule (line 152) | private function addRule($type, ?Rule $newRule = null): void
    method addRulesForPackage (line 161) | protected function addRulesForPackage(BasePackage $package, PlatformRe...
    method addConflictRules (line 212) | protected function addConflictRules(PlatformRequirementFilterInterface...
    method addRulesForRequest (line 250) | protected function addRulesForRequest(Request $request, PlatformRequir...
    method addRulesForRootAliases (line 293) | protected function addRulesForRootAliases(PlatformRequirementFilterInt...
    method getRulesFor (line 308) | public function getRulesFor(Request $request, ?PlatformRequirementFilt...

FILE: src/Composer/DependencyResolver/RuleSetIterator.php
  class RuleSetIterator (line 19) | class RuleSetIterator implements \Iterator
    method __construct (line 36) | public function __construct(array $rules)
    method current (line 45) | public function current(): Rule
    method key (line 53) | public function key(): int
    method next (line 58) | public function next(): void
    method rewind (line 82) | public function rewind(): void
    method valid (line 101) | public function valid(): bool

FILE: src/Composer/DependencyResolver/RuleWatchChain.php
  class RuleWatchChain (line 24) | class RuleWatchChain extends \SplDoublyLinkedList
    method seek (line 31) | public function seek(int $offset): void
    method remove (line 45) | public function remove(): void

FILE: src/Composer/DependencyResolver/RuleWatchGraph.php
  class RuleWatchGraph (line 25) | class RuleWatchGraph
    method insert (line 42) | public function insert(RuleWatchNode $node): void
    method propagateLiteral (line 90) | public function propagateLiteral(int $decidedLiteral, int $level, Deci...
    method moveWatch (line 157) | protected function moveWatch(int $fromLiteral, int $toLiteral, RuleWat...

FILE: src/Composer/DependencyResolver/RuleWatchNode.php
  class RuleWatchNode (line 22) | class RuleWatchNode
    method __construct (line 37) | public function __construct(Rule $rule)
    method watch2OnHighest (line 56) | public function watch2OnHighest(Decisions $decisions): void
    method getRule (line 80) | public function getRule(): Rule
    method getOtherWatch (line 91) | public function getOtherWatch(int $literal): int
    method moveWatch (line 106) | public function moveWatch(int $from, int $to): void

FILE: src/Composer/DependencyResolver/SecurityAdvisoryPoolFilter.php
  class SecurityAdvisoryPoolFilter (line 29) | class SecurityAdvisoryPoolFilter
    method __construct (line 36) | public function __construct(
    method filter (line 47) | public function filter(Pool $pool, array $repositories, Request $reque...
    method getMatchingAdvisories (line 102) | private function getMatchingAdvisories(PackageInterface $package, arra...

FILE: src/Composer/DependencyResolver/Solver.php
  class Solver (line 24) | class Solver
    method __construct (line 61) | public function __construct(PolicyInterface $policy, Pool $pool, IOInt...
    method getRuleSetSize (line 68) | public function getRuleSetSize(): int
    method getPool (line 73) | public function getPool(): Pool
    method makeAssertionRuleDecisions (line 80) | private function makeAssertionRuleDecisions(): void
    method setupFixedMap (line 150) | protected function setupFixedMap(Request $request): void
    method checkForRootRequireProblems (line 158) | protected function checkForRootRequireProblems(Request $request, Platf...
    method solve (line 175) | public function solve(Request $request, ?PlatformRequirementFilterInte...
    method propagate (line 217) | protected function propagate(int $level): ?Rule
    method revert (line 241) | private function revert(int $level): void
    method setPropagateLearn (line 278) | private function setPropagateLearn(int $level, int $literal, Rule $rul...
    method selectAndInstall (line 327) | private function selectAndInstall(int $level, array $decisionQueue, Ru...
    method analyze (line 345) | protected function analyze(int $level, Rule $rule): array
    method analyzeUnsolvableRule (line 492) | private function analyzeUnsolvableRule(Problem $problem, Rule $conflic...
    method analyzeUnsolvable (line 519) | private function analyzeUnsolvable(Rule $conflictRule): void
    method runSat (line 565) | private function runSat(): void

FILE: src/Composer/DependencyResolver/SolverBugException.php
  class SolverBugException (line 18) | class SolverBugException extends \RuntimeException
    method __construct (line 20) | public function __construct(string $message)

FILE: src/Composer/DependencyResolver/SolverProblemsException.php
  class SolverProblemsException (line 23) | class SolverProblemsException extends \RuntimeException
    method __construct (line 36) | public function __construct(array $problems, array $learnedPool)
    method getPrettyString (line 44) | public function getPrettyString(RepositorySet $repositorySet, Request ...
    method getProblems (line 98) | public function getProblems(): array
    method createExtensionHint (line 106) | private function createExtensionHint(array $missingExtensions): string
    method getExtensionProblems (line 134) | private function getExtensionProblems(array $reasonSets): array

FILE: src/Composer/DependencyResolver/Transaction.php
  class Transaction (line 26) | class Transaction
    method __construct (line 54) | public function __construct(array $presentPackages, array $resultPacka...
    method getOperations (line 64) | public function getOperations(): array
    method setResultPackageMaps (line 72) | private function setResultPackageMaps(array $resultPackages): void
    method calculateOperations (line 105) | protected function calculateOperations(): array
    method getRootPackages (line 230) | protected function getRootPackages(): array
    method getProvidersInResult (line 256) | protected function getProvidersInResult(Link $link): array
    method movePluginsToFront (line 278) | private function movePluginsToFront(array $operations): array
    method moveUninstallsToFront (line 356) | private function moveUninstallsToFront(array $operations): array

FILE: src/Composer/Downloader/ArchiveDownloader.php
  class ArchiveDownloader (line 28) | abstract class ArchiveDownloader extends FileDownloader
    method prepare (line 35) | public function prepare(string $type, PackageInterface $package, strin...
    method cleanup (line 42) | public function cleanup(string $type, PackageInterface $package, strin...
    method install (line 55) | public function install(PackageInterface $package, string $path, bool ...
    method getInstallOperationAppendix (line 209) | protected function getInstallOperationAppendix(PackageInterface $packa...
    method extract (line 223) | abstract protected function extract(PackageInterface $package, string ...

FILE: src/Composer/Downloader/ChangeReportInterface.php
  type ChangeReportInterface (line 22) | interface ChangeReportInterface
    method getLocalChanges (line 31) | public function getLocalChanges(PackageInterface $package, string $pat...

FILE: src/Composer/Downloader/DownloadManager.php
  class DownloadManager (line 27) | class DownloadManager
    method __construct (line 49) | public function __construct(IOInterface $io, bool $preferSource = fals...
    method setPreferSource (line 61) | public function setPreferSource(bool $preferSource): self
    method setPreferDist (line 73) | public function setPreferDist(bool $preferDist): self
    method setPreferences (line 85) | public function setPreferences(array $preferences): self
    method setDownloader (line 98) | public function setDownloader(string $type, DownloaderInterface $downl...
    method getDownloader (line 112) | public function getDownloader(string $type): DownloaderInterface
    method getDownloaderForPackage (line 130) | public function getDownloaderForPackage(PackageInterface $package): ?D...
    method getDownloaderType (line 161) | public function getDownloaderType(DownloaderInterface $downloader): st...
    method download (line 177) | public function download(PackageInterface $package, string $targetDir,...
    method prepare (line 242) | public function prepare(string $type, PackageInterface $package, strin...
    method install (line 263) | public function install(PackageInterface $package, string $targetDir):...
    method update (line 284) | public function update(PackageInterface $initial, PackageInterface $ta...
    method remove (line 332) | public function remove(PackageInterface $package, string $targetDir): ...
    method cleanup (line 352) | public function cleanup(string $type, PackageInterface $package, strin...
    method resolvePackageInstallPreference (line 368) | protected function resolvePackageInstallPreference(PackageInterface $p...
    method getAvailableSources (line 388) | private function getAvailableSources(PackageInterface $package, ?Packa...
    method normalizeTargetDir (line 434) | private function normalizeTargetDir(string $dir): string

FILE: src/Composer/Downloader/DownloaderInterface.php
  type DownloaderInterface (line 24) | interface DownloaderInterface
    method getInstallationSource (line 31) | public function getInstallationSource(): string;
    method download (line 39) | public function download(PackageInterface $package, string $path, ?Pac...
    method prepare (line 55) | public function prepare(string $type, PackageInterface $package, strin...
    method install (line 64) | public function install(PackageInterface $package, string $path): Prom...
    method update (line 74) | public function update(PackageInterface $initial, PackageInterface $ta...
    method remove (line 83) | public function remove(PackageInterface $package, string $path): Promi...
    method cleanup (line 98) | public function cleanup(string $type, PackageInterface $package, strin...

FILE: src/Composer/Downloader/DvcsDownloaderInterface.php
  type DvcsDownloaderInterface (line 22) | interface DvcsDownloaderInterface
    method getUnpushedChanges (line 31) | public function getUnpushedChanges(PackageInterface $package, string $...

FILE: src/Composer/Downloader/FileDownloader.php
  class FileDownloader (line 46) | class FileDownloader implements DownloaderInterface, ChangeReportInterface
    method __construct (line 95) | public function __construct(IOInterface $io, Config $config, HttpDownl...
    method getInstallationSource (line 114) | public function getInstallationSource(): string
    method download (line 122) | public function download(PackageInterface $package, string $path, ?Pac...
    method prepare (line 307) | public function prepare(string $type, PackageInterface $package, strin...
    method cleanup (line 315) | public function cleanup(string $type, PackageInterface $package, strin...
    method install (line 347) | public function install(PackageInterface $package, string $path, bool ...
    method getDistPath (line 378) | protected function getDistPath(PackageInterface $package, int $compone...
    method clearLastCacheWrite (line 383) | protected function clearLastCacheWrite(PackageInterface $package): void
    method addCleanupPath (line 391) | protected function addCleanupPath(PackageInterface $package, string $p...
    method removeCleanupPath (line 396) | protected function removeCleanupPath(PackageInterface $package, string...
    method update (line 409) | public function update(PackageInterface $initial, PackageInterface $ta...
    method remove (line 423) | public function remove(PackageInterface $package, string $path, bool $...
    method getFileName (line 444) | protected function getFileName(PackageInterface $package, string $path...
    method getInstallOperationAppendix (line 460) | protected function getInstallOperationAppendix(PackageInterface $packa...
    method processUrl (line 473) | protected function processUrl(PackageInterface $package, string $url):...
    method getLocalChanges (line 490) | public function getLocalChanges(PackageInterface $package, string $pat...

FILE: src/Composer/Downloader/FilesystemException.php
  class FilesystemException (line 20) | class FilesystemException extends \Exception
    method __construct (line 22) | public function __construct(string $message = '', int $code = 0, ?\Exc...

FILE: src/Composer/Downloader/FossilDownloader.php
  class FossilDownloader (line 24) | class FossilDownloader extends VcsDownloader
    method doDownload (line 29) | protected function doDownload(PackageInterface $package, string $path,...
    method doInstall (line 37) | protected function doInstall(PackageInterface $package, string $path, ...
    method doUpdate (line 56) | protected function doUpdate(PackageInterface $initial, PackageInterfac...
    method getLocalChanges (line 77) | public function getLocalChanges(PackageInterface $package, string $pat...
    method getCommitLogs (line 93) | protected function getCommitLogs(string $fromReference, string $toRefe...
    method execute (line 114) | private function execute(array $command, ?string $cwd = null, ?string ...
    method hasMetadataRepository (line 124) | protected function hasMetadataRepository(string $path): bool

FILE: src/Composer/Downloader/GitDownloader.php
  class GitDownloader (line 30) | class GitDownloader extends VcsDownloader implements DvcsDownloaderInter...
    method __construct (line 52) | public function __construct(IOInterface $io, Config $config, ?ProcessE...
    method doDownload (line 61) | protected function doDownload(PackageInterface $package, string $path,...
    method doInstall (line 91) | protected function doInstall(PackageInterface $package, string $path, ...
    method doUpdate (line 150) | protected function doUpdate(PackageInterface $initial, PackageInterfac...
    method getLocalChanges (line 214) | public function getLocalChanges(PackageInterface $package, string $pat...
    method getUnpushedChanges (line 231) | public function getUnpushedChanges(PackageInterface $package, string $...
    method cleanChanges (line 328) | protected function cleanChanges(PackageInterface $package, string $pat...
    method reapplyChanges (line 415) | protected function reapplyChanges(string $path): void
    method updateToCommit (line 435) | protected function updateToCommit(PackageInterface $package, string $p...
    method updateOriginUrl (line 512) | protected function updateOriginUrl(string $path, string $url): void
    method setPushUrl (line 518) | protected function setPushUrl(string $path, string $url): void
    method getCommitLogs (line 535) | protected function getCommitLogs(string $fromReference, string $toRefe...
    method discardChanges (line 551) | protected function discardChanges(string $path): PromiseInterface
    method stashChanges (line 570) | protected function stashChanges(string $path): PromiseInterface
    method viewDiff (line 585) | protected function viewDiff(string $path): void
    method normalizePath (line 595) | protected function normalizePath(string $path): string
    method hasMetadataRepository (line 619) | protected function hasMetadataRepository(string $path): bool
    method getShortHash (line 626) | protected function getShortHash(string $reference): string

FILE: src/Composer/Downloader/GzipDownloader.php
  class GzipDownloader (line 24) | class GzipDownloader extends ArchiveDownloader
    method extract (line 26) | protected function extract(PackageInterface $package, string $file, st...
    method extractUsingExt (line 56) | private function extractUsingExt(string $file, string $targetFilepath)...

FILE: src/Composer/Downloader/HgDownloader.php
  class HgDownloader (line 22) | class HgDownloader extends VcsDownloader
    method doDownload (line 27) | protected function doDownload(PackageInterface $package, string $path,...
    method doInstall (line 39) | protected function doInstall(PackageInterface $package, string $path, ...
    method doUpdate (line 60) | protected function doUpdate(PackageInterface $initial, PackageInterfac...
    method getLocalChanges (line 87) | public function getLocalChanges(PackageInterface $package, string $pat...
    method getCommitLogs (line 103) | protected function getCommitLogs(string $fromReference, string $toRefe...
    method hasMetadataRepository (line 117) | protected function hasMetadataRepository(string $path): bool

FILE: src/Composer/Downloader/MaxFileSizeExceededException.php
  class MaxFileSizeExceededException (line 15) | class MaxFileSizeExceededException extends TransportException

FILE: src/Composer/Downloader/PathDownloader.php
  class PathDownloader (line 34) | class PathDownloader extends FileDownloader implements VcsCapableDownloa...
    method download (line 42) | public function download(PackageInterface $package, string $path, ?Pac...
    method install (line 81) | public function install(PackageInterface $package, string $path, bool ...
    method remove (line 173) | public function remove(PackageInterface $package, string $path, bool $...
    method getVcsReference (line 223) | public function getVcsReference(PackageInterface $package, string $pat...
    method getInstallOperationAppendix (line 242) | protected function getInstallOperationAppendix(PackageInterface $packa...
    method computeAllowedStrategies (line 275) | private function computeAllowedStrategies(array $transportOptions): array
    method safeJunctions (line 328) | private function safeJunctions(): bool

FILE: src/Composer/Downloader/PerforceDownloader.php
  class PerforceDownloader (line 23) | class PerforceDownloader extends VcsDownloader
    method doDownload (line 31) | protected function doDownload(PackageInterface $package, string $path,...
    method doInstall (line 39) | public function doInstall(PackageInterface $package, string $path, str...
    method getLabelFromSourceReference (line 56) | private function getLabelFromSourceReference(string $ref): ?string
    method initPerforce (line 66) | public function initPerforce(PackageInterface $package, string $path, ...
    method getRepoConfig (line 85) | private function getRepoConfig(VcsRepository $repository): array
    method doUpdate (line 93) | protected function doUpdate(PackageInterface $initial, PackageInterfac...
    method getLocalChanges (line 101) | public function getLocalChanges(PackageInterface $package, string $pat...
    method getCommitLogs (line 111) | protected function getCommitLogs(string $fromReference, string $toRefe...
    method setPerforce (line 116) | public function setPerforce(Perforce $perforce): void
    method hasMetadataRepository (line 124) | protected function hasMetadataRepository(string $path): bool

FILE: src/Composer/Downloader/PharDownloader.php
  class PharDownloader (line 23) | class PharDownloader extends ArchiveDownloader
    method extract (line 28) | protected function extract(PackageInterface $package, string $file, st...

FILE: src/Composer/Downloader/RarDownloader.php
  class RarDownloader (line 28) | class RarDownloader extends ArchiveDownloader
    method extract (line 30) | protected function extract(PackageInterface $package, string $file, st...

FILE: src/Composer/Downloader/SvnDownloader.php
  class SvnDownloader (line 25) | class SvnDownloader extends VcsDownloader
    method doDownload (line 33) | protected function doDownload(PackageInterface $package, string $path,...
    method doInstall (line 47) | protected function doInstall(PackageInterface $package, string $path, ...
    method doUpdate (line 69) | protected function doUpdate(PackageInterface $initial, PackageInterfac...
    method getLocalChanges (line 93) | public function getLocalChanges(PackageInterface $package, string $pat...
    method execute (line 115) | protected function execute(PackageInterface $package, string $baseUrl,...
    method cleanChanges (line 131) | protected function cleanChanges(PackageInterface $package, string $pat...
    method getCommitLogs (line 192) | protected function getCommitLogs(string $fromReference, string $toRefe...
    method discardChanges (line 235) | protected function discardChanges(string $path): PromiseInterface
    method hasMetadataRepository (line 247) | protected function hasMetadataRepository(string $path): bool

FILE: src/Composer/Downloader/TarDownloader.php
  class TarDownloader (line 23) | class TarDownloader extends ArchiveDownloader
    method extract (line 28) | protected function extract(PackageInterface $package, string $file, st...

FILE: src/Composer/Downloader/TransportException.php
  class TransportException (line 18) | class TransportException extends \RuntimeException
    method __construct (line 29) | public function __construct(string $message = "", int $code = 400, ?\T...
    method setHeaders (line 37) | public function setHeaders(array $headers): void
    method getHeaders (line 45) | public function getHeaders(): ?array
    method setResponse (line 50) | public function setResponse(?string $response): void
    method getResponse (line 55) | public function getResponse(): ?string
    method setStatusCode (line 63) | public function setStatusCode($statusCode): void
    method getStatusCode (line 68) | public function getStatusCode(): ?int
    method getResponseInfo (line 76) | public function getResponseInfo(): array
    method setResponseInfo (line 84) | public function setResponseInfo(array $responseInfo): void

FILE: src/Composer/Downloader/VcsCapableDownloaderInterface.php
  type VcsCapableDownloaderInterface (line 22) | interface VcsCapableDownloaderInterface
    method getVcsReference (line 31) | public function getVcsReference(PackageInterface $package, string $pat...

FILE: src/Composer/Downloader/VcsDownloader.php
  class VcsDownloader (line 31) | abstract class VcsDownloader implements DownloaderInterface, ChangeRepor...
    method __construct (line 44) | public function __construct(IOInterface $io, Config $config, ?ProcessE...
    method getInstallationSource (line 55) | public function getInstallationSource(): string
    method download (line 63) | public function download(PackageInterface $package, string $path, ?Pac...
    method prepare (line 96) | public function prepare(string $type, PackageInterface $package, strin...
    method cleanup (line 113) | public function cleanup(string $type, PackageInterface $package, strin...
    method install (line 126) | public function install(PackageInterface $package, string $path): Prom...
    method update (line 161) | public function update(PackageInterface $initial, PackageInterface $ta...
    method remove (line 225) | public function remove(PackageInterface $package, string $path): Promi...
    method getVcsReference (line 241) | public function getVcsReference(PackageInterface $package, string $pat...
    method cleanChanges (line 264) | protected function cleanChanges(PackageInterface $package, string $pat...
    method reapplyChanges (line 279) | protected function reapplyChanges(string $path): void
    method doDownload (line 292) | abstract protected function doDownload(PackageInterface $package, stri...
    method doInstall (line 302) | abstract protected function doInstall(PackageInterface $package, strin...
    method doUpdate (line 313) | abstract protected function doUpdate(PackageInterface $initial, Packag...
    method getCommitLogs (line 322) | abstract protected function getCommitLogs(string $fromReference, strin...
    method hasMetadataRepository (line 328) | abstract protected function hasMetadataRepository(string $path): bool;
    method prepareUrls (line 335) | private function prepareUrls(array $urls): array

FILE: src/Composer/Downloader/XzDownloader.php
  class XzDownloader (line 24) | class XzDownloader extends ArchiveDownloader
    method extract (line 26) | protected function extract(PackageInterface $package, string $file, st...

FILE: src/Composer/Downloader/ZipDownloader.php
  class ZipDownloader (line 27) | class ZipDownloader extends ArchiveDownloader
    method download (line 42) | public function download(PackageInterface $package, string $path, ?Pac...
    method extractWithSystemUnzip (line 110) | private function extractWithSystemUnzip(PackageInterface $package, str...
    method extractWithZipArchive (line 208) | private function extractWithZipArchive(PackageInterface $package, stri...
    method extract (line 272) | protected function extract(PackageInterface $package, string $file, st...
    method getErrorMessage (line 280) | protected function getErrorMessage(int $retval, string $file): string

FILE: src/Composer/EventDispatcher/Event.php
  class Event (line 20) | class Event
    method __construct (line 49) | public function __construct(string $name, array $args = [], array $fla...
    method getName (line 61) | public function getName(): string
    method getArguments (line 71) | public function getArguments(): array
    method getFlags (line 81) | public function getFlags(): array
    method isPropagationStopped (line 91) | public function isPropagationStopped(): bool
    method stopPropagation (line 99) | public function stopPropagation(): void

FILE: src/Composer/EventDispatcher/EventDispatcher.php
  class EventDispatcher (line 54) | class EventDispatcher
    method __construct (line 83) | public function __construct(PartialComposer $composer, IOInterface $io...
    method setRunScripts (line 102) | public function setRunScripts(bool $runScripts = true): self
    method dispatch (line 117) | public function dispatch(?string $eventName, ?Event $event = null): int
    method dispatchScript (line 138) | public function dispatchScript(string $eventName, bool $devMode = fals...
    method dispatchPackageEvent (line 157) | public function dispatchPackageEvent(string $eventName, bool $devMode,...
    method dispatchInstallerEvent (line 175) | public function dispatchInstallerEvent(string $eventName, bool $devMod...
    method doDispatch (line 190) | protected function doDispatch(Event $event)
    method executeTty (line 474) | protected function executeTty(string $exec): int
    method getPhpExecCommand (line 483) | protected function getPhpExecCommand(): string
    method executeEventPhpScript (line 504) | protected function executeEventPhpScript(string $className, string $me...
    method eventNeedsToOutput (line 515) | private function eventNeedsToOutput(Event $event): bool
    method addListener (line 537) | public function addListener(string $eventName, $listener, int $priorit...
    method removeListener (line 545) | public function removeListener($listener): void
    method addSubscriber (line 563) | public function addSubscriber(EventSubscriberInterface $subscriber): void
    method getListeners (line 583) | protected function getListeners(Event $event): array
    method hasEventListeners (line 601) | public function hasEventListeners(Event $event): bool
    method getScriptListeners (line 614) | protected function getScriptListeners(Event $event): array
    method isPhpScript (line 635) | protected function isPhpScript(string $callable): bool
    method isCommandClass (line 643) | protected function isCommandClass(string $callable): bool
    method isComposerScript (line 651) | protected function isComposerScript(string $callable): bool
    method pushEvent (line 661) | protected function pushEvent(Event $event): int
    method popEvent (line 674) | protected function popEvent(): ?string
    method ensureBinDirIsInPath (line 679) | private function ensureBinDirIsInPath(): void
    method getCallbackIdentifier (line 704) | private function getCallbackIdentifier($cb): string
    method makeAutoloader (line 723) | private function makeAutoloader(Event $event, $callable): void

FILE: src/Composer/EventDispatcher/EventSubscriberInterface.php
  type EventSubscriberInterface (line 27) | interface EventSubscriberInterface
    method getSubscribedEvents (line 47) | public static function getSubscribedEvents();

FILE: src/Composer/EventDispatcher/ScriptExecutionException.php
  class ScriptExecutionException (line 20) | class ScriptExecutionException extends \RuntimeException

FILE: src/Composer/Exception/IrrecoverableDownloadException.php
  class IrrecoverableDownloadException (line 18) | class IrrecoverableDownloadException extends \RuntimeException

FILE: src/Composer/Exception/NoSslException.php
  class NoSslException (line 20) | class NoSslException extends \RuntimeException

FILE: src/Composer/Factory.php
  class Factory (line 53) | class Factory
    method getHomeDir (line 58) | protected static function getHomeDir(): string
    method getCacheDir (line 99) | protected static function getCacheDir(string $home): string
    method getDataDir (line 144) | protected static function getDataDir(string $home): string
    method createConfig (line 165) | public static function createConfig(?IOInterface $io = null, ?string $...
    method getComposerFile (line 224) | public static function getComposerFile(): string
    method getLockFile (line 241) | public static function getLockFile(string $composerFile): string
    method createAdditionalStyles (line 251) | public static function createAdditionalStyles(): array
    method createOutput (line 259) | public static function createOutput(): ConsoleOutput
    method createComposer (line 281) | public function createComposer(IOInterface $io, $localConfig = null, $...
    method createGlobal (line 467) | public static function createGlobal(IOInterface $io, bool $disablePlug...
    method addLocalRepository (line 474) | protected function addLocalRepository(IOInterface $io, RepositoryManag...
    method createGlobalComposer (line 489) | protected function createGlobalComposer(IOInterface $io, Config $confi...
    method createDownloadManager (line 504) | public function createDownloadManager(IOInterface $io, Config $config,...
    method createArchiveManager (line 554) | public function createArchiveManager(Config $config, Downloader\Downlo...
    method createPluginManager (line 570) | protected function createPluginManager(IOInterface $io, Composer $comp...
    method createInstallationManager (line 575) | public function createInstallationManager(Loop $loop, IOInterface $io,...
    method createDefaultInstallers (line 580) | protected function createDefaultInstallers(Installer\InstallationManag...
    method purgePackages (line 594) | protected function purgePackages(InstalledRepositoryInterface $repo, I...
    method loadRootPackage (line 603) | protected function loadRootPackage(RepositoryManager $rm, Config $conf...
    method create (line 615) | public static function create(IOInterface $io, $config = null, $disabl...
    method createHttpDownloader (line 637) | public static function createHttpDownloader(IOInterface $io, Config $c...
    method loadComposerAuthEnv (line 679) | private static function loadComposerAuthEnv(Config $config, ?IOInterfa...
    method useXdg (line 701) | private static function useXdg(): bool
    method getUserDir (line 719) | private static function getUserDir(): string
    method validateJsonSchema (line 733) | private static function validateJsonSchema(?IOInterface $io, $fileOrDa...

FILE: src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php
  class IgnoreAllPlatformRequirementFilter (line 17) | final class IgnoreAllPlatformRequirementFilter implements PlatformRequir...
    method isIgnored (line 19) | public function isIgnored(string $req): bool
    method isUpperBoundIgnored (line 24) | public function isUpperBoundIgnored(string $req): bool

FILE: src/Composer/Filter/PlatformRequirementFilter/IgnoreListPlatformRequirementFilter.php
  class IgnoreListPlatformRequirementFilter (line 25) | final class IgnoreListPlatformRequirementFilter implements PlatformRequi...
    method __construct (line 40) | public function __construct(array $reqList)
    method isIgnored (line 54) | public function isIgnored(string $req): bool
    method isUpperBoundIgnored (line 63) | public function isUpperBoundIgnored(string $req): bool
    method filterConstraint (line 75) | public function filterConstraint(string $req, ConstraintInterface $con...

FILE: src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php
  class IgnoreNothingPlatformRequirementFilter (line 15) | final class IgnoreNothingPlatformRequirementFilter implements PlatformRe...
    method isIgnored (line 20) | public function isIgnored(string $req): bool
    method isUpperBoundIgnored (line 28) | public function isUpperBoundIgnored(string $req): bool

FILE: src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterFactory.php
  class PlatformRequirementFilterFactory (line 15) | final class PlatformRequirementFilterFactory
    method fromBoolOrList (line 20) | public static function fromBoolOrList($boolOrList): PlatformRequiremen...
    method ignoreAll (line 38) | public static function ignoreAll(): PlatformRequirementFilterInterface
    method ignoreNothing (line 43) | public static function ignoreNothing(): PlatformRequirementFilterInter...

FILE: src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterInterface.php
  type PlatformRequirementFilterInterface (line 15) | interface PlatformRequirementFilterInterface
    method isIgnored (line 17) | public function isIgnored(string $req): bool;
    method isUpperBoundIgnored (line 19) | public function isUpperBoundIgnored(string $req): bool;

FILE: src/Composer/IO/BaseIO.php
  class BaseIO (line 21) | abstract class BaseIO implements IOInterface
    method getAuthentications (line 29) | public function getAuthentications()
    method resetAuthentications (line 37) | public function resetAuthentications()
    method hasAuthentication (line 45) | public function hasAuthentication($repositoryName)
    method getAuthentication (line 53) | public function getAuthentication($repositoryName)
    method setAuthentication (line 65) | public function setAuthentication($repositoryName, $username, $passwor...
    method writeRaw (line 73) | public function writeRaw($messages, bool $newline = true, int $verbosi...
    method writeErrorRaw (line 81) | public function writeErrorRaw($messages, bool $newline = true, int $ve...
    method checkAndSetAuthentication (line 95) | protected function checkAndSetAuthentication(string $repositoryName, s...
    method loadConfiguration (line 116) | public function loadConfiguration(Config $config)
    method emergency (line 223) | public function emergency($message, array $context = []): void
    method alert (line 231) | public function alert($message, array $context = []): void
    method critical (line 239) | public function critical($message, array $context = []): void
    method error (line 247) | public function error($message, array $context = []): void
    method warning (line 255) | public function warning($message, array $context = []): void
    method notice (line 263) | public function notice($message, array $context = []): void
    method info (line 271) | public function info($message, array $context = []): void
    method debug (line 279) | public function debug($message, array $context = []): void
    method log (line 288) | public function log($level, $message, array $context = []): void

FILE: src/Composer/IO/BufferIO.php
  class BufferIO (line 26) | class BufferIO extends ConsoleIO
    method __construct (line 28) | public function __construct(string $input = '', int $verbosity = Strea...
    method getOutput (line 47) | public function getOutput(): string
    method setUserInputs (line 73) | public function setUserInputs(array $inputs): void
    method createStream (line 88) | private function createStream(array $inputs)

FILE: src/Composer/IO/ConsoleIO.php
  class ConsoleIO (line 32) | class ConsoleIO extends BaseIO
    method __construct (line 57) | public function __construct(InputInterface $input, OutputInterface $ou...
    method enableDebugging (line 74) | public function enableDebugging(float $startTime)
    method isInteractive (line 82) | public function isInteractive()
    method isDecorated (line 90) | public function isDecorated()
    method isVerbose (line 98) | public function isVerbose()
    method isVeryVerbose (line 106) | public function isVeryVerbose()
    method isDebug (line 114) | public function isDebug()
    method write (line 122) | public function write($messages, bool $newline = true, int $verbosity ...
    method writeError (line 132) | public function writeError($messages, bool $newline = true, int $verbo...
    method writeRaw (line 142) | public function writeRaw($messages, bool $newline = true, int $verbosi...
    method writeErrorRaw (line 150) | public function writeErrorRaw($messages, bool $newline = true, int $ve...
    method doWrite (line 158) | private function doWrite($messages, bool $newline, bool $stderr, int $...
    method overwrite (line 191) | public function overwrite($messages, bool $newline = true, ?int $size ...
    method overwriteError (line 199) | public function overwriteError($messages, bool $newline = true, ?int $...
    method doOverwrite (line 207) | private function doOverwrite($messages, bool $newline, ?int $size, boo...
    method getProgressBar (line 248) | public function getProgressBar(int $max = 0)
    method ask (line 256) | public function ask($question, $default = null)
    method askConfirmation (line 268) | public function askConfirmation($question, $default = true)
    method askAndValidate (line 280) | public function askAndValidate($question, $validator, $attempts = null...
    method askAndHideAnswer (line 294) | public function askAndHideAnswer($question)
    method select (line 307) | public function select($question, $choices, $default, $attempts = fals...
    method getTable (line 337) | public function getTable(): Table
    method getErrorOutput (line 342) | private function getErrorOutput(): OutputInterface
    method sanitize (line 364) | public static function sanitize($messages, bool $allowNewlines = true)
    method ensureValidUtf8 (line 389) | private static function ensureValidUtf8(string $string): string

FILE: src/Composer/IO/IOInterface.php
  type IOInterface (line 23) | interface IOInterface extends LoggerInterface
    method isInteractive (line 36) | public function isInteractive();
    method isVerbose (line 43) | public function isVerbose();
    method isVeryVerbose (line 50) | public function isVeryVerbose();
    method isDebug (line 57) | public function isDebug();
    method isDecorated (line 64) | public function isDecorated();
    method write (line 75) | public function write($messages, bool $newline = true, int $verbosity ...
    method writeError (line 86) | public function writeError($messages, bool $newline = true, int $verbo...
    method writeRaw (line 97) | public function writeRaw($messages, bool $newline = true, int $verbosi...
    method writeErrorRaw (line 108) | public function writeErrorRaw($messages, bool $newline = true, int $ve...
    method overwrite (line 120) | public function overwrite($messages, bool $newline = true, ?int $size ...
    method overwriteError (line 132) | public function overwriteError($messages, bool $newline = true, ?int $...
    method ask (line 143) | public function ask(string $question, $default = null);
    method askConfirmation (line 155) | public function askConfirmation(string $question, bool $default = true);
    method askAndValidate (line 172) | public function askAndValidate(string $question, callable $validator, ...
    method askAndHideAnswer (line 181) | public function askAndHideAnswer(string $question);
    method select (line 198) | public function select(string $question, array $choices, $default, $at...
    method getAuthentications (line 205) | public function getAuthentications();
    method hasAuthentication (line 214) | public function hasAuthentication(string $repositoryName);
    method getAuthentication (line 223) | public function getAuthentication(string $repositoryName);
    method setAuthentication (line 234) | public function setAuthentication(string $repositoryName, string $user...
    method loadConfiguration (line 241) | public function loadConfiguration(Config $config);

FILE: src/Composer/IO/NullIO.php
  class NullIO (line 20) | class NullIO extends BaseIO
    method isInteractive (line 25) | public function isInteractive(): bool
    method isVerbose (line 33) | public function isVerbose(): bool
    method isVeryVerbose (line 41) | public function isVeryVerbose(): bool
    method isDebug (line 49) | public function isDebug(): bool
    method isDecorated (line 57) | public function isDecorated(): bool
    method write (line 65) | public function write($messages, bool $newline = true, int $verbosity ...
    method writeError (line 72) | public function writeError($messages, bool $newline = true, int $verbo...
    method overwrite (line 79) | public function overwrite($messages, bool $newline = true, ?int $size ...
    method overwriteError (line 86) | public function overwriteError($messages, bool $newline = true, ?int $...
    method ask (line 93) | public function ask($question, $default = null)
    method askConfirmation (line 101) | public function askConfirmation($question, $default = true): bool
    method askAndValidate (line 109) | public function askAndValidate($question, $validator, $attempts = null...
    method askAndHideAnswer (line 117) | public function askAndHideAnswer($question): ?string
    method select (line 125) | public function select($question, $choices, $default, $attempts = fals...

FILE: src/Composer/InstalledVersions.php
  class InstalledVersions (line 27) | class InstalledVersions
    method getInstalledPackages (line 63) | public static function getInstalledPackages()
    method getInstalledPackagesByType (line 84) | public static function getInstalledPackagesByType($type)
    method isInstalled (line 108) | public static function isInstalled($packageName, $includeDevRequiremen...
    method satisfies (line 131) | public static function satisfies(VersionParser $parser, $packageName, ...
    method getVersionRanges (line 148) | public static function getVersionRanges($packageName)
    method getVersion (line 179) | public static function getVersion($packageName)
    method getPrettyVersion (line 200) | public static function getPrettyVersion($packageName)
    method getReference (line 221) | public static function getReference($packageName)
    method getInstallPath (line 242) | public static function getInstallPath($packageName)
    method getRootPackage (line 259) | public static function getRootPackage()
    method getRawData (line 273) | public static function getRawData()
    method getAllRawData (line 296) | public static function getAllRawData()
    method reload (line 319) | public static function reload($data)
    method getSelfDir (line 334) | private static function getSelfDir()
    method getInstalled (line 347) | private static function getInstalled()

FILE: src/Composer/Installer.php
  class Installer (line 76) | class Installer
    method __construct (line 224) | public function __construct(IOInterface $io, Config $config, RootPacka...
    method run (line 248) | public function run(): int
    method doUpdate (line 464) | protected function doUpdate(InstalledRepositoryInterface $localRepo, b...
    method extractDevPackages (line 678) | protected function extractDevPackages(LockTransaction $lockTransaction...
    method doInstall (line 728) | protected function doInstall(InstalledRepositoryInterface $localRepo, ...
    method createPlatformRepo (line 876) | protected function createPlatformRepo(bool $forUpdate): PlatformReposi...
    method createRepositorySet (line 892) | private function createRepositorySet(bool $forUpdate, PlatformReposito...
    method createPolicy (line 956) | private function createPolicy(bool $forUpdate, ?LockArrayRepository $l...
    method createRequest (line 990) | private function createRequest(RootPackageInterface $rootPackage, Plat...
    method requirePackagesForUpdate (line 1021) | private function requirePackagesForUpdate(Request $request, ?LockArray...
    method getRootAliases (line 1053) | private function getRootAliases(bool $forUpdate): array
    method extractPlatformRequirements (line 1069) | private function extractPlatformRequirements(array $links): array
    method mockLocalRepositories (line 1086) | private function mockLocalRepositories(RepositoryManager $rm): void
    method createPoolOptimizer (line 1104) | private function createPoolOptimizer(PolicyInterface $policy): ?PoolOp...
    method getAuditConfig (line 1118) | private function getAuditConfig(): AuditConfig
    method createSecurityAuditPoolFilter (line 1127) | private function createSecurityAuditPoolFilter(): ?SecurityAdvisoryPoo...
    method create (line 1141) | public static function create(IOInterface $io, Composer $composer): self
    method setIgnoredTypes (line 1162) | public function setIgnoredTypes(array $types): self
    method setAllowedTypes (line 1175) | public function setAllowedTypes(?array $types): self
    method setAdditionalFixedRepository (line 1185) | public function setAdditionalFixedRepository(RepositoryInterface $addi...
    method setTemporaryConstraints (line 1195) | public function setTemporaryConstraints(array $constraints): self
    method setDryRun (line 1205) | public function setDryRun(bool $dryRun = true): self
    method isDryRun (line 1215) | public function isDryRun(): bool
    method setDownloadOnly (line 1223) | public function setDownloadOnly(bool $downloadOnly = true): self
    method setPreferSource (line 1233) | public function setPreferSource(bool $preferSource = true): self
    method setPreferDist (line 1243) | public function setPreferDist(bool $preferDist = true): self
    method setOptimizeAutoloader (line 1253) | public function setOptimizeAutoloader(bool $optimizeAutoloader): self
    method setClassMapAuthoritative (line 1269) | public function setClassMapAuthoritative(bool $classMapAuthoritative):...
    method setApcuAutoloader (line 1283) | public function setApcuAutoloader(bool $apcuAutoloader, ?string $apcuA...
    method setUpdate (line 1294) | public function setUpdate(bool $update): self
    method setInstall (line 1304) | public function setInstall(bool $install): self
    method setDevMode (line 1314) | public function setDevMode(bool $devMode = true): self
    method setDumpAutoloader (line 1326) | public function setDumpAutoloader(bool $dumpAutoloader = true): self
    method setRunScripts (line 1340) | public function setRunScripts(bool $runScripts = true): self
    method setConfig (line 1350) | public function setConfig(Config $config): self
    method setVerbose (line 1360) | public function setVerbose(bool $verbose = true): self
    method isVerbose (line 1370) | public function isVerbose(): bool
    method setIgnorePlatformRequirements (line 1387) | public function setIgnorePlatformRequirements($ignorePlatformReqs): self
    method setPlatformRequirementFilter (line 1394) | public function setPlatformRequirementFilter(PlatformRequirementFilter...
    method setUpdateMirrors (line 1404) | public function setUpdateMirrors(bool $updateMirrors): self
    method setUpdateAllowList (line 1417) | public function setUpdateAllowList(array $packages): self
    method setUpdateAllowTransitiveDependencies (line 1436) | public function setUpdateAllowTransitiveDependencies(int $updateAllowT...
    method setPreferStable (line 1450) | public function setPreferStable(bool $preferStable = true): self
    method setPreferLowest (line 1460) | public function setPreferLowest(bool $preferLowest = true): self
    method setMinimalUpdate (line 1472) | public function setMinimalUpdate(bool $minimalUpdate = true): self
    method setWriteLock (line 1484) | public function setWriteLock(bool $writeLock = true): self
    method setExecuteOperations (line 1496) | public function setExecuteOperations(bool $executeOperations = true): ...
    method setAudit (line 1508) | public function setAudit(bool $audit): self
    method setErrorOnAudit (line 1519) | public function setErrorOnAudit(bool $errorOnAudit): self
    method setAuditFormat (line 1533) | public function setAuditFormat(string $auditFormat): self
    method setAuditConfig (line 1544) | public function setAuditConfig(AuditConfig $auditConfig): self
    method disablePlugins (line 1558) | public function disablePlugins(): self
    method setSuggestedPackagesReporter (line 1565) | public function setSuggestedPackagesReporter(SuggestedPackagesReporter...

FILE: src/Composer/Installer/BinaryInstaller.php
  class BinaryInstaller (line 30) | class BinaryInstaller
    method __construct (line 43) | public function __construct(IOInterface $io, string $binDir, string $b...
    method installBinaries (line 52) | public function installBinaries(PackageInterface $package, string $ins...
    method removeBinaries (line 107) | public function removeBinaries(PackageInterface $package): void
    method determineBinaryCaller (line 131) | public static function determineBinaryCaller(string $bin): string
    method getBinaries (line 150) | protected function getBinaries(PackageInterface $package): array
    method installFullBinaries (line 155) | protected function installFullBinaries(string $binPath, string $link, ...
    method installUnixyProxyBinaries (line 171) | protected function installUnixyProxyBinaries(string $binPath, string $...
    method initializeBinDir (line 177) | protected function initializeBinDir(): void
    method generateWindowsProxyCode (line 183) | protected function generateWindowsProxyCode(string $bin, string $link)...
    method generateUnixyProxyCode (line 206) | protected function generateUnixyProxyCode(string $bin, string $link): ...

FILE: src/Composer/Installer/BinaryPresenceInterface.php
  type BinaryPresenceInterface (line 22) | interface BinaryPresenceInterface
    method ensureBinariesPresence (line 31) | public function ensureBinariesPresence(PackageInterface $package);

FILE: src/Composer/Installer/InstallationManager.php
  class InstallationManager (line 40) | class InstallationManager
    method __construct (line 57) | public function __construct(Loop $loop, IOInterface $io, ?EventDispatc...
    method reset (line 64) | public function reset(): void
    method addInstaller (line 75) | public function addInstaller(InstallerInterface $installer): void
    method removeInstaller (line 86) | public function removeInstaller(InstallerInterface $installer): void
    method disablePlugins (line 101) | public function disablePlugins(): void
    method getInstaller (line 119) | public function getInstaller(string $type): InstallerInterface
    method isPackageInstalled (line 142) | public function isPackageInstalled(InstalledRepositoryInterface $repo,...
    method ensureBinariesPresence (line 157) | public function ensureBinariesPresence(PackageInterface $package): void
    method execute (line 181) | public function execute(InstalledRepositoryInterface $repo, array $ope...
    method downloadAndExecuteBatch (line 246) | private function downloadAndExecuteBatch(InstalledRepositoryInterface ...
    method executeBatch (line 332) | private function executeBatch(InstalledRepositoryInterface $repo, arra...
    method waitOnPromises (line 422) | private function waitOnPromises(array $promises): void
    method download (line 449) | public function download(PackageInterface $package): ?PromiseInterface
    method install (line 464) | public function install(InstalledRepositoryInterface $repo, InstallOpe...
    method update (line 481) | public function update(InstalledRepositoryInterface $repo, UpdateOpera...
    method uninstall (line 520) | public function uninstall(InstalledRepositoryInterface $repo, Uninstal...
    method markAliasInstalled (line 534) | public function markAliasInstalled(InstalledRepositoryInterface $repo,...
    method markAliasUninstalled (line 549) | public function markAliasUninstalled(InstalledRepositoryInterface $rep...
    method getInstallPath (line 561) | public function getInstallPath(PackageInterface $package): ?string
    method setOutputProgress (line 568) | public function setOutputProgress(bool $outputProgress): void
    method notifyInstalls (line 573) | public function notifyInstalls(IOInterface $io): void
    method markForNotification (line 640) | private function markForNotification(PackageInterface $package): void
    method runCleanup (line 650) | private function runCleanup(array $cleanupPromises): void

FILE: src/Composer/Installer/InstallerEvent.php
  class InstallerEvent (line 20) | class InstallerEvent extends Event
    method __construct (line 50) | public function __construct(string $eventName, Composer $composer, IOI...
    method getComposer (line 61) | public function getComposer(): Composer
    method getIO (line 66) | public function getIO(): IOInterface
    method isDevMode (line 71) | public function isDevMode(): bool
    method isExecutingOperations (line 76) | public function isExecutingOperations(): bool
    method getTransaction (line 81) | public function getTransaction(): ?Transaction

FILE: src/Composer/Installer/InstallerEvents.php
  class InstallerEvents (line 15) | class InstallerEvents

FILE: src/Composer/Installer/InstallerInterface.php
  type InstallerInterface (line 26) | interface InstallerInterface
    method supports (line 33) | public function supports(string $packageType);
    method isInstalled (line 43) | public function isInstalled(InstalledRepositoryInterface $repo, Packag...
    method download (line 53) | public function download(PackageInterface $package, ?PackageInterface ...
    method prepare (line 69) | public function prepare(string $type, PackageInterface $package, ?Pack...
    method install (line 79) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 91) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 101) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method cleanup (line 116) | public function cleanup(string $type, PackageInterface $package, ?Pack...
    method getInstallPath (line 123) | public function getInstallPath(PackageInterface $package);

FILE: src/Composer/Installer/LibraryInstaller.php
  class LibraryInstaller (line 33) | class LibraryInstaller implements InstallerInterface, BinaryPresenceInte...
    method __construct (line 53) | public function __construct(IOInterface $io, PartialComposer $composer...
    method supports (line 68) | public function supports(string $packageType)
    method isInstalled (line 76) | public function isInstalled(InstalledRepositoryInterface $repo, Packag...
    method download (line 106) | public function download(PackageInterface $package, ?PackageInterface ...
    method prepare (line 117) | public function prepare($type, PackageInterface $package, ?PackageInte...
    method cleanup (line 128) | public function cleanup($type, PackageInterface $package, ?PackageInte...
    method install (line 139) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 168) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 197) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method getInstallPath (line 230) | public function getInstallPath(PackageInterface $package)
    method ensureBinariesPresence (line 245) | public function ensureBinariesPresence(PackageInterface $package)
    method getPackageBasePath (line 258) | protected function getPackageBasePath(PackageInterface $package)
    method installCode (line 274) | protected function installCode(PackageInterface $package)
    method updateCode (line 285) | protected function updateCode(PackageInterface $initial, PackageInterf...
    method removeCode (line 320) | protected function removeCode(PackageInterface $package)
    method initializeVendorDir (line 330) | protected function initializeVendorDir()
    method getDownloadManager (line 336) | protected function getDownloadManager(): DownloadManager

FILE: src/Composer/Installer/MetapackageInstaller.php
  class MetapackageInstaller (line 27) | class MetapackageInstaller implements InstallerInterface
    method __construct (line 32) | public function __construct(IOInterface $io)
    method supports (line 40) | public function supports(string $packageType)
    method isInstalled (line 48) | public function isInstalled(InstalledRepositoryInterface $repo, Packag...
    method download (line 56) | public function download(PackageInterface $package, ?PackageInterface ...
    method prepare (line 65) | public function prepare($type, PackageInterface $package, ?PackageInte...
    method cleanup (line 74) | public function cleanup($type, PackageInterface $package, ?PackageInte...
    method install (line 83) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 95) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 112) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method getInstallPath (line 130) | public function getInstallPath(PackageInterface $package)

FILE: src/Composer/Installer/NoopInstaller.php
  class NoopInstaller (line 25) | class NoopInstaller implements InstallerInterface
    method supports (line 30) | public function supports(string $packageType)
    method isInstalled (line 38) | public function isInstalled(InstalledRepositoryInterface $repo, Packag...
    method download (line 46) | public function download(PackageInterface $package, ?PackageInterface ...
    method prepare (line 54) | public function prepare($type, PackageInterface $package, ?PackageInte...
    method cleanup (line 62) | public function cleanup($type, PackageInterface $package, ?PackageInte...
    method install (line 70) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 82) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 99) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method getInstallPath (line 112) | public function getInstallPath(PackageInterface $package)

FILE: src/Composer/Installer/PackageEvent.php
  class PackageEvent (line 26) | class PackageEvent extends Event
    method __construct (line 63) | public function __construct(string $eventName, Composer $composer, IOI...
    method getComposer (line 75) | public function getComposer(): Composer
    method getIO (line 80) | public function getIO(): IOInterface
    method isDevMode (line 85) | public function isDevMode(): bool
    method getLocalRepo (line 90) | public function getLocalRepo(): RepositoryInterface
    method getOperations (line 98) | public function getOperations(): array
    method getOperation (line 106) | public function getOperation(): OperationInterface

FILE: src/Composer/Installer/PackageEvents.php
  class PackageEvents (line 20) | class PackageEvents

FILE: src/Composer/Installer/PluginInstaller.php
  class PluginInstaller (line 31) | class PluginInstaller extends LibraryInstaller
    method __construct (line 33) | public function __construct(IOInterface $io, PartialComposer $composer...
    method supports (line 41) | public function supports(string $packageType)
    method disablePlugins (line 46) | public function disablePlugins(): void
    method prepare (line 54) | public function prepare($type, PackageInterface $package, ?PackageInte...
    method download (line 67) | public function download(PackageInterface $package, ?PackageInterface ...
    method install (line 80) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 100) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 118) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method rollbackInstall (line 125) | private function rollbackInstall(\Exception $e, InstalledRepositoryInt...
    method getPluginManager (line 132) | protected function getPluginManager(): PluginManager

FILE: src/Composer/Installer/ProjectInstaller.php
  class ProjectInstaller (line 27) | class ProjectInstaller implements InstallerInterface
    method __construct (line 36) | public function __construct(string $installPath, DownloadManager $dm, ...
    method supports (line 46) | public function supports(string $packageType): bool
    method isInstalled (line 54) | public function isInstalled(InstalledRepositoryInterface $repo, Packag...
    method download (line 62) | public function download(PackageInterface $package, ?PackageInterface ...
    method prepare (line 78) | public function prepare($type, PackageInterface $package, ?PackageInte...
    method cleanup (line 86) | public function cleanup($type, PackageInterface $package, ?PackageInte...
    method install (line 94) | public function install(InstalledRepositoryInterface $repo, PackageInt...
    method update (line 102) | public function update(InstalledRepositoryInterface $repo, PackageInte...
    method uninstall (line 110) | public function uninstall(InstalledRepositoryInterface $repo, PackageI...
    method getInstallPath (line 120) | public function getInstallPath(PackageInterface $package): string

FILE: src/Composer/Installer/SuggestedPackagesReporter.php
  class SuggestedPackagesReporter (line 26) | class SuggestedPackagesReporter
    method __construct (line 42) | public function __construct(IOInterface $io)
    method getPackages (line 50) | public function getPackages(): array
    method addPackage (line 65) | public function addPackage(string $source, string $target, string $rea...
    method addSuggestionsFromPackage (line 79) | public function addSuggestionsFromPackage(PackageInterface $package): ...
    method output (line 102) | public function output(int $mode, ?InstalledRepository $installedRepo ...
    method outputMinimalistic (line 167) | public function outputMinimalistic(?InstalledRepository $installedRepo...
    method getFilteredSuggestions (line 180) | private function getFilteredSuggestions(?InstalledRepository $installe...
    method escapeOutput (line 213) | private function escapeOutput(string $string): string
    method removeControlCharacters (line 220) | private function removeControlCharacters(string $string): string

FILE: src/Composer/Json/JsonFile.php
  class JsonFile (line 30) | class JsonFile
    method __construct (line 65) | public function __construct(string $path, ?HttpDownloader $httpDownloa...
    method getPath (line 76) | public function getPath(): string
    method exists (line 84) | public function exists(): bool
    method read (line 96) | public function read()
    method write (line 138) | public function write(array $hash, int $options = JSON_UNESCAPED_SLASH...
    method filePutContentsIfModified (line 181) | private function filePutContentsIfModified(string $path, string $content)
    method validateSchema (line 202) | public function validateSchema(int $schema = self::STRICT_SCHEMA, ?str...
    method validateJsonSchema (line 228) | public static function validateJsonSchema(string $source, $data, int $...
    method encode (line 279) | public static function encode($data, int $options = \JSON_UNESCAPED_SL...
    method throwEncodeError (line 308) | private static function throwEncodeError(int $code): void
    method parseJson (line 339) | public static function parseJson(?string $json, ?string $file = null)
    method validateSyntax (line 376) | protected static function validateSyntax(string $json, ?string $file =...
    method detectIndenting (line 405) | public static function detectIndenting(?string $json): string

FILE: src/Composer/Json/JsonFormatter.php
  class JsonFormatter (line 27) | class JsonFormatter
    method format (line 38) | public static function format(string $json, bool $unescapeUnicode, boo...

FILE: src/Composer/Json/JsonManipulator.php
  class JsonManipulator (line 21) | class JsonManipulator
    method __construct (line 41) | public function __construct(string $contents)
    method getContents (line 55) | public function getContents(): string
    method addLink (line 60) | public function addLink(string $type, string $package, string $constra...
    method sortPackages (line 126) | private function sortPackages(array &$packages = []): void
    method addRepository (line 160) | public function addRepository(string $name, $config, bool $append = tr...
    method doConvertRepositoriesFromAssocToList (line 179) | private function doConvertRepositoriesFromAssocToList(): bool
    method setRepositoryUrl (line 219) | public function setRepositoryUrl(string $name, string $url): bool
    method insertRepository (line 274) | public function insertRepository(string $name, $config, string $refere...
    method removeRepository (line 317) | public function removeRepository(string $name): bool
    method doRemoveRepository (line 322) | private function doRemoveRepository(string $name): bool
    method addConfigSetting (line 377) | public function addConfigSetting(string $name, $value): bool
    method removeConfigSetting (line 382) | public function removeConfigSetting(string $name): bool
    method addProperty (line 390) | public function addProperty(string $name, $value): bool
    method removeProperty (line 407) | public function removeProperty(string $name): bool
    method addSubNode (line 435) | public function addSubNode(string $mainNode, string $name, $value, boo...
    method removeSubNode (line 536) | public function removeSubNode(string $mainNode, string $name): bool
    method addListItem (line 653) | public function addListItem(string $mainNode, $value, bool $append = t...
    method insertListItem (line 737) | public function insertListItem(string $mainNode, $value, int $index): ...
    method removeListItem (line 798) | public function removeListItem(string $mainNode, int $nodeIndex): bool
    method addMainKey (line 873) | public function addMainKey(string $key, $content): bool
    method removeMainKey (line 913) | public function removeMainKey(string $key): bool
    method changeEmptyMainKeyFromAssocToList (line 950) | public function changeEmptyMainKeyFromAssocToList(string $key): bool
    method removeMainKeyIfEmpty (line 977) | public function removeMainKeyIfEmpty(string $key): bool
    method format (line 995) | public function format($data, int $depth = 0, bool $wasObject = false)...
    method detectIndenting (line 1027) | protected function detectIndenting(): void

FILE: src/Composer/Json/JsonValidationException.php
  class JsonValidationException (line 20) | class JsonValidationException extends Exception
    method __construct (line 30) | public function __construct(string $message, array $errors = [], ?Exce...
    method getErrors (line 39) | public function getErrors(): array

FILE: src/Composer/PHPStan/ConfigReturnTypeExtension.php
  class ConfigReturnTypeExtension (line 35) | final class ConfigReturnTypeExtension implements DynamicMethodReturnType...
    method __construct (line 40) | public function __construct()
    method getClass (line 53) | public function getClass(): string
    method isMethodSupported (line 58) | public function isMethodSupported(MethodReflection $methodReflection):...
    method getTypeFromMethodCall (line 63) | public function getTypeFromMethodCall(MethodReflection $methodReflecti...
    method parseType (line 96) | private function parseType(array $def, string $path): Type

FILE: src/Composer/PHPStan/RuleReasonDataReturnTypeExtension.php
  class RuleReasonDataReturnTypeExtension (line 34) | final class RuleReasonDataReturnTypeExtension implements DynamicMethodRe...
    method getClass (line 36) | public function getClass(): string
    method isMethodSupported (line 41) | public function isMethodSupported(MethodReflection $methodReflection):...
    method getTypeFromMethodCall (line 46) | public function getTypeFromMethodCall(MethodReflection $methodReflecti...

FILE: src/Composer/Package/AliasPackage.php
  class AliasPackage (line 21) | class AliasPackage extends BasePackage
    method __construct (line 59) | public function __construct(BasePackage $aliasOf, string $version, str...
    method getAliasOf (line 78) | public function getAliasOf()
    method getVersion (line 86) | public function getVersion(): string
    method getStability (line 94) | public function getStability(): string
    method getPrettyVersion (line 102) | public function getPrettyVersion(): string
    method isDev (line 110) | public function isDev(): bool
    method getRequires (line 118) | public function getRequires(): array
    method getConflicts (line 127) | public function getConflicts(): array
    method getProvides (line 136) | public function getProvides(): array
    method getReplaces (line 145) | public function getReplaces(): array
    method getDevRequires (line 153) | public function getDevRequires(): array
    method setRootPackageAlias (line 163) | public function setRootPackageAlias(bool $value): void
    method isRootPackageAlias (line 171) | public function isRootPackageAlias(): bool
    method replaceSelfVersionDependencies (line 182) | protected function replaceSelfVersionDependencies(array $links, $linkT...
    method hasSelfVersionRequires (line 215) | public function hasSelfVersionRequires(): bool
    method __toString (line 220) | public function __toString(): string
    method getType (line 229) | public function getType(): string
    method getTargetDir (line 234) | public function getTargetDir(): ?string
    method getExtra (line 239) | public function getExtra(): array
    method setInstallationSource (line 244) | public function setInstallationSource(?string $type): void
    method getInstallationSource (line 249) | public function getInstallationSource(): ?string
    method getSourceType (line 254) | public function getSourceType(): ?string
    method getSourceUrl (line 259) | public function getSourceUrl(): ?string
    method getSourceUrls (line 264) | public function getSourceUrls(): array
    method getSourceReference (line 269) | public function getSourceReference(): ?string
    method setSourceReference (line 274) | public function setSourceReference(?string $reference): void
    method setSourceMirrors (line 279) | public function setSourceMirrors(?array $mirrors): void
    method getSourceMirrors (line 284) | public function getSourceMirrors(): ?array
    method getDistType (line 289) | public function getDistType(): ?string
    method getDistUrl (line 294) | public function getDistUrl(): ?string
    method getDistUrls (line 299) | public function getDistUrls(): array
    method getDistReference (line 304) | public function getDistReference(): ?string
    method setDistReference (line 309) | public function setDistReference(?string $reference): void
    method getDistSha1Checksum (line 314) | public function getDistSha1Checksum(): ?string
    method setTransportOptions (line 319) | public function setTransportOptions(array $options): void
    method getTransportOptions (line 324) | public function getTransportOptions(): array
    method setDistMirrors (line 329) | public function setDistMirrors(?array $mirrors): void
    method getDistMirrors (line 334) | public function getDistMirrors(): ?array
    method getAutoload (line 339) | public function getAutoload(): array
    method getDevAutoload (line 344) | public function getDevAutoload(): array
    method getIncludePaths (line 349) | public function getIncludePaths(): array
    method getPhpExt (line 354) | public function getPhpExt(): ?array
    method getReleaseDate (line 359) | public function getReleaseDate(): ?\DateTimeInterface
    method getBinaries (line 364) | public function getBinaries(): array
    method getSuggests (line 369) | public function getSuggests(): array
    method getNotificationUrl (line 374) | public function getNotificationUrl(): ?string
    method isDefaultBranch (line 379) | public function isDefaultBranch(): bool
    method setDistUrl (line 384) | public function setDistUrl(?string $url): void
    method setDistType (line 389) | public function setDistType(?string $type): void
    method setSourceDistReferences (line 394) | public function setSourceDistReferences(string $reference): void

FILE: src/Composer/Package/Archiver/ArchivableFilesFilter.php
  class ArchivableFilesFilter (line 23) | class ArchivableFilesFilter extends FilterIterator
    method accept (line 31) | public function accept(): bool
    method addEmptyDir (line 43) | public function addEmptyDir(PharData $phar, string $sources): void

FILE: src/Composer/Package/Archiver/ArchivableFilesFinder.php
  class ArchivableFilesFinder (line 32) | class ArchivableFilesFinder extends FilterIterator
    method __construct (line 46) | public function __construct(string $sources, array $excludes, bool $ig...
    method accept (line 100) | public function accept(): bool

FILE: src/Composer/Package/Archiver/ArchiveManager.php
  class ArchiveManager (line 28) | class ArchiveManager
    method __construct (line 48) | public function __construct(DownloadManager $downloadManager, Loop $loop)
    method addArchiver (line 54) | public function addArchiver(ArchiverInterface $archiver): void
    method setOverwriteFiles (line 66) | public function setOverwriteFiles(bool $overwriteFiles): self
    method getPackageFilenameParts (line 77) | public function getPackageFilenameParts(CompletePackageInterface $pack...
    method getPackageFilenameFromParts (line 117) | public function getPackageFilenameFromParts(array $parts): string
    method getPackageFilename (line 129) | public function getPackageFilename(CompletePackageInterface $package):...
    method archive (line 147) | public function archive(CompletePackageInterface $package, string $for...
    method buildExcludePatterns (line 245) | private function buildExcludePatterns(array $parts, array $formats): a...
    method getSupportedFormats (line 263) | private function getSupportedFormats(): array

FILE: src/Composer/Package/Archiver/ArchiverInterface.php
  type ArchiverInterface (line 20) | interface ArchiverInterface
    method archive (line 33) | public function archive(string $sources, string $target, string $forma...
    method supports (line 43) | public function supports(string $format, ?string $sourceType): bool;

FILE: src/Composer/Package/Archiver/BaseExcludeFilter.php
  class BaseExcludeFilter (line 21) | abstract class BaseExcludeFilter
    method __construct (line 36) | public function __construct(string $sourcePath)
    method filter (line 52) | public function filter(string $relativePath, bool $exclude): bool
    method parseLines (line 83) | protected function parseLines(array $lines, callable $lineParser): array
    method generatePatterns (line 111) | protected function generatePatterns(array $rules): array
    method generatePattern (line 128) | protected function generatePattern(string $rule): array

FILE: src/Composer/Package/Archiver/ComposerExcludeFilter.php
  class ComposerExcludeFilter (line 20) | class ComposerExcludeFilter extends BaseExcludeFilter
    method __construct (line 26) | public function __construct(string $sourcePath, array $excludeRules)

FILE: src/Composer/Package/Archiver/GitExcludeFilter.php
  class GitExcludeFilter (line 24) | class GitExcludeFilter extends BaseExcludeFilter
    method __construct (line 29) | public function __construct(string $sourcePath)
    method parseGitAttributesLine (line 51) | public function parseGitAttributesLine(string $line): ?array

FILE: src/Composer/Package/Archiver/PharArchiver.php
  class PharArchiver (line 22) | class PharArchiver implements ArchiverInterface
    method archive (line 41) | public function archive(string $sources, string $target, string $forma...
    method supports (line 138) | public function supports(string $format, ?string $sourceType): bool

FILE: src/Composer/Package/Archiver/ZipArchiver.php
  class ZipArchiver (line 22) | class ZipArchiver implements ArchiverInterface
    method archive (line 32) | public function archive(string $sources, string $target, string $forma...
    method supports (line 105) | public function supports(string $format, ?string $sourceType): bool
    method compressionAvailable (line 110) | private function compressionAvailable(): bool

FILE: src/Composer/Package/BasePackage.php
  class BasePackage (line 23) | abstract class BasePackage implements PackageInterface
    method __construct (line 77) | public function __construct(string $name)
    method getName (line 87) | public function getName(): string
    method getPrettyName (line 95) | public function getPrettyName(): string
    method getNames (line 103) | public function getNames($provides = true): array
    method setId (line 125) | public function setId(int $id): void
    method getId (line 133) | public function getId(): int
    method setRepository (line 141) | public function setRepository(RepositoryInterface $repository): void
    method getRepository (line 157) | public function getRepository(): ?RepositoryInterface
    method isPlatform (line 165) | public function isPlatform(): bool
    method getUniqueName (line 173) | public function getUniqueName(): string
    method equals (line 178) | public function equals(PackageInterface $package): bool
    method __toString (line 194) | public function __toString(): string
    method getPrettyString (line 199) | public function getPrettyString(): string
    method getFullPrettyVersion (line 207) | public function getFullPrettyVersion(bool $truncate = true, int $displ...
    method getStabilityPriority (line 251) | public function getStabilityPriority(): int
    method __clone (line 256) | public function __clone()
    method packageNameToRegexp (line 268) | public static function packageNameToRegexp(string $allowPattern, strin...
    method packageNamesToRegexp (line 282) | public static function packageNamesToRegexp(array $packageNames, strin...

FILE: src/Composer/Package/Comparer/Comparer.php
  class Comparer (line 22) | class Comparer
    method setSource (line 31) | public function setSource(string $source): void
    method setUpdate (line 36) | public function setUpdate(string $update): void
    method getChanged (line 44) | public function getChanged(bool $explicated = false)
    method getChangedAsString (line 64) | public function getChangedAsString(bool $toString = false, bool $expli...
    method doCompare (line 81) | public function doCompare(): void
    method doTree (line 124) | private function doTree(string $dir, array &$array)

FILE: src/Composer/Package/CompleteAliasPackage.php
  class CompleteAliasPackage (line 18) | class CompleteAliasPackage extends AliasPackage implements CompletePacka...
    method __construct (line 30) | public function __construct(CompletePackage $aliasOf, string $version,...
    method getAliasOf (line 38) | public function getAliasOf()
    method getScripts (line 43) | public function getScripts(): array
    method setScripts (line 48) | public function setScripts(array $scripts): void
    method getRepositories (line 53) | public function getRepositories(): array
    method setRepositories (line 58) | public function setRepositories(array $repositories): void
    method getLicense (line 63) | public function getLicense(): array
    method setLicense (line 68) | public function setLicense(array $license): void
    method getKeywords (line 73) | public function getKeywords(): array
    method setKeywords (line 78) | public function setKeywords(array $keywords): void
    method getDescription (line 83) | public function getDescription(): ?string
    method setDescription (line 88) | public function setDescription(?string $description): void
    method getHomepage (line 93) | public function getHomepage(): ?string
    method setHomepage (line 98) | public function setHomepage(?string $homepage): void
    method getAuthors (line 103) | public function getAuthors(): array
    method setAuthors (line 108) | public function setAuthors(array $authors): void
    method getSupport (line 113) | public function getSupport(): array
    method setSupport (line 118) | public function setSupport(array $support): void
    method getFunding (line 123) | public function getFunding(): array
    method setFunding (line 128) | public function setFunding(array $funding): void
    method isAbandoned (line 133) | public function isAbandoned(): bool
    method getReplacementPackage (line 138) | public function getReplacementPackage(): ?string
    method setAbandoned (line 143) | public function setAbandoned($abandoned): void
    method getArchiveName (line 148) | public function getArchiveName(): ?string
    method setArchiveName (line 153) | public function setArchiveName(?string $name): void
    method getArchiveExcludes (line 158) | public function getArchiveExcludes(): array
    method setArchiveExcludes (line 163) | public function setArchiveExcludes(array $excludes): void

FILE: src/Composer/Package/CompletePackage.php
  class CompletePackage (line 20) | class CompletePackage extends Package implements CompletePackageInterface
    method setScripts (line 50) | public function setScripts(array $scripts): void
    method getScripts (line 58) | public function getScripts(): array
    method setRepositories (line 66) | public function setRepositories(array $repositories): void
    method getRepositories (line 74) | public function getRepositories(): array
    method setLicense (line 82) | public function setLicense(array $license): void
    method getLicense (line 90) | public function getLicense(): array
    method setKeywords (line 98) | public function setKeywords(array $keywords): void
    method getKeywords (line 106) | public function getKeywords(): array
    method setAuthors (line 114) | public function setAuthors(array $authors): void
    method getAuthors (line 122) | public function getAuthors(): array
    method setDescription (line 130) | public function setDescription(?string $description): void
    method getDescription (line 138) | public function getDescription(): ?string
    method setHomepage (line 146) | public function setHomepage(?string $homepage): void
    method getHomepage (line 154) | public function getHomepage(): ?string
    method setSupport (line 162) | public function setSupport(array $support): void
    method getSupport (line 170) | public function getSupport(): array
    method setFunding (line 178) | public function setFunding(array $funding): void
    method getFunding (line 186) | public function getFunding(): array
    method isAbandoned (line 194) | public function isAbandoned(): bool
    method setAbandoned (line 202) | public function setAbandoned($abandoned): void
    method getReplacementPackage (line 210) | public function getReplacementPackage(): ?string
    method setArchiveName (line 218) | public function setArchiveName(?string $name): void
    method getArchiveName (line 226) | public function getArchiveName(): ?string
    method setArchiveExcludes (line 234) | public function setArchiveExcludes(array $excludes): void
    method getArchiveExcludes (line 242) | public function getArchiveExcludes(): array

FILE: src/Composer/Package/CompletePackageInterface.php
  type CompletePackageInterface (line 22) | interface CompletePackageInterface extends PackageInterface
    method getScripts (line 29) | public function getScripts(): array;
    method setScripts (line 34) | public function setScripts(array $scripts): void;
    method getRepositories (line 41) | public function getRepositories(): array;
    method setRepositories (line 48) | public function setRepositories(array $repositories): void;
    method getLicense (line 55) | public function getLicense(): array;
    method setLicense (line 62) | public function setLicense(array $license): void;
    method getKeywords (line 69) | public function getKeywords(): array;
    method setKeywords (line 76) | public function setKeywords(array $keywords): void;
    method getDescription (line 81) | public function getDescription(): ?string;
    method setDescription (line 86) | public function setDescription(string $description): void;
    method getHomepage (line 91) | public function getHomepage(): ?string;
    method setHomepage (line 96) | public function setHomepage(string $homepage): void;
    method getAuthors (line 105) | public function getAuthors(): array;
    method setAuthors (line 112) | public function setAuthors(array $authors): void;
    method getSupport (line 119) | public function getSupport(): array;
    method setSupport (line 126) | public function setSupport(array $support): void;
    method getFunding (line 135) | public function getFunding(): array;
    method setFunding (line 142) | public function setFunding(array $funding): void;
    method isAbandoned (line 147) | public function isAbandoned(): bool;
    method getReplacementPackage (line 152) | public function getReplacementPackage(): ?string;
    method setAbandoned (line 157) | public function setAbandoned($abandoned): void;
    method getArchiveName (line 162) | public function getArchiveName(): ?string;
    method setArchiveName (line 167) | public function setArchiveName(string $name): void;
    method getArchiveExcludes (line 174) | public function getArchiveExcludes(): array;
    method setArchiveExcludes (line 181) | public function setArchiveExcludes(array $excludes): void;

FILE: src/Composer/Package/Dumper/ArrayDumper.php
  class ArrayDumper (line 24) | class ArrayDumper
    method dump (line 29) | public function dump(PackageInterface $package): array
    method dumpValues (line 155) | private function dumpValues(PackageInterface $package, array $keys, ar...

FILE: src/Composer/Package/Link.php
  class Link (line 22) | class Link
    method __construct (line 85) | public function __construct(
    method getDescription (line 99) | public function getDescription(): string
    method getSource (line 104) | public function getSource(): string
    method getTarget (line 109) | public function getTarget(): string
    method getConstraint (line 114) | public function getConstraint(): ConstraintInterface
    method getPrettyConstraint (line 122) | public function getPrettyConstraint(): string
    method __toString (line 131) | public function __toString(): string
    method getPrettyString (line 136) | public function getPrettyString(PackageInterface $sourcePackage): string

FILE: src/Composer/Package/Loader/ArrayLoader.php
  class ArrayLoader (line 30) | class ArrayLoader implements LoaderInterface
    method __construct (line 37) | public function __construct(?VersionParser $parser = null, bool $loadO...
    method load (line 49) | public function load(array $config, string $class = 'Composer\Package\...
    method loadPackages (line 82) | public function loadPackages(array $versions): array
    method createObject (line 109) | private function createObject(array $config, string $class): CompleteP...
    method configureObject (line 150) | private function configureObject(PackageInterface $package, array $con...
    method configureCachedLinks (line 331) | private function configureCachedLinks(array &$linkCache, PackageInterf...
    method parseLinks (line 376) | public function parseLinks(string $source, string $sourceVersion, stri...
    method createLink (line 397) | private function createLink(string $source, string $sourceVersion, str...
    method getBranchAlias (line 428) | public function getBranchAlias(array $config): ?string

FILE: src/Composer/Package/Loader/InvalidPackageException.php
  class InvalidPackageException (line 18) | class InvalidPackageException extends \Exception
    method __construct (line 32) | public function __construct(array $errors, array $warnings, array $data)
    method getData (line 43) | public function getData(): array
    method getErrors (line 51) | public function getErrors(): array
    method getWarnings (line 59) | public function getWarnings(): array

FILE: src/Composer/Package/Loader/JsonLoader.php
  class JsonLoader (line 25) | class JsonLoader
    method __construct (line 30) | public function __construct(LoaderInterface $loader)
    method load (line 39) | public function load($json): BasePackage

FILE: src/Composer/Package/Loader/LoaderInterface.php
  type LoaderInterface (line 26) | interface LoaderInterface
    method load (line 38) | public function load(array $config, string $class = 'Composer\Package\...

FILE: src/Composer/Package/Loader/RootPackageLoader.php
  class RootPackageLoader (line 35) | class RootPackageLoader extends ArrayLoader
    method __construct (line 57) | public function __construct(RepositoryManager $manager, Config $config...
    method load (line 79) | public function load(array $config, string $class = 'Composer\Package\...
    method extractAliases (line 212) | private function extractAliases(array $requires, array $aliases): array
    method extractStabilityFlags (line 242) | public static function extractStabilityFlags(array $requires, string $...
    method extractReferences (line 303) | public static function extractReferences(array $requires, array $refer...

FILE: src/Composer/Package/Loader/ValidatingArrayLoader.php
  class ValidatingArrayLoader (line 27) | class ValidatingArrayLoader implements LoaderInterface
    method __construct (line 49) | public function __construct(LoaderInterface $loader, bool $strictName ...
    method load (line 63) | public function load(array $config, string $class = 'Composer\Package\...
    method getWarnings (line 600) | public function getWarnings(): array
    method getErrors (line 608) | public function getErrors(): array
    method hasPackageNamingError (line 613) | public static function hasPackageNamingError(string $name, bool $isLin...
    method validateRegex (line 651) | private function validateRegex(string $property, string $regex, bool $...
    method validateString (line 675) | private function validateString(string $property, bool $mandatory = fa...
    method validateArray (line 699) | private function validateArray(string $property, bool $mandatory = fal...
    method validateFlatArray (line 724) | private function validateFlatArray(string $property, ?string $regex = ...
    method validateUrl (line 753) | private function validateUrl(string $property, bool $mandatory = false...
    method filterUrl (line 773) | private function filterUrl($value, array $schemes = ['http', 'https'])...

FILE: src/Composer/Package/Locker.php
  class Locker (line 37) | class Locker
    method __construct (line 65) | public function __construct(IOInterface $io, JsonFile $lockFile, Insta...
    method getJsonFile (line 79) | public function getJsonFile(): JsonFile
    method getContentHash (line 89) | public static function getContentHash(string $composerFileContents): s...
    method isLocked (line 124) | public function isLocked(): bool
    method isFresh (line 138) | public function isFresh(): bool
    method getLockedRepository (line 162) | public function getLockedRepository(bool $withDevReqs = false): LockAr...
    method getDevPackageNames (line 211) | public function getDevPackageNames(): array
    method getPlatformRequirements (line 230) | public function getPlatformRequirements(bool $withDevReqs = false): array
    method getMinimumStability (line 261) | public function getMinimumStability(): string
    method getStabilityFlags (line 271) | public function getStabilityFlags(): array
    method getPreferStable (line 278) | public function getPreferStable(): ?bool
    method getPreferLowest (line 287) | public function getPreferLowest(): ?bool
    method getPlatformOverrides (line 299) | public function getPlatformOverrides(): array
    method getAliases (line 311) | public function getAliases(): array
    method getPluginApi (line 321) | public function getPluginApi()
    method getLockData (line 331) | public function getLockData(): array
    method setLockData (line 358) | public function setLockData(array $packages, ?array $devPackages, arra...
    method updateHash (line 429) | public function updateHash(JsonFile $composerJson, ?callable $dataProc...
    method fixupJsonDataType (line 457) | private function fixupJsonDataType(array $lockData): array
    method lockPackages (line 479) | private function lockPackages(array $packages): array
    method getPackageTime (line 537) | private function getPackageTime(PackageInterface $package): ?string
    method getMissingRequirementInfo (line 580) | public function getMissingRequirementInfo(RootPackageInterface $packag...

FILE: src/Composer/Package/Package.php
  class Package (line 28) | class Package extends BasePackage
    method __construct (line 115) | public function __construct(string $name, string $version, string $pre...
    method isDev (line 129) | public function isDev(): bool
    method setType (line 134) | public function setType(string $type): void
    method getType (line 142) | public function getType(): string
    method getStability (line 150) | public function getStability(): string
    method setTargetDir (line 155) | public function setTargetDir(?string $targetDir): void
    method getTargetDir (line 163) | public function getTargetDir(): ?string
    method setExtra (line 175) | public function setExtra(array $extra): void
    method getExtra (line 183) | public function getExtra(): array
    method setBinaries (line 191) | public function setBinaries(array $binaries): void
    method getBinaries (line 199) | public function getBinaries(): array
    method setInstallationSource (line 207) | public function setInstallationSource(?string $type): void
    method getInstallationSource (line 215) | public function getInstallationSource(): ?string
    method setSourceType (line 220) | public function setSourceType(?string $type): void
    method getSourceType (line 228) | public function getSourceType(): ?string
    method setSourceUrl (line 233) | public function setSourceUrl(?string $url): void
    method getSourceUrl (line 241) | public function getSourceUrl(): ?string
    method setSourceReference (line 246) | public function setSourceReference(?string $reference): void
    method getSourceReference (line 254) | public function getSourceReference(): ?string
    method setSourceMirrors (line 259) | public function setSourceMirrors(?array $mirrors): void
    method getSourceMirrors (line 267) | public function getSourceMirrors(): ?array
    method getSourceUrls (line 275) | public function getSourceUrls(): array
    method setDistType (line 280) | public function setDistType(?string $type): void
    method getDistType (line 288) | public function getDistType(): ?string
    method setDistUrl (line 293) | public function setDistUrl(?string $url): void
    method getDistUrl (line 301) | public function getDistUrl(): ?string
    method setDistReference (line 306) | public function setDistReference(?string $reference): void
    method getDistReference (line 314) | public function getDistReference(): ?string
    method setDistSha1Checksum (line 319) | public function setDistSha1Checksum(?string $sha1checksum): void
    method getDistSha1Checksum (line 327) | public function getDistSha1Checksum(): ?string
    method setDistMirrors (line 332) | public function setDistMirrors(?array $mirrors): void
    method getDistMirrors (line 340) | public function getDistMirrors(): ?array
    method getDistUrls (line 348) | public function getDistUrls(): array
    method getTransportOptions (line 356) | public function getTransportOptions(): array
    method setTransportOptions (line 364) | public function setTransportOptions(array $options): void
    method getVersion (line 372) | public function getVersion(): string
    method getPrettyVersion (line 380) | public function getPrettyVersion(): string
    method setReleaseDate (line 385) | public function setReleaseDate(?\DateTimeInterface $releaseDate): void
    method getReleaseDate (line 393) | public function getReleaseDate(): ?\DateTimeInterface
    method setRequires (line 403) | public function setRequires(array $requires): void
    method getRequires (line 415) | public function getRequires(): array
    method setConflicts (line 425) | public function setConflicts(array $conflicts): void
    method getConflicts (line 438) | public function getConflicts(): array
    method setProvides (line 448) | public function setProvides(array $provides): void
    method getProvides (line 461) | public function getProvides(): array
    method setReplaces (line 471) | public function setReplaces(array $replaces): void
    method getReplaces (line 484) | public function getReplaces(): array
    method setDevRequires (line 494) | public function setDevRequires(array $devRequires): void
    method getDevRequires (line 506) | public function getDevRequires(): array
    method setSuggests (line 516) | public function setSuggests(array $suggests): void
    method getSuggests (line 524) | public function getSuggests(): array
    method setAutoload (line 536) | public function setAutoload(array $autoload): void
    method getAutoload (line 544) | public function getAutoload(): array
    method setDevAutoload (line 556) | public function setDevAutoload(array $devAutoload): void
    method getDevAutoload (line 564) | public function getDevAutoload(): array
    method setIncludePaths (line 574) | public function setIncludePaths(array $includePaths): void
    method getIncludePaths (line 582) | public function getIncludePaths(): array
    method setPhpExt (line 593) | public function setPhpExt(?array $phpExt): void
    method getPhpExt (line 601) | public function getPhpExt(): ?array
    method setNotificationUrl (line 609) | public function setNotificationUrl(string $notificationUrl): void
    method getNotificationUrl (line 617) | public function getNotificationUrl(): ?string
    method setIsDefaultBranch (line 622) | public function setIsDefaultBranch(bool $defaultBranch): void
    method isDefaultBranch (line 630) | public function isDefaultBranch(): bool
    method setSourceDistReferences (line 638) | public function setSourceDistReferences(string $reference): void
    method replaceVersion (line 662) | public function replaceVersion(string $version, string $prettyVersion)...
    method getUrls (line 678) | protected function getUrls(?string $url, ?array $mirrors, ?string $ref...
    method convertLinksToMap (line 714) | private function convertLinksToMap(array $links, string $source): array

FILE: src/Composer/Package/PackageInterface.php
  type PackageInterface (line 28) | interface PackageInterface
    method getName (line 39) | public function getName(): string;
    method getPrettyName (line 46) | public function getPrettyName(): string;
    method getNames (line 58) | public function getNames(bool $provides = true): array;
    method setId (line 63) | public function setId(int $id): void;
    method getId (line 70) | public function getId(): int;
    method isDev (line 75) | public function isDev(): bool;
    method getType (line 82) | public function getType(): string;
    method getTargetDir (line 89) | public function getTargetDir(): ?string;
    method getExtra (line 96) | public function getExtra(): array;
    method setInstallationSource (line 104) | public function setInstallationSource(?string $type): void;
    method getInstallationSource (line 112) | public function getInstallationSource(): ?string;
    method getSourceType (line 119) | public function getSourceType(): ?string;
    method getSourceUrl (line 126) | public function getSourceUrl(): ?string;
    method getSourceUrls (line 133) | public function getSourceUrls(): array;
    method getSourceReference (line 140) | public function getSourceReference(): ?string;
    method getSourceMirrors (line 147) | public function getSourceMirrors(): ?array;
    method setSourceMirrors (line 152) | public function setSourceMirrors(?array $mirrors): void;
    method getDistType (line 159) | public function getDistType(): ?string;
    method getDistUrl (line 166) | public function getDistUrl(): ?string;
    method getDistUrls (line 173) | public function getDistUrls(): array;
    method getDistReference (line 178) | public function getDistReference(): ?string;
    method getDistSha1Checksum (line 185) | public function getDistSha1Checksum(): ?string;
    method getDistMirrors (line 192) | public function getDistMirrors(): ?array;
    method setDistMirrors (line 197) | public function setDistMirrors(?array $mirrors): void;
    method getVersion (line 204) | public function getVersion(): string;
    method getPrettyVersion (line 211) | public function getPrettyVersion(): string;
    method getFullPrettyVersion (line 224) | public function getFullPrettyVersion(bool $truncate = true, int $displ...
    method getReleaseDate (line 229) | public function getReleaseDate(): ?\DateTimeInterface;
    method getStability (line 236) | public function getStability(): string;
    method getRequires (line 244) | public function getRequires(): array;
    method getConflicts (line 252) | public function getConflicts(): array;
    method getProvides (line 260) | public function getProvides(): array;
    method getReplaces (line 268) | public function getReplaces(): array;
    method getDevRequires (line 276) | public function getDevRequires(): array;
    method getSuggests (line 285) | public function getSuggests(): array;
    method getAutoload (line 298) | public function getAutoload(): array;
    method getDevAutoload (line 311) | public function getDevAutoload(): array;
    method getIncludePaths (line 319) | public function getIncludePaths(): array;
    method getPhpExt (line 327) | public function getPhpExt(): ?array;
    method setRepository (line 332) | public function setRepository(RepositoryInterface $repository): void;
    method getRepository (line 337) | public function getRepository(): ?RepositoryInterface;
    method getBinaries (line 344) | public function getBinaries(): array;
    method getUniqueName (line 349) | public function getUniqueName(): string;
    method getNotificationUrl (line 354) | public function getNotificationUrl(): ?string;
    method __toString (line 359) | public function __toString(): string;
    method getPrettyString (line 364) | public function getPrettyString(): string;
    method isDefaultBranch (line 366) | public function isDefaultBranch(): bool;
    method getTransportOptions (line 373) | public function getTransportOptions(): array;
    method setTransportOptions (line 380) | public function setTransportOptions(array $options): void;
    method setSourceReference (line 382) | public function setSourceReference(?string $reference): void;
    method setDistUrl (line 384) | public function setDistUrl(?string $url): void;
    method setDistType (line 386) | public function setDistType(?string $type): void;
    method setDistReference (line 388) | public function setDistReference(?string $reference): void;
    method setSourceDistReferences (line 393) | public function setSourceDistReferences(string $reference): void;

FILE: src/Composer/Package/RootAliasPackage.php
  class RootAliasPackage (line 18) | class RootAliasPackage extends CompleteAliasPackage implements RootPacka...
    method __construct (line 30) | public function __construct(RootPackage $aliasOf, string $version, str...
    method getAliasOf (line 38) | public function getAliasOf()
    method getAliases (line 46) | public function getAliases(): array
    method getMinimumStability (line 54) | public function getMinimumStability(): string
    method getStabilityFlags (line 62) | public function getStabilityFlags(): array
    method getReferences (line 70) | public function getReferences(): array
    method getPreferStable (line 78) | public function getPreferStable(): bool
    method getConfig (line 86) | public function getConfig(): array
    method setRequires (line 94) | public function setRequires(array $requires): void
    method setDevRequires (line 104) | public function setDevRequires(array $devRequires): void
    method setConflicts (line 114) | public function setConflicts(array $conflicts): void
    method setProvides (line 123) | public function setProvides(array $provides): void
    method setReplaces (line 132) | public function setReplaces(array $replaces): void
    method setAutoload (line 141) | public function setAutoload(array $autoload): void
    method setDevAutoload (line 149) | public function setDevAutoload(array $devAutoload): void
    method setStabilityFlags (line 157) | public function setStabilityFlags(array $stabilityFlags): void
    method setMinimumStability (line 165) | public function setMinimumStability(string $minimumStability): void
    method setPreferStable (line 173) | public function setPreferStable(bool $preferStable): void
    method setConfig (line 181) | public function setConfig(array $config): void
    method setReferences (line 189) | public function setReferences(array $references): void
    method setAliases (line 197) | public function setAliases(array $aliases): void
    method setSuggests (line 205) | public function setSuggests(array $suggests): void
    method setExtra (line 213) | public function setExtra(array $extra): void
    method __clone (line 218) | public function __clone()

FILE: src/Composer/Package/RootPackage.php
  class RootPackage (line 20) | class RootPackage extends CompletePackage implements RootPackageInterface
    method setMinimumStability (line 40) | public function setMinimumStability(string $minimumStability): void
    method getMinimumStability (line 48) | public function getMinimumStability(): string
    method setStabilityFlags (line 56) | public function setStabilityFlags(array $stabilityFlags): void
    method getStabilityFlags (line 64) | public function getStabilityFlags(): array
    method setPreferStable (line 72) | public function setPreferStable(bool $preferStable): void
    method getPreferStable (line 80) | public function getPreferStable(): bool
    method setConfig (line 88) | public function setConfig(array $config): void
    method getConfig (line 96) | public function getConfig(): array
    method setReferences (line 104) | public function setReferences(array $references): void
    method getReferences (line 112) | public function getReferences(): array
    method setAliases (line 120) | public function setAliases(array $aliases): void
    method getAliases (line 128) | public function getAliases(): array

FILE: src/Composer/Package/RootPackageInterface.php
  type RootPackageInterface (line 25) | interface RootPackageInterface extends CompletePackageInterface
    method getAliases (line 32) | public function getAliases(): array;
    method getMinimumStability (line 39) | public function getMinimumStability(): string;
    method getStabilityFlags (line 48) | public function getStabilityFlags(): array;
    method getReferences (line 57) | public function getReferences(): array;
    method getPreferStable (line 62) | public function getPreferStable(): bool;
    method getConfig (line 69) | public function getConfig(): array;
    method setRequires (line 76) | public function setRequires(array $requires): void;
    method setDevRequires (line 83) | public function setDevRequires(array $devRequires): void;
    method setConflicts (line 90) | public function setConflicts(array $conflicts): void;
    method setProvides (line 97) | public function setProvides(array $provides): void;
    method setReplaces (line 104) | public function setReplaces(array $replaces): void;
    method setAutoload (line 112) | public function setAutoload(array $autoload): void;
    method setDevAutoload (line 120) | public function setDevAutoload(array $devAutoload): void;
    method setStabilityFlags (line 127) | public function setStabilityFlags(array $stabilityFlags): void;
    method setMinimumStability (line 134) | public function setMinimumStability(string $minimumStability): void;
    method setPreferStable (line 139) | public function setPreferStable(bool $preferStable): void;
    method setConfig (line 146) | public function setConfig(array $config): void;
    method setReferences (line 153) | public function setReferences(array $references): void;
    method setAliases (line 160) | public function setAliases(array $aliases): void;
    method setSuggests (line 167) | public function setSuggests(array $suggests): void;
    method setExtra (line 172) | public function setExtra(array $extra): void;

FILE: src/Composer/Package/Version/StabilityFilter.php
  class StabilityFilter (line 20) | class StabilityFilter
    method isPackageAcceptable (line 33) | public static function isPackageAcceptable(array $acceptableStabilitie...

FILE: src/Composer/Package/Version/VersionBumper.php
  class VersionBumper (line 28) | class VersionBumper
    method bumpRequirement (line 47) | public function bumpRequirement(ConstraintInterface $constraint, Packa...

FILE: src/Composer/Package/Version/VersionGuesser.php
  class VersionGuesser (line 36) | class VersionGuesser
    method __construct (line 58) | public function __construct(Config $config, ProcessExecutor $process, ...
    method guessVersion (line 72) | public function guessVersion(array $packageConfig, string $path): ?array
    method postprocess (line 112) | private function postprocess(array $versionData): array
    method guessGitVersion (line 134) | private function guessGitVersion(array $packageConfig, string $path): ...
    method versionFromGitTags (line 216) | private function versionFromGitTags(string $path): ?array
    method guessHgVersion (line 236) | private function guessHgVersion(array $packageConfig, string $path): ?...
    method guessFeatureVersion (line 276) | private function guessFeatureVersion(array $packageConfig, ?string $ve...
    method isFeatureBranch (line 358) | private function isFeatureBranch(array $packageConfig, ?string $branch...
    method guessFossilVersion (line 371) | private function guessFossilVersion(string $path): array
    method guessSvnVersion (line 400) | private function guessSvnVersion(array $packageConfig, string $path): ...
    method getRootVersionFromEnv (line 436) | public function getRootVersionFromEnv(): string

FILE: src/Composer/Package/Version/VersionParser.php
  class VersionParser (line 21) | class VersionParser extends SemverVersionParser
    method parseConstraints (line 31) | public function parseConstraints($constraints): ConstraintInterface
    method parseNameVersionPairs (line 50) | public function parseNameVersionPairs(array $pairs): array
    method isUpgrade (line 73) | public static function isUpgrade(string $normalizedFrom, string $norma...

FILE: src/Composer/Package/Version/VersionSelector.php
  class VersionSelector (line 38) | class VersionSelector
    method __construct (line 52) | public function __construct(RepositorySet $repositorySet, ?PlatformRep...
    method findBestCandidate (line 71) | public function findBestCandidate(string $packageName, ?string $target...
    method findRecommendedRequireVersion (line 204) | public function findRecommendedRequireVersion(PackageInterface $packag...
    method transformVersion (line 236) | private function transformVersion(string $version, string $prettyVersi...
    method getParser (line 264) | private function getParser(): VersionParser

FILE: src/Composer/PartialComposer.php
  class PartialComposer (line 24) | class PartialComposer
    method setPackage (line 61) | public function setPackage(RootPackageInterface $package): void
    method getPackage (line 66) | public function getPackage(): RootPackageInterface
    method setConfig (line 71) | public function setConfig(Config $config): void
    method getConfig (line 76) | public function getConfig(): Config
    method setLoop (line 81) | public function setLoop(Loop $loop): void
    method getLoop (line 86) | public function getLoop(): Loop
    method setRepositoryManager (line 91) | public function setRepositoryManager(RepositoryManager $manager): void
    method getRepositoryManager (line 96) | public function getRepositoryManager(): RepositoryManager
    method setInstallationManager (line 101) | public function setInstallationManager(InstallationManager $manager): ...
    method getInstallationManager (line 106) | public function getInstallationManager(): InstallationManager
    method setEventDispatcher (line 111) | public function setEventDispatcher(EventDispatcher $eventDispatcher): ...
    method getEventDispatcher (line 116) | public function getEventDispatcher(): EventDispatcher
    method isGlobal (line 121) | public function isGlobal(): bool
    method setGlobal (line 126) | public function setGlobal(): void

FILE: src/Composer/Platform/HhvmDetector.php
  class HhvmDetector (line 19) | class HhvmDetector
    method __construct (line 28) | public function __construct(?ExecutableFinder $executableFinder = null...
    method reset (line 34) | public function reset(): void
    method getVersion (line 39) | public function getVersion(): ?string

FILE: src/Composer/Platform/Runtime.php
  class Runtime (line 17) | class Runtime
    method hasConstant (line 22) | public function hasConstant(string $constant, ?string $class = null): ...
    method getConstant (line 32) | public function getConstant(string $constant, ?string $class = null)
    method hasFunction (line 37) | public function hasFunction(string $fn): bool
    method invoke (line 47) | public function invoke(callable $callable, array $arguments = [])
    method hasClass (line 55) | public function hasClass(string $class): bool
    method construct (line 69) | public function construct(string $class, array $arguments = []): object
    method getExtensions (line 81) | public function getExtensions(): array
    method getExtensionVersion (line 86) | public function getExtensionVersion(string $extension): string
    method getExtensionInfo (line 99) | public function getExtensionInfo(string $extension): string
    method parseHtmlExtensionInfo (line 118) | public static function parseHtmlExtensionInfo(string $html): string

FILE: src/Composer/Platform/Version.php
  class Version (line 20) | class Version
    method parseOpenssl (line 27) | public static function parseOpenssl(string $opensslVersion, ?bool &$is...
    method parseLibjpeg (line 47) | public static function parseLibjpeg(string $libjpegVersion): ?string
    method parseZoneinfoVersion (line 56) | public static function parseZoneinfoVersion(string $zoneinfoVersion): ...
    method convertAlphaVersionToIntVersion (line 68) | private static function convertAlphaVersionToIntVersion(string $alpha)...
    method convertLibxpmVersionId (line 73) | public static function convertLibxpmVersionId(int $versionId): string
    method convertOpenldapVersionId (line 78) | public static function convertOpenldapVersionId(int $versionId): string
    method convertVersionId (line 83) | private static function convertVersionId(int $versionId, int $base): s...

FILE: src/Composer/Plugin/Capability/Capability.php
  type Capability (line 21) | interface Capability

FILE: src/Composer/Plugin/Capability/CommandProvider.php
  type CommandProvider (line 25) | interface CommandProvider extends Capability
    method getCommands (line 32) | public function getCommands();

FILE: src/Composer/Plugin/Capable.php
  type Capable (line 22) | interface Capable
    method getCapabilities (line 42) | public function getCapabilities();

FILE: src/Composer/Plugin/CommandEvent.php
  class CommandEvent (line 24) | class CommandEvent extends Event
    method __construct (line 49) | public function __construct(string $name, string $commandName, InputIn...
    method getInput (line 60) | public function getInput(): InputInterface
    method getOutput (line 68) | public function getOutput(): OutputInterface
    method getCommandName (line 76) | public function getCommandName(): string

FILE: src/Composer/Plugin/PluginBlockedException.php
  class PluginBlockedException (line 17) | class PluginBlockedException extends UnexpectedValueException

FILE: src/Composer/Plugin/PluginEvents.php
  class PluginEvents (line 20) | class PluginEvents

FILE: src/Composer/Plugin/PluginInterface.php
  type PluginInterface (line 23) | interface PluginInterface
    method activate (line 42) | public function activate(Composer $composer, IOInterface $io);
    method deactivate (line 53) | public function deactivate(Composer $composer, IOInterface $io);
    method uninstall (line 62) | public function uninstall(Composer $composer, IOInterface $io);

FILE: src/Composer/Plugin/PluginManager.php
  class PluginManager (line 43) | class PluginManager
    method __construct (line 80) | public function __construct(IOInterface $io, Composer $composer, ?Part...
    method setRunningInGlobalDir (line 91) | public function setRunningInGlobalDir(bool $runningInGlobalDir): void
    method loadInstalledPlugins (line 99) | public function loadInstalledPlugins(): void
    method deactivateInstalledPlugins (line 114) | public function deactivateInstalledPlugins(): void
    method getPlugins (line 131) | public function getPlugins(): array
    method getRegisteredPlugins (line 142) | public function getRegisteredPlugins(): array
    method getGlobalComposer (line 150) | public function getGlobalComposer(): ?PartialComposer
    method registerPackage (line 166) | public function registerPackage(PackageInterface $package, bool $failO...
    method deactivatePackage (line 326) | public function deactivatePackage(PackageInterface $package): void
    method uninstallPackage (line 351) | public function uninstallPackage(PackageInterface $package): void
    method getPluginApiVersion (line 372) | protected function getPluginApiVersion(): string
    method addPlugin (line 387) | public function addPlugin(PluginInterface $plugin, bool $isGlobalPlugi...
    method removePlugin (line 426) | public function removePlugin(PluginInterface $plugin): void
    method uninstallPlugin (line 449) | public function uninstallPlugin(PluginInterface $plugin): void
    method loadRepository (line 470) | private function loadRepository(RepositoryInterface $repo, bool $isGlo...
    method deactivateRepository (line 523) | private function deactivateRepository(RepositoryInterface $repo, bool ...
    method collectDependencies (line 550) | private function collectDependencies(InstalledRepository $installedRep...
    method getInstallPath (line 571) | private function getInstallPath(PackageInterface $package, bool $globa...
    method getCapabilityImplementationClassName (line 586) | protected function getCapabilityImplementationClassName(PluginInterfac...
    method getPluginCapability (line 617) | public function getPluginCapability(PluginInterface $plugin, $capabili...
    method getPluginCapabilities (line 648) | public function getPluginCapabilities($capabilityClassName, array $cto...
    method parseAllowedPlugins (line 665) | private function parseAllowedPlugins($allowPluginsConfig, ?Locker $loc...
    method arePluginsDisabled (line 693) | public function arePluginsDisabled($type)
    method disablePlugins (line 701) | public function disablePlugins(): void
    method isPluginAllowed (line 709) | public function isPluginAllowed(string $package, bool $isGlobalPlugin,...

FILE: src/Composer/Plugin/PostFileDownloadEvent.php
  class PostFileDownloadEvent (line 23) | class PostFileDownloadEvent extends Event
    method __construct (line 60) | public function __construct(string $name, ?string $fileName, ?string $...
    method getFileName (line 82) | public function getFileName(): ?string
    method getChecksum (line 90) | public function getChecksum(): ?string
    method getUrl (line 98) | public function getUrl(): string
    method getContext (line 111) | public function getContext()
    method getPackage (line 124) | public function getPackage(): ?PackageInterface
    method getType (line 135) | public function getType(): string

FILE: src/Composer/Plugin/PreCommandRunEvent.php
  class PreCommandRunEvent (line 23) | class PreCommandRunEvent extends Event
    method __construct (line 41) | public function __construct(string $name, InputInterface $input, strin...
    method getInput (line 51) | public function getInput(): InputInterface
    method getCommand (line 59) | public function getCommand(): string

FILE: src/Composer/Plugin/PreFileDownloadEvent.php
  class PreFileDownloadEvent (line 23) | class PreFileDownloadEvent extends Event
    method __construct (line 62) | public function __construct(string $name, HttpDownloader $httpDownload...
    method getHttpDownloader (line 71) | public function getHttpDownloader(): HttpDownloader
    method getProcessedUrl (line 81) | public function getProcessedUrl(): string
    method setProcessedUrl (line 91) | public function setProcessedUrl(string $processedUrl): void
    method getCustomCacheKey (line 99) | public function getCustomCacheKey(): ?string
    method setCustomCacheKey (line 109) | public function setCustomCacheKey(?string $customCacheKey): void
    method getType (line 117) | public function getType(): string
    method getContext (line 130) | public function getContext()
    method getTransportOptions (line 142) | public function getTransportOptions(): array
    method setTransportOptions (line 154) | public function setTransportOptions(array $options): void

FILE: src/Composer/Plugin/PrePoolCreateEvent.php
  class PrePoolCreateEvent (line 25) | class PrePoolCreateEvent extends Event
    method __construct (line 79) | public function __construct(string $name, array $repositories, Request...
    method getRepositories (line 96) | public function getRepositories(): array
    method getRequest (line 101) | public function getRequest(): Request
    method getAcceptableStabilities (line 110) | public function getAcceptableStabilities(): array
    method getStabilityFlags (line 119) | public function getStabilityFlags(): array
    method getRootAliases (line 128) | public function getRootAliases(): array
    method getRootReferences (line 137) | public function getRootReferences(): array
    method getPackages (line 145) | public function getPackages(): array
    method getUnacceptableFixedPackages (line 153) | public function getUnacceptableFixedPackages(): array
    method setPackages (line 161) | public function setPackages(array $packages): void
    method setUnacceptableFixedPackages (line 169) | public function setUnacceptableFixedPackages(array $packages): void

FILE: src/Composer/Question/StrictConfirmationQuestion.php
  class StrictConfirmationQuestion (line 26) | class StrictConfirmationQuestion extends Question
    method __construct (line 41) | public function __construct(string $question, bool $default = true, st...
    method getDefaultNormalizer (line 54) | private function getDefaultNormalizer(): callable
    method getDefaultValidator (line 83) | private function getDefaultValidator(): callable

FILE: src/Composer/Repository/AdvisoryProviderInterface.php
  type AdvisoryProviderInterface (line 25) | interface AdvisoryProviderInterface
    method hasSecurityAdvisories (line 27) | public function hasSecurityAdvisories(): bool;
    method getSecurityAdvisories (line 33) | public function getSecurityAdvisories(array $packageConstraintMap, boo...

FILE: src/Composer/Repository/ArrayRepository.php
  class ArrayRepository (line 32) | class ArrayRepository implements RepositoryInterface
    method __construct (line 45) | public function __construct(array $packages = [])
    method getRepoName (line 52) | public function getRepoName()
    method loadPackages (line 60) | public function loadPackages(array $packageNameMap, array $acceptableS...
    method findPackage (line 100) | public function findPackage(string $name, $constraint)
    method findPackages (line 124) | public function findPackages(string $name, $constraint = null)
    method search (line 149) | public function search(string $query, int $mode = 0, ?string $type = n...
    method hasPackage (line 198) | public function hasPackage(PackageInterface $package)
    method addPackage (line 215) | public function addPackage(PackageInterface $package)
    method getProviders (line 240) | public function getProviders(string $packageName)
    method createAliasPackage (line 266) | protected function createAliasPackage(BasePackage $package, string $al...
    method removePackage (line 286) | public function removePackage(PackageInterface $package)
    method getPackages (line 305) | public function getPackages()
    method count (line 323) | public function count(): int
    method initialize (line 337) | protected function initialize()

FILE: src/Composer/Repository/ArtifactRepository.php
  class ArtifactRepository (line 27) | class ArtifactRepository extends ArrayRepository implements Configurable...
    method __construct (line 42) | public function __construct(array $repoConfig, IOInterface $io)
    method getRepoName (line 55) | public function getRepoName()
    method getRepoConfig (line 60) | public function getRepoConfig()
    method initialize (line 65) | protected function initialize()
    method scanDirectory (line 72) | private function scanDirectory(string $path): void
    method getComposerInformation (line 98) | private function getComposerInformation(\SplFileInfo $file): ?BasePackage

FILE: src/Composer/Repository/CanonicalPackagesTrait.php
  type CanonicalPackagesTrait (line 23) | trait CanonicalPackagesTrait
    method getCanonicalPackages (line 30) | public function getCanonicalPackages()

FILE: src/Composer/Repository/ComposerRepository.php
  class ComposerRepository (line 49) | class ComposerRepository extends ArrayRepository implements Configurable...
    method __construct (line 138) | public function __construct(array $repoConfig, IOInterface $io, Config...
    method getRepoName (line 193) | public function getRepoName()
    method getRepoConfig (line 198) | public function getRepoConfig()
    method findPackage (line 206) | public function findPackage(string $name, $constraint)
    method findPackages (line 250) | public function findPackages(string $name, $constraint = null)
    method filterPackages (line 292) | private function filterPackages(array $packages, ?ConstraintInterface ...
    method getPackages (line 323) | public function getPackages()
    method getPackageNames (line 362) | public function getPackageNames(?string $packageFilter = null)
    method getVendorNames (line 421) | private function getVendorNames(): array
    method loadPackageList (line 450) | private function loadPackageList(?string $packageFilter = null): array
    method loadPackages (line 480) | public function loadPackages(array $packageNameMap, array $acceptableS...
    method search (line 551) | public function search(string $query, int $mode = 0, ?string $type = n...
    method hasSecurityAdvisories (line 617) | public function hasSecurityAdvisories(): bool
    method getSecurityAdvisories (line 627) | public function getSecurityAdvisories(array $packageConstraintMap, boo...
    method getProviders (line 736) | public function getProviders(string $packageName)
    method getProviderNames (line 786) | private function getProviderNames(): array
    method configurePackageTransportOptions (line 809) | protected function configurePackageTransportOptions(PackageInterface $...
    method hasProviders (line 820) | private function hasProviders(): bool
    method whatProvides (line 837) | private function whatProvides(string $name, ?array $acceptableStabilit...
    method initialize (line 976) | protected function initialize()
    method addPackage (line 990) | public function addPackage(PackageInterface $package)
    method loadAsyncPackages (line 1007) | private function loadAsyncPackages(array $packageNames, ?array $accept...
    method startCachedAsyncDownload (line 1093) | private function startCachedAsyncDownload(string $fileName, ?string $p...
    method isVersionAcceptable (line 1136) | private function isVersionAcceptable(?ConstraintInterface $constraint,...
    method getPackagesJsonUrl (line 1159) | private function getPackagesJsonUrl(): string
    method loadRootServerFile (line 1173) | protected function loadRootServerFile(?int $rootMaxAge = null)
    method canonicalizeUrl (line 1303) | private function canonicalizeUrl(string $url): string
    method loadDataFromServer (line 1323) | private function loadDataFromServer(): array
    method hasPartialPackages (line 1333) | private function hasPartialPackages(): bool
    method loadProviderListings (line 1345) | private function loadProviderListings($data): void
    method loadIncludes (line 1375) | private function loadIncludes(array $data): array
    method createPackages (line 1424) | private function createPackages(array $packages, ?string $source = nul...
    method fetchFile (line 1456) | protected function fetchFile(string $filename, ?string $cacheKey = nul...
    method fetchFileIfLastModified (line 1563) | private function fetchFileIfLastModified(string $filename, string $cac...
    method asyncFetchFile (line 1629) | private function asyncFetchFile(string $filename, string $cacheKey, ?s...
    method initializePartialPackages (line 1743) | private function initializePartialPackages(): void
    method lazyProvidersRepoContains (line 1771) | protected function lazyProvidersRepoContains(string $name)

FILE: src/Composer/Repository/CompositeRepository.php
  class CompositeRepository (line 23) | class CompositeRepository implements RepositoryInterface
    method __construct (line 35) | publi
Condensed preview — 1000 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,372K chars).
[
  {
    "path": ".editorconfig",
    "chars": 155,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nindent_size = 4\nindent_style = space\ninsert_final_newline = true\ntrim_trailing_whitespa"
  },
  {
    "path": ".gitattributes",
    "chars": 1137,
    "preview": "# Auto-detect text files, ensure they use LF.\n*       text=auto eol=lf\n\n# These files are always considered text and sho"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 2528,
    "preview": "Contributing to Composer\n========================\n\nPlease note that this project is released with a\n[Contributor Code of"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 488,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\ntype: Bug\nassignees: ''\n\n---\n\nMy `composer.json"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 598,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\ntype: Feature\nassignees: ''\n\n---\n\n**Is your "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/support-request---question.md",
    "chars": 546,
    "preview": "---\nname: Support request / question\nabout: Confused, looking for assistance, and you don't like GitHub Discussions?\ntit"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 133,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/pull_request_template.md",
    "chars": 305,
    "preview": "<!-- Please remember to select the appropriate branch:\n\nFor bug fixes pick the oldest branch where the fix applies (e.g."
  },
  {
    "path": ".github/workflows/autoloader.yml",
    "chars": 1053,
    "preview": "name: \"Autoloader\"\n\non:\n  push:\n    paths-ignore:\n      - 'doc/**'\n  pull_request:\n    paths-ignore:\n      - 'doc/**'\n\np"
  },
  {
    "path": ".github/workflows/close-stale-support.yml",
    "chars": 713,
    "preview": "name: Mark and close stale support issues\n\non:\n  schedule:\n  - cron: '32 1 * * *'\n\njobs:\n  stale:\n\n    runs-on: ubuntu-l"
  },
  {
    "path": ".github/workflows/conductor.yaml",
    "chars": 1136,
    "preview": "# See the Conductor setup guide at https://packagist.com/docs/conductor/getting-started\n\non:\n    repository_dispatch:\n  "
  },
  {
    "path": ".github/workflows/continuous-integration.yml",
    "chars": 5410,
    "preview": "name: \"Continuous Integration\"\n\non:\n  push:\n    paths-ignore:\n      - 'doc/**'\n  pull_request:\n    paths-ignore:\n      -"
  },
  {
    "path": ".github/workflows/lint.yml",
    "chars": 1235,
    "preview": "name: \"PHP Lint\"\n\non:\n  push:\n    paths-ignore:\n      - 'doc/**'\n  pull_request:\n    paths-ignore:\n      - 'doc/**'\n\nper"
  },
  {
    "path": ".github/workflows/php32bit.yml",
    "chars": 1578,
    "preview": "name: \"Continuous Integration (32bit)\"\n\non:\n  push:\n    branches:\n      - main\n    paths-ignore:\n      - 'doc/**'\n\nenv:\n"
  },
  {
    "path": ".github/workflows/phpstan.yml",
    "chars": 2120,
    "preview": "name: \"PHPStan\"\n\non:\n  push:\n    paths-ignore:\n      - 'doc/**'\n  pull_request:\n    paths-ignore:\n      - 'doc/**'\n\nenv:"
  },
  {
    "path": ".github/workflows/release.yml",
    "chars": 3045,
    "preview": "name: \"Release\"\n\non:\n  push:\n    tags:\n      - \"*\"\n\npermissions:\n  contents: read\n\nenv:\n  COMPOSER_FLAGS: \"--ansi --no-i"
  },
  {
    "path": ".gitignore",
    "chars": 182,
    "preview": "/.settings\n/.project\n/.buildpath\n/composer.phar\n/vendor\n/nbproject\n/tests/composer-test.phar\n.phpunit.result.cache\nphpun"
  },
  {
    "path": ".php-cs-fixer.php",
    "chars": 3401,
    "preview": "<?php\n\n$header = <<<EOF\nThis file is part of Composer.\n\n(c) Nils Adermann <naderman@naderman.de>\n    Jordi Boggiano <j.b"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 157637,
    "preview": "### [2.9.5] 2026-01-29\n\n  * Added support for new `pie` `download-url-methods` (#12727)\n  * Fixed detection of 7z when i"
  },
  {
    "path": "CODE_OF_CONDUCT.md",
    "chars": 5487,
    "preview": "\n# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make particip"
  },
  {
    "path": "LICENSE",
    "chars": 1068,
    "preview": "Copyright (c) Nils Adermann, Jordi Boggiano\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
  },
  {
    "path": "PORTING_INFO",
    "chars": 1600,
    "preview": " * add rule\n *  p = direct literal; always < 0 for installed rpm rules\n *  d, if < 0 direct literal, if > 0 offset into "
  },
  {
    "path": "README.md",
    "chars": 3478,
    "preview": "<p align=\"center\">\n    <a href=\"https://getcomposer.org\">\n        <img src=\"https://getcomposer.org/img/logo-composer-tr"
  },
  {
    "path": "UPGRADE-2.0.md",
    "chars": 10556,
    "preview": "# Upgrade guides for Composer 1.x to 2.0\n\n## For composer CLI users\n\n- The new platform-check feature means that Compose"
  },
  {
    "path": "bin/compile",
    "chars": 1499,
    "preview": "#!/usr/bin/env php\n<?php\n\n$cwd = getcwd();\nassert(is_string($cwd));\nchdir(__DIR__.'/../');\n$ts = rtrim(exec('git rev-lis"
  },
  {
    "path": "bin/composer",
    "chars": 4197,
    "preview": "#!/usr/bin/env php\n<?php\n\nif (PHP_SAPI !== 'cli' && PHP_SAPI !== 'phpdbg') {\n    if (0 === strpos(__FILE__, 'phar:') && "
  },
  {
    "path": "composer.json",
    "chars": 3833,
    "preview": "{\n    \"name\": \"composer/composer\",\n    \"type\": \"library\",\n    \"description\": \"Composer helps you declare, manage and ins"
  },
  {
    "path": "doc/00-intro.md",
    "chars": 7723,
    "preview": "# Introduction\n\nComposer is a tool for dependency management in PHP. It allows you to declare\nthe libraries your project"
  },
  {
    "path": "doc/01-basic-usage.md",
    "chars": 12785,
    "preview": "# Basic usage\n\n## Introduction\n\nFor our basic usage introduction, we will be installing `monolog/monolog`,\na logging lib"
  },
  {
    "path": "doc/02-libraries.md",
    "chars": 6624,
    "preview": "# Libraries\n\nThis chapter will tell you how to make your library installable through\nComposer.\n\n## Every project is a pa"
  },
  {
    "path": "doc/03-cli.md",
    "chars": 64738,
    "preview": "# Command-line interface / Commands\n\nYou've already learned how to use the command-line interface to do some\nthings. Thi"
  },
  {
    "path": "doc/04-schema.md",
    "chars": 32286,
    "preview": "# The composer.json schema\n\nThis chapter will explain all of the fields available in `composer.json`.\n\n## JSON schema\n\nW"
  },
  {
    "path": "doc/05-repositories.md",
    "chars": 26799,
    "preview": "# Repositories\n\nThis chapter will explain the concept of packages and repositories, what kinds\nof repositories are avail"
  },
  {
    "path": "doc/06-config.md",
    "chars": 25831,
    "preview": "# Config\n\nThis chapter will describe the `config` section of the `composer.json`\n[schema](04-schema.md).\n\n## process-tim"
  },
  {
    "path": "doc/07-runtime.md",
    "chars": 7603,
    "preview": "# Runtime Composer utilities\n\nWhile Composer is mostly used around your project to install its dependencies,\nthere are a"
  },
  {
    "path": "doc/08-community.md",
    "chars": 1297,
    "preview": "# Community\n\nThere are many people using Composer already, and quite a few of them are\ncontributing.\n\n## Contributing\n\nI"
  },
  {
    "path": "doc/articles/aliases.md",
    "chars": 4113,
    "preview": "<!--\n    tagline: Alias branch names to versions\n-->\n\n# Aliases\n\n## Why aliases?\n\nWhen you are using a VCS repository, y"
  },
  {
    "path": "doc/articles/authentication-for-private-packages.md",
    "chars": 19217,
    "preview": "<!--\n    tagline: Access privately hosted packages/repositories\n-->\n\n# Authentication for privately hosted packages and "
  },
  {
    "path": "doc/articles/autoloader-optimization.md",
    "chars": 4431,
    "preview": "<!--\n    tagline: How to reduce the performance impact of the autoloader\n-->\n\n# Autoloader optimization\n\nBy default, the"
  },
  {
    "path": "doc/articles/composer-platform-dependencies.md",
    "chars": 3888,
    "preview": "<!--\n    tagline: Making your package depend on specific Composer versions\n-->\n\n# Composer platform dependencies\n\n## Wha"
  },
  {
    "path": "doc/articles/custom-installers.md",
    "chars": 7308,
    "preview": "<!--\n    tagline: Modify the way certain types of packages are installed\n-->\n\n# Setting up and using custom installers\n\n"
  },
  {
    "path": "doc/articles/handling-private-packages.md",
    "chars": 12412,
    "preview": "<!--\n    tagline: Hosting and installing private Composer packages\n-->\n\n# Handling private packages\n\n# Private Packagist"
  },
  {
    "path": "doc/articles/plugins.md",
    "chars": 13479,
    "preview": "<!--\n    tagline: Modify and extend Composer's functionality\n-->\n\n# Setting up and using plugins\n\n## Synopsis\n\nYou may w"
  },
  {
    "path": "doc/articles/repository-priorities.md",
    "chars": 3235,
    "preview": "<!--\n    tagline: Configure which packages are found in which repositories\n-->\n\n# Repository priorities\n\n## Canonical re"
  },
  {
    "path": "doc/articles/resolving-merge-conflicts.md",
    "chars": 7980,
    "preview": "<!--\n    tagline: On gracefully resolving conflicts while merging\n-->\n\n# Resolving merge conflicts\n\nWhen working as a te"
  },
  {
    "path": "doc/articles/scripts.md",
    "chars": 17775,
    "preview": "<!--\n    tagline: Script are callbacks that are called before/after installing packages\n-->\n\n# Scripts\n\n## What is a scr"
  },
  {
    "path": "doc/articles/troubleshooting.md",
    "chars": 18308,
    "preview": "<!--\n    tagline: Solving problems\n-->\n# Troubleshooting\n\nThis is a list of common pitfalls on using Composer, and how t"
  },
  {
    "path": "doc/articles/vendor-binaries.md",
    "chars": 5128,
    "preview": "<!--\n    tagline: Expose command-line scripts from packages\n-->\n\n# Vendor binaries and the `vendor/bin` directory\n\n## Wh"
  },
  {
    "path": "doc/articles/versions.md",
    "chars": 11814,
    "preview": "<!--\n    tagline: Versions explained.\n-->\n\n# Versions and constraints\n\n## Composer Versions vs VCS Versions\n\nBecause Com"
  },
  {
    "path": "doc/dev/DefaultPolicy.md",
    "chars": 1280,
    "preview": "# Default Solver Policy\n\nA solver policy defines behaviour variables of the dependency solver. It decides\nwhich versions"
  },
  {
    "path": "doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md",
    "chars": 2220,
    "preview": "# How do I install a package to a custom path for my framework?\n\nEach framework may have one or many different required "
  },
  {
    "path": "doc/faqs/how-to-install-composer-programmatically.md",
    "chars": 1767,
    "preview": "# How do I install Composer programmatically?\n\nAs noted on the download page, the installer script contains a\nchecksum w"
  },
  {
    "path": "doc/faqs/how-to-install-untrusted-packages-safely.md",
    "chars": 2622,
    "preview": "# How do I install untrusted packages safely? Is it safe to run Composer as superuser or root?\n\n## Why am I seeing a \"Do"
  },
  {
    "path": "doc/faqs/how-to-use-composer-behind-a-proxy.md",
    "chars": 3677,
    "preview": "# How to use Composer behind a proxy\n\nComposer, like many other tools, uses environment variables to control the use of "
  },
  {
    "path": "doc/faqs/should-i-commit-the-dependencies-in-my-vendor-directory.md",
    "chars": 1708,
    "preview": "# Should I commit the dependencies in my vendor directory?\n\nThe general recommendation is **no**. The vendor directory ("
  },
  {
    "path": "doc/faqs/which-version-numbering-system-does-composer-itself-use.md",
    "chars": 153,
    "preview": "# Which version numbering system does Composer itself use?\n\nComposer uses [Semantic Versioning (aka SemVer)\n2.0.0](https"
  },
  {
    "path": "doc/faqs/why-are-unbound-version-constraints-a-bad-idea.md",
    "chars": 1069,
    "preview": "# Why are unbound version constraints a bad idea?\n\nA version constraint without an upper bound such as `*`, `>=3.4` or\n`"
  },
  {
    "path": "doc/faqs/why-are-version-constraints-combining-comparisons-and-wildcards-a-bad-idea.md",
    "chars": 989,
    "preview": "# Why are version constraints combining comparisons and wildcards a bad idea?\n\nThis is a fairly common mistake people ma"
  },
  {
    "path": "doc/faqs/why-cant-composer-load-repositories-recursively.md",
    "chars": 2106,
    "preview": "# Why can't Composer load repositories recursively?\n\nYou may run into problems when using custom repositories because Co"
  },
  {
    "path": "doc/fixtures/fixtures.md",
    "chars": 1012,
    "preview": "# `Composer` type repository fixtures\n\nThis directory contains some examples of what `composer` type repositories can\nlo"
  },
  {
    "path": "doc/fixtures/repo-composer-plain/packages.json",
    "chars": 5455,
    "preview": "{\n    \"packages\": {\n        \"bar/baz\": {\n            \"1.0.0\": {\n                \"name\": \"bar/baz\",\n                \"vers"
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/p/bar/baz$923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc910833e3e46dbe.json",
    "chars": 1657,
    "preview": "{\n    \"packages\": {\n        \"bar\\/baz\": {\n            \"1.0.0\": {\n                \"name\": \"bar\\/baz\",\n                \"ve"
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/p/foo/bar$4baabb3303afa3e34a4d3af18fb138e5f3b79029c1f8d9ab5b477ea15776ba0a.json",
    "chars": 2608,
    "preview": "{\n    \"packages\": {\n        \"foo\\/bar\": {\n            \"1.0.0\": {\n                \"name\": \"foo\\/bar\",\n                \"ve"
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/p/gar/nix$5d210670cb46c8364c8e3fb449967b9bea558b971e5b082f330ae4f1d484c321.json",
    "chars": 1615,
    "preview": "{\n    \"packages\": {\n        \"qux\\/quux\": {\n            \"dev-default\": {\n                \"name\": \"qux\\/quux\",\n           "
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/p/provider-active$1893a061e579543822389ecd12d791c612db0c05e22d90e9286e233cacd86ed8.json",
    "chars": 517,
    "preview": "{\n    \"providers\": {\n        \"bar\\/baz\": {\n            \"sha256\": \"923363b3c22e73abb2e3fd891c8156dd4d0821a97fd3e428bc9108"
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/p/qux/quux$c142d1a07ca354be46b613f59f1d601923a5a00ccc5fcce50a77ecdd461eb72d.json",
    "chars": 633,
    "preview": "{\n    \"packages\": {\n        \"qux\\/quux\": {\n            \"dev-default\": {\n                \"name\": \"qux\\/quux\",\n           "
  },
  {
    "path": "doc/fixtures/repo-composer-with-providers/packages.json",
    "chars": 309,
    "preview": "{\n    \"packages\": [],\n    \"providers-url\": \"\\/p\\/%package%$%hash%.json\",\n    \"provider-includes\": {\n        \"p\\/provider"
  },
  {
    "path": "phpstan/baseline-8.4.neon",
    "chars": 9915,
    "preview": "parameters:\n\tignoreErrors:\n\t\t-\n\t\t\tmessage: \"#^Casting to string something that's already string\\\\.$#\"\n\t\t\tcount: 1\n\t\t\tpat"
  },
  {
    "path": "phpstan/baseline.neon",
    "chars": 166441,
    "preview": "parameters:\n\tignoreErrors:\n\t\t-\n\t\t\tmessage: \"#^Parameter \\\\#2 \\\\$advisories of method Composer\\\\\\\\Advisory\\\\\\\\Auditor\\\\:\\"
  },
  {
    "path": "phpstan/config.neon",
    "chars": 2817,
    "preview": "includes:\n    - ../vendor/phpstan/phpstan/conf/bleedingEdge.neon\n    - ../vendor/phpstan/phpstan-phpunit/extension.neon\n"
  },
  {
    "path": "phpstan/ignore-by-php-version.neon.php",
    "chars": 349,
    "preview": "<?php declare(strict_types = 1);\n\n// more inspiration at https://github.com/phpstan/phpstan-src/blob/master/build/ignore"
  },
  {
    "path": "phpstan/rules.neon",
    "chars": 470,
    "preview": "# Composer-specific PHPStan extensions\n#\n# These can be reused by third party packages by including 'vendor/composer/com"
  },
  {
    "path": "phpunit.xml.dist",
    "chars": 1324,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<phpunit xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n         xsi:noNam"
  },
  {
    "path": "res/composer-lock-schema.json",
    "chars": 3503,
    "preview": "{\n    \"$schema\": \"https://json-schema.org/draft-04/schema#\",\n    \"title\": \"Composer Lock File\",\n    \"type\": \"object\",\n  "
  },
  {
    "path": "res/composer-repository-schema.json",
    "chars": 8440,
    "preview": "{\n    \"$schema\": \"https://json-schema.org/draft-04/schema#\",\n    \"title\": \"Composer Package Repository\",\n    \"type\": \"ob"
  },
  {
    "path": "res/composer-schema.json",
    "chars": 71274,
    "preview": "{\n    \"$schema\": \"https://json-schema.org/draft-04/schema#\",\n    \"title\": \"Composer Package\",\n    \"type\": \"object\",\n    "
  },
  {
    "path": "src/Composer/Advisory/AuditConfig.php",
    "chars": 6900,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Advisory/Auditor.php",
    "chars": 18898,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Advisory/IgnoredSecurityAdvisory.php",
    "chars": 1373,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Advisory/PartialSecurityAdvisory.php",
    "chars": 2615,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Advisory/SecurityAdvisory.php",
    "chars": 2325,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Autoload/AutoloadGenerator.php",
    "chars": 53167,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Autoload/ClassLoader.php",
    "chars": 16378,
    "preview": "<?php\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *     Jordi Boggiano <j.bogg"
  },
  {
    "path": "src/Composer/Autoload/ClassMapGenerator.php",
    "chars": 3849,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Cache.php",
    "chars": 11356,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/AboutCommand.php",
    "chars": 1307,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ArchiveCommand.php",
    "chars": 8734,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/AuditCommand.php",
    "chars": 4957,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/BaseCommand.php",
    "chars": 18615,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/BaseConfigCommand.php",
    "chars": 3440,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/BaseDependencyCommand.php",
    "chars": 13045,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/BumpCommand.php",
    "chars": 10384,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/CheckPlatformReqsCommand.php",
    "chars": 9049,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ClearCacheCommand.php",
    "chars": 3610,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/CompletionTrait.php",
    "chars": 9195,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ConfigCommand.php",
    "chars": 45433,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/CreateProjectCommand.php",
    "chars": 25320,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/DependsCommand.php",
    "chars": 1928,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/DiagnoseCommand.php",
    "chars": 37225,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/DumpAutoloadCommand.php",
    "chars": 7217,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ExecCommand.php",
    "chars": 4710,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/FundCommand.php",
    "chars": 5462,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/GlobalCommand.php",
    "chars": 5814,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/HomeCommand.php",
    "chars": 5503,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/InitCommand.php",
    "chars": 24652,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/InstallCommand.php",
    "chars": 8420,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/LicensesCommand.php",
    "chars": 6663,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/OutdatedCommand.php",
    "chars": 6238,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/PackageDiscoveryTrait.php",
    "chars": 21364,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ProhibitsCommand.php",
    "chars": 2104,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ReinstallCommand.php",
    "chars": 9529,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/RemoveCommand.php",
    "chars": 16110,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/RepositoryCommand.php",
    "chars": 12092,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/RequireCommand.php",
    "chars": 30716,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/RunScriptCommand.php",
    "chars": 6408,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ScriptAliasCommand.php",
    "chars": 3030,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/SearchCommand.php",
    "chars": 5075,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/SelfUpdateCommand.php",
    "chars": 28817,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ShowCommand.php",
    "chars": 69957,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/StatusCommand.php",
    "chars": 8658,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/SuggestsCommand.php",
    "chars": 4066,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/UpdateCommand.php",
    "chars": 21490,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Command/ValidateCommand.php",
    "chars": 9408,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Compiler.php",
    "chars": 12593,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Composer.php",
    "chars": 4268,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Config/ConfigSourceInterface.php",
    "chars": 2815,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Config/JsonConfigSource.php",
    "chars": 15687,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Config.php",
    "chars": 26165,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Console/Application.php",
    "chars": 37260,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Console/GithubActionError.php",
    "chars": 2145,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Console/HtmlOutputFormatter.php",
    "chars": 3054,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Console/Input/InputArgument.php",
    "chars": 2686,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Console/Input/InputOption.php",
    "chars": 2908,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Decisions.php",
    "chars": 6336,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/DefaultPolicy.php",
    "chars": 10904,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/GenericRule.php",
    "chars": 2143,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/LocalRepoTransaction.php",
    "chars": 814,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/LockTransaction.php",
    "chars": 6782,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/MultiConflictRule.php",
    "chars": 2839,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/InstallOperation.php",
    "chars": 1316,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php",
    "chars": 1309,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php",
    "chars": 1315,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/OperationInterface.php",
    "chars": 945,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/SolverOperation.php",
    "chars": 869,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/UninstallOperation.php",
    "chars": 1294,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Operation/UpdateOperation.php",
    "chars": 2845,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/PolicyInterface.php",
    "chars": 887,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Pool.php",
    "chars": 11467,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/PoolBuilder.php",
    "chars": 37815,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/PoolOptimizer.php",
    "chars": 19543,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Problem.php",
    "chars": 36277,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Request.php",
    "chars": 8543,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Rule.php",
    "chars": 19891,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Rule2Literals.php",
    "chars": 2681,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleSet.php",
    "chars": 4973,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleSetGenerator.php",
    "chars": 13264,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleSetIterator.php",
    "chars": 2608,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleWatchChain.php",
    "chars": 1463,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleWatchGraph.php",
    "chars": 6522,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/RuleWatchNode.php",
    "chars": 2927,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/SecurityAdvisoryPoolFilter.php",
    "chars": 4476,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Solver.php",
    "chars": 25479,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/SolverBugException.php",
    "chars": 798,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/SolverProblemsException.php",
    "chars": 5684,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/DependencyResolver/Transaction.php",
    "chars": 14660,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/ArchiveDownloader.php",
    "chars": 8680,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/ChangeReportInterface.php",
    "chars": 807,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/DownloadManager.php",
    "chars": 15794,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/DownloaderInterface.php",
    "chars": 4261,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/DvcsDownloaderInterface.php",
    "chars": 822,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/FileDownloader.php",
    "chars": 21210,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/FilesystemException.php",
    "chars": 709,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/FossilDownloader.php",
    "chars": 3973,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/GitDownloader.php",
    "chars": 25410,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/GzipDownloader.php",
    "chars": 2157,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/HgDownloader.php",
    "chars": 3708,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/MaxFileSizeExceededException.php",
    "chars": 392,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/PathDownloader.php",
    "chars": 14010,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/PerforceDownloader.php",
    "chars": 3440,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/PharDownloader.php",
    "chars": 1141,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/RarDownloader.php",
    "chars": 2483,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/SvnDownloader.php",
    "chars": 9098,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/TarDownloader.php",
    "chars": 901,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/TransportException.php",
    "chars": 1861,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/VcsCapableDownloaderInterface.php",
    "chars": 835,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/VcsDownloader.php",
    "chars": 13165,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/XzDownloader.php",
    "chars": 1051,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Downloader/ZipDownloader.php",
    "chars": 14983,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/EventDispatcher/Event.php",
    "chars": 2222,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/EventDispatcher/EventDispatcher.php",
    "chars": 34838,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/EventDispatcher/EventSubscriberInterface.php",
    "chars": 1653,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/EventDispatcher/ScriptExecutionException.php",
    "chars": 533,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Exception/IrrecoverableDownloadException.php",
    "chars": 447,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Exception/NoSslException.php",
    "chars": 499,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Factory.php",
    "chars": 32482,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Filter/PlatformRequirementFilter/IgnoreAllPlatformRequirementFilter.php",
    "chars": 722,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Filter/PlatformRequirementFilter/IgnoreListPlatformRequirementFilter.php",
    "chars": 2963,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Filter/PlatformRequirementFilter/IgnoreNothingPlatformRequirementFilter.php",
    "chars": 700,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterFactory.php",
    "chars": 1371,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  },
  {
    "path": "src/Composer/Filter/PlatformRequirementFilter/PlatformRequirementFilterInterface.php",
    "chars": 508,
    "preview": "<?php declare(strict_types=1);\n\n/*\n * This file is part of Composer.\n *\n * (c) Nils Adermann <naderman@naderman.de>\n *  "
  }
]

// ... and 800 more files (download for full content)

About this extraction

This page contains the full source code of the composer/composer GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1000 files (5.7 MB), approximately 1.6M tokens, and a symbol index with 4774 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!