From 2fcb11ebad29f83efa05d21c4345a4557268b563 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Mon, 26 Jun 2023 22:08:24 +0530 Subject: [PATCH 01/36] ACMS-1866: Supports PHP 8.2. --- src/Config/SettingsConfig.php | 9 ++++++++- src/Plugin.php | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Config/SettingsConfig.php b/src/Config/SettingsConfig.php index 2ac1e91..97c0629 100644 --- a/src/Config/SettingsConfig.php +++ b/src/Config/SettingsConfig.php @@ -11,6 +11,13 @@ */ class SettingsConfig extends Config { + /** + * Holds the YamlExpander class object. + * + * @var \Grasmash\YamlExpander\YamlExpander + */ + protected $expander; + /** * Config Constructor. * @@ -29,7 +36,7 @@ public function __construct(array $data = []) { * @param string $filename * The file in which placeholders should be expanded. */ - public function expandFileProperties($filename) { + public function expandFileProperties(string $filename) { $expanded_contents = $this->expander->expandArrayProperties(file($filename), $this->export()); file_put_contents($filename, implode("", $expanded_contents)); } diff --git a/src/Plugin.php b/src/Plugin.php index 0da1dea..1d9da7a 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -49,6 +49,13 @@ class Plugin implements PluginInterface, EventSubscriberInterface { */ protected $drsIncluded; + /** + * Stores this plugin package object. + * + * @var mixed|null + */ + protected $settingsPackage; + /** * {@inheritdoc} */ @@ -104,7 +111,7 @@ public function onPostPackageEvent(PackageEvent $event) { */ public function onPostCmdEvent() { // Only install the template files if acquia/drupal-recommended-settings was installed. - if (isset($this->settingsPackage)) { + if ($this->settingsPackage) { $settings = new Settings($this->composer, $this->io, $this->settingsPackage); $settings->hashSalt(); $settings->generateSettings(); From c9291ab137839f026aeb210c324d885b53e8f986 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Mon, 26 Jun 2023 22:23:42 +0530 Subject: [PATCH 02/36] ACMS-1866: Code cleanup & fixed PHPCS issue. --- src/Config/ConfigInitializer.php | 2 +- src/Plugin.php | 43 +++----------------------------- 2 files changed, 5 insertions(+), 40 deletions(-) diff --git a/src/Config/ConfigInitializer.php b/src/Config/ConfigInitializer.php index 84fbaf8..1a9bc72 100644 --- a/src/Config/ConfigInitializer.php +++ b/src/Config/ConfigInitializer.php @@ -28,7 +28,7 @@ class ConfigInitializer { /** * Processor. * - * @var Acquia\Drupal\RecommendedSettings\Config\YamlConfigProcessor + * @var \Acquia\Drupal\RecommendedSettings\Config\YamlConfigProcessor */ protected $processor; diff --git a/src/Plugin.php b/src/Plugin.php index 1d9da7a..2617e64 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -35,20 +35,6 @@ class Plugin implements PluginInterface, EventSubscriberInterface { */ protected $io; - /** - * The Composer Scaffold handler. - * - * @var \Drupal\Composer\Plugin\Scaffold\Handler - */ - protected $handler; - - /** - * Record whether the 'require' command was called. - * - * @var bool - */ - protected $drsIncluded; - /** * Stores this plugin package object. * @@ -62,7 +48,6 @@ class Plugin implements PluginInterface, EventSubscriberInterface { public function activate(Composer $composer, IOInterface $io) { $this->composer = $composer; $this->io = $io; - $this->drsIncluded = FALSE; } /** @@ -90,7 +75,7 @@ public static function getSubscribedEvents() { } /** - * Marks Acquia Drupal Recommended Settings to be processed after an install or update command. + * Marks this plugin to be processed after package install or update event. * * @param \Composer\Installer\PackageEvent $event * Event. @@ -105,12 +90,13 @@ public function onPostPackageEvent(PackageEvent $event) { } /** - * Execute Acquia Drupal Recommended Settings drs:update after update command has been executed. + * Includes Acquia recommended settings post composer update/install command. * * @throws \Exception */ public function onPostCmdEvent() { - // Only install the template files if acquia/drupal-recommended-settings was installed. + // Only install the template files, if the drupal-recommended-settings + // plugin is installed. if ($this->settingsPackage) { $settings = new Settings($this->composer, $this->io, $this->settingsPackage); $settings->hashSalt(); @@ -140,25 +126,4 @@ protected function getSettingsPackage(OperationInterface $operation) { return NULL; } - /** - * Hook for pre-package install. - */ - public function prePackageInstall(PackageEvent $event) { - if (!$this->drsIncluded) { - $operations = $event->getOperations(); - foreach ($operations as $operation) { - if ($operation instanceof InstallOperation) { - $package = $operation->getPackage(); - } - elseif ($operation instanceof UpdateOperation) { - $package = $operation->getTargetPackage(); - } - if (isset($package) && $package instanceof PackageInterface && $package->getName() == 'acquia/drupal-recommended-settings') { - $this->drsIncluded = TRUE; - break; - } - } - } - } - } From 395e3a22f7f7cd5a3ca093567d7c1ff67b111508 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Wed, 16 Aug 2023 19:16:35 +0530 Subject: [PATCH 03/36] ACMS-1934: Remove drupal/config_sync_without_site_uuid plugin. --- composer.json | 1 - composer.lock | 4193 +++++++++---------------------------------------- 2 files changed, 717 insertions(+), 3477 deletions(-) diff --git a/composer.json b/composer.json index a125e53..3bf05fc 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,6 @@ "composer/composer": "^2.5", "consolidation/config": "^1.0.0 || ^2.0.0", "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", - "drupal/config_sync_without_site_uuid": "^1.0", "grasmash/yaml-expander": "^3", "loophp/phposinfo": "^1.7.1", "symfony/filesystem": "^6.2", diff --git a/composer.lock b/composer.lock index 39e7e2b..223d9d6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "192de2dbcc0944a05d8f128e4167f943", + "content-hash": "9d2d613a3a7fda69edf97aa965a41c1f", "packages": [ { "name": "acquia/drupal-environment-detector", @@ -59,62 +59,6 @@ }, "time": "2023-02-28T18:45:28+00:00" }, - { - "name": "asm89/stack-cors", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/asm89/stack-cors.git", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/asm89/stack-cors/zipball/73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "reference": "73e5b88775c64ccc0b84fb60836b30dc9d92ac4a", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "symfony/http-foundation": "^4|^5|^6", - "symfony/http-kernel": "^4|^5|^6" - }, - "require-dev": { - "phpunit/phpunit": "^7|^9", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.1-dev" - } - }, - "autoload": { - "psr-4": { - "Asm89\\Stack\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alexander", - "email": "iam.asm89@gmail.com" - } - ], - "description": "Cross-origin resource sharing library and stack middleware", - "homepage": "https://github.com/asm89/stack-cors", - "keywords": [ - "cors", - "stack" - ], - "support": { - "issues": "https://github.com/asm89/stack-cors/issues", - "source": "https://github.com/asm89/stack-cors/tree/v2.1.1" - }, - "time": "2022-01-18T09:12:03+00:00" - }, { "name": "composer/ca-bundle", "version": "1.3.5", @@ -880,40 +824,39 @@ "time": "2022-10-27T11:44:00+00:00" }, { - "name": "doctrine/annotations", - "version": "1.14.3", + "name": "grasmash/expander", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + "url": "https://github.com/grasmash/expander.git", + "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", + "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", "shasum": "" }, "require": { - "doctrine/lexer": "^1 || ^2", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" + "dflydev/dot-access-data": "^3.0.0", + "php": ">=8.0", + "psr/log": "^2 | ^3" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + "greg-1-anderson/composer-test-scenarios": "^1", + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + "Grasmash\\Expander\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -922,111 +865,95 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Matthew Grasmick" } ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], + "description": "Expands internal property references in PHP arrays file.", "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.3" + "issues": "https://github.com/grasmash/expander/issues", + "source": "https://github.com/grasmash/expander/tree/3.0.0" }, - "time": "2023-02-01T09:20:38+00:00" + "time": "2022-05-10T13:14:49+00:00" }, { - "name": "doctrine/deprecations", - "version": "v1.0.0", + "name": "grasmash/yaml-expander", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "url": "https://github.com/grasmash/yaml-expander.git", + "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/f6dd6be2a899316528e201c91fc317b16794b1c0", + "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "grasmash/expander": "^1 || ^2 || ^3", + "symfony/yaml": "^4 || ^5 || ^6" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^8.0 || ^9", + "squizlabs/php_codesniffer": "^2.7 || ^3.3" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Grasmash\\YamlExpander\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "authors": [ + { + "name": "Matthew Grasmick" + } + ], + "description": "Expands internal property references in a yaml file.", "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "issues": "https://github.com/grasmash/yaml-expander/issues", + "source": "https://github.com/grasmash/yaml-expander/tree/3.0.2" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2022-05-10T13:29:17+00:00" }, { - "name": "doctrine/lexer", - "version": "2.1.0", + "name": "justinrainbow/json-schema", + "version": "5.2.12", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": ">=5.3.3" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" }, + "bin": [ + "bin/validate-json" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" + "JsonSchema\\": "src/JsonSchema/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1035,263 +962,63 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" } ], - "time": "2022-12-14T08:49:07+00:00" - }, - { - "name": "drupal/config_sync_without_site_uuid", - "version": "1.0.0-beta1", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/config_sync_without_site_uuid.git", - "reference": "2f6aea8a46553523b473c53dc2df87a76c2130a2" - }, - "require": { - "drupal/core": "^9 || ^10" - }, - "type": "library", - "autoload": { - "files": [ - "globals.php" - ], - "psr-4": { - "Drupal\\ConfigSyncWithoutSiteUuid\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "time": "2023-03-13T16:14:16+00:00" - }, - { - "name": "drupal/core", - "version": "10.0.9", - "source": { - "type": "git", - "url": "https://github.com/drupal/core.git", - "reference": "1299803690cf035d144c468bab6b6bf7e03aca49" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/1299803690cf035d144c468bab6b6bf7e03aca49", - "reference": "1299803690cf035d144c468bab6b6bf7e03aca49", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "^2.1", - "composer-runtime-api": "^2.1", - "composer/semver": "^3.3", - "doctrine/annotations": "^1.13", - "egulias/email-validator": "^3.2.1", - "ext-date": "*", - "ext-dom": "*", - "ext-filter": "*", - "ext-gd": "*", - "ext-hash": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-pdo": "*", - "ext-session": "*", - "ext-simplexml": "*", - "ext-spl": "*", - "ext-tokenizer": "*", - "ext-xml": "*", - "guzzlehttp/guzzle": "^7.5", - "guzzlehttp/psr7": "^2.4", - "masterminds/html5": "^2.7", - "pear/archive_tar": "^1.4.14", - "php": ">=8.1.0", - "psr/log": "^3.0", - "symfony/console": "^6.2", - "symfony/dependency-injection": "^6.2", - "symfony/event-dispatcher": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/mime": "^6.2", - "symfony/polyfill-iconv": "^1.26", - "symfony/process": "^6.2", - "symfony/psr-http-message-bridge": "^2.1", - "symfony/routing": "^6.2", - "symfony/serializer": "^6.2", - "symfony/validator": "^6.2", - "symfony/yaml": "^6.2", - "twig/twig": "^3.4.3" - }, - "conflict": { - "drush/drush": "<8.1.10" - }, - "replace": { - "drupal/core-annotation": "self.version", - "drupal/core-assertion": "self.version", - "drupal/core-class-finder": "self.version", - "drupal/core-datetime": "self.version", - "drupal/core-dependency-injection": "self.version", - "drupal/core-diff": "self.version", - "drupal/core-discovery": "self.version", - "drupal/core-event-dispatcher": "self.version", - "drupal/core-file-cache": "self.version", - "drupal/core-file-security": "self.version", - "drupal/core-filesystem": "self.version", - "drupal/core-front-matter": "self.version", - "drupal/core-gettext": "self.version", - "drupal/core-graph": "self.version", - "drupal/core-http-foundation": "self.version", - "drupal/core-php-storage": "self.version", - "drupal/core-plugin": "self.version", - "drupal/core-proxy-builder": "self.version", - "drupal/core-render": "self.version", - "drupal/core-serialization": "self.version", - "drupal/core-transliteration": "self.version", - "drupal/core-utility": "self.version", - "drupal/core-uuid": "self.version", - "drupal/core-version": "self.version" - }, - "suggest": { - "ext-zip": "Needed to extend the plugin.manager.archiver service capability with the handling of files in the ZIP format." - }, - "type": "drupal-core", - "extra": { - "drupal-scaffold": { - "file-mapping": { - "[project-root]/.editorconfig": "assets/scaffold/files/editorconfig", - "[project-root]/.gitattributes": "assets/scaffold/files/gitattributes", - "[web-root]/.csslintrc": "assets/scaffold/files/csslintrc", - "[web-root]/.eslintignore": "assets/scaffold/files/eslintignore", - "[web-root]/.eslintrc.json": "assets/scaffold/files/eslintrc.json", - "[web-root]/.ht.router.php": "assets/scaffold/files/ht.router.php", - "[web-root]/.htaccess": "assets/scaffold/files/htaccess", - "[web-root]/example.gitignore": "assets/scaffold/files/example.gitignore", - "[web-root]/index.php": "assets/scaffold/files/index.php", - "[web-root]/INSTALL.txt": "assets/scaffold/files/drupal.INSTALL.txt", - "[web-root]/README.md": "assets/scaffold/files/drupal.README.md", - "[web-root]/robots.txt": "assets/scaffold/files/robots.txt", - "[web-root]/update.php": "assets/scaffold/files/update.php", - "[web-root]/web.config": "assets/scaffold/files/web.config", - "[web-root]/sites/README.txt": "assets/scaffold/files/sites.README.txt", - "[web-root]/sites/development.services.yml": "assets/scaffold/files/development.services.yml", - "[web-root]/sites/example.settings.local.php": "assets/scaffold/files/example.settings.local.php", - "[web-root]/sites/example.sites.php": "assets/scaffold/files/example.sites.php", - "[web-root]/sites/default/default.services.yml": "assets/scaffold/files/default.services.yml", - "[web-root]/sites/default/default.settings.php": "assets/scaffold/files/default.settings.php", - "[web-root]/modules/README.txt": "assets/scaffold/files/modules.README.txt", - "[web-root]/profiles/README.txt": "assets/scaffold/files/profiles.README.txt", - "[web-root]/themes/README.txt": "assets/scaffold/files/themes.README.txt" - } - } - }, - "autoload": { - "files": [ - "includes/bootstrap.inc" - ], - "psr-4": { - "Drupal\\Core\\": "lib/Drupal/Core", - "Drupal\\Component\\": "lib/Drupal/Component" - }, - "classmap": [ - "lib/Drupal.php", - "lib/Drupal/Component/DependencyInjection/Container.php", - "lib/Drupal/Component/DependencyInjection/PhpArrayContainer.php", - "lib/Drupal/Component/FileCache/FileCacheFactory.php", - "lib/Drupal/Component/Utility/Timer.php", - "lib/Drupal/Component/Utility/Unicode.php", - "lib/Drupal/Core/Cache/Cache.php", - "lib/Drupal/Core/Cache/CacheBackendInterface.php", - "lib/Drupal/Core/Cache/CacheTagsChecksumInterface.php", - "lib/Drupal/Core/Cache/CacheTagsChecksumTrait.php", - "lib/Drupal/Core/Cache/CacheTagsInvalidatorInterface.php", - "lib/Drupal/Core/Cache/DatabaseBackend.php", - "lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php", - "lib/Drupal/Core/Database/Connection.php", - "lib/Drupal/Core/Database/Database.php", - "lib/Drupal/Core/Database/StatementInterface.php", - "lib/Drupal/Core/DependencyInjection/Container.php", - "lib/Drupal/Core/DrupalKernel.php", - "lib/Drupal/Core/DrupalKernelInterface.php", - "lib/Drupal/Core/Installer/InstallerRedirectTrait.php", - "lib/Drupal/Core/Site/Settings.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" ], - "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/10.0.9" + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" }, - "time": "2023-05-03T09:53:20+00:00" + "time": "2022-04-13T08:02:27+00:00" }, { - "name": "egulias/email-validator", - "version": "3.2.5", + "name": "loophp/phposinfo", + "version": "1.8.0", "source": { "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "b531a2311709443320c786feb4519cfaf94af796" + "url": "https://github.com/loophp/phposinfo.git", + "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b531a2311709443320c786feb4519cfaf94af796", - "reference": "b531a2311709443320c786feb4519cfaf94af796", + "url": "https://api.github.com/repos/loophp/phposinfo/zipball/9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", + "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2|^2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + "drupol/php-conventions": "^5.0.0", + "ext-pcov": "*", + "friends-of-phpspec/phpspec-code-coverage": "^6", + "infection/infection": "^0.26", + "infection/phpspec-adapter": "^0.2.0", + "phpspec/phpspec": "^7" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, "autoload": { "psr-4": { - "Egulias\\EmailValidator\\": "src" + "loophp\\phposinfo\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1300,64 +1027,52 @@ ], "authors": [ { - "name": "Eduardo Gulias Davis" + "name": "Pol Dellaiera", + "email": "pol.dellaiera@protonmail.com" } ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", + "description": "Try to guess the host operating system.", "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" + "operating system detection" ], "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.5" + "issues": "https://github.com/loophp/phposinfo/issues", + "source": "https://github.com/loophp/phposinfo" }, "funding": [ { - "url": "https://github.com/egulias", + "url": "https://github.com/drupol", "type": "github" } ], - "time": "2023-01-02T17:26:14+00:00" + "time": "2022-12-20T20:21:10+00:00" }, { - "name": "grasmash/expander", - "version": "3.0.0", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/grasmash/expander.git", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "dflydev/dot-access-data": "^3.0.0", - "php": ">=8.0", - "psr/log": "^2 | ^3" - }, - "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.3" + "php": ">=7.4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Grasmash\\Expander\\": "src/" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1366,43 +1081,51 @@ ], "authors": [ { - "name": "Matthew Grasmick" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Expands internal property references in PHP arrays file.", - "support": { - "issues": "https://github.com/grasmash/expander/issues", - "source": "https://github.com/grasmash/expander/tree/3.0.0" + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2022-05-10T13:14:49+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "grasmash/yaml-expander", - "version": "3.0.2", + "name": "psr/event-dispatcher", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/grasmash/yaml-expander.git", - "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0" + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/f6dd6be2a899316528e201c91fc317b16794b1c0", - "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { - "grasmash/expander": "^1 || ^2 || ^3", - "symfony/yaml": "^4 || ^5 || ^6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^8.0 || ^9", - "squizlabs/php_codesniffer": "^2.7 || ^3.3" + "php": ">=7.2.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Grasmash\\YamlExpander\\": "src/" + "Psr\\EventDispatcher\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1411,67 +1134,48 @@ ], "authors": [ { - "name": "Matthew Grasmick" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Expands internal property references in a yaml file.", + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], "support": { - "issues": "https://github.com/grasmash/yaml-expander/issues", - "source": "https://github.com/grasmash/yaml-expander/tree/3.0.2" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2022-05-10T13:29:17+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "7.7.0", + "name": "psr/log", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", - "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", - "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "provide": { - "psr/http-client-implementation": "1.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", - "psr/log": "^1.1 || ^2.0 || ^3.0" - }, - "suggest": { - "ext-curl": "Required for CURL handler support", - "ext-intl": "Required for Internationalized Domain Name (IDN) support", - "psr/log": "Required for using the Log middleware" + "php": ">=8.0.0" }, "type": "library", "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false + "branch-alias": { + "dev-master": "3.x-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1480,104 +1184,49 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Guzzle is a PHP HTTP client library", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "psr-18", - "psr-7", - "rest", - "web service" + "log", + "psr", + "psr-3" ], "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.0" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "funding": [ - { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", - "type": "tidelift" - } - ], - "time": "2023-05-21T14:04:53+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { - "name": "guzzlehttp/promises", - "version": "2.0.0", + "name": "react/promise", + "version": "v2.10.0", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6" + "url": "https://github.com/reactphp/promise.git", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/3a494dc7dc1d7d12e511890177ae2d0e6c107da6", - "reference": "3a494dc7dc1d7d12e511890177ae2d0e6c107da6", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=5.4.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "React\\Promise\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1586,92 +1235,71 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" }, { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" }, { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" }, { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" } ], - "description": "Guzzle promises library", + "description": "A lightweight implementation of CommonJS Promises/A for PHP", "keywords": [ - "promise" + "promise", + "promises" ], "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.0" + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.10.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", - "type": "tidelift" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2023-05-21T13:50:22+00:00" + "time": "2023-05-02T15:15:43+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "2.5.0", + "name": "seld/jsonlint", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6" + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", - "reference": "b635f279edd83fc275f822a1188157ffea568ff6", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1 || ^2.0", - "ralouphie/getallheaders": "^3.0" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" + "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, + "bin": [ + "bin/jsonlint" + ], "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "Seld\\JsonLint\\": "src/Seld/JsonLint/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1680,106 +1308,60 @@ ], "authors": [ { - "name": "Graham Campbell", - "email": "hello@gjcampbell.co.uk", - "homepage": "https://github.com/GrahamCampbell" - }, - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "George Mponos", - "email": "gmponos@gmail.com", - "homepage": "https://github.com/gmponos" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/Nyholm" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://github.com/sagikazarmark" - }, - { - "name": "Tobias Schultze", - "email": "webmaster@tubo-world.de", - "homepage": "https://github.com/Tobion" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "PSR-7 message implementation that also provides common utility methods", + "description": "JSON Linter", "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" + "json", + "linter", + "parser", + "validator" ], "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.5.0" + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, "funding": [ { - "url": "https://github.com/GrahamCampbell", - "type": "github" - }, - { - "url": "https://github.com/Nyholm", + "url": "https://github.com/Seldaek", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", "type": "tidelift" } ], - "time": "2023-04-17T16:11:26+00:00" + "time": "2023-05-11T13:16:46+00:00" }, { - "name": "justinrainbow/json-schema", - "version": "5.2.12", + "name": "seld/phar-utils", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", + "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" + "php": ">=5.3" }, - "bin": [ - "bin/validate-json" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "JsonSchema\\": "src/JsonSchema/" + "Seld\\PharUtils\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1788,2130 +1370,54 @@ ], "authors": [ { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", + "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "json", - "schema" + "phar" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2022-08-31T10:31:18+00:00" }, { - "name": "loophp/phposinfo", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/loophp/phposinfo.git", - "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/loophp/phposinfo/zipball/9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", - "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", - "shasum": "" - }, - "require": { - "php": "^8" - }, - "require-dev": { - "drupol/php-conventions": "^5.0.0", - "ext-pcov": "*", - "friends-of-phpspec/phpspec-code-coverage": "^6", - "infection/infection": "^0.26", - "infection/phpspec-adapter": "^0.2.0", - "phpspec/phpspec": "^7" - }, - "type": "library", - "autoload": { - "psr-4": { - "loophp\\phposinfo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pol Dellaiera", - "email": "pol.dellaiera@protonmail.com" - } - ], - "description": "Try to guess the host operating system.", - "keywords": [ - "operating system detection" - ], - "support": { - "issues": "https://github.com/loophp/phposinfo/issues", - "source": "https://github.com/loophp/phposinfo" - }, - "funding": [ - { - "url": "https://github.com/drupol", - "type": "github" - } - ], - "time": "2022-12-20T20:21:10+00:00" - }, - { - "name": "masterminds/html5", - "version": "2.8.0", - "source": { - "type": "git", - "url": "https://github.com/Masterminds/html5-php.git", - "reference": "3c5d5a56d56f48a1ca08a0670f0f80c1dad368f3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/3c5d5a56d56f48a1ca08a0670f0f80c1dad368f3", - "reference": "3c5d5a56d56f48a1ca08a0670f0f80c1dad368f3", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Masterminds\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Butcher", - "email": "technosophos@gmail.com" - }, - { - "name": "Matt Farina", - "email": "matt@mattfarina.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "An HTML5 parser and serializer.", - "homepage": "http://masterminds.github.io/html5-php", - "keywords": [ - "HTML5", - "dom", - "html", - "parser", - "querypath", - "serializer", - "xml" - ], - "support": { - "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.8.0" - }, - "time": "2023-04-26T07:27:39+00:00" - }, - { - "name": "pear/archive_tar", - "version": "1.4.14", - "source": { - "type": "git", - "url": "https://github.com/pear/Archive_Tar.git", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", - "shasum": "" - }, - "require": { - "pear/pear-core-minimal": "^1.10.0alpha2", - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "*" - }, - "suggest": { - "ext-bz2": "Bz2 compression support.", - "ext-xz": "Lzma2 compression support.", - "ext-zlib": "Gzip compression support." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, - "autoload": { - "psr-0": { - "Archive_Tar": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Vincent Blavet", - "email": "vincent@phpconcept.net" - }, - { - "name": "Greg Beaver", - "email": "greg@chiaraquartet.net" - }, - { - "name": "Michiel Rook", - "email": "mrook@php.net" - } - ], - "description": "Tar file management class with compression support (gzip, bzip2, lzma2)", - "homepage": "https://github.com/pear/Archive_Tar", - "keywords": [ - "archive", - "tar" - ], - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", - "source": "https://github.com/pear/Archive_Tar" - }, - "funding": [ - { - "url": "https://github.com/mrook", - "type": "github" - }, - { - "url": "https://www.patreon.com/michielrook", - "type": "patreon" - } - ], - "time": "2021-07-20T13:53:39+00:00" - }, - { - "name": "pear/console_getopt", - "version": "v1.4.3", - "source": { - "type": "git", - "url": "https://github.com/pear/Console_Getopt.git", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/Console_Getopt/zipball/a41f8d3e668987609178c7c4a9fe48fecac53fa0", - "reference": "a41f8d3e668987609178c7c4a9fe48fecac53fa0", - "shasum": "" - }, - "type": "library", - "autoload": { - "psr-0": { - "Console": "./" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "./" - ], - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Andrei Zmievski", - "email": "andrei@php.net", - "role": "Lead" - }, - { - "name": "Stig Bakken", - "email": "stig@php.net", - "role": "Developer" - }, - { - "name": "Greg Beaver", - "email": "cellog@php.net", - "role": "Helper" - } - ], - "description": "More info available on: http://pear.php.net/package/Console_Getopt", - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Console_Getopt", - "source": "https://github.com/pear/Console_Getopt" - }, - "time": "2019-11-20T18:27:48+00:00" - }, - { - "name": "pear/pear-core-minimal", - "version": "v1.10.13", - "source": { - "type": "git", - "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "aed862e95fd286c53cc546734868dc38ff4b5b1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/aed862e95fd286c53cc546734868dc38ff4b5b1d", - "reference": "aed862e95fd286c53cc546734868dc38ff4b5b1d", - "shasum": "" - }, - "require": { - "pear/console_getopt": "~1.4", - "pear/pear_exception": "~1.0" - }, - "replace": { - "rsky/pear-core-min": "self.version" - }, - "type": "library", - "autoload": { - "psr-0": { - "": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "src/" - ], - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@php.net", - "role": "Lead" - } - ], - "description": "Minimal set of PEAR core files to be used as composer dependency", - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", - "source": "https://github.com/pear/pear-core-minimal" - }, - "time": "2023-04-19T19:15:47+00:00" - }, - { - "name": "pear/pear_exception", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/pear/PEAR_Exception.git", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pear/PEAR_Exception/zipball/b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", - "reference": "b14fbe2ddb0b9f94f5b24cf08783d599f776fff0", - "shasum": "" - }, - "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "<9" - }, - "type": "class", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "PEAR/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "." - ], - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Helgi Thormar", - "email": "dufuz@php.net" - }, - { - "name": "Greg Beaver", - "email": "cellog@php.net" - } - ], - "description": "The PEAR Exception base class.", - "homepage": "https://github.com/pear/PEAR_Exception", - "keywords": [ - "exception" - ], - "support": { - "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR_Exception", - "source": "https://github.com/pear/PEAR_Exception" - }, - "time": "2021-03-21T15:43:46+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/1.0.2" - }, - "time": "2023-04-10T20:12:12+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "time": "2023-04-10T20:10:41+00:00" - }, - { - "name": "psr/http-message", - "version": "2.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" - }, - "time": "2023-04-04T09:54:51+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "react/promise", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.10.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "time": "2023-05-02T15:15:43+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2023-05-11T13:16:46+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], - "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" - }, - "time": "2022-08-31T10:31:18+00:00" - }, - { - "name": "seld/signal-handler", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "require-dev": { - "phpstan/phpstan": "^1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^7.5.20 || ^8.5.23", - "psr/log": "^1 || ^2 || ^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\Signal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", - "keywords": [ - "posix", - "sigint", - "signal", - "sigterm", - "unix" - ], - "support": { - "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" - }, - "time": "2022-07-20T18:31:45+00:00" - }, - { - "name": "symfony/console", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-28T13:37:43+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d732a66a2672669232c0b4536c8c96724a679780" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d732a66a2672669232c0b4536c8c96724a679780", - "reference": "d732a66a2672669232c0b4536c8c96724a679780", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0", - "symfony/var-exporter": "^6.2.7" - }, - "conflict": { - "ext-psr": "<1.1|>=2", - "symfony/config": "<6.1", - "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.2", - "symfony/yaml": "<5.4" - }, - "provide": { - "psr/container-implementation": "1.1|2.0", - "symfony/service-implementation": "1.1|2.0|3.0" - }, - "require-dev": { - "symfony/config": "^6.1", - "symfony/expression-language": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-21T15:42:15+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:25:55+00:00" - }, - { - "name": "symfony/error-handler", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/error-handler.git", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8b7e9f124640cb0611624a9383176c3e5f7d8cfb", - "reference": "8b7e9f124640cb0611624a9383176c3e5f7d8cfb", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" - }, - "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/patch-type-declarations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ErrorHandler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to manage errors and ease debugging PHP code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-18T13:46:08+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-20T16:06:02+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:32:47+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-18T13:46:08+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.2.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-16T09:57:23+00:00" - }, - { - "name": "symfony/http-foundation", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/49adbb92bcb4e3c2943719d2756271e8b9602acc", - "reference": "49adbb92bcb4e3c2943719d2756271e8b9602acc", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" - }, - "conflict": { - "symfony/cache": "<6.2" - }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Defines an object-oriented layer for the HTTP specification", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-18T13:46:08+00:00" - }, - { - "name": "symfony/http-kernel", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "81064a65a5496f17d2b6984f6519406f98864215" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/81064a65a5496f17d2b6984f6519406f98864215", - "reference": "81064a65a5496f17d2b6984f6519406f98864215", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a structured process for converting a Request into a Response", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-28T13:50:28+00:00" - }, - { - "name": "symfony/mime", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b6c137fc53a9f7c4c951cd3f362b3734c7a97723", - "reference": "b6c137fc53a9f7c4c951cd3f362b3734c7a97723", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.10" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-19T09:54:16+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-iconv", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "927013f3aac555983a5059aada98e1907d842695" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", - "reference": "927013f3aac555983a5059aada98e1907d842695", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-iconv": "*" - }, - "suggest": { - "ext-iconv": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Iconv extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "iconv", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "name": "seld/signal-handler", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "url": "https://github.com/Seldaek/signal-handler.git", + "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", + "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpstan/phpstan": "^1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^7.5.20 || ^8.5.23", + "psr/log": "^1 || ^2 || ^3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-main": "2.x-dev" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + "Seld\\Signal\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3920,169 +1426,78 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", + "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "posix", + "sigint", + "signal", + "sigterm", + "unix" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "issues": "https://github.com/Seldaek/signal-handler/issues", + "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2022-07-20T18:31:45+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "name": "symfony/console", + "version": "v6.2.10", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "url": "https://github.com/symfony/console.git", + "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", + "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.4|^6.0" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" }, - "require": { - "php": ">=7.1" + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { - "ext-intl": "For best performance" + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Component\\Console\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4091,26 +1506,24 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "cli", + "command-line", + "console", + "terminal" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/console/tree/v6.2.10" }, "funding": [ { @@ -4126,48 +1539,39 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-04-28T13:37:43+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "name": "symfony/deprecation-contracts", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "3.3-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + "function.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4183,17 +1587,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" }, "funding": [ { @@ -4209,42 +1606,55 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-01T10:25:55+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "name": "symfony/event-dispatcher", + "version": "v6.2.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2|^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/dependency-injection": "<5.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4252,24 +1662,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" }, "funding": [ { @@ -4285,45 +1689,43 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-20T16:06:02+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "name": "symfony/event-dispatcher-contracts", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "suggest": { + "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "3.3-dev" }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] + "Symfony\\Contracts\\EventDispatcher\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4339,16 +1741,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "description": "Generic abstractions related to dispatching event", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" }, "funding": [ { @@ -4364,44 +1768,34 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "name": "symfony/filesystem", + "version": "v6.2.10", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "url": "https://github.com/symfony/filesystem.git", + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", + "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Component\\Filesystem\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4410,28 +1804,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/filesystem/tree/v6.2.10" }, "funding": [ { @@ -4447,44 +1831,35 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-04-18T13:46:08+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "name": "symfony/finder", + "version": "v6.2.7", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "url": "https://github.com/symfony/finder.git", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", + "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "require-dev": { + "symfony/filesystem": "^6.0" }, + "type": "library", "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Component\\Finder\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4493,24 +1868,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/finder/tree/v6.2.7" }, "funding": [ { @@ -4526,33 +1895,48 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-02-16T09:57:23+00:00" }, { - "name": "symfony/process", - "version": "v6.2.10", + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Ctype\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4560,18 +1944,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony polyfill for ctype functions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -4587,53 +1977,45 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:56:57+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/psr-http-message-bridge", - "version": "v2.2.0", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/28a732c05bbad801304ad5a5c674cf2970508993", - "reference": "28a732c05bbad801304ad5a5c674cf2970508993", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/http-message": "^1.0 || ^2.0", - "symfony/http-foundation": "^5.4 || ^6.0" - }, - "require-dev": { - "nyholm/psr7": "^1.1", - "psr/log": "^1.1 || ^2 || ^3", - "symfony/browser-kit": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/framework-bundle": "^5.4 || ^6.0", - "symfony/http-kernel": "^5.4 || ^6.0", - "symfony/phpunit-bridge": "^6.2" + "php": ">=7.1" }, "suggest": { - "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" + "ext-intl": "For best performance" }, - "type": "symfony-bridge", + "type": "library", "extra": { "branch-alias": { - "dev-main": "2.2-dev" + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Bridge\\PsrHttpMessage\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4641,25 +2023,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], - "description": "PSR HTTP message bridge", - "homepage": "http://symfony.com", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-message", - "psr-17", - "psr-7" + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" ], "support": { - "issues": "https://github.com/symfony/psr-http-message-bridge/issues", - "source": "https://github.com/symfony/psr-http-message-bridge/tree/v2.2.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -4675,53 +2058,47 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:40:19+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/routing", - "version": "v6.2.8", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "69062e2823f03b82265d73a966999660f0e1e404" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/69062e2823f03b82265d73a966999660f0e1e404", - "reference": "69062e2823f03b82265d73a966999660f0e1e404", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { - "php": ">=8.1" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "php": ">=7.1" }, "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "ext-intl": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4730,24 +2107,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Maps an HTTP request to a set of configuration variables", + "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.8" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -4763,73 +2142,48 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:00:05+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/serializer", - "version": "v6.2.10", + "name": "symfony/polyfill-mbstring", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/serializer.git", - "reference": "0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d", - "reference": "0732edf0ad28dd3faacde4f1200ab9d7a4d5f40d", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "doctrine/annotations": "<1.12", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<5.4", - "symfony/property-access": "<5.4", - "symfony/property-info": "<5.4", - "symfony/uid": "<5.4", - "symfony/yaml": "<5.4" + "php": ">=7.1" }, - "require-dev": { - "doctrine/annotations": "^1.12|^2", - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/filesystem": "^5.4|^6.0", - "symfony/form": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0", - "symfony/var-exporter": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" + "provide": { + "ext-mbstring": "*" }, "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Serializer\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Polyfill\\Mbstring\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4837,18 +2191,25 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", + "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/serializer/tree/v6.2.10" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -4864,48 +2225,44 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:57:49+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/service-contracts", - "version": "v3.2.1", + "name": "symfony/polyfill-php73", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "1.27-dev" }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Contracts\\Service\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, - "exclude-from-classmap": [ - "/Test/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4922,18 +2279,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to writing services", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -4949,49 +2304,44 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/string", - "version": "v6.2.8", + "name": "symfony/polyfill-php80", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "php": ">=7.1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { "files": [ - "Resources/functions.php" + "bootstrap.php" ], "psr-4": { - "Symfony\\Component\\String\\": "" + "Symfony\\Polyfill\\Php80\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4999,6 +2349,10 @@ "MIT" ], "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -5008,18 +2362,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -5035,44 +2387,44 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v3.2.1", + "name": "symfony/polyfill-php81", + "version": "v1.27.0", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { - "php": ">=8.1" - }, - "suggest": { - "symfony/translation-implementation": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "1.27-dev" }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Contracts\\Translation\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, - "exclude-from-classmap": [ - "/Test/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5089,18 +2441,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to translation", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "compatibility", + "polyfill", + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -5116,76 +2466,29 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { - "name": "symfony/validator", + "name": "symfony/process", "version": "v6.2.10", "source": { "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "c02ea86844926f04247bc1f5db5f85bb53330823" + "url": "https://github.com/symfony/process.git", + "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/c02ea86844926f04247bc1f5db5f85bb53330823", - "reference": "c02ea86844926f04247bc1f5db5f85bb53330823", + "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1|^2|^3" - }, - "conflict": { - "doctrine/annotations": "<1.13", - "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", - "symfony/dependency-injection": "<5.4", - "symfony/expression-language": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/intl": "<5.4", - "symfony/property-info": "<5.4", - "symfony/translation": "<5.4", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.13|^2", - "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Validator\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5205,10 +2508,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to validate values", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.2.10" }, "funding": [ { @@ -5224,55 +2527,48 @@ "type": "tidelift" } ], - "time": "2023-04-19T09:54:16+00:00" + "time": "2023-04-18T13:56:57+00:00" }, { - "name": "symfony/var-dumper", - "version": "v6.2.10", + "name": "symfony/service-contracts", + "version": "v3.2.1", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41a750a23412ca76fdbbf5096943b4134272c1ab", - "reference": "41a750a23412ca76fdbbf5096943b4134272c1ab", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", + "reference": "a8c9cedf55f314f3a186041d19537303766df09a", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/polyfill-mbstring": "~1.0" + "psr/container": "^2.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" - }, - "require-dev": { - "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "ext-psr": "<1.1|>=2" }, "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "symfony/service-implementation": "" }, - "bin": [ - "Resources/bin/var-dump-server" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.3-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Contracts\\Service\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5289,14 +2585,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.10" + "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" }, "funding": [ { @@ -5312,32 +2612,46 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { - "name": "symfony/var-exporter", - "version": "v6.2.10", + "name": "symfony/string", + "version": "v6.2.8", "source": { "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "9a07920c2058bafee921ce4d90aeef2193837d63" + "url": "https://github.com/symfony/string.git", + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/9a07920c2058bafee921ce4d90aeef2193837d63", - "reference": "9a07920c2058bafee921ce4d90aeef2193837d63", + "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", + "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/var-dumper": "^5.4|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\VarExporter\\": "" + "Symfony\\Component\\String\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5357,20 +2671,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ - "clone", - "construct", - "export", - "hydrate", - "instantiate", - "lazy-loading", - "proxy", - "serialize" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.2.10" + "source": "https://github.com/symfony/string/tree/v6.2.8" }, "funding": [ { @@ -5386,7 +2698,7 @@ "type": "tidelift" } ], - "time": "2023-04-21T08:33:05+00:00" + "time": "2023-03-20T16:06:02+00:00" }, { "name": "symfony/yaml", @@ -5461,77 +2773,6 @@ } ], "time": "2023-04-28T13:25:36+00:00" - }, - { - "name": "twig/twig", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "106c170d08e8415d78be2d16c3d057d0d108262b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/106c170d08e8415d78be2d16c3d057d0d108262b", - "reference": "106c170d08e8415d78be2d16c3d057d0d108262b", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Twig\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - }, - { - "name": "Twig Team", - "role": "Contributors" - }, - { - "name": "Armin Ronacher", - "email": "armin.ronacher@active-4.com", - "role": "Project Founder" - } - ], - "description": "Twig, the flexible, fast, and secure template language for PHP", - "homepage": "https://twig.symfony.com", - "keywords": [ - "templating" - ], - "support": { - "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2023-05-03T19:06:57+00:00" } ], "packages-dev": [ From 7852629eeb0713e97d0bb6300cd79345c0f5f93c Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Wed, 16 Aug 2023 20:05:02 +0530 Subject: [PATCH 04/36] ACMS-1935: Add acquia/memcache-settings plugin. --- composer.json | 7 ++ composer.lock | 119 ++++++++++++++++++++++++- settings/cache.settings.php | 16 ++++ settings/default.includes.settings.php | 51 +++++++++++ src/Settings.php | 5 ++ 5 files changed, 197 insertions(+), 1 deletion(-) create mode 100644 settings/cache.settings.php create mode 100644 settings/default.includes.settings.php diff --git a/composer.json b/composer.json index a125e53..55584fa 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,7 @@ "php": ">=7.4", "composer-plugin-api": "^2", "acquia/drupal-environment-detector": "^1.5.3", + "acquia/memcache-settings": "^1.2", "composer/composer": "^2.5", "consolidation/config": "^1.0.0 || ^2.0.0", "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", @@ -51,6 +52,12 @@ "Acquia\\Drupal\\RecommendedSettings\\": "src/" } }, + "repositories": { + "drupal": { + "type": "composer", + "url": "https://packages.drupal.org/8" + } + }, "minimum-stability": "dev", "prefer-stable": true, "support": { diff --git a/composer.lock b/composer.lock index 39e7e2b..448faac 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "192de2dbcc0944a05d8f128e4167f943", + "content-hash": "a044de1e23580f9d174e00e31b99fd3b", "packages": [ { "name": "acquia/drupal-environment-detector", @@ -59,6 +59,47 @@ }, "time": "2023-02-28T18:45:28+00:00" }, + { + "name": "acquia/memcache-settings", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/acquia/memcache-settings.git", + "reference": "543cb19afcd9d75000dceb924b85c2ff16997003" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/acquia/memcache-settings/zipball/543cb19afcd9d75000dceb924b85c2ff16997003", + "reference": "543cb19afcd9d75000dceb924b85c2ff16997003", + "shasum": "" + }, + "require": { + "drupal/memcache": "^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Acquia Engineering", + "homepage": "https://www.acquia.com", + "role": "Maintainer" + } + ], + "description": "Recommended Memcache settings for use with Acquia hosting.", + "support": { + "issues": "https://github.com/acquia/memcache-settings/issues", + "source": "https://github.com/acquia/memcache-settings/tree/v1.2.0" + }, + "time": "2022-08-03T15:14:53+00:00" + }, { "name": "asm89/stack-cors", "version": "v2.1.1", @@ -1257,6 +1298,82 @@ }, "time": "2023-05-03T09:53:20+00:00" }, + { + "name": "drupal/memcache", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/memcache.git", + "reference": "8.x-2.5" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/memcache-8.x-2.5.zip", + "reference": "8.x-2.5", + "shasum": "a01db2a9b7122a397c4f4ad66e0a380d1148a157" + }, + "require": { + "drupal/core": "^9.1 || ^10" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "8.x-2.5", + "datestamp": "1661188440", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + }, + "branch-alias": { + "dev-8.x-2.x": "2.x-dev" + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "bdragon", + "homepage": "https://www.drupal.org/user/53081" + }, + { + "name": "catch", + "homepage": "https://www.drupal.org/user/35733" + }, + { + "name": "damiankloip", + "homepage": "https://www.drupal.org/user/1037976" + }, + { + "name": "Fabianx", + "homepage": "https://www.drupal.org/user/693738" + }, + { + "name": "japerry", + "homepage": "https://www.drupal.org/user/45640" + }, + { + "name": "Jeremy", + "homepage": "https://www.drupal.org/user/409" + }, + { + "name": "jvandyk", + "homepage": "https://www.drupal.org/user/2375" + }, + { + "name": "robertDouglass", + "homepage": "https://www.drupal.org/user/5449" + } + ], + "description": "High performance integration with memcache.", + "homepage": "http://drupal.org/project/memcache", + "support": { + "source": "https://git.drupalcode.org/project/memcache", + "issues": "https://www.drupal.org/project/issues/memcache" + } + }, { "name": "egulias/email-validator", "version": "3.2.5", diff --git a/settings/cache.settings.php b/settings/cache.settings.php new file mode 100644 index 0000000..9fb3df2 --- /dev/null +++ b/settings/cache.settings.php @@ -0,0 +1,16 @@ +getWebRootPath . "/sites/settings/default.global.settings.php"; $settings['global_settings_file'] = $this->getWebRootPath . "/sites/settings/global.settings.php"; + // Generate default.includes.settings.php. + $settings['recommended_includes_settings_file'] = $this->getSettingsPackagePath() . '/settings/default.includes.settings.php'; + $settings['default_includes_settings_file'] = $this->getWebRootPath . "/sites/settings/default.includes.settings.php"; + return $settings; } @@ -161,6 +165,7 @@ public function generateSettings(): void { $copy_map = [ $setting_files['recommended_local_settings_file'] => $setting_files['default_local_settings_file'], $setting_files['default_local_settings_file'] => $setting_files['project_local_settings_file'], + $setting_files['recommended_includes_settings_file'] => $setting_files['default_includes_settings_file'], ]; // Define an array of files that require property expansion. // phpcs:ignore From 5733b3ca3f3044d785d374fa575aacb01592d0b9 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Fri, 18 Aug 2023 16:45:48 +0530 Subject: [PATCH 05/36] ACMS-1935: Remove acquia/memcache-settings. --- composer.json | 7 --- composer.lock | 119 +------------------------------------------------- 2 files changed, 1 insertion(+), 125 deletions(-) diff --git a/composer.json b/composer.json index 55584fa..a125e53 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,6 @@ "php": ">=7.4", "composer-plugin-api": "^2", "acquia/drupal-environment-detector": "^1.5.3", - "acquia/memcache-settings": "^1.2", "composer/composer": "^2.5", "consolidation/config": "^1.0.0 || ^2.0.0", "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", @@ -52,12 +51,6 @@ "Acquia\\Drupal\\RecommendedSettings\\": "src/" } }, - "repositories": { - "drupal": { - "type": "composer", - "url": "https://packages.drupal.org/8" - } - }, "minimum-stability": "dev", "prefer-stable": true, "support": { diff --git a/composer.lock b/composer.lock index 448faac..39e7e2b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a044de1e23580f9d174e00e31b99fd3b", + "content-hash": "192de2dbcc0944a05d8f128e4167f943", "packages": [ { "name": "acquia/drupal-environment-detector", @@ -59,47 +59,6 @@ }, "time": "2023-02-28T18:45:28+00:00" }, - { - "name": "acquia/memcache-settings", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/acquia/memcache-settings.git", - "reference": "543cb19afcd9d75000dceb924b85c2ff16997003" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/acquia/memcache-settings/zipball/543cb19afcd9d75000dceb924b85c2ff16997003", - "reference": "543cb19afcd9d75000dceb924b85c2ff16997003", - "shasum": "" - }, - "require": { - "drupal/memcache": "^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0+" - ], - "authors": [ - { - "name": "Acquia Engineering", - "homepage": "https://www.acquia.com", - "role": "Maintainer" - } - ], - "description": "Recommended Memcache settings for use with Acquia hosting.", - "support": { - "issues": "https://github.com/acquia/memcache-settings/issues", - "source": "https://github.com/acquia/memcache-settings/tree/v1.2.0" - }, - "time": "2022-08-03T15:14:53+00:00" - }, { "name": "asm89/stack-cors", "version": "v2.1.1", @@ -1298,82 +1257,6 @@ }, "time": "2023-05-03T09:53:20+00:00" }, - { - "name": "drupal/memcache", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://git.drupalcode.org/project/memcache.git", - "reference": "8.x-2.5" - }, - "dist": { - "type": "zip", - "url": "https://ftp.drupal.org/files/projects/memcache-8.x-2.5.zip", - "reference": "8.x-2.5", - "shasum": "a01db2a9b7122a397c4f4ad66e0a380d1148a157" - }, - "require": { - "drupal/core": "^9.1 || ^10" - }, - "type": "drupal-module", - "extra": { - "drupal": { - "version": "8.x-2.5", - "datestamp": "1661188440", - "security-coverage": { - "status": "covered", - "message": "Covered by Drupal's security advisory policy" - } - }, - "branch-alias": { - "dev-8.x-2.x": "2.x-dev" - } - }, - "notification-url": "https://packages.drupal.org/8/downloads", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "bdragon", - "homepage": "https://www.drupal.org/user/53081" - }, - { - "name": "catch", - "homepage": "https://www.drupal.org/user/35733" - }, - { - "name": "damiankloip", - "homepage": "https://www.drupal.org/user/1037976" - }, - { - "name": "Fabianx", - "homepage": "https://www.drupal.org/user/693738" - }, - { - "name": "japerry", - "homepage": "https://www.drupal.org/user/45640" - }, - { - "name": "Jeremy", - "homepage": "https://www.drupal.org/user/409" - }, - { - "name": "jvandyk", - "homepage": "https://www.drupal.org/user/2375" - }, - { - "name": "robertDouglass", - "homepage": "https://www.drupal.org/user/5449" - } - ], - "description": "High performance integration with memcache.", - "homepage": "http://drupal.org/project/memcache", - "support": { - "source": "https://git.drupalcode.org/project/memcache", - "issues": "https://www.drupal.org/project/issues/memcache" - } - }, { "name": "egulias/email-validator", "version": "3.2.5", From 2fe2ebb0c5fa54f844b10a61df2cd080e7e81bd0 Mon Sep 17 00:00:00 2001 From: Deepak Mishra Date: Thu, 24 Aug 2023 16:18:09 +0530 Subject: [PATCH 06/36] ACMS-1933: Revisit dependencies for drupal-recommended-settings plugin. --- composer.json | 36 +++--- composer.lock | 299 +++++++++++++++++++++++--------------------------- 2 files changed, 157 insertions(+), 178 deletions(-) diff --git a/composer.json b/composer.json index 3bf05fc..8685eff 100644 --- a/composer.json +++ b/composer.json @@ -1,19 +1,23 @@ { "name": "acquia/drupal-recommended-settings", - "type": "composer-plugin", "description": "The composer plugin for adding drupal-recommended-settings for Acquia Cloud.", + "license": "GPL-2.0-only", + "type": "composer-plugin", "keywords": [ "drupal", "acquia", "drupal-recommended-settings" ], - "license": "GPL-2.0-only", "authors": [ { "name": "Vishal Khode", "email": "vishal.khode@acquia.com" } ], + "support": { + "issues": "https://github.com/acquia/drupal-recommended-settings/issues", + "docs": "https://docs.acquia.com/drupal-recommended-settings/" + }, "require": { "php": ">=7.4", "composer-plugin-api": "^2", @@ -23,18 +27,25 @@ "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "grasmash/yaml-expander": "^3", "loophp/phposinfo": "^1.7.1", - "symfony/filesystem": "^6.2", + "symfony/filesystem": "^5.4 || ^6.2", "symfony/yaml": "^4.4 || ^5 || ^6" }, - "conflict": { - "acquia/blt": "*" - }, "require-dev": { "acquia/coding-standards": "^1.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", - "ergebnis/composer-normalize": "~2.15.0", + "ergebnis/composer-normalize": "~2.21.0", "phpro/grumphp-shim": "^1.5" }, + "conflict": { + "acquia/blt": "*" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "autoload": { + "psr-4": { + "Acquia\\Drupal\\RecommendedSettings\\": "src/" + } + }, "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, @@ -44,16 +55,5 @@ }, "extra": { "class": "Acquia\\Drupal\\RecommendedSettings\\Plugin" - }, - "autoload": { - "psr-4": { - "Acquia\\Drupal\\RecommendedSettings\\": "src/" - } - }, - "minimum-stability": "dev", - "prefer-stable": true, - "support": { - "issues": "https://github.com/acquia/drupal-recommended-settings/issues", - "docs": "https://docs.acquia.com/drupal-recommended-settings/" } } diff --git a/composer.lock b/composer.lock index 223d9d6..62b3e8c 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9d2d613a3a7fda69edf97aa965a41c1f", + "content-hash": "a2d1ade6c5802da6a978d31c62c5f84a", "packages": [ { "name": "acquia/drupal-environment-detector", @@ -61,16 +61,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.3.5", + "version": "1.3.6", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd" + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/74780ccf8c19d6acb8d65c5f39cd72110e132bbd", - "reference": "74780ccf8c19d6acb8d65c5f39cd72110e132bbd", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", + "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", "shasum": "" }, "require": { @@ -117,7 +117,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.5" + "source": "https://github.com/composer/ca-bundle/tree/1.3.6" }, "funding": [ { @@ -133,26 +133,26 @@ "type": "tidelift" } ], - "time": "2023-01-11T08:27:00+00:00" + "time": "2023-06-06T12:02:59+00:00" }, { "name": "composer/class-map-generator", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513" + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/1e1cb2b791facb2dfe32932a7718cf2571187513", - "reference": "1e1cb2b791facb2dfe32932a7718cf2571187513", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", "shasum": "" }, "require": { - "composer/pcre": "^2 || ^3", + "composer/pcre": "^2.1 || ^3.1", "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6" + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" }, "require-dev": { "phpstan/phpstan": "^1.6", @@ -190,7 +190,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.0.0" + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" }, "funding": [ { @@ -206,20 +206,20 @@ "type": "tidelift" } ], - "time": "2022-06-19T11:31:27+00:00" + "time": "2023-06-30T13:58:57+00:00" }, { "name": "composer/composer", - "version": "2.5.7", + "version": "2.5.8", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "d477018d3f2ebd76dede3d3988a0b1a7add4d81e" + "reference": "4c516146167d1392c8b9b269bb7c24115d262164" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/d477018d3f2ebd76dede3d3988a0b1a7add4d81e", - "reference": "d477018d3f2ebd76dede3d3988a0b1a7add4d81e", + "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", + "reference": "4c516146167d1392c8b9b269bb7c24115d262164", "shasum": "" }, "require": { @@ -303,7 +303,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.5.7" + "source": "https://github.com/composer/composer/tree/2.5.8" }, "funding": [ { @@ -319,7 +319,7 @@ "type": "tidelift" } ], - "time": "2023-05-24T13:00:40+00:00" + "time": "2023-06-09T15:13:21+00:00" }, { "name": "composer/metadata-minifier", @@ -1447,23 +1447,23 @@ }, { "name": "symfony/console", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f" + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/12288d9f4500f84a4d02254d4aa968b15488476f", - "reference": "12288d9f4500f84a4d02254d4aa968b15488476f", + "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", + "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -1485,12 +1485,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -1523,7 +1517,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.10" + "source": "https://github.com/symfony/console/tree/v6.3.2" }, "funding": [ { @@ -1539,20 +1533,20 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:37:43+00:00" + "time": "2023-07-19T20:17:28+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -1561,7 +1555,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -1590,7 +1584,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -1606,28 +1600,29 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -1640,13 +1635,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -1673,7 +1664,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -1689,33 +1680,30 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -1752,7 +1740,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -1768,20 +1756,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "v6.2.10", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/fd588debf7d1bc16a2c84b4b3b71145d9946b894", - "reference": "fd588debf7d1bc16a2c84b4b3b71145d9946b894", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { @@ -1815,7 +1803,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.2.10" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -1831,20 +1819,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:46:08+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -1879,7 +1867,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -1895,7 +1883,7 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2470,16 +2458,16 @@ }, { "name": "symfony/process", - "version": "v6.2.10", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e" + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", - "reference": "b34cdbc9c5e75d45a3703e63a48ad07aafa8bf2e", + "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", + "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", "shasum": "" }, "require": { @@ -2511,7 +2499,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.10" + "source": "https://github.com/symfony/process/tree/v6.3.2" }, "funding": [ { @@ -2527,20 +2515,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:56:57+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -2550,13 +2538,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2596,7 +2581,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -2612,20 +2597,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.2.8", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -2636,13 +2621,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -2682,7 +2667,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -2698,24 +2683,25 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/yaml", - "version": "v6.2.10", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d" + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/61916f3861b1e9705b18cfde723921a71dd1559d", - "reference": "61916f3861b1e9705b18cfde723921a71dd1559d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -2724,9 +2710,6 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "bin": [ "Resources/bin/yaml-lint" ], @@ -2756,7 +2739,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.10" + "source": "https://github.com/symfony/yaml/tree/v6.3.3" }, "funding": [ { @@ -2772,7 +2755,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T13:25:36+00:00" + "time": "2023-07-31T07:08:24+00:00" } ], "packages-dev": [ @@ -2912,30 +2895,30 @@ }, { "name": "drupal/coder", - "version": "8.3.18", + "version": "8.3.21", "source": { "type": "git", "url": "https://github.com/pfrenssen/coder.git", - "reference": "d5911f812b69ca3bda5524899bdd06b3b4e687ff" + "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pfrenssen/coder/zipball/d5911f812b69ca3bda5524899bdd06b3b4e687ff", - "reference": "d5911f812b69ca3bda5524899bdd06b3b4e687ff", + "url": "https://api.github.com/repos/pfrenssen/coder/zipball/a0b76c6c8ea277b07d58fa75dcacf102a203ad51", + "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1 || ^1.0.0", "ext-mbstring": "*", - "php": ">=7.1", + "php": ">=7.2", "sirbrillig/phpcs-variable-analysis": "^2.11.7", - "slevomat/coding-standard": "^7.0 || ^8.0", + "slevomat/coding-standard": "^8.11", "squizlabs/php_codesniffer": "^3.7.1", "symfony/yaml": ">=3.4.0" }, "require-dev": { "phpstan/phpstan": "^1.7.12", - "phpunit/phpunit": "^7.0 || ^8.0" + "phpunit/phpunit": "^8.0" }, "type": "phpcodesniffer-standard", "autoload": { @@ -2959,45 +2942,39 @@ "issues": "https://www.drupal.org/project/issues/coder", "source": "https://www.drupal.org/project/coder" }, - "time": "2023-04-18T12:07:59+00:00" + "time": "2023-07-17T15:36:49+00:00" }, { "name": "ergebnis/composer-normalize", - "version": "2.15.0", + "version": "2.21.0", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "d469a15b916441959446d52a0f5d3fc9f7720317" + "reference": "8b43ce459cb1d1668e629522ce1b837f4c580594" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/d469a15b916441959446d52a0f5d3fc9f7720317", - "reference": "d469a15b916441959446d52a0f5d3fc9f7720317", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/8b43ce459cb1d1668e629522ce1b837f4c580594", + "reference": "8b43ce459cb1d1668e629522ce1b837f4c580594", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1.0 || ^2.0.0", + "composer-plugin-api": "^2.0.0", "ergebnis/json-normalizer": "^1.0.3", "ergebnis/json-printer": "^3.1.1", - "justinrainbow/json-schema": "^5.2.10", + "justinrainbow/json-schema": "^5.2.11", "localheinz/diff": "^1.1.1", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "composer/composer": "^1.10.22 || ^2.0.13", + "composer/composer": "^2.2.1", "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^2.14.0", - "ergebnis/phpstan-rules": "~0.15.3", - "ergebnis/test-util": "^1.5.0", - "phpstan/extension-installer": "^1.1.0", - "phpstan/phpstan": "~0.12.89", - "phpstan/phpstan-deprecation-rules": "~0.12.6", - "phpstan/phpstan-phpunit": "~0.12.19", - "phpstan/phpstan-strict-rules": "~0.12.9", - "phpunit/phpunit": "^8.5.16", - "psalm/plugin-phpunit": "~0.16.0", - "symfony/filesystem": "^5.3.0", - "vimeo/psalm": "^4.7.3" + "ergebnis/php-cs-fixer-config": "^3.4.0", + "fakerphp/faker": "^1.17.0", + "phpunit/phpunit": "^9.5.11", + "psalm/plugin-phpunit": "~0.16.1", + "symfony/filesystem": "^5.4.0", + "vimeo/psalm": "^4.16.1" }, "type": "composer-plugin", "extra": { @@ -3040,7 +3017,7 @@ "type": "github" } ], - "time": "2021-06-15T08:06:45+00:00" + "time": "2021-12-28T11:22:34+00:00" }, { "name": "ergebnis/json-normalizer", @@ -3352,22 +3329,24 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.20.4", + "version": "1.23.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", @@ -3391,22 +3370,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.20.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, - "time": "2023-05-02T09:19:37+00:00" + "time": "2023-08-03T16:32:59+00:00" }, { "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.16", + "version": "v2.11.17", "source": { "type": "git", "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88" + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/dc5582dc5a93a235557af73e523c389aac9a8e88", - "reference": "dc5582dc5a93a235557af73e523c389aac9a8e88", + "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/3b71162a6bf0cde2bff1752e40a1788d8273d049", + "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049", "shasum": "" }, "require": { @@ -3451,36 +3430,36 @@ "source": "https://github.com/sirbrillig/phpcs-variable-analysis", "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" }, - "time": "2023-03-31T16:46:32+00:00" + "time": "2023-08-05T23:46:11+00:00" }, { "name": "slevomat/coding-standard", - "version": "8.12.1", + "version": "8.13.4", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7" + "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7", - "reference": "f69e2524e8770efb9b3e5ac4a0ebc0d54eb446d7", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/4b2af2fb17773656d02fbfb5d18024ebd19fe322", + "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": ">=1.20.0 <1.21.0", + "phpstan/phpdoc-parser": "^1.23.0", "squizlabs/php_codesniffer": "^3.7.1" }, "require-dev": { "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.15", + "phpstan/phpstan": "1.10.26", "phpstan/phpstan-deprecation-rules": "1.1.3", - "phpstan/phpstan-phpunit": "1.3.11", + "phpstan/phpstan-phpunit": "1.3.13", "phpstan/phpstan-strict-rules": "1.5.1", - "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.1.3" + "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.6" }, "type": "phpcodesniffer-standard", "extra": { @@ -3504,7 +3483,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.12.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.13.4" }, "funding": [ { @@ -3516,7 +3495,7 @@ "type": "tidelift" } ], - "time": "2023-05-15T21:42:25+00:00" + "time": "2023-07-25T10:28:55+00:00" }, { "name": "squizlabs/php_codesniffer", From d617c2119ddde51af3bc9f86d83a7aac7495e95c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CChandan?= Date: Tue, 29 Aug 2023 14:36:41 +0530 Subject: [PATCH 07/36] ACMS-1933: Remove lock file. --- .gitignore | 1 + composer.json | 2 +- composer.lock | 3569 ------------------------------------------------- 3 files changed, 2 insertions(+), 3570 deletions(-) delete mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index f1927c0..945bc15 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ vendor .idea/ +composer.lock \ No newline at end of file diff --git a/composer.json b/composer.json index 8685eff..bde84e5 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "grasmash/yaml-expander": "^3", "loophp/phposinfo": "^1.7.1", - "symfony/filesystem": "^5.4 || ^6.2", + "symfony/filesystem": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^4.4 || ^5 || ^6" }, "require-dev": { diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 62b3e8c..0000000 --- a/composer.lock +++ /dev/null @@ -1,3569 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "a2d1ade6c5802da6a978d31c62c5f84a", - "packages": [ - { - "name": "acquia/drupal-environment-detector", - "version": "1.6.0", - "source": { - "type": "git", - "url": "https://github.com/acquia/drupal-environment-detector.git", - "reference": "396cc5ed5d7f9d40a8afbdc1800a189c15924450" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/acquia/drupal-environment-detector/zipball/396cc5ed5d7f9d40a8afbdc1800a189c15924450", - "reference": "396cc5ed5d7f9d40a8afbdc1800a189c15924450", - "shasum": "" - }, - "conflict": { - "acquia/blt": ">=12.0.0 <13.5.2" - }, - "require-dev": { - "acquia/coding-standards": "^1.0.0", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "phpunit/phpunit": "^9.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - }, - "phpcodesniffer-search-depth": "4" - }, - "autoload": { - "psr-4": { - "Acquia\\DrupalEnvironmentDetector\\": "src/", - "Acquia\\DrupalEnvironmentDetector\\Tests\\": "tests/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "authors": [ - { - "name": "Acquia Engineering", - "homepage": "https://www.acquia.com", - "role": "Maintainer" - } - ], - "description": "Provides common methods for detecting the current Acquia environment", - "support": { - "issues": "https://github.com/acquia/drupal-environment-detector/issues", - "source": "https://github.com/acquia/drupal-environment-detector/tree/1.6.0" - }, - "time": "2023-02-28T18:45:28+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.3.6", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/90d087e988ff194065333d16bc5cf649872d9cdb", - "reference": "90d087e988ff194065333d16bc5cf649872d9cdb", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.6" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2023-06-06T12:02:59+00:00" - }, - { - "name": "composer/class-map-generator", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/class-map-generator.git", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", - "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", - "shasum": "" - }, - "require": { - "composer/pcre": "^2.1 || ^3.1", - "php": "^7.2 || ^8.0", - "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" - }, - "require-dev": { - "phpstan/phpstan": "^1.6", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/filesystem": "^5.4 || ^6", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\ClassMapGenerator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Utilities to scan PHP code and generate class maps.", - "keywords": [ - "classmap" - ], - "support": { - "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2023-06-30T13:58:57+00:00" - }, - { - "name": "composer/composer", - "version": "2.5.8", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/4c516146167d1392c8b9b269bb7c24115d262164", - "reference": "4c516146167d1392c8b9b269bb7c24115d262164", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/class-map-generator": "^1.0", - "composer/metadata-minifier": "^1.0", - "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.0", - "composer/spdx-licenses": "^1.5.7", - "composer/xdebug-handler": "^2.0.2 || ^3.0.3", - "justinrainbow/json-schema": "^5.2.11", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.2", - "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/polyfill-php73": "^1.24", - "symfony/polyfill-php80": "^1.24", - "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.9.3", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1", - "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "phpstan": { - "includes": [ - "phpstan/rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "https://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.5.8" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2023-06-09T15:13:21+00:00" - }, - { - "name": "composer/metadata-minifier", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/metadata-minifier.git", - "reference": "c549d23829536f0d0e984aaabbf02af91f443207" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", - "reference": "c549d23829536f0d0e984aaabbf02af91f443207", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "composer/composer": "^2", - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\MetadataMinifier\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Small utility library that handles metadata minification and expansion.", - "keywords": [ - "composer", - "compression" - ], - "support": { - "issues": "https://github.com/composer/metadata-minifier/issues", - "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2021-04-07T13:37:33+00:00" - }, - { - "name": "composer/pcre", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-11-17T09:50:14+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.7", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "c848241796da2abf65837d51dce1fae55a960149" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/c848241796da2abf65837d51dce1fae55a960149", - "reference": "c848241796da2abf65837d51dce1fae55a960149", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.7" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-05-23T07:37:50+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "consolidation/config", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/consolidation/config.git", - "reference": "597f8d7fbeef801736250ec10c3e190569b1b0ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/consolidation/config/zipball/597f8d7fbeef801736250ec10c3e190569b1b0ae", - "reference": "597f8d7fbeef801736250ec10c3e190569b1b0ae", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", - "grasmash/expander": "^2.0.1 || ^3", - "php": ">=7.1.3", - "symfony/event-dispatcher": "^4 || ^5 || ^6" - }, - "require-dev": { - "ext-json": "*", - "phpunit/phpunit": ">=7.5.20", - "squizlabs/php_codesniffer": "^3", - "symfony/console": "^4 || ^5 || ^6", - "symfony/yaml": "^4 || ^5 || ^6", - "yoast/phpunit-polyfills": "^1" - }, - "suggest": { - "symfony/event-dispatcher": "Required to inject configuration into Command options", - "symfony/yaml": "Required to use Consolidation\\Config\\Loader\\YamlConfigLoader" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Consolidation\\Config\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Anderson", - "email": "greg.1.anderson@greenknowe.org" - } - ], - "description": "Provide configuration services for a commandline tool.", - "support": { - "issues": "https://github.com/consolidation/config/issues", - "source": "https://github.com/consolidation/config/tree/2.1.2" - }, - "time": "2022-10-06T17:48:03+00:00" - }, - { - "name": "dflydev/dot-access-data", - "version": "v3.0.2", - "source": { - "type": "git", - "url": "https://github.com/dflydev/dflydev-dot-access-data.git", - "reference": "f41715465d65213d644d3141a6a93081be5d3549" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", - "reference": "f41715465d65213d644d3141a6a93081be5d3549", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", - "scrutinizer/ocular": "1.6.0", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Dflydev\\DotAccessData\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Dragonfly Development Inc.", - "email": "info@dflydev.com", - "homepage": "http://dflydev.com" - }, - { - "name": "Beau Simensen", - "email": "beau@dflydev.com", - "homepage": "http://beausimensen.com" - }, - { - "name": "Carlos Frutos", - "email": "carlos@kiwing.it", - "homepage": "https://github.com/cfrutos" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Given a deep data structure, access data by dot notation.", - "homepage": "https://github.com/dflydev/dflydev-dot-access-data", - "keywords": [ - "access", - "data", - "dot", - "notation" - ], - "support": { - "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", - "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" - }, - "time": "2022-10-27T11:44:00+00:00" - }, - { - "name": "grasmash/expander", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/grasmash/expander.git", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/grasmash/expander/zipball/bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", - "reference": "bb1c1a2430957945cf08c5a62f5d72a6aa6a2c82", - "shasum": "" - }, - "require": { - "dflydev/dot-access-data": "^3.0.0", - "php": ">=8.0", - "psr/log": "^2 | ^3" - }, - "require-dev": { - "greg-1-anderson/composer-test-scenarios": "^1", - "php-coveralls/php-coveralls": "^2.5", - "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Grasmash\\Expander\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Grasmick" - } - ], - "description": "Expands internal property references in PHP arrays file.", - "support": { - "issues": "https://github.com/grasmash/expander/issues", - "source": "https://github.com/grasmash/expander/tree/3.0.0" - }, - "time": "2022-05-10T13:14:49+00:00" - }, - { - "name": "grasmash/yaml-expander", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/grasmash/yaml-expander.git", - "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/grasmash/yaml-expander/zipball/f6dd6be2a899316528e201c91fc317b16794b1c0", - "reference": "f6dd6be2a899316528e201c91fc317b16794b1c0", - "shasum": "" - }, - "require": { - "grasmash/expander": "^1 || ^2 || ^3", - "symfony/yaml": "^4 || ^5 || ^6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^8.0 || ^9", - "squizlabs/php_codesniffer": "^2.7 || ^3.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Grasmash\\YamlExpander\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Grasmick" - } - ], - "description": "Expands internal property references in a yaml file.", - "support": { - "issues": "https://github.com/grasmash/yaml-expander/issues", - "source": "https://github.com/grasmash/yaml-expander/tree/3.0.2" - }, - "time": "2022-05-10T13:29:17+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.12", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" - }, - "time": "2022-04-13T08:02:27+00:00" - }, - { - "name": "loophp/phposinfo", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/loophp/phposinfo.git", - "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/loophp/phposinfo/zipball/9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", - "reference": "9faccbfbf5364fd34fbc230961fa6fc51cc66b8f", - "shasum": "" - }, - "require": { - "php": "^8" - }, - "require-dev": { - "drupol/php-conventions": "^5.0.0", - "ext-pcov": "*", - "friends-of-phpspec/phpspec-code-coverage": "^6", - "infection/infection": "^0.26", - "infection/phpspec-adapter": "^0.2.0", - "phpspec/phpspec": "^7" - }, - "type": "library", - "autoload": { - "psr-4": { - "loophp\\phposinfo\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Pol Dellaiera", - "email": "pol.dellaiera@protonmail.com" - } - ], - "description": "Try to guess the host operating system.", - "keywords": [ - "operating system detection" - ], - "support": { - "issues": "https://github.com/loophp/phposinfo/issues", - "source": "https://github.com/loophp/phposinfo" - }, - "funding": [ - { - "url": "https://github.com/drupol", - "type": "github" - } - ], - "time": "2022-12-20T20:21:10+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "react/promise", - "version": "v2.10.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.10.0" - }, - "funding": [ - { - "url": "https://opencollective.com/reactphp", - "type": "open_collective" - } - ], - "time": "2023-05-02T15:15:43+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", - "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2023-05-11T13:16:46+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], - "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1" - }, - "time": "2022-08-31T10:31:18+00:00" - }, - { - "name": "seld/signal-handler", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/signal-handler.git", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/f69d119511dc0360440cdbdaa71829c149b7be75", - "reference": "f69d119511dc0360440cdbdaa71829c149b7be75", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "require-dev": { - "phpstan/phpstan": "^1", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^7.5.20 || ^8.5.23", - "psr/log": "^1 || ^2 || ^3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\Signal\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development", - "keywords": [ - "posix", - "sigint", - "signal", - "sigterm", - "unix" - ], - "support": { - "issues": "https://github.com/Seldaek/signal-handler/issues", - "source": "https://github.com/Seldaek/signal-handler/tree/2.0.1" - }, - "time": "2022-07-20T18:31:45+00:00" - }, - { - "name": "symfony/console", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "reference": "aa5d64ad3f63f2e48964fc81ee45cb318a723898", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-19T20:17:28+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-06T06:56:43+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v6.3.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.3.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-06-01T08:30:39+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T08:31:44+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/process", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "reference": "c5ce962db0d9b6e80247ca5eb9af6472bd4d7b5d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-12T16:00:22+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-05-23T14:45:45+00:00" - }, - { - "name": "symfony/string", - "version": "v6.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "53d1a83225002635bca3482fcbf963001313fb68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", - "reference": "53d1a83225002635bca3482fcbf963001313fb68", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.5" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.3.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-05T08:41:27+00:00" - }, - { - "name": "symfony/yaml", - "version": "v6.3.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-31T07:08:24+00:00" - } - ], - "packages-dev": [ - { - "name": "acquia/coding-standards", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/acquia/coding-standards-php.git", - "reference": "92f87ecabcd0e54ff347fb86a041540e0bbc18e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/acquia/coding-standards-php/zipball/92f87ecabcd0e54ff347fb86a041540e0bbc18e5", - "reference": "92f87ecabcd0e54ff347fb86a041540e0bbc18e5", - "shasum": "" - }, - "require": { - "drupal/coder": "^8.3", - "phpcompatibility/php-compatibility": "^9.3", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.7" - }, - "suggest": { - "brainmaestro/composer-git-hooks": "Easily manage Git hooks in your composer config.", - "dealerdirect/phpcodesniffer-composer-installer": "Automatically install PHP_CodeSniffer coding standards (rulesets)." - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-develop": "0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Acquia\\CodingStandards\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-only" - ], - "authors": [ - { - "name": "Acquia Engineering", - "homepage": "https://www.acquia.com", - "role": "Maintainer" - } - ], - "description": "PHP_CodeSniffer rules (sniffs) for Acquia coding standards", - "keywords": [ - "drupal", - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/acquia/coding-standards/issues", - "source": "https://github.com/acquia/coding-standards" - }, - "time": "2023-03-03T22:51:37+00:00" - }, - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "drupal/coder", - "version": "8.3.21", - "source": { - "type": "git", - "url": "https://github.com/pfrenssen/coder.git", - "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pfrenssen/coder/zipball/a0b76c6c8ea277b07d58fa75dcacf102a203ad51", - "reference": "a0b76c6c8ea277b07d58fa75dcacf102a203ad51", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1 || ^1.0.0", - "ext-mbstring": "*", - "php": ">=7.2", - "sirbrillig/phpcs-variable-analysis": "^2.11.7", - "slevomat/coding-standard": "^8.11", - "squizlabs/php_codesniffer": "^3.7.1", - "symfony/yaml": ">=3.4.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.7.12", - "phpunit/phpunit": "^8.0" - }, - "type": "phpcodesniffer-standard", - "autoload": { - "psr-4": { - "Drupal\\": "coder_sniffer/Drupal/", - "DrupalPractice\\": "coder_sniffer/DrupalPractice/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-2.0-or-later" - ], - "description": "Coder is a library to review Drupal code.", - "homepage": "https://www.drupal.org/project/coder", - "keywords": [ - "code review", - "phpcs", - "standards" - ], - "support": { - "issues": "https://www.drupal.org/project/issues/coder", - "source": "https://www.drupal.org/project/coder" - }, - "time": "2023-07-17T15:36:49+00:00" - }, - { - "name": "ergebnis/composer-normalize", - "version": "2.21.0", - "source": { - "type": "git", - "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "8b43ce459cb1d1668e629522ce1b837f4c580594" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/8b43ce459cb1d1668e629522ce1b837f4c580594", - "reference": "8b43ce459cb1d1668e629522ce1b837f4c580594", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0.0", - "ergebnis/json-normalizer": "^1.0.3", - "ergebnis/json-printer": "^3.1.1", - "justinrainbow/json-schema": "^5.2.11", - "localheinz/diff": "^1.1.1", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "composer/composer": "^2.2.1", - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "symfony/filesystem": "^5.4.0", - "vimeo/psalm": "^4.16.1" - }, - "type": "composer-plugin", - "extra": { - "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin", - "composer-normalize": { - "indent-size": 2, - "indent-style": "space" - } - }, - "autoload": { - "psr-4": { - "Ergebnis\\Composer\\Normalize\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "Provides a composer plugin for normalizing composer.json.", - "homepage": "https://github.com/ergebnis/composer-normalize", - "keywords": [ - "composer", - "normalize", - "normalizer", - "plugin" - ], - "support": { - "issues": "https://github.com/ergebnis/composer-normalize/issues", - "source": "https://github.com/ergebnis/composer-normalize" - }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-12-28T11:22:34+00:00" - }, - { - "name": "ergebnis/json-normalizer", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "4a7f064ce34d5a2e382564565cdd433dbc5b9494" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/4a7f064ce34d5a2e382564565cdd433dbc5b9494", - "reference": "4a7f064ce34d5a2e382564565cdd433dbc5b9494", - "shasum": "" - }, - "require": { - "ergebnis/json-printer": "^3.1.1", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2.10", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^2.10.0", - "ergebnis/phpstan-rules": "~0.15.3", - "ergebnis/test-util": "^1.4.0", - "infection/infection": "~0.15.3", - "jangregor/phpstan-prophecy": "~0.8.1", - "phpstan/extension-installer": "^1.1.0", - "phpstan/phpstan": "~0.12.80", - "phpstan/phpstan-deprecation-rules": "~0.12.6", - "phpstan/phpstan-phpunit": "~0.12.17", - "phpstan/phpstan-strict-rules": "~0.12.9", - "phpunit/phpunit": "^8.5.14", - "psalm/plugin-phpunit": "~0.12.2", - "vimeo/psalm": "^3.18" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ergebnis\\Json\\Normalizer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.", - "homepage": "https://github.com/ergebnis/json-normalizer", - "keywords": [ - "json", - "normalizer" - ], - "support": { - "issues": "https://github.com/ergebnis/json-normalizer/issues", - "source": "https://github.com/ergebnis/json-normalizer" - }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-03-06T13:33:57+00:00" - }, - { - "name": "ergebnis/json-printer", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/ergebnis/json-printer.git", - "reference": "18920367473b099633f644f0ca6dc8794345148f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/18920367473b099633f644f0ca6dc8794345148f", - "reference": "18920367473b099633f644f0ca6dc8794345148f", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-mbstring": "*", - "php": "^8.0" - }, - "require-dev": { - "ergebnis/license": "^2.0.0", - "ergebnis/php-cs-fixer-config": "^4.11.0", - "fakerphp/faker": "^1.20.0", - "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "~0.18.3", - "vimeo/psalm": "^4.30.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Ergebnis\\Json\\Printer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "Provides a JSON printer, allowing for flexible indentation.", - "homepage": "https://github.com/ergebnis/json-printer", - "keywords": [ - "formatter", - "json", - "printer" - ], - "support": { - "issues": "https://github.com/ergebnis/json-printer/issues", - "source": "https://github.com/ergebnis/json-printer" - }, - "time": "2022-11-28T10:27:43+00:00" - }, - { - "name": "localheinz/diff", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/localheinz/diff.git", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/localheinz/diff/zipball/851bb20ea8358c86f677f5f111c4ab031b1c764c", - "reference": "851bb20ea8358c86f677f5f111c4ab031b1c764c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Fork of sebastian/diff for use with ergebnis/composer-normalize", - "homepage": "https://github.com/localheinz/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "source": "https://github.com/localheinz/diff/tree/main" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-07-06T04:49:32+00:00" - }, - { - "name": "phpcompatibility/php-compatibility", - "version": "9.3.5", - "source": { - "type": "git", - "url": "https://github.com/PHPCompatibility/PHPCompatibility.git", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCompatibility/PHPCompatibility/zipball/9fb324479acf6f39452e0655d2429cc0d3914243", - "reference": "9fb324479acf6f39452e0655d2429cc0d3914243", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.3 || ^3.0.2" - }, - "conflict": { - "squizlabs/php_codesniffer": "2.6.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.5 || ^5.0 || ^6.0 || ^7.0" - }, - "suggest": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.5 || This Composer plugin will sort out the PHPCS 'installed_paths' automatically.", - "roave/security-advisories": "dev-master || Helps prevent installing dependencies with known security issues." - }, - "type": "phpcodesniffer-standard", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Wim Godden", - "homepage": "https://github.com/wimg", - "role": "lead" - }, - { - "name": "Juliette Reinders Folmer", - "homepage": "https://github.com/jrfnl", - "role": "lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCompatibility/PHPCompatibility/graphs/contributors" - } - ], - "description": "A set of sniffs for PHP_CodeSniffer that checks for PHP cross-version compatibility.", - "homepage": "http://techblog.wimgodden.be/tag/codesniffer/", - "keywords": [ - "compatibility", - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/PHPCompatibility/PHPCompatibility/issues", - "source": "https://github.com/PHPCompatibility/PHPCompatibility" - }, - "time": "2019-12-27T09:44:58+00:00" - }, - { - "name": "phpro/grumphp-shim", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/phpro/grumphp-shim.git", - "reference": "98f7d27631785b48270af88e33abcc591ae022fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpro/grumphp-shim/zipball/98f7d27631785b48270af88e33abcc591ae022fc", - "reference": "98f7d27631785b48270af88e33abcc591ae022fc", - "shasum": "" - }, - "require": { - "composer-plugin-api": "~2.0", - "ext-json": "*", - "php": "^8.0" - }, - "replace": { - "phpro/grumphp": "self.version" - }, - "require-dev": { - "humbug/box": "^3.16" - }, - "bin": [ - "grumphp", - "grumphp.phar" - ], - "type": "composer-plugin", - "extra": { - "class": "GrumPHP\\Composer\\GrumPHPPlugin" - }, - "autoload": { - "psr-4": { - "GrumPHP\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Toon Verwerft", - "email": "toon.verwerft@phpro.be" - }, - { - "name": "Community", - "homepage": "https://github.com/phpro/grumphp/graphs/contributors" - } - ], - "description": "GrumPHP Phar distribution", - "support": { - "issues": "https://github.com/phpro/grumphp-shim/issues", - "source": "https://github.com/phpro/grumphp-shim/tree/v1.16.0" - }, - "time": "2023-04-27T11:06:59+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.23.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" - }, - "time": "2023-08-03T16:32:59+00:00" - }, - { - "name": "sirbrillig/phpcs-variable-analysis", - "version": "v2.11.17", - "source": { - "type": "git", - "url": "https://github.com/sirbrillig/phpcs-variable-analysis.git", - "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sirbrillig/phpcs-variable-analysis/zipball/3b71162a6bf0cde2bff1752e40a1788d8273d049", - "reference": "3b71162a6bf0cde2bff1752e40a1788d8273d049", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "squizlabs/php_codesniffer": "^3.5.6" - }, - "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", - "phpcsstandards/phpcsdevcs": "^1.1", - "phpstan/phpstan": "^1.7", - "phpunit/phpunit": "^4.8.36 || ^5.7.21 || ^6.5 || ^7.0 || ^8.0 || ^9.0", - "sirbrillig/phpcs-import-detection": "^1.1", - "vimeo/psalm": "^0.2 || ^0.3 || ^1.1 || ^4.24 || ^5.0@beta" - }, - "type": "phpcodesniffer-standard", - "autoload": { - "psr-4": { - "VariableAnalysis\\": "VariableAnalysis/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Sam Graham", - "email": "php-codesniffer-variableanalysis@illusori.co.uk" - }, - { - "name": "Payton Swick", - "email": "payton@foolord.com" - } - ], - "description": "A PHPCS sniff to detect problems with variables.", - "keywords": [ - "phpcs", - "static analysis" - ], - "support": { - "issues": "https://github.com/sirbrillig/phpcs-variable-analysis/issues", - "source": "https://github.com/sirbrillig/phpcs-variable-analysis", - "wiki": "https://github.com/sirbrillig/phpcs-variable-analysis/wiki" - }, - "time": "2023-08-05T23:46:11+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "8.13.4", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/4b2af2fb17773656d02fbfb5d18024ebd19fe322", - "reference": "4b2af2fb17773656d02fbfb5d18024ebd19fe322", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.23.0", - "squizlabs/php_codesniffer": "^3.7.1" - }, - "require-dev": { - "phing/phing": "2.17.4", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.26", - "phpstan/phpstan-deprecation-rules": "1.1.3", - "phpstan/phpstan-phpunit": "1.3.13", - "phpstan/phpstan-strict-rules": "1.5.1", - "phpunit/phpunit": "7.5.20|8.5.21|9.6.8|10.2.6" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "8.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "keywords": [ - "dev", - "phpcs" - ], - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.13.4" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2023-07-25T10:28:55+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.7.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2023-02-22T23:07:41+00:00" - } - ], - "aliases": [], - "minimum-stability": "dev", - "stability-flags": [], - "prefer-stable": true, - "prefer-lowest": false, - "platform": { - "php": ">=7.4", - "composer-plugin-api": "^2" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} From 8334eac3315942d19d4603cf9f6ba99bdad418d9 Mon Sep 17 00:00:00 2001 From: Deepak Mishra Date: Wed, 30 Aug 2023 10:22:33 +0530 Subject: [PATCH 08/36] ACMS-1933: downgrade require dependency to work for PHP7.4. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index bde84e5..12898f6 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,7 @@ "php": ">=7.4", "composer-plugin-api": "^2", "acquia/drupal-environment-detector": "^1.5.3", - "composer/composer": "^2.5", + "composer/composer": "^2.2", "consolidation/config": "^1.0.0 || ^2.0.0", "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "grasmash/yaml-expander": "^3", From 2ed9479a806de3d8e7c13aaf005f91d291aefb18 Mon Sep 17 00:00:00 2001 From: Deepak Mishra Date: Wed, 30 Aug 2023 11:29:34 +0530 Subject: [PATCH 09/36] ACMS-1933: checking if we can drop 4.4 support. --- .gitignore | 2 +- composer.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 945bc15..75b2b4e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,3 @@ vendor .idea/ -composer.lock \ No newline at end of file +composer.lock diff --git a/composer.json b/composer.json index 12898f6..12e1e94 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "grasmash/yaml-expander": "^3", "loophp/phposinfo": "^1.7.1", - "symfony/filesystem": "^4.4 || ^5.4 || ^6.2", + "symfony/filesystem": "^5.4 || ^6.2", "symfony/yaml": "^4.4 || ^5 || ^6" }, "require-dev": { From 122f0f63cfc2e3ffa17a262e1f4f9c0e5912860f Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Tue, 14 Nov 2023 18:08:13 +0530 Subject: [PATCH 10/36] ACMS-3281: Add CI. --- .github/dependabot.yml | 12 ++++++ .github/workflows/drs_ci.yml | 71 ++++++++++++++++++++++++++++++++++++ tests/packages_alter.yml | 2 + 3 files changed, 85 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/drs_ci.yml create mode 100644 tests/packages_alter.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..7f7c45d --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: "composer" + directory: "/" + schedule: + interval: "daily" + # Use Indian Standard Time (UTC +05:30) + timezone: "Asia/Kolkata" + time: "09:00" + # Raise pull requests for version updates + # to pip against the `develop` branch + target-branch: "develop" diff --git a/.github/workflows/drs_ci.yml b/.github/workflows/drs_ci.yml new file mode 100644 index 0000000..2282ac8 --- /dev/null +++ b/.github/workflows/drs_ci.yml @@ -0,0 +1,71 @@ +name: drupal-recommended-settings CI +on: + # schedule: + # "At minute 0 past hour 4 and 8 UTC." + # - cron: '0 4,8 * * *' + push: + branches: [ develop, main, ACMS* ] + paths-ignore: + - README.md + pull_request: + branches: [ develop ] + paths-ignore: + - README.md +env: + ORCA_SUT_NAME: acquia/drupal-recommended-settings + ORCA_SUT_BRANCH: develop + ORCA_VERSION: ^4 + ORCA_PACKAGES_CONFIG_ALTER: ../drupal-recommended-settings/tests/packages_alter.yml + ORCA_ENABLE_NIGHTWATCH: "FALSE" + ORCA_PHPCS_STANDARD: AcquiaPHP + COMPOSER_PROCESS_TIMEOUT: 1800 +jobs: + STATIC_CODE_ANALYSIS: + name: "Static Code Analysis" + runs-on: ubuntu-latest + env: + ORCA_JOB: STATIC_CODE_ANALYSIS + steps: + - uses: actions/checkout@v3 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + coverage: xdebug + - name: Download ORCA + run: composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n + - name: Before Install + run: ../orca/bin/ci/before_install.sh + - name: Install + run: ../orca/bin/ci/install.sh + - name: Before script + run: ../orca/bin/ci/before_script.sh + - name: Script + run: ../orca/bin/ci/script.sh + - name: After script + run: | + ../orca/bin/ci/after_success.sh + ../orca/bin/ci/after_failure.sh + ../orca/bin/ci/after_script.sh + PHPUNIT_TESTS: + name: "Execute PHPUnit tests" + runs-on: ubuntu-latest + env: + ORCA_FIXTURE_DIR: "/home/runner/work/drupal-recommended-settings/orca-build" + CI: TRUE + steps: + - uses: actions/checkout@v3 + - uses: shivammathur/setup-php@v2 + with: + php-version: 8.2 + coverage: xdebug + - name: Download ORCA + run: composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n + - name: Before script + run: ../orca/bin/ci/before_script.sh + - name: Script + run: ../orca/bin/ci/script.sh + - name: After script + run: | + ../orca/bin/ci/after_success.sh + ../orca/bin/ci/after_failure.sh + ../orca/bin/ci/after_script.sh diff --git a/tests/packages_alter.yml b/tests/packages_alter.yml new file mode 100644 index 0000000..c7ec771 --- /dev/null +++ b/tests/packages_alter.yml @@ -0,0 +1,2 @@ +acquia/drupal-recommended-settings: + type: composer-plugin From a61b96324a5d02bf035f998ca82658020f663310 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Nov 2023 09:03:37 +0000 Subject: [PATCH 11/36] Update acquia/coding-standards requirement from ^1.0 to ^2.0 Updates the requirements on [acquia/coding-standards](https://github.com/acquia/coding-standards-php) to permit the latest version. - [Release notes](https://github.com/acquia/coding-standards-php/releases) - [Commits](https://github.com/acquia/coding-standards-php/compare/v1.0.0...v2.0.0) --- updated-dependencies: - dependency-name: acquia/coding-standards dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 12e1e94..fa5bffb 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "symfony/yaml": "^4.4 || ^5 || ^6" }, "require-dev": { - "acquia/coding-standards": "^1.0", + "acquia/coding-standards": "^2.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", "ergebnis/composer-normalize": "~2.21.0", "phpro/grumphp-shim": "^1.5" From 1d2458e0a031e0bb6da53b59b57ef069d30ce891 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Thu, 2 Nov 2023 01:58:04 +0530 Subject: [PATCH 12/36] ACMS-000: Refactor code. --- composer.json | 1 - .../{ => global}/default.global.settings.php | 0 .../{ => site}/default.includes.settings.php | 0 .../{ => site}/default.local.settings.php | 0 src/Config/ConfigInitializer.php | 109 +++----- src/Config/SettingsConfig.php | 4 +- src/Helpers/Filesystem.php | 177 +++++++++++++ src/Helpers/HashGenerator.php | 38 +++ src/Plugin.php | 23 +- src/Settings.php | 235 +++++------------- 10 files changed, 333 insertions(+), 254 deletions(-) rename settings/{ => global}/default.global.settings.php (100%) rename settings/{ => site}/default.includes.settings.php (100%) rename settings/{ => site}/default.local.settings.php (100%) create mode 100644 src/Helpers/Filesystem.php create mode 100644 src/Helpers/HashGenerator.php diff --git a/composer.json b/composer.json index fa5bffb..0173976 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,6 @@ "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", "grasmash/yaml-expander": "^3", "loophp/phposinfo": "^1.7.1", - "symfony/filesystem": "^5.4 || ^6.2", "symfony/yaml": "^4.4 || ^5 || ^6" }, "require-dev": { diff --git a/settings/default.global.settings.php b/settings/global/default.global.settings.php similarity index 100% rename from settings/default.global.settings.php rename to settings/global/default.global.settings.php diff --git a/settings/default.includes.settings.php b/settings/site/default.includes.settings.php similarity index 100% rename from settings/default.includes.settings.php rename to settings/site/default.includes.settings.php diff --git a/settings/default.local.settings.php b/settings/site/default.local.settings.php similarity index 100% rename from settings/default.local.settings.php rename to settings/site/default.local.settings.php diff --git a/src/Config/ConfigInitializer.php b/src/Config/ConfigInitializer.php index 1a9bc72..7d9bcf7 100644 --- a/src/Config/ConfigInitializer.php +++ b/src/Config/ConfigInitializer.php @@ -11,6 +11,8 @@ */ class ConfigInitializer { + const DEFAULT_CONFIG_FILE_PATH = "/config/build.yml"; + /** * Config. * @@ -39,119 +41,71 @@ class ConfigInitializer { */ protected $site; - /** - * Environment. - * - * @var string - */ - protected $environment; - - /** - * Repo root. - * - * @var string - */ - protected $webRoot; - - /** - * Web root of the project. - * - * @var string - */ - protected $repoRoot; - - /** - * Path to this project. - * - * @var string - */ - protected $settingsRoot; - /** * ConfigInitializer constructor. * - * @param string $repo_root - * Repo root. - * @param string $web_root - * Web root of the project. - * @param string $settings_root - * Path to this project. + * @param string $site + * Drupal site uri. Ex: site1, site2 etc. */ - public function __construct(string $repo_root, string $web_root, string $settings_root) { - $this->webRoot = $web_root; - $this->repoRoot = $repo_root; - $this->settingsRoot = $settings_root; + public function __construct(string $site = "default") { $this->config = new Config(); $this->loader = new YamlConfigLoader(); $this->processor = new YamlConfigProcessor(); + $this->setSite($site); + $this->initialize(); } /** * Set site. * - * @param mixed $site - * Site. + * @param string $site + * Given Site. */ - public function setSite($site): void { + public function setSite(string $site): void { $this->site = $site; $this->config->set('site', $site); } - /** - * Determine site. - * - * @return mixed|string - * Site. - */ - protected function determineSite() { - return 'default'; - } - /** * Initialize. */ - public function initialize(): Config { - if (!$this->site) { - $site = $this->determineSite(); - $this->setSite($site); - } + public function initialize(): ConfigInitializer { $environment = $this->determineEnvironment(); - $this->environment = $environment; $this->config->set('environment', $environment); - $this->loadConfigFiles(); - $this->processConfigFiles(); - - return $this->config; + return $this; } /** * Load config. - * - * @return $this - * Config. */ - public function loadConfigFiles(): ConfigInitializer { + public function loadAllConfig(): ConfigInitializer { $this->loadDefaultConfig(); return $this; } /** * Load config. - * - * @return $this - * Config. */ - public function loadDefaultConfig(): ConfigInitializer { - $this->processor->add($this->config->export()); - $this->processor->extend($this->loader->load($this->settingsRoot . '/config/build.yml')); + protected function loadDefaultConfig(): ConfigInitializer { + $this->addConfig($this->config->export()); + $drsDirectory = dirname(__FILE__, 3); + $this->processor->extend($this->loader->load($drsDirectory . self::DEFAULT_CONFIG_FILE_PATH)); return $this; } /** - * Determine env. + * Add/Overrides the config data. * - * @return string|bool - * Env. + * @param array $data + * An array of data. + */ + public function addConfig(array $data): Config { + $this->processor->add($data); + return $this->config; + } + + /** + * Determine env. * * @throws \ReflectionException */ @@ -164,13 +118,10 @@ public function determineEnvironment(): string { /** * Process config. - * - * @return $this - * Config. */ - public function processConfigFiles(): ConfigInitializer { + public function processConfig(): Config { $this->config->replace($this->processor->export()); - return $this; + return $this->config; } } diff --git a/src/Config/SettingsConfig.php b/src/Config/SettingsConfig.php index 97c0629..e8f20c8 100644 --- a/src/Config/SettingsConfig.php +++ b/src/Config/SettingsConfig.php @@ -31,12 +31,12 @@ public function __construct(array $data = []) { } /** - * Expands YAML placeholders in a given file, using config object. + * Replace YAML placeholders in a given file, using config object. * * @param string $filename * The file in which placeholders should be expanded. */ - public function expandFileProperties(string $filename) { + public function replaceFileVariables(string $filename) { $expanded_contents = $this->expander->expandArrayProperties(file($filename), $this->export()); file_put_contents($filename, implode("", $expanded_contents)); } diff --git a/src/Helpers/Filesystem.php b/src/Helpers/Filesystem.php new file mode 100644 index 0000000..006ff44 --- /dev/null +++ b/src/Helpers/Filesystem.php @@ -0,0 +1,177 @@ +ensureDirectoryExists($destDir); + $sourceFiles = $this->loadFilesFromDirectory($sourceDir); + foreach ($sourceFiles as $sourceFile) { + $sourceFileName = basename($sourceFile); + $destFile = $destDir . DIRECTORY_SEPARATOR . $sourceFileName; + $status = $this->copyFile($sourceFile, $destFile, $overwrite); + if (!$status) { + return FALSE; + } + } + + return TRUE; + } + + /** + * Copy file from source to destination. + * + * @param string $source + * Given source file. + * @param string $destination + * Given destination file. + * @param bool $overwrite + * Flag to determine if files to overwrite. + */ + public function copyFile(string $source, string $destination, bool $overwrite = FALSE): bool { + // Check if the file should be overwritten. + if (!$overwrite && is_file($destination)) { + // Skip copying as it should not be overwritten. + return TRUE; + } + + // Copy the file from source to destination. + if (is_file($source)) { + if (!copy($source, $destination)) { + throw new \RuntimeException("Failed to copy file: $destination."); + } + } + else { + throw new \RuntimeException("Source field doesn't exist at path: $destination."); + } + return TRUE; + } + + /** + * Append the contents to the file. + * + * @param string $filePath + * Given filepath to append content. + * @param string $content + * Content to append on file. + */ + public function appendToFile(string $filePath, string $content): bool { + $fileHandle = @fopen($filePath, 'a'); + if (!$fileHandle) { + throw new \RuntimeException("Unable to open the file for writing: " . $filePath); + } + + // Check if the file is writable. + if (!is_writable($filePath)) { + fclose($fileHandle); + throw new \RuntimeException("The file is not writable: " . $filePath); + } + + // Append the content to the file. + if (fwrite($fileHandle, $content) === FALSE) { + fclose($fileHandle); + throw new \RuntimeException("Failed to write content to the file: " . $filePath); + } + + fclose($fileHandle); + return TRUE; + } + + /** + * Writes the content to the file. + * + * @param string $filePath + * Given filepath to write content. + * @param string $content + * Content to write on file. + */ + public function dumpFile(string $filePath, string $content): bool { + $dir = dirname($filePath); + $this->ensureDirectoryExists($dir); + $fileHandle = @fopen($filePath, 'w'); + if (!$fileHandle) { + throw new \RuntimeException("Unable to open the file for writing: " . $filePath); + } + + if (fwrite($fileHandle, $content) === FALSE) { + fclose($fileHandle); + throw new \RuntimeException("Failed to write content to the file: " . $filePath); + } + return TRUE; + } + +} diff --git a/src/Helpers/HashGenerator.php b/src/Helpers/HashGenerator.php new file mode 100644 index 0000000..9efe1cc --- /dev/null +++ b/src/Helpers/HashGenerator.php @@ -0,0 +1,38 @@ +write("Generating hash salt..."); + $fileSystem->appendToFile($hash_salt_file, RandomString::string(55)); + $io->write("Hash salt written on " . $hash_salt_file . "."); + } + else { + $io->write("Hash salt already exists."); + } + } + catch (\RuntimeException $e) { + $io->write("" . $e->getMessage() . ""); + } + } + +} diff --git a/src/Plugin.php b/src/Plugin.php index 2617e64..03a0924 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -2,6 +2,7 @@ namespace Acquia\Drupal\RecommendedSettings; +use Acquia\Drupal\RecommendedSettings\Helpers\HashGenerator; use Composer\Composer; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\OperationInterface; @@ -98,9 +99,9 @@ public function onPostCmdEvent() { // Only install the template files, if the drupal-recommended-settings // plugin is installed. if ($this->settingsPackage) { - $settings = new Settings($this->composer, $this->io, $this->settingsPackage); - $settings->hashSalt(); - $settings->generateSettings(); + HashGenerator::generate($this->getProjectRoot(), $this->io); + $settings = new Settings($this->getDrupalRoot()); + $settings->generate(); } } @@ -126,4 +127,20 @@ protected function getSettingsPackage(OperationInterface $operation) { return NULL; } + /** + * Returns the project directory path. + */ + protected function getProjectRoot(): string { + return dirname($this->composer->getConfig()->get('vendor-dir')); + } + + /** + * Returns the drupal root directory path. + */ + protected function getDrupalRoot(): string { + $extra = $this->composer->getPackage()->getExtra(); + $docroot = $extra['drupal-scaffold']['locations']['web-root'] ?? ""; + return realpath($this->getProjectRoot() . "/" . $docroot); + } + } diff --git a/src/Settings.php b/src/Settings.php index 589655c..1e2028d 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -2,15 +2,9 @@ namespace Acquia\Drupal\RecommendedSettings; -use Acquia\Drupal\RecommendedSettings\Common\RandomString; use Acquia\Drupal\RecommendedSettings\Config\ConfigInitializer; use Acquia\Drupal\RecommendedSettings\Config\SettingsConfig; -use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; -use Composer\Composer; -use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Util\Filesystem; -use Symfony\Component\Filesystem\Filesystem as SymfonyFilesystem; +use Acquia\Drupal\RecommendedSettings\Helpers\Filesystem; /** * Core class of the plugin. @@ -40,202 +34,105 @@ class Settings { */ WARNING; - /** - * The repo root path. - * - * @var string - */ - protected string $rootPath; - - /** - * The composer object. - * - * @var \Composer\Composer - */ - protected Composer $composer; - - /** - * The symfony input-output object. - * - * @var \Composer\IO\IOInterface - */ - protected IOInterface $io; - /** * The symfony file-system object. * - * @var \Symfony\Component\Filesystem\Filesystem + * @var \Acquia\Drupal\RecommendedSettings\Helpers\Filesystem */ - protected SymfonyFilesystem $fileSystem; + protected Filesystem $fileSystem; /** - * The settings package object. - * - * @var \Composer\Package\PackageInterface - */ - protected PackageInterface $settingsPackage; - - /** - * The site name. + * The path to drupal webroot directory. * * @var string */ - protected $siteName; + protected $drupalRoot; /** - * The site name. + * The drupal site machine_name. Ex: site1, site2 etc. * * @var string */ - protected $getWebRootPath; + protected $site; /** * Constructs the plugin object. */ - public function __construct(Composer $composer, IOInterface $io, PackageInterface $package) { - $this->composer = $composer; - $this->io = $io; - $this->fileSystem = new SymfonyFilesystem(); - $this->settingsPackage = $package; - $this->siteName = 'default'; - $this->getWebRootPath = $this->getWebRootPath(); + public function __construct(string $drupalRoot, string $site = "default") { + $this->fileSystem = new Filesystem(); + $this->drupalRoot = $drupalRoot; + $this->site = $site; } /** - * Writes a hash salt to ${repo.root}/salt.txt if one does not exist. - * - * @command drupal:hash-salt:init - * @aliases dhsi setup:hash-salt - * - * @return int - * A CLI exit code. - * - * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException + * Returns the acquia/drupal-recommended-plugin path. */ - public function hashSalt(): int { - $hash_salt_file = $this->getRootPath() . '/salt.txt'; - if (!$this->fileSystem->exists($hash_salt_file)) { - $this->io->write("Generating hash salt..."); - $this->fileSystem->appendToFile($hash_salt_file, RandomString::string(55)); - if (!is_writable($hash_salt_file)) { - throw new SettingsException(sprintf("Can not create file. File `%s` is not writable.", $hash_salt_file)); - } - } - else { - $this->io->write("Hash salt already exists."); - } - return 0; + public static function getPluginPath(): string { + return dirname(__DIR__); } /** - * Get the settings files. - * - * @return array - * A settings files. + * Copies the Global default setting files. */ - public function getSettings(): array { - // Generate settings.php. - $settings[$this->siteName] = $this->getWebRootPath . "/sites/default"; - $settings['project_default_settings_file'] = $settings[$this->siteName] . "/default.settings.php"; - $settings['project_settings_file'] = $settings[$this->siteName] . "/settings.php"; - - // Generate local.settings.php. - $settings['recommended_local_settings_file'] = $this->getSettingsPackagePath() . '/settings/default.local.settings.php'; - $settings['default_local_settings_file'] = $settings[$this->siteName] . "/settings/default.local.settings.php"; - $settings['project_local_settings_file'] = $settings[$this->siteName] . "/settings/local.settings.php"; - - // Generate sites/settings/default.global.settings.php. - $settings['recommended_glob_settings_file'] = $this->getSettingsPackagePath() . '/settings/default.global.settings.php'; - $settings['default_glob_settings_file'] = $this->getWebRootPath . "/sites/settings/default.global.settings.php"; - $settings['global_settings_file'] = $this->getWebRootPath . "/sites/settings/global.settings.php"; - - // Generate default.includes.settings.php. - $settings['recommended_includes_settings_file'] = $this->getSettingsPackagePath() . '/settings/default.includes.settings.php'; - $settings['default_includes_settings_file'] = $this->getWebRootPath . "/sites/settings/default.includes.settings.php"; - - return $settings; + protected function copyGlobalSettings(): bool { + return $this->fileSystem->copyFiles( + self::getPluginPath() . "/settings/global", + $this->drupalRoot . "/sites/settings" + ); } /** - * Generate the settings files. + * Copies the default site specific setting files. */ - public function generateSettings(): void { - $setting_files = $this->getSettings(); - - $copy_map = [ - $setting_files['recommended_local_settings_file'] => $setting_files['default_local_settings_file'], - $setting_files['default_local_settings_file'] => $setting_files['project_local_settings_file'], - $setting_files['recommended_includes_settings_file'] => $setting_files['default_includes_settings_file'], - ]; - // Define an array of files that require property expansion. - // phpcs:ignore - // $expand_map = [$settings['default_local_settings_file'] => $settings['project_local_settings_file']]; - - // Add default.global.settings.php if global.settings.php does not exist. - if (!$this->fileSystem->exists($setting_files['global_settings_file'])) { - $copy_map[$setting_files['recommended_glob_settings_file']] = $setting_files['default_glob_settings_file']; - } - - // Only add the settings file if the default exists. - if (file_exists($setting_files['project_default_settings_file'])) { - $copy_map[$setting_files['project_default_settings_file']] = $setting_files['project_settings_file']; - } - elseif (!file_exists($setting_files['project_default_settings_file'])) { - $this->io->write("No " . $setting_files['project_default_settings_file'] . " file found."); - } - - $this->fileSystem->chmod($setting_files[$this->siteName], 0755, 0000, TRUE); - - $config = new ConfigInitializer($this->getRootPath(), $this->getWebRootPath, $this->getVendorPath() . "/" . $this->settingsPackage->getName()); - $config = $config->initialize(); - $settings = new SettingsConfig($config->export()); - - // Copy files without overwriting. - foreach ($copy_map as $from => $to) { - if (!$this->fileSystem->exists($to)) { - $this->fileSystem->copy($from, $to); - $settings->expandFileProperties($to); - } - } - $this->appendIfMatchesCollect($setting_files['project_settings_file'], '#vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php#', 'require DRUPAL_ROOT . "/../vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php";' . "\n"); - $this->appendIfMatchesCollect($setting_files['project_settings_file'], '#Do not include additional settings here#', $this->settingsWarning . "\n"); + protected function copySiteSettings(): bool { + return $this->fileSystem->copyFiles( + self::getPluginPath() . "/settings/site", + $this->drupalRoot . "/sites/" . $this->site . "/settings" + ); } /** - * Gets the path to the 'vendor' directory. + * Generate/Copy settings files. * - * @return string - * The file path of the vendor directory. - */ - protected function getVendorPath(): string { - $vendor_dir = $this->composer->getConfig()->get('vendor-dir'); - $filesystem = new Filesystem(); - return $filesystem->normalizePath(realpath($vendor_dir)); - } - - /** - * Gets the root path to project. - */ - protected function getRootPath(): string { - return dirname($this->getVendorPath()); - } - - /** - * Gets the path to the 'vendor' directory. - */ - protected function getWebRootPath(): string { - $extra = $this->composer->getPackage()->getExtra(); - $webRoot = $extra['drupal-scaffold']['locations']['web-root'] ?? "."; - $webRoot = $this->getRootPath() . "/" . $webRoot; - $filesystem = new Filesystem(); - return $filesystem->normalizePath(realpath($webRoot)); - } - - /** - * Gets the path to package. - */ - protected function getSettingsPackagePath(): string { - return $this->composer->getInstallationManager()->getInstallPath($this->settingsPackage); + * @param array $overrideData + * An array of data to override. + */ + public function generate(array $overrideData = []): void { + $site = $this->site; + $this->copyGlobalSettings(); + $this->copySiteSettings(); + + // Create settings.php file from default.settings.php. + $this->fileSystem->copyFile( + $this->drupalRoot . "/sites/default/default.settings.php", + $this->drupalRoot . "/sites/$site/settings.php" + ); + + // Append `require acquia-recommended.settings.php` code block in + // site specific settings.php file (if it does not exist). + $this->appendIfMatchesCollect( + $this->drupalRoot . "/sites/$site/settings.php", + '#vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php#', PHP_EOL . 'require DRUPAL_ROOT . "/../vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php";' . PHP_EOL + ); + $this->appendIfMatchesCollect( + $this->drupalRoot . "/sites/$site/settings.php", + '#Do not include additional settings here#', $this->settingsWarning . PHP_EOL + ); + + // Create local.settings.php file from default.local.settings.php. + $this->fileSystem->copyFile( + $this->drupalRoot . "/sites/$site/settings/default.local.settings.php", + $this->drupalRoot . "/sites/$site/settings/local.settings.php" + ); + + // Replace variables in local.settings.php file. + $config = new ConfigInitializer(); + $config = $config->loadAllConfig(); + if ($overrideData) { + $config->addConfig($overrideData); + } + $settings = new SettingsConfig($config->processConfig()->export()); + $settings->replaceFileVariables($this->drupalRoot . "/sites/$site/settings/local.settings.php"); } /** From 8ea2bbbe7f86ab0d772fbc77018749a4fb6bb3f2 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Mon, 6 Nov 2023 19:59:28 +0530 Subject: [PATCH 13/36] ACMS-000: Minor issues fixed and better error handling. --- src/Helpers/Filesystem.php | 2 +- src/Helpers/HashGenerator.php | 6 +++--- src/Plugin.php | 11 ++++++++--- src/Settings.php | 5 +++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/Helpers/Filesystem.php b/src/Helpers/Filesystem.php index 006ff44..1cc63ad 100644 --- a/src/Helpers/Filesystem.php +++ b/src/Helpers/Filesystem.php @@ -116,7 +116,7 @@ public function copyFile(string $source, string $destination, bool $overwrite = } } else { - throw new \RuntimeException("Source field doesn't exist at path: $destination."); + throw new \RuntimeException(sprintf("Source file `%s` doesn't exist.", $source)); } return TRUE; } diff --git a/src/Helpers/HashGenerator.php b/src/Helpers/HashGenerator.php index 9efe1cc..34b8dbd 100644 --- a/src/Helpers/HashGenerator.php +++ b/src/Helpers/HashGenerator.php @@ -24,14 +24,14 @@ public static function generate(string $directory, $io): void { if (!file_exists($hash_salt_file)) { $io->write("Generating hash salt..."); $fileSystem->appendToFile($hash_salt_file, RandomString::string(55)); - $io->write("Hash salt written on " . $hash_salt_file . "."); + $io->write("[success] Hash salt written on " . $hash_salt_file . "."); } else { - $io->write("Hash salt already exists."); + $io->write("[notice] Hash salt already exists."); } } catch (\RuntimeException $e) { - $io->write("" . $e->getMessage() . ""); + $io->write("[error] " . $e->getMessage()); } } diff --git a/src/Plugin.php b/src/Plugin.php index 03a0924..6aad9ce 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -99,9 +99,14 @@ public function onPostCmdEvent() { // Only install the template files, if the drupal-recommended-settings // plugin is installed. if ($this->settingsPackage) { - HashGenerator::generate($this->getProjectRoot(), $this->io); - $settings = new Settings($this->getDrupalRoot()); - $settings->generate(); + try { + HashGenerator::generate($this->getProjectRoot(), $this->io); + $settings = new Settings($this->getDrupalRoot()); + $settings->generate(); + } + catch (\Exception $e) { + $this->io->write("[error] " . $e->getMessage()); + } } } diff --git a/src/Settings.php b/src/Settings.php index 1e2028d..78315ba 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -133,6 +133,11 @@ public function generate(array $overrideData = []): void { } $settings = new SettingsConfig($config->processConfig()->export()); $settings->replaceFileVariables($this->drupalRoot . "/sites/$site/settings/local.settings.php"); + + // The config directory for given site must exists, otherwise Drupal will + // add database credentials to settings.php. + // @todo Using hardcoded sync directory path. Need to better optimise it. + $this->fileSystem->ensureDirectoryExists($this->drupalRoot . "/../config/$site"); } /** From 16d8809728baed8e8c84f35be44680226c6a5132 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Mon, 6 Nov 2023 20:08:33 +0530 Subject: [PATCH 14/36] ACMS-1951: Updated config_sync & site_studio_sync directory path. --- settings/config.settings.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/settings/config.settings.php b/settings/config.settings.php index ea0f0de..d7431ef 100644 --- a/settings/config.settings.php +++ b/settings/config.settings.php @@ -22,19 +22,19 @@ */ - /** - * Site path. - * - * @var string $site_path - * This is always set and exposed by the Drupal Kernel. - */ +/** + * Site path. + * + * @var string $site_path + * This is always set and exposed by the Drupal Kernel. + */ // phpcs:ignore $site_name = EnvironmentDetector::getSiteName($site_path); // phpcs:ignore // Config sync settings. -$settings['config_sync_directory'] = "../config/" . $site_name . "/sync"; +$settings['config_sync_directory'] = "../config/" . $site_name; // Site Studio sync settings. -$settings['site_studio_sync'] = "../config/" . $site_name . "/sitestudio"; +$settings['site_studio_sync'] = "../sitestudio/" . $site_name; $split_filename_prefix = 'config_split.config_split'; From 6f069b734142d63c0f9ee3ea7f22f16eae13bd13 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Fri, 10 Nov 2023 16:15:33 +0530 Subject: [PATCH 15/36] ACMS-3281: PHPCS fixes. --- README.md | 31 +++++++++++++-------- composer.json | 3 -- settings/acquia-recommended.settings.php | 4 ++- settings/global/default.global.settings.php | 7 +++-- src/Helpers/EnvironmentDetector.php | 2 ++ src/Settings.php | 1 - 6 files changed, 29 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 109a674..240d010 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,15 @@ # Acquia Drupal Recommended Settings -The Acquia Drupal Recommended Settings plugin adds the recommended settings to the Drupal project, so developers won't have to edit settings.php manually. +The Acquia Drupal Recommended Settings plugin adds the recommended settings to +the Drupal project, so developers won't have to edit settings.php manually. The recommended settings includes: -- the required database credentials +- the required database credentials. - configuration sync directory path. - public/private etc. file directory path. - Acquia site studio sync directory path. -- Includes Drupal module [Config sync without site uuid](https://www.drupal.org/project/config_sync_without_site_uuid) features. -It allows your websites to be easily installed in both Acquia Cloud IDE & local and deployable on Acquia Cloud. +It allows your websites to be easily installed in both Acquia Cloud IDE & local +and deployable on Acquia Cloud. ## Installation @@ -18,16 +19,16 @@ You can also install this using Composer like so: composer require acquia/drupal-recommended-settings ``` -## Steps to switch from BLT to Acquia Drupal Recommended Settings -This plugin doesn't work with the acquia/blt plugin. If the plugin exists, it must be removed. +## Steps to use Acquia Drupal Recommended Settings with BLT. +This plugin works with acquia/blt plugin. -- Remove BLT plugin using below command +- Update BLT plugin to latest release. ``` -composer remove acquia/blt +composer update acquia/blt -W ``` - Remove BLT reference from settings.php file located at -``/docroot/sites/default/settings.php``. + ``/docroot/sites/default/settings.php``. ```php require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; /** @@ -44,7 +45,7 @@ require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; ``` composer require acquia/drupal-recommended-settings ``` - + - Update `default.local.settings.php` and `local.settings.php` to use the Environment Detector provided by this plugin instead of BLT: ```diff - use Acquia\Blt\Robo\Common\EnvironmentDetector; @@ -55,6 +56,12 @@ composer require acquia/drupal-recommended-settings Copyright (C) 2023 Acquia, Inc. -This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation. +This program is free software: you can redistribute it and/or modify it under +the terms of the GNU General Public License version 2 as published by the +Free Software Foundation. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +See the GNU General Public License for more details. -This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. diff --git a/composer.json b/composer.json index 0173976..701c719 100644 --- a/composer.json +++ b/composer.json @@ -35,9 +35,6 @@ "ergebnis/composer-normalize": "~2.21.0", "phpro/grumphp-shim": "^1.5" }, - "conflict": { - "acquia/blt": "*" - }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { diff --git a/settings/acquia-recommended.settings.php b/settings/acquia-recommended.settings.php index 8c5cbbf..9c57e04 100644 --- a/settings/acquia-recommended.settings.php +++ b/settings/acquia-recommended.settings.php @@ -2,7 +2,9 @@ /** * @file - * Setup Acquia Drupal Recommended Settings utility variables, include required files. + * Setup Acquia Drupal Recommended Settings utility variables. + * + * Includes required settings files. */ use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; diff --git a/settings/global/default.global.settings.php b/settings/global/default.global.settings.php index d55bba2..78e8dd1 100644 --- a/settings/global/default.global.settings.php +++ b/settings/global/default.global.settings.php @@ -2,7 +2,9 @@ /** * @file - * Generated by Acquia Drupal Recommended Settings. Serves as an example of global includes. + * Generated by Acquia Drupal Recommended Settings. + * + * Serves as an example of global includes. */ /** @@ -14,7 +16,8 @@ /** * Include settings files in docroot/sites/settings. * - * If instead you want to add settings to a specific site, see Acquia Drupal Recommended Settings includes + * If instead you want to add settings to a specific site, see + * Acquia Drupal Recommended Settings includes * file in docroot/sites/{site-name}/settings/default.includes.settings.php. */ $additionalSettingsFiles = [ diff --git a/src/Helpers/EnvironmentDetector.php b/src/Helpers/EnvironmentDetector.php index 7185935..32b221b 100644 --- a/src/Helpers/EnvironmentDetector.php +++ b/src/Helpers/EnvironmentDetector.php @@ -263,7 +263,9 @@ public static function getRepoRoot(): string { // This is a web or Drush request. return dirname(DRUPAL_ROOT); } + // phpcs:ignore global $repo_root; + // phpcs:enable return $repo_root; } diff --git a/src/Settings.php b/src/Settings.php index 78315ba..5f13a68 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -136,7 +136,6 @@ public function generate(array $overrideData = []): void { // The config directory for given site must exists, otherwise Drupal will // add database credentials to settings.php. - // @todo Using hardcoded sync directory path. Need to better optimise it. $this->fileSystem->ensureDirectoryExists($this->drupalRoot . "/../config/$site"); } From 7653984b44746d92fa69d7ce621c23a010205861 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Fri, 10 Nov 2023 19:03:23 +0530 Subject: [PATCH 16/36] ACMS-3281: Add PHPUnit tests. --- composer.json | 3 +- tests/unit/SettingsTest.php | 88 +++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 tests/unit/SettingsTest.php diff --git a/composer.json b/composer.json index 701c719..693ff71 100644 --- a/composer.json +++ b/composer.json @@ -33,7 +33,8 @@ "acquia/coding-standards": "^2.0", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", "ergebnis/composer-normalize": "~2.21.0", - "phpro/grumphp-shim": "^1.5" + "phpro/grumphp-shim": "^1.5", + "phpunit/phpunit": "^9 || ^10" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/tests/unit/SettingsTest.php b/tests/unit/SettingsTest.php new file mode 100644 index 0000000..20fd40d --- /dev/null +++ b/tests/unit/SettingsTest.php @@ -0,0 +1,88 @@ +drupalRoot = dirname(__FILE__); + $docroot = $this->drupalRoot . '/docroot'; + $this->drsFileSystem = new DrsFilesystem(); + $this->drsFileSystem->ensureDirectoryExists($docroot . '/sites/default'); + $this->fileSystem = new Filesystem(); + $this->fileSystem->touch($docroot . '/sites/default/default.settings.php'); + $this->settings = new Settings($docroot, "default"); + $this->settings->generate(); + } + + /** + * Test that the file is created. + */ + public function testFileIsCreated() { + // Assert that settings/default.global.settings.php file exist. + $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/settings/default.global.settings.php')); + // Assert that settings.php file exist. + $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings.php')); + // Assert that settings.php file has content. + $content = ' +require DRUPAL_ROOT . "/../vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php"; +/** + * IMPORTANT. + * + * Do not include additional settings here. Instead, add them to settings + * included by `acquia-recommended.settings.php`. See Acquia\'s documentation for more detail. + * + * @link https://docs.acquia.com/ + */ +'; + $this->assertEquals($content, file_get_contents($this->drupalRoot . '/docroot/sites/default/settings.php')); + // Assert that default.includes.settings.php file exist. + $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings/default.includes.settings.php')); + // Assert that default.local.settings.php file exist. + $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings/default.local.settings.php')); + // Assert that local.settings.php file exist. + $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings/local.settings.php')); + } + + public function tearDown(): void { + $this->fileSystem->remove($this->drupalRoot . '/docroot'); + $this->fileSystem->remove($this->drupalRoot . '/config'); + } + +} From 23556d7cb6b315132d7f6eb19fccf01504c50485 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Tue, 14 Nov 2023 12:27:01 +0530 Subject: [PATCH 17/36] ACMS-3281: Update Readme and review feedback updates. --- README.md | 44 +++++++++++++++++++++++++++++++++---- config/build.yml | 2 +- tests/unit/SettingsTest.php | 20 ++++++++++++++++- 3 files changed, 60 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 240d010..294eb98 100644 --- a/README.md +++ b/README.md @@ -3,9 +3,9 @@ The Acquia Drupal Recommended Settings plugin adds the recommended settings to the Drupal project, so developers won't have to edit settings.php manually. The recommended settings includes: -- the required database credentials. -- configuration sync directory path. -- public/private etc. file directory path. +- The required database credentials. +- Configuration sync directory path. +- File directory path i.e public/private etc. - Acquia site studio sync directory path. It allows your websites to be easily installed in both Acquia Cloud IDE & local @@ -52,6 +52,43 @@ composer require acquia/drupal-recommended-settings + use Acquia\Drupal\RecommendedSettings\Helpers\EnvironmentDetector; ``` +## Steps to use Acquia Drupal Recommended Settings with BLT. + - Create an Settings object & call generate method. + ``` + [ + 'db' => [ +// Database name. + 'database' => 'drupal', +// Mysql database login username. + 'username' => 'drupal', +// Mysql database login password. + 'password' => 'drupal', +// Mysql host. + 'host' => 'localhost', +// Mysql port. + 'port' => '3306', + ], + ], +]; + +// Call generate method with database details. +$settings->generate($dbSpec); +``` + # License Copyright (C) 2023 Acquia, Inc. @@ -64,4 +101,3 @@ This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - diff --git a/config/build.yml b/config/build.yml index 680995f..a8ec6cb 100644 --- a/config/build.yml +++ b/config/build.yml @@ -5,4 +5,4 @@ drupal: username: drupal password: drupal host: localhost - port: 3306 \ No newline at end of file + port: 3306 diff --git a/tests/unit/SettingsTest.php b/tests/unit/SettingsTest.php index 20fd40d..72e0b71 100644 --- a/tests/unit/SettingsTest.php +++ b/tests/unit/SettingsTest.php @@ -48,7 +48,17 @@ public function setUp(): void { $this->fileSystem = new Filesystem(); $this->fileSystem->touch($docroot . '/sites/default/default.settings.php'); $this->settings = new Settings($docroot, "default"); - $this->settings->generate(); + $this->settings->generate([ + 'drupal' => [ + 'db' => [ + 'database' => 'drs', + 'username' => 'drupal', + 'password' => 'drupal', + 'host' => 'localhost', + 'port' => '3306', + ], + ], + ]); } /** @@ -78,6 +88,14 @@ public function testFileIsCreated() { $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings/default.local.settings.php')); // Assert that local.settings.php file exist. $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/default/settings/local.settings.php')); + // Get the local.settings.php file content. + $localSettings = file_get_contents($this->drupalRoot . '/docroot/sites/default/settings/local.settings.php'); + // Verify database credentials. + $this->assertStringContainsString("db_name = 'drs'", $localSettings, "The local.settings.php doesn't contains the 'drs' database."); + $this->assertStringContainsString("'username' => 'drupal'", $localSettings, "The local.settings.php doesn't contains the 'drupal' username."); + $this->assertStringContainsString("'password' => 'drupal'", $localSettings, "The local.settings.php doesn't contains the 'drupal' password."); + $this->assertStringContainsString("'host' => 'localhost'", $localSettings, "The local.settings.php doesn't contains the 'localhost' host."); + $this->assertStringContainsString("'port' => '3306'", $localSettings, "The local.settings.php doesn't contains the '3306' port."); } public function tearDown(): void { From 03ddd550da13a4e6a9adef4e284158371f5f6cc8 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Mon, 20 Nov 2023 11:24:00 +0530 Subject: [PATCH 18/36] ACMS-3281: Run phpunit tests --- .github/workflows/drs_ci.yml | 6 +++++- tests/ci/script.sh | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100755 tests/ci/script.sh diff --git a/.github/workflows/drs_ci.yml b/.github/workflows/drs_ci.yml index 2282ac8..2dca280 100644 --- a/.github/workflows/drs_ci.yml +++ b/.github/workflows/drs_ci.yml @@ -60,10 +60,14 @@ jobs: coverage: xdebug - name: Download ORCA run: composer create-project --no-dev --ignore-platform-req=php acquia/orca ../orca "$ORCA_VERSION" -n + - name: Before Install + run: ../orca/bin/ci/before_install.sh + - name: Install + run: ../orca/bin/ci/install.sh - name: Before script run: ../orca/bin/ci/before_script.sh - name: Script - run: ../orca/bin/ci/script.sh + run: ./tests/ci/script.sh - name: After script run: | ../orca/bin/ci/after_success.sh diff --git a/tests/ci/script.sh b/tests/ci/script.sh new file mode 100755 index 0000000..9ffc499 --- /dev/null +++ b/tests/ci/script.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +# NAME +# script.sh - Run ORCA tests. +# +# SYNOPSIS +# script.sh +# +# DESCRIPTION +# Runs static code analysis and automated tests. + +cd "$(dirname "$0")" + +# Reuse ORCA's own includes. +source ../../../orca/bin/travis/_includes.sh +cd /home/runner/work/drupal-recommended-settings/drupal-recommended-settings +composer install +./vendor/bin/phpunit tests +cd - From 7a3887f21af39c78d20126ac69daa7c01ba5f4c1 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 11:11:24 +0530 Subject: [PATCH 19/36] ACMS-000: Fixed conflicts and minor changes. --- .github/workflows/drs_ci.yml | 6 +++-- README.md | 46 +++++++++++++++++++++++++++-------- src/Helpers/HashGenerator.php | 7 ++++-- src/Plugin.php | 5 ++-- src/Settings.php | 8 ++++++ tests/ci/script.sh | 19 --------------- 6 files changed, 56 insertions(+), 35 deletions(-) delete mode 100755 tests/ci/script.sh diff --git a/.github/workflows/drs_ci.yml b/.github/workflows/drs_ci.yml index 2dca280..8c93b18 100644 --- a/.github/workflows/drs_ci.yml +++ b/.github/workflows/drs_ci.yml @@ -66,8 +66,10 @@ jobs: run: ../orca/bin/ci/install.sh - name: Before script run: ../orca/bin/ci/before_script.sh - - name: Script - run: ./tests/ci/script.sh + - name: Run PHPUnit tests + run: | + composer install + ./vendor/bin/phpunit tests - name: After script run: | ../orca/bin/ci/after_success.sh diff --git a/README.md b/README.md index 294eb98..5c52faf 100644 --- a/README.md +++ b/README.md @@ -52,8 +52,8 @@ composer require acquia/drupal-recommended-settings + use Acquia\Drupal\RecommendedSettings\Helpers\EnvironmentDetector; ``` -## Steps to use Acquia Drupal Recommended Settings with BLT. - - Create an Settings object & call generate method. +# Quick examples. +## Generate settings for a given site. ``` generate(); +} catch (SettingsException $e) { + echo $e->getMessage(); +} +``` + +## Generate settings for a given site passing database credentials. + +``` + [ 'db' => [ -// Database name. 'database' => 'drupal', -// Mysql database login username. 'username' => 'drupal', -// Mysql database login password. 'password' => 'drupal', -// Mysql host. 'host' => 'localhost', -// Mysql port. 'port' => '3306', ], ], ]; -// Call generate method with database details. -$settings->generate($dbSpec); +try { + // Call generate method passing database details. + $settings->generate($dbSpec); +} catch (SettingsException $e) { + echo $e->getMessage(); +} ``` # License diff --git a/src/Helpers/HashGenerator.php b/src/Helpers/HashGenerator.php index 34b8dbd..470d3ad 100644 --- a/src/Helpers/HashGenerator.php +++ b/src/Helpers/HashGenerator.php @@ -3,6 +3,7 @@ namespace Acquia\Drupal\RecommendedSettings\Helpers; use Acquia\Drupal\RecommendedSettings\Common\RandomString; +use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; /** * Class to generate salt hash. @@ -16,6 +17,8 @@ class HashGenerator { * Given directory. * @param mixed $io * Given io object to print message to terminal. + * + * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException */ public static function generate(string $directory, $io): void { try { @@ -30,8 +33,8 @@ public static function generate(string $directory, $io): void { $io->write("[notice] Hash salt already exists."); } } - catch (\RuntimeException $e) { - $io->write("[error] " . $e->getMessage()); + catch (\Exception $e) { + throw new SettingsException($e); } } diff --git a/src/Plugin.php b/src/Plugin.php index 6aad9ce..8ba7384 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -2,6 +2,7 @@ namespace Acquia\Drupal\RecommendedSettings; +use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; use Acquia\Drupal\RecommendedSettings\Helpers\HashGenerator; use Composer\Composer; use Composer\DependencyResolver\Operation\InstallOperation; @@ -93,7 +94,7 @@ public function onPostPackageEvent(PackageEvent $event) { /** * Includes Acquia recommended settings post composer update/install command. * - * @throws \Exception + * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException */ public function onPostCmdEvent() { // Only install the template files, if the drupal-recommended-settings @@ -104,7 +105,7 @@ public function onPostCmdEvent() { $settings = new Settings($this->getDrupalRoot()); $settings->generate(); } - catch (\Exception $e) { + catch (SettingsException $e) { $this->io->write("[error] " . $e->getMessage()); } } diff --git a/src/Settings.php b/src/Settings.php index 5f13a68..c02b652 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -4,6 +4,7 @@ use Acquia\Drupal\RecommendedSettings\Config\ConfigInitializer; use Acquia\Drupal\RecommendedSettings\Config\SettingsConfig; +use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; use Acquia\Drupal\RecommendedSettings\Helpers\Filesystem; /** @@ -96,8 +97,11 @@ protected function copySiteSettings(): bool { * * @param array $overrideData * An array of data to override. + * + * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException */ public function generate(array $overrideData = []): void { + try { $site = $this->site; $this->copyGlobalSettings(); $this->copySiteSettings(); @@ -137,6 +141,10 @@ public function generate(array $overrideData = []): void { // The config directory for given site must exists, otherwise Drupal will // add database credentials to settings.php. $this->fileSystem->ensureDirectoryExists($this->drupalRoot . "/../config/$site"); + } catch (\Exception $e) { + throw new SettingsException($e); + } + } /** diff --git a/tests/ci/script.sh b/tests/ci/script.sh deleted file mode 100755 index 9ffc499..0000000 --- a/tests/ci/script.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -# NAME -# script.sh - Run ORCA tests. -# -# SYNOPSIS -# script.sh -# -# DESCRIPTION -# Runs static code analysis and automated tests. - -cd "$(dirname "$0")" - -# Reuse ORCA's own includes. -source ../../../orca/bin/travis/_includes.sh -cd /home/runner/work/drupal-recommended-settings/drupal-recommended-settings -composer install -./vendor/bin/phpunit tests -cd - From 22c4638dc2167d3c8b08392363127b321ff298af Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 13:08:54 +0530 Subject: [PATCH 20/36] ACMS-000: Fixed PHPCS issues. --- README.md | 4 +- composer.json | 2 +- src/Common/ArrayManipulator.php | 32 +++++----- src/Common/RandomString.php | 2 +- src/Config/ConfigInitializer.php | 18 ++---- src/Config/SettingsConfig.php | 12 ++-- src/Config/YamlConfigProcessor.php | 6 +- src/Exceptions/SettingsException.php | 4 +- src/Helpers/EnvironmentDetector.php | 9 +-- src/Helpers/Filesystem.php | 3 + src/Helpers/HashGenerator.php | 2 +- src/Plugin.php | 18 ++---- src/Settings.php | 93 +++++++++++++--------------- tests/unit/SettingsTest.php | 14 +---- 14 files changed, 97 insertions(+), 122 deletions(-) diff --git a/README.md b/README.md index 5c52faf..f288de3 100644 --- a/README.md +++ b/README.md @@ -62,8 +62,8 @@ composer require acquia/drupal-recommended-settings * Include DRS settings. */ -use Acquia\Drupal\RecommendedSettings\Settings; use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; +use Acquia\Drupal\RecommendedSettings\Settings; // Create settings object. $siteUri = "site1"; @@ -87,8 +87,8 @@ try { * Include DRS settings. */ -use Acquia\Drupal\RecommendedSettings\Settings; use Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException; +use Acquia\Drupal\RecommendedSettings\Settings; // Create settings object. $siteUri = "site1"; diff --git a/composer.json b/composer.json index 693ff71..798e59b 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "docs": "https://docs.acquia.com/drupal-recommended-settings/" }, "require": { - "php": ">=7.4", + "php": ">=8.1", "composer-plugin-api": "^2", "acquia/drupal-environment-detector": "^1.5.3", "composer/composer": "^2.2", diff --git a/src/Common/ArrayManipulator.php b/src/Common/ArrayManipulator.php index 15c55a4..a046d10 100644 --- a/src/Common/ArrayManipulator.php +++ b/src/Common/ArrayManipulator.php @@ -12,12 +12,12 @@ class ArrayManipulator { /** * Merges arrays recursively while preserving. * - * @param array $array1 + * @param string[] $array1 * The first array. - * @param array $array2 + * @param string[] $array2 * The second array. * - * @return array + * @return string[] * The merged array. * * @see http://php.net/manual/en/function.array-merge-recursive.php#92195 @@ -25,7 +25,7 @@ class ArrayManipulator { public static function arrayMergeRecursiveDistinct( array &$array1, array &$array2 - ) { + ): array { $merged = $array1; foreach ($array2 as $key => &$value) { if (is_array($value) && isset($merged[$key]) && is_array($merged[$key])) { @@ -45,13 +45,13 @@ public static function arrayMergeRecursiveDistinct( * E.g., [drush.alias => 'self'] would be expanded to * ['drush' => ['alias' => 'self']] * - * @param array $array + * @param string[] $array * The array containing unexpanded dot-notated keys. * - * @return array + * @return string[] * The expanded array. */ - public static function expandFromDotNotatedKeys(array $array) { + public static function expandFromDotNotatedKeys(array $array): array { $data = new Data(); // @todo Make this work at all levels of array. @@ -69,13 +69,13 @@ public static function expandFromDotNotatedKeys(array $array) { * ['drush' => ['alias' => 'self']] would be flattened to * [drush.alias => 'self']. * - * @param array $array + * @param string[] $array * The multidimensional array. * - * @return array + * @return string[] * The flattened array. */ - public static function flattenToDotNotatedKeys(array $array) { + public static function flattenToDotNotatedKeys(array $array): array { return self::flattenMultidimensionalArray($array, '.'); } @@ -86,15 +86,15 @@ public static function flattenToDotNotatedKeys(array $array) { * ['drush' => ['alias' => 'self']] would be flattened to * [drush.alias => 'self']. * - * @param array $array + * @param string[] $array * The multidimensional array. * @param string $glue * The character(s) to use for imploding keys. * - * @return array + * @return string[] * The flattened array. */ - public static function flattenMultidimensionalArray(array $array, $glue) { + public static function flattenMultidimensionalArray(array $array, string $glue): array { $iterator = new \RecursiveIteratorIterator(new \RecursiveArrayIterator($array)); $result = []; foreach ($iterator as $leafValue) { @@ -113,13 +113,13 @@ public static function flattenMultidimensionalArray(array $array, $glue) { * * Used primarily for rendering tables via Symfony Console commands. * - * @param array $array + * @param string[] $array * The multi-dimensional array. * - * @return array + * @return string[] * The human-readble, flat array. */ - public static function convertArrayToFlatTextArray(array $array) { + public static function convertArrayToFlatTextArray(array $array): array { $rows = []; $max_line_length = 60; foreach ($array as $key => $value) { diff --git a/src/Common/RandomString.php b/src/Common/RandomString.php index 459ef47..c13a68e 100644 --- a/src/Common/RandomString.php +++ b/src/Common/RandomString.php @@ -40,7 +40,7 @@ class RandomString { * * @see \Drupal\Component\Utility\Random::name() */ - public static function string($length = 8, $unique = FALSE, callable $validator = NULL, $characters = '') { + public static function string(int $length = 8, bool $unique = FALSE, callable $validator = NULL, string $characters = ''): string { $counter = 0; $strings = []; $characters_array = $characters ? str_split($characters) : []; diff --git a/src/Config/ConfigInitializer.php b/src/Config/ConfigInitializer.php index 7d9bcf7..f38a115 100644 --- a/src/Config/ConfigInitializer.php +++ b/src/Config/ConfigInitializer.php @@ -15,31 +15,23 @@ class ConfigInitializer { /** * Config. - * - * @var \Consolidation\Config\Config */ - protected $config; + protected Config $config; /** * Loader. - * - * @var \Consolidation\Config\Loader\YamlConfigLoader */ - protected $loader; + protected YamlConfigLoader $loader; /** * Processor. - * - * @var \Acquia\Drupal\RecommendedSettings\Config\YamlConfigProcessor */ - protected $processor; + protected YamlConfigProcessor $processor; /** * Site. - * - * @var string */ - protected $site; + protected string $site; /** * ConfigInitializer constructor. @@ -96,7 +88,7 @@ protected function loadDefaultConfig(): ConfigInitializer { /** * Add/Overrides the config data. * - * @param array $data + * @param string[] $data * An array of data. */ public function addConfig(array $data): Config { diff --git a/src/Config/SettingsConfig.php b/src/Config/SettingsConfig.php index e8f20c8..638e759 100644 --- a/src/Config/SettingsConfig.php +++ b/src/Config/SettingsConfig.php @@ -13,15 +13,13 @@ class SettingsConfig extends Config { /** * Holds the YamlExpander class object. - * - * @var \Grasmash\YamlExpander\YamlExpander */ - protected $expander; + protected YamlExpander $expander; /** * Config Constructor. * - * @param array $data + * @param string[] $data * Data array, if available. */ public function __construct(array $data = []) { @@ -36,7 +34,7 @@ public function __construct(array $data = []) { * @param string $filename * The file in which placeholders should be expanded. */ - public function replaceFileVariables(string $filename) { + public function replaceFileVariables(string $filename): void { $expanded_contents = $this->expander->expandArrayProperties(file($filename), $this->export()); file_put_contents($filename, implode("", $expanded_contents)); } @@ -51,7 +49,7 @@ public function replaceFileVariables(string $filename) { * * @return $this */ - public function set($key, $value) { + public function set(string $key, mixed $value) { if ($value === 'false') { $value = FALSE; } @@ -83,7 +81,7 @@ public function set($key, $value) { * @return mixed * Mixed. */ - public function get($key, $defaultOverride = NULL) { + public function get(string $key, ?string $defaultOverride = NULL): mixed { $value = parent::get($key, $defaultOverride); // Last ditch effort to expand properties that may not have been processed. diff --git a/src/Config/YamlConfigProcessor.php b/src/Config/YamlConfigProcessor.php index da4dc83..352fcde 100644 --- a/src/Config/YamlConfigProcessor.php +++ b/src/Config/YamlConfigProcessor.php @@ -13,13 +13,13 @@ class YamlConfigProcessor extends ConfigProcessor { /** * Expand dot notated keys. * - * @param array $config + * @param string[] $config * The configuration to be processed. * - * @return array + * @return string[] * The processed configuration */ - protected function preprocess(array $config) { + protected function preprocess(array $config): array { return ArrayManipulator::expandFromDotNotatedKeys(ArrayManipulator::flattenToDotNotatedKeys($config)); } diff --git a/src/Exceptions/SettingsException.php b/src/Exceptions/SettingsException.php index 9f040c6..f06a3c2 100644 --- a/src/Exceptions/SettingsException.php +++ b/src/Exceptions/SettingsException.php @@ -10,7 +10,7 @@ class SettingsException extends \Exception { /** - * Report exception. + * {@inheritdoc} */ public function __construct( $message = "", @@ -26,7 +26,7 @@ public function __construct( /** * Transmit anonymous data about Exception. */ - protected function transmitAnalytics() { + protected function transmitAnalytics(): void { // Create new AcquiaDrupalRecommendedSettingsAnalyticsData class. } diff --git a/src/Helpers/EnvironmentDetector.php b/src/Helpers/EnvironmentDetector.php index 32b221b..7494470 100644 --- a/src/Helpers/EnvironmentDetector.php +++ b/src/Helpers/EnvironmentDetector.php @@ -19,10 +19,8 @@ class EnvironmentDetector extends AcquiaDrupalEnvironmentDetector { * * In the case of multiple environment detectors declaring a CI env name, the * first one wins. - * - * @throws \ReflectionException */ - public static function getCiEnv() { + public static function getCiEnv(): string|bool { if (getenv('PIPELINE_ENV')) { return 'pipelines'; } @@ -68,7 +66,7 @@ public static function isPantheonEnv(): bool { /** * Get Pantheon. */ - public static function getPantheonEnv() { + public static function getPantheonEnv(): array|string|false { return getenv('PANTHEON_ENVIRONMENT'); } @@ -272,6 +270,9 @@ public static function getRepoRoot(): string { /** * List detectable environments and whether they are currently active. * + * @return string[] + * Returns an array of environments. + * * @throws \ReflectionException */ public static function getEnvironments(): array { diff --git a/src/Helpers/Filesystem.php b/src/Helpers/Filesystem.php index 1cc63ad..f78f551 100644 --- a/src/Helpers/Filesystem.php +++ b/src/Helpers/Filesystem.php @@ -12,6 +12,9 @@ class Filesystem { * * @param string $directory * Given directory to load all files. + * + * @return string[] + * Returns an array of files. */ public function loadFilesFromDirectory(string $directory): array { // Check if the directory exists. diff --git a/src/Helpers/HashGenerator.php b/src/Helpers/HashGenerator.php index 470d3ad..fa5fcdb 100644 --- a/src/Helpers/HashGenerator.php +++ b/src/Helpers/HashGenerator.php @@ -20,7 +20,7 @@ class HashGenerator { * * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException */ - public static function generate(string $directory, $io): void { + public static function generate(string $directory, mixed $io): void { try { $fileSystem = new Filesystem(); $hash_salt_file = $directory . '/salt.txt'; diff --git a/src/Plugin.php b/src/Plugin.php index 8ba7384..c88cd84 100644 --- a/src/Plugin.php +++ b/src/Plugin.php @@ -25,24 +25,18 @@ class Plugin implements PluginInterface, EventSubscriberInterface { /** * The Composer service. - * - * @var \Composer\Composer */ - protected $composer; + protected Composer $composer; /** * Composer's I/O service. - * - * @var \Composer\IO\IOInterface */ - protected $io; + protected IOInterface $io; /** * Stores this plugin package object. - * - * @var mixed|null */ - protected $settingsPackage; + protected mixed $settingsPackage = NULL; /** * {@inheritdoc} @@ -82,7 +76,7 @@ public static function getSubscribedEvents() { * @param \Composer\Installer\PackageEvent $event * Event. */ - public function onPostPackageEvent(PackageEvent $event) { + public function onPostPackageEvent(PackageEvent $event): void { $package = $this->getSettingsPackage($event->getOperation()); if ($package) { // By explicitly setting the Acquia Drupal Recommended Settings package, @@ -96,7 +90,7 @@ public function onPostPackageEvent(PackageEvent $event) { * * @throws \Acquia\Drupal\RecommendedSettings\Exceptions\SettingsException */ - public function onPostCmdEvent() { + public function onPostCmdEvent(): void { // Only install the template files, if the drupal-recommended-settings // plugin is installed. if ($this->settingsPackage) { @@ -120,7 +114,7 @@ public function onPostCmdEvent() { * @return mixed|null * Returns mixed or NULL. */ - protected function getSettingsPackage(OperationInterface $operation) { + protected function getSettingsPackage(OperationInterface $operation): mixed { if ($operation instanceof InstallOperation) { $package = $operation->getPackage(); } diff --git a/src/Settings.php b/src/Settings.php index c02b652..73d14fd 100644 --- a/src/Settings.php +++ b/src/Settings.php @@ -24,7 +24,7 @@ class Settings { * to the Acquia Drupal Recommended Settings * docs on how to include settings. */ - private $settingsWarning = <<site; - $this->copyGlobalSettings(); - $this->copySiteSettings(); + try { + $site = $this->site; + $this->copyGlobalSettings(); + $this->copySiteSettings(); - // Create settings.php file from default.settings.php. - $this->fileSystem->copyFile( + // Create settings.php file from default.settings.php. + $this->fileSystem->copyFile( $this->drupalRoot . "/sites/default/default.settings.php", $this->drupalRoot . "/sites/$site/settings.php" - ); - - // Append `require acquia-recommended.settings.php` code block in - // site specific settings.php file (if it does not exist). - $this->appendIfMatchesCollect( - $this->drupalRoot . "/sites/$site/settings.php", - '#vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php#', PHP_EOL . 'require DRUPAL_ROOT . "/../vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php";' . PHP_EOL - ); - $this->appendIfMatchesCollect( - $this->drupalRoot . "/sites/$site/settings.php", - '#Do not include additional settings here#', $this->settingsWarning . PHP_EOL - ); - - // Create local.settings.php file from default.local.settings.php. - $this->fileSystem->copyFile( - $this->drupalRoot . "/sites/$site/settings/default.local.settings.php", - $this->drupalRoot . "/sites/$site/settings/local.settings.php" - ); - - // Replace variables in local.settings.php file. - $config = new ConfigInitializer(); - $config = $config->loadAllConfig(); - if ($overrideData) { - $config->addConfig($overrideData); + ); + + // Append `require acquia-recommended.settings.php` code block in + // site specific settings.php file (if it does not exist). + $this->appendIfMatchesCollect( + $this->drupalRoot . "/sites/$site/settings.php", + '#vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php#', PHP_EOL . 'require DRUPAL_ROOT . "/../vendor/acquia/drupal-recommended-settings/settings/acquia-recommended.settings.php";' . PHP_EOL + ); + $this->appendIfMatchesCollect( + $this->drupalRoot . "/sites/$site/settings.php", + '#Do not include additional settings here#', $this->settingsWarning . PHP_EOL + ); + + // Create local.settings.php file from default.local.settings.php. + $this->fileSystem->copyFile( + $this->drupalRoot . "/sites/$site/settings/default.local.settings.php", + $this->drupalRoot . "/sites/$site/settings/local.settings.php" + ); + + // Replace variables in local.settings.php file. + $config = new ConfigInitializer(); + $config = $config->loadAllConfig(); + if ($overrideData) { + $config->addConfig($overrideData); + } + $settings = new SettingsConfig($config->processConfig()->export()); + $settings->replaceFileVariables($this->drupalRoot . "/sites/$site/settings/local.settings.php"); + + // The config directory for given site must exists, otherwise Drupal will + // add database credentials to settings.php. + $this->fileSystem->ensureDirectoryExists($this->drupalRoot . "/../config/$site"); + } + catch (\Exception $e) { + throw new SettingsException($e); } - $settings = new SettingsConfig($config->processConfig()->export()); - $settings->replaceFileVariables($this->drupalRoot . "/sites/$site/settings/local.settings.php"); - - // The config directory for given site must exists, otherwise Drupal will - // add database credentials to settings.php. - $this->fileSystem->ensureDirectoryExists($this->drupalRoot . "/../config/$site"); - } catch (\Exception $e) { - throw new SettingsException($e); - } } diff --git a/tests/unit/SettingsTest.php b/tests/unit/SettingsTest.php index 72e0b71..52c93e7 100644 --- a/tests/unit/SettingsTest.php +++ b/tests/unit/SettingsTest.php @@ -11,29 +11,21 @@ class SettingsTest extends TestCase { /** * The recommended settings object. - * - * @var string */ - protected $settings; + protected string $settings; /** * The path to drupal webroot directory. - * - * @var string */ - protected $drupalRoot; + protected string $drupalRoot; /** * The symfony file-system object. - * - * @var \Symfony\Component\Filesystem\Filesystem */ protected Filesystem $fileSystem; /** * The symfony file-system object. - * - * @var \Acquia\Drupal\RecommendedSettings\Helpers\Filesystem */ protected DrsFilesystem $drsFileSystem; @@ -64,7 +56,7 @@ public function setUp(): void { /** * Test that the file is created. */ - public function testFileIsCreated() { + public function testFileIsCreated(): void { // Assert that settings/default.global.settings.php file exist. $this->assertTrue($this->fileSystem->exists($this->drupalRoot . '/docroot/sites/settings/default.global.settings.php')); // Assert that settings.php file exist. From a1fd67d52ab61d5bf89322cde1d837a729e5417d Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 13:24:43 +0530 Subject: [PATCH 21/36] ACMS-000: Updated composer dependencies. --- composer.json | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/composer.json b/composer.json index 798e59b..40f23e2 100644 --- a/composer.json +++ b/composer.json @@ -22,17 +22,16 @@ "php": ">=8.1", "composer-plugin-api": "^2", "acquia/drupal-environment-detector": "^1.5.3", - "composer/composer": "^2.2", - "consolidation/config": "^1.0.0 || ^2.0.0", - "dflydev/dot-access-data": "^1.1.0 || ^2 || ^3", - "grasmash/yaml-expander": "^3", + "consolidation/config": "^2.0.0", + "grasmash/yaml-expander": "^3.0", "loophp/phposinfo": "^1.7.1", - "symfony/yaml": "^4.4 || ^5 || ^6" + "symfony/yaml": "^6" }, "require-dev": { "acquia/coding-standards": "^2.0", + "composer/composer": "^2.2", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", - "ergebnis/composer-normalize": "~2.21.0", + "ergebnis/composer-normalize": "^2.30.2", "phpro/grumphp-shim": "^1.5", "phpunit/phpunit": "^9 || ^10" }, From 30242a0b1f6d2c281c658ecbac082547a67b58e3 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 14:15:15 +0530 Subject: [PATCH 22/36] ACMS-000: Fixed failing PHPUnit tests. --- composer.json | 5 +++++ src/Config/SettingsConfig.php | 24 ++++-------------------- tests/{ => src}/unit/SettingsTest.php | 4 ++-- 3 files changed, 11 insertions(+), 22 deletions(-) rename tests/{ => src}/unit/SettingsTest.php (97%) diff --git a/composer.json b/composer.json index 40f23e2..0613af2 100644 --- a/composer.json +++ b/composer.json @@ -42,6 +42,11 @@ "Acquia\\Drupal\\RecommendedSettings\\": "src/" } }, + "autoload-dev": { + "psr-4": { + "Acquia\\Drupal\\RecommendedSettings\\Tests\\": "tests/src" + } + }, "config": { "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true, diff --git a/src/Config/SettingsConfig.php b/src/Config/SettingsConfig.php index 638e759..4f418f1 100644 --- a/src/Config/SettingsConfig.php +++ b/src/Config/SettingsConfig.php @@ -40,16 +40,9 @@ public function replaceFileVariables(string $filename): void { } /** - * Set a config value. - * - * @param string $key - * The config key. - * @param mixed $value - * The config value. - * - * @return $this + * {@inheritdoc} */ - public function set(string $key, mixed $value) { + public function set($key, $value) { if ($value === 'false') { $value = FALSE; } @@ -70,18 +63,9 @@ public function set(string $key, mixed $value) { } /** - * Fetch a configuration value. - * - * @param string $key - * Which config item to look up. - * @param string|null $defaultOverride - * Override usual default value with a different default. Deprecated; - * provide defaults to the config processor instead. - * - * @return mixed - * Mixed. + * {@inheritdoc} */ - public function get(string $key, ?string $defaultOverride = NULL): mixed { + public function get($key, $defaultOverride = NULL) { $value = parent::get($key, $defaultOverride); // Last ditch effort to expand properties that may not have been processed. diff --git a/tests/unit/SettingsTest.php b/tests/src/unit/SettingsTest.php similarity index 97% rename from tests/unit/SettingsTest.php rename to tests/src/unit/SettingsTest.php index 52c93e7..b3bc61c 100644 --- a/tests/unit/SettingsTest.php +++ b/tests/src/unit/SettingsTest.php @@ -1,6 +1,6 @@ Date: Tue, 21 Nov 2023 14:16:27 +0530 Subject: [PATCH 23/36] ACMS-000: Updated README.md. --- README.md | 33 --------------------------------- 1 file changed, 33 deletions(-) diff --git a/README.md b/README.md index f288de3..e80515a 100644 --- a/README.md +++ b/README.md @@ -19,39 +19,6 @@ You can also install this using Composer like so: composer require acquia/drupal-recommended-settings ``` -## Steps to use Acquia Drupal Recommended Settings with BLT. -This plugin works with acquia/blt plugin. - -- Update BLT plugin to latest release. -``` -composer update acquia/blt -W -``` - -- Remove BLT reference from settings.php file located at - ``/docroot/sites/default/settings.php``. -```php -require DRUPAL_ROOT . "/../vendor/acquia/blt/settings/blt.settings.php"; -/** - * IMPORTANT. - * - * Do not include additional settings here. Instead, add them to settings - * included by `blt.settings.php`. See BLT's documentation for more detail. - * - * @link https://docs.acquia.com/blt/ - */ -``` - -- Require Acquia Drupal Recommended Settings plugin using -``` -composer require acquia/drupal-recommended-settings -``` - -- Update `default.local.settings.php` and `local.settings.php` to use the Environment Detector provided by this plugin instead of BLT: -```diff -- use Acquia\Blt\Robo\Common\EnvironmentDetector; -+ use Acquia\Drupal\RecommendedSettings\Helpers\EnvironmentDetector; -``` - # Quick examples. ## Generate settings for a given site. ``` From f170762187f4cc493ae7e16941807d15873a4c15 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 14:24:59 +0530 Subject: [PATCH 24/36] ACMS-000: Remove symfony/yaml dependency as it's already required by grasmash/yaml-expander. --- composer.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 0613af2..5520cf1 100644 --- a/composer.json +++ b/composer.json @@ -24,8 +24,7 @@ "acquia/drupal-environment-detector": "^1.5.3", "consolidation/config": "^2.0.0", "grasmash/yaml-expander": "^3.0", - "loophp/phposinfo": "^1.7.1", - "symfony/yaml": "^6" + "loophp/phposinfo": "^1.7.1" }, "require-dev": { "acquia/coding-standards": "^2.0", From 2b890e5b132ea32e71754a47269ddb53f3d7f07c Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 21 Nov 2023 14:40:32 +0530 Subject: [PATCH 25/36] ACMS-000: Minor issue fixed. --- README.md | 6 +++--- src/Common/ArrayManipulator.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e80515a..179bc3f 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,8 @@ You can also install this using Composer like so: composer require acquia/drupal-recommended-settings ``` -# Quick examples. -## Generate settings for a given site. +# Quick examples +## Generate settings for a given site ``` Date: Tue, 21 Nov 2023 12:48:42 +0000 Subject: [PATCH 26/36] Update dealerdirect/phpcodesniffer-composer-installer requirement Updates the requirements on [dealerdirect/phpcodesniffer-composer-installer](https://github.com/PHPCSStandards/composer-installer) to permit the latest version. - [Release notes](https://github.com/PHPCSStandards/composer-installer/releases) - [Changelog](https://github.com/PHPCSStandards/composer-installer/blob/main/.github_changelog_generator) - [Commits](https://github.com/PHPCSStandards/composer-installer/compare/v0.7.2...v1.0.0) --- updated-dependencies: - dependency-name: dealerdirect/phpcodesniffer-composer-installer dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5520cf1..1cb5d94 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ "require-dev": { "acquia/coding-standards": "^2.0", "composer/composer": "^2.2", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0.0", "ergebnis/composer-normalize": "^2.30.2", "phpro/grumphp-shim": "^1.5", "phpunit/phpunit": "^9 || ^10" From 1fdf9b15ab53814ed26f0d858e5d6a0d458fc799 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 22 Nov 2023 05:04:58 +0000 Subject: [PATCH 27/36] Update phpro/grumphp-shim requirement from ^1.5 to ^2.2 Updates the requirements on [phpro/grumphp-shim](https://github.com/phpro/grumphp-shim) to permit the latest version. - [Release notes](https://github.com/phpro/grumphp-shim/releases) - [Commits](https://github.com/phpro/grumphp-shim/compare/v1.5.0...v2.2.0) --- updated-dependencies: - dependency-name: phpro/grumphp-shim dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5520cf1..8bbdf29 100644 --- a/composer.json +++ b/composer.json @@ -31,7 +31,7 @@ "composer/composer": "^2.2", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.2", "ergebnis/composer-normalize": "^2.30.2", - "phpro/grumphp-shim": "^1.5", + "phpro/grumphp-shim": "^2.2", "phpunit/phpunit": "^9 || ^10" }, "minimum-stability": "dev", From 435e27571706855e4528f030ddfbeb55e428da71 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Fri, 10 Nov 2023 16:20:47 +0530 Subject: [PATCH 28/36] ACMS-1826: Add Acquia global commands in DRS. --- .gitignore | 1 + README.md | 12 ++++++++++++ composer.json | 1 + 3 files changed, 14 insertions(+) diff --git a/.gitignore b/.gitignore index 75b2b4e..2ea3735 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ vendor .idea/ +.DS_Store composer.lock diff --git a/README.md b/README.md index 179bc3f..278cc06 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,18 @@ and deployable on Acquia Cloud. ## Installation +### Include Acquia Global Command in DRS for multisite functionality +To use global command with DRS for multisite functionality please add below in +your root composer.json file. +``` +"repositories": { + "acquia_global_commands": { + "type": "vcs", + "url": "git@github.com:vishalkhode1/acquia_global_commands.git" + } +} +``` + You can also install this using Composer like so: ``` diff --git a/composer.json b/composer.json index 5520cf1..39e5068 100644 --- a/composer.json +++ b/composer.json @@ -21,6 +21,7 @@ "require": { "php": ">=8.1", "composer-plugin-api": "^2", + "acquia/acquia_global_commands": "dev-develop", "acquia/drupal-environment-detector": "^1.5.3", "consolidation/config": "^2.0.0", "grasmash/yaml-expander": "^3.0", From 3774fa44fc1269ae7a7baf6bb5c66558763f8104 Mon Sep 17 00:00:00 2001 From: Deepak Mishra Date: Thu, 28 Dec 2023 18:29:38 +0530 Subject: [PATCH 29/36] ACMS-1896: fix drs deprectaion. --- composer.json | 6 ++++++ settings/site/default.local.settings.php | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index daf805f..9316b98 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,12 @@ "issues": "https://github.com/acquia/drupal-recommended-settings/issues", "docs": "https://docs.acquia.com/drupal-recommended-settings/" }, + "repositories": { + "acquia_global_commands": { + "type": "vcs", + "url": "git@github.com:vishalkhode1/acquia_global_commands.git" + } + }, "require": { "php": ">=8.1", "composer-plugin-api": "^2", diff --git a/settings/site/default.local.settings.php b/settings/site/default.local.settings.php index 280c8f3..0ff57b7 100644 --- a/settings/site/default.local.settings.php +++ b/settings/site/default.local.settings.php @@ -45,8 +45,22 @@ * * @see https://wiki.php.net/rfc/expectations */ -assert_options(ASSERT_ACTIVE, TRUE); -Handle::register(); +/* + * If you are using php 8.3 and above assertions options + * usage is deprecated. + * @see https://www.drupal.org/node/3391611 + * + * If you are using php 8.3 and less + * Drupal\Component\Assertion\Handle is deprecated. + * @see https://www.drupal.org/node/3105918 + */ +if (phpversion() >= 8.3 ) { + ini_set('zend.assertions', 1); +} +else { + assert_options(ASSERT_ACTIVE, TRUE); + assert_options(ASSERT_EXCEPTION, TRUE); +} /** * Show all error messages, with backtrace information. From 24b583180c0c34830685fc5cf710e28955babe0f Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Thu, 4 Jan 2024 17:26:06 +0530 Subject: [PATCH 30/36] ACMS-3462: update Acquia Global Command to ACMS-3462. --- composer.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/composer.json b/composer.json index 9316b98..b7e587a 100644 --- a/composer.json +++ b/composer.json @@ -18,16 +18,10 @@ "issues": "https://github.com/acquia/drupal-recommended-settings/issues", "docs": "https://docs.acquia.com/drupal-recommended-settings/" }, - "repositories": { - "acquia_global_commands": { - "type": "vcs", - "url": "git@github.com:vishalkhode1/acquia_global_commands.git" - } - }, "require": { "php": ">=8.1", "composer-plugin-api": "^2", - "acquia/acquia_global_commands": "dev-develop", + "acquia/acquia_global_commands": "dev-ACMS-3462", "acquia/drupal-environment-detector": "^1.5.3", "consolidation/config": "^2.0.0", "grasmash/yaml-expander": "^3.0", @@ -41,6 +35,12 @@ "phpro/grumphp-shim": "^2.2", "phpunit/phpunit": "^9 || ^10" }, + "repositories": { + "acquia_global_commands": { + "type": "vcs", + "url": "git@github.com:vishalkhode1/acquia_global_commands.git" + } + }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { From cf381e6a230adb23d255db637cf0d498a55f5cd8 Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Thu, 4 Jan 2024 09:59:11 +0530 Subject: [PATCH 31/36] ACMS-3462: Update files-private path. --- settings/filesystem.settings.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings/filesystem.settings.php b/settings/filesystem.settings.php index 85e1456..57accfe 100644 --- a/settings/filesystem.settings.php +++ b/settings/filesystem.settings.php @@ -39,5 +39,5 @@ * This is always set and exposed by the Drupal Kernel. */ // phpcs:ignore - $settings['file_private_path'] = "sites/" . EnvironmentDetector::getSiteName($site_path) . "/files-private"; + $settings['file_private_path'] = EnvironmentDetector::getAhFilesRoot() . "/sites/" . EnvironmentDetector::getSiteName($site_path) . "/files-private"; } From a38526dc5a194705ae9dac517871c4e57c3df74a Mon Sep 17 00:00:00 2001 From: Rajeshreeputra Date: Thu, 11 Jan 2024 09:46:27 +0530 Subject: [PATCH 32/36] ACMS-3462: Update acquia global commands to dev-develop. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index b7e587a..2f17d6f 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,7 @@ "require": { "php": ">=8.1", "composer-plugin-api": "^2", - "acquia/acquia_global_commands": "dev-ACMS-3462", + "acquia/acquia_global_commands": "dev-develop", "acquia/drupal-environment-detector": "^1.5.3", "consolidation/config": "^2.0.0", "grasmash/yaml-expander": "^3.0", From 18f9c5b48119069ea36d3b05e4f8c175838bb9e6 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 16 Jan 2024 10:38:21 +0530 Subject: [PATCH 33/36] ACMS-000: Remove global drush command. --- composer.json | 7 ------- 1 file changed, 7 deletions(-) diff --git a/composer.json b/composer.json index 2f17d6f..68530f2 100644 --- a/composer.json +++ b/composer.json @@ -21,7 +21,6 @@ "require": { "php": ">=8.1", "composer-plugin-api": "^2", - "acquia/acquia_global_commands": "dev-develop", "acquia/drupal-environment-detector": "^1.5.3", "consolidation/config": "^2.0.0", "grasmash/yaml-expander": "^3.0", @@ -35,12 +34,6 @@ "phpro/grumphp-shim": "^2.2", "phpunit/phpunit": "^9 || ^10" }, - "repositories": { - "acquia_global_commands": { - "type": "vcs", - "url": "git@github.com:vishalkhode1/acquia_global_commands.git" - } - }, "minimum-stability": "dev", "prefer-stable": true, "autoload": { From 81e1c0220a45d106a47861e8d05cb04962869214 Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Tue, 16 Jan 2024 22:27:32 +0530 Subject: [PATCH 34/36] ACMS-000: Add the Multisite global drush command. --- src/Drush/Commands/HooksDrushCommands.php | 28 ++++ src/Drush/Commands/MultisiteDrushCommands.php | 147 ++++++++++++++++++ src/Drush/Traits/SiteUriTrait.php | 51 ++++++ 3 files changed, 226 insertions(+) create mode 100644 src/Drush/Commands/HooksDrushCommands.php create mode 100644 src/Drush/Commands/MultisiteDrushCommands.php create mode 100644 src/Drush/Traits/SiteUriTrait.php diff --git a/src/Drush/Commands/HooksDrushCommands.php b/src/Drush/Commands/HooksDrushCommands.php new file mode 100644 index 0000000..3832e51 --- /dev/null +++ b/src/Drush/Commands/HooksDrushCommands.php @@ -0,0 +1,28 @@ +get('bootstrap.manager') + ); + } + + /** + * Execute code before pre-validate site:install. + */ + #[CLI\Hook(type: HookManager::PRE_ARGUMENT_VALIDATOR, target: 'site-install')] + public function preValidateSiteInstall(CommandData $commandData): void { + if ($this->validateGenerateSettings($commandData)) { + $uri = $commandData->input()->getOption('uri') ?? 'default'; + $sitesSubdir = $this->getSitesSubdirFromUri(DRUPAL_ROOT, $uri); + $commandData->input()->setOption('sites-subdir', $sitesSubdir); + $options = $commandData->options(); + $this->bootstrapManager->setUri('http://' . $sitesSubdir); + + // Try to get any already configured database information. + $this->bootstrapManager->bootstrapMax(DrupalBootLevels::CONFIGURATION, $commandData->annotationData()); + + // By default, bootstrap manager boot site from default/setting.php + // hence remove the database connection if site is other than default. + if (($sitesSubdir && "sites/$sitesSubdir" !== $this->bootstrapManager->bootstrap()->confpath())) { + Database::removeConnection('default'); + $db = [ + 'database' => 'drupal', + 'username' => 'drupal', + 'password' => 'drupal', + 'host' => 'localhost', + 'port' => '3306', + ]; + $dbSpec = [ + "drupal" => ["db" => $db] + ]; + if (!($options['db-url'])) { + if (EnvironmentDetector::isLocalEnv()) { + $db = $this->askDbCredentials($sitesSubdir, $db); + $dbSpec["drupal"]["db"] = $db; + } + $commandData->input()->setOption("db-url", + "mysql://" . $db['username'] . ":" . $db['password'] . "@" . $db['host'] . ":" . $db['port'] . "/" . $db['database'] + ); + } + $settings = new Settings(DRUPAL_ROOT, $sitesSubdir); + try { + $settings->generate($dbSpec); + $this->postGenerateSettings($commandData); + } + catch (SettingsException $e) { + $this->io()->warning($e->getMessage()); + } + } + } + } + + /** + * Function to check if multisite should be setup or not. + */ + protected function validateGenerateSettings(CommandData $commandData): bool { + $handlers = $this->getCustomEventHandlers(self::VALIDATE_GENERATE_SETTINGS); + $status = TRUE; + foreach ($handlers as $handler) { + $status = $handler($commandData); + if (!$status) { + return FALSE; + } + } + return $status; + } + + /** + * Function to run if post generation of settings.php. + */ + protected function postGenerateSettings(CommandData $commandData): void { + $handlers = $this->getCustomEventHandlers(self::POST_GENERATE_SETTINGS); + foreach ($handlers as $handler) { + $handler($commandData); + } + } + + /** + * Get local database specs. + * + * @param string $site_name + * The site name. + * + * @return array + * The database specs. + */ + private function askDbCredentials(string $site_name, array $defaultCredentials): array { + $shouldAsk = $this->io()->confirm(dt("Would you like to configure the local database credentials?")); + $credentials = $defaultCredentials; + if ($shouldAsk) { + $credentials['database'] = $this->io()->ask("Local database name", $site_name); + $credentials['username'] = $this->io()->ask("Local database user", $credentials['username']); + $credentials['password'] = $this->io()->ask("Local database password", $credentials['password']); + $credentials['host'] = $this->io()->ask("Local database host", $credentials['host']); + $credentials['port'] = $this->io()->ask("Local database port", $credentials['port']); + } + return $credentials; + } + +} diff --git a/src/Drush/Traits/SiteUriTrait.php b/src/Drush/Traits/SiteUriTrait.php new file mode 100644 index 0000000..f9f26a6 --- /dev/null +++ b/src/Drush/Traits/SiteUriTrait.php @@ -0,0 +1,51 @@ + Date: Wed, 10 Jan 2024 23:41:57 +0530 Subject: [PATCH 35/36] ACMS-3478: Update README.md file. --- README.md | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 278cc06..72e23e6 100644 --- a/README.md +++ b/README.md @@ -12,23 +12,17 @@ It allows your websites to be easily installed in both Acquia Cloud IDE & local and deployable on Acquia Cloud. ## Installation +### Install using Composer -### Include Acquia Global Command in DRS for multisite functionality -To use global command with DRS for multisite functionality please add below in -your root composer.json file. ``` -"repositories": { - "acquia_global_commands": { - "type": "vcs", - "url": "git@github.com:vishalkhode1/acquia_global_commands.git" - } -} +composer require acquia/drupal-recommended-settings ``` +### Multi-site features with Acquia DRS +Acquia Global Commands comes in role to setup multi-site with Drupal Recommended Settings. -You can also install this using Composer like so: - +To setup a multi-site, please run below command. ``` -composer require acquia/drupal-recommended-settings +drush site:install --uri site1 ``` # Quick examples @@ -77,7 +71,7 @@ $settings = new Settings(DRUPAL_ROOT, $siteUri); $dbSpec = [ 'drupal' => [ 'db' => [ - 'database' => 'drupal', + 'database' => 'drupal', // In case of multi-site database name is replaced with the site name. 'username' => 'drupal', 'password' => 'drupal', 'host' => 'localhost', From 01b51ac21395c5b8f874cb19cc53096389db25fa Mon Sep 17 00:00:00 2001 From: Vishal Khode Date: Wed, 17 Jan 2024 18:10:18 +0530 Subject: [PATCH 36/36] ACMS-3478: Updated README.md file. --- README.md | 18 ++++++--- examples/example-drush-command/README.md | 2 + examples/example-drush-command/composer.json | 22 +++++++++++ .../Drush/Commands/ExampleDrushCommands.php | 37 +++++++++++++++++++ 4 files changed, 73 insertions(+), 6 deletions(-) create mode 100644 examples/example-drush-command/README.md create mode 100644 examples/example-drush-command/composer.json create mode 100644 examples/example-drush-command/src/Drush/Commands/ExampleDrushCommands.php diff --git a/README.md b/README.md index 72e23e6..8ebbfdd 100644 --- a/README.md +++ b/README.md @@ -12,19 +12,23 @@ It allows your websites to be easily installed in both Acquia Cloud IDE & local and deployable on Acquia Cloud. ## Installation -### Install using Composer +### Install using Composer ``` composer require acquia/drupal-recommended-settings ``` ### Multi-site features with Acquia DRS -Acquia Global Commands comes in role to setup multi-site with Drupal Recommended Settings. - -To setup a multi-site, please run below command. +The Drupal Recommended Settings offer the multi-site feature out of the box. +To configure a multi-site, run the following command, and the plugin will +automatically generate the settings.php in the backend. ``` drush site:install --uri site1 ``` +The plugin offers various events that allow you to implement custom logic based +on when these events are triggered. You can find the examples of such +implementations from [here](examples). + # Quick examples ## Generate settings for a given site ``` @@ -45,7 +49,8 @@ $settings = new Settings(DRUPAL_ROOT, $siteUri); try { // Call generate method. $settings->generate(); -} catch (SettingsException $e) { +} +catch (SettingsException $e) { echo $e->getMessage(); } ``` @@ -83,7 +88,8 @@ $dbSpec = [ try { // Call generate method passing database details. $settings->generate($dbSpec); -} catch (SettingsException $e) { +} +catch (SettingsException $e) { echo $e->getMessage(); } ``` diff --git a/examples/example-drush-command/README.md b/examples/example-drush-command/README.md new file mode 100644 index 0000000..14e8dde --- /dev/null +++ b/examples/example-drush-command/README.md @@ -0,0 +1,2 @@ +## About +Provides an example implemention of events provided by DRS. diff --git a/examples/example-drush-command/composer.json b/examples/example-drush-command/composer.json new file mode 100644 index 0000000..7c34f63 --- /dev/null +++ b/examples/example-drush-command/composer.json @@ -0,0 +1,22 @@ +{ + "name": "example/example-drush-command", + "description": "Example custom drush commands.", + "keywords": [ + "drush", + "drupal" + ], + "license": "GPL-2.0-or-later", + "require": { + "acquia/drupal-recommended-settings": "*" + }, + "autoload": { + "psr-4": { + "Example\\": "src" + } + }, + "config": { + "allow-plugins": { + "acquia/drupal-recommended-settings": true + } + } +} \ No newline at end of file diff --git a/examples/example-drush-command/src/Drush/Commands/ExampleDrushCommands.php b/examples/example-drush-command/src/Drush/Commands/ExampleDrushCommands.php new file mode 100644 index 0000000..3e72bf9 --- /dev/null +++ b/examples/example-drush-command/src/Drush/Commands/ExampleDrushCommands.php @@ -0,0 +1,37 @@ +input()->getOption("uri") == "site1") { + return FALSE; + } + return TRUE; + } + + /** + * Display successful message, after settings files are generated/updated. + */ + #[CLI\Hook(type: HookManager::ON_EVENT, target: MultisiteDrushCommands::POST_GENERATE_SETTINGS)] + public function showSuccessMessage(CommandData $commandData): void { + $uri = $commandData->input()->getOption("uri"); + $this->io()->info("The settings.php generated successfully for site `" . $uri . "`."); + } + +}