diff --git a/.drevops/.ahoy.yml b/.drevops/.ahoy.yml
index e820e762b..40d31f7f9 100644
--- a/.drevops/.ahoy.yml
+++ b/.drevops/.ahoy.yml
@@ -10,7 +10,6 @@ commands:
ahoy lint-dockerfiles
ahoy lint-spelling
ahoy lint-docs
- ahoy lint-devtool
lint-scripts:
cmd: ./tests/lint.scripts.sh
@@ -24,15 +23,11 @@ commands:
lint-docs:
cmd: ahoy docs lint
- lint-devtool:
- cmd: ahoy devtool lint
-
test:
name: Test DrevOps project.
cmd: |
ahoy test-common
ahoy test-docs
- ahoy test-devtool
test-common:
cmd: ./tests/test.common.sh
@@ -46,9 +41,6 @@ commands:
test-docs:
cmd: ahoy docs build && ahoy docs test
- test-devtool:
- cmd: ahoy devtool test
-
# If there are changes to the fixtures - this command will re-run twice reporting error the first time.
update-fixtures:
cmd: |
@@ -60,12 +52,6 @@ commands:
usage: Custom docs commands.
cmd: ahoy -f "docs/.ahoy.yml" "$@"
- devtool:
- usage: Custom devtool commands.
- cmd: |
- [ ! -d "./devtool/vendor" ] && composer --working-dir=devtool install -n --ansi --no-progress --no-interaction --no-suggest --prefer-dist --optimize-autoloader
- composer --working-dir=devtool "$@"
-
entrypoint:
- bash
- "-c"
diff --git a/.drevops/devtool/.gitignore b/.drevops/devtool/.gitignore
deleted file mode 100644
index 07b6ae07c..000000000
--- a/.drevops/devtool/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# To ignore OS temporary files use global .gitignore
-# https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer
-
-.build
-/.coverage-html
-/.phpunit.cache
-/cobertura.xml
-/vendor
diff --git a/.drevops/devtool/README.md b/.drevops/devtool/README.md
deleted file mode 100644
index 0250ffa73..000000000
--- a/.drevops/devtool/README.md
+++ /dev/null
@@ -1,8 +0,0 @@
-
devtool
-
-A development tool for DrevOps project.
-
-
-## Usage
-
- vendor/bin/devtool
diff --git a/.drevops/devtool/composer.json b/.drevops/devtool/composer.json
deleted file mode 100644
index fede0286d..000000000
--- a/.drevops/devtool/composer.json
+++ /dev/null
@@ -1,69 +0,0 @@
-{
- "name": "drevops/devtool",
- "type": "library",
- "description": "A development tool for DrevOps project.",
- "license": "GPL-2.0-or-later",
- "authors": [
- {
- "name": "Alex Skrypnyk",
- "email": "alex@drevops.com",
- "role": "Maintainer"
- }
- ],
- "require": {
- "php": ">=8.2",
- "symfony/console": "^6.3",
- "symfony/http-client": "^6.3",
- "composer/composer": "^2.6",
- "composer/semver": "^3.4"
- },
- "require-dev": {
- "phpunit/phpunit": "^10",
- "dealerdirect/phpcodesniffer-composer-installer": "^1",
- "drupal/coder": "^8.3",
- "phpmd/phpmd": "^2.13",
- "phpstan/phpstan": "^1.10",
- "mikey179/vfsstream": "^1.6",
- "opis/closure": "^3.6",
- "helmich/phpunit-json-assert": "^3.5",
- "rector/rector": "^0.19"
- },
- "autoload": {
- "psr-4": {
- "DrevOps\\DevTool\\": "src/"
- },
- "classmap": [
- "src/Scaffold"
- ]
- },
- "autoload-dev": {
- "psr-4": {
- "DrevOps\\DevTool\\Tests\\": "tests/phpunit"
- },
- "classmap": [
- "tests/phpunit"
- ]
- },
- "config": {
- "allow-plugins": {
- "dealerdirect/phpcodesniffer-composer-installer": true,
- "bamarni/composer-bin-plugin": true
- }
- },
- "scripts": {
- "lint": [
- "phpcs",
- "phpstan",
- "rector --dry-run"
- ],
- "lint-fix": [
- "rector",
- "phpcbf"
- ],
- "test": "phpunit --no-coverage",
- "test:coverage": "XDEBUG_MODE=coverage phpunit"
- },
- "bin": [
- "devtool"
- ]
-}
diff --git a/.drevops/devtool/composer.lock b/.drevops/devtool/composer.lock
deleted file mode 100644
index 7e0c6be6a..000000000
--- a/.drevops/devtool/composer.lock
+++ /dev/null
@@ -1,5115 +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": "3f85583a1e70567fbe18dec8954ebb7a",
- "packages": [
- {
- "name": "composer/ca-bundle",
- "version": "1.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/ca-bundle.git",
- "reference": "b66d11b7479109ab547f9405b97205640b17d385"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/ca-bundle/zipball/b66d11b7479109ab547f9405b97205640b17d385",
- "reference": "b66d11b7479109ab547f9405b97205640b17d385",
- "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 || ^7.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.4.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-12-18T12:05:55+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.7.1",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/composer.git",
- "reference": "aaf6ed5ccd27c23f79a545e351b4d7842a99d0bc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/aaf6ed5ccd27c23f79a545e351b4d7842a99d0bc",
- "reference": "aaf6ed5ccd27c23f79a545e351b4d7842a99d0bc",
- "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.2.5",
- "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 || ^3",
- "seld/jsonlint": "^1.4",
- "seld/phar-utils": "^1.2",
- "seld/signal-handler": "^2.0",
- "symfony/console": "^5.4.11 || ^6.0.11 || ^7",
- "symfony/filesystem": "^5.4 || ^6.0 || ^7",
- "symfony/finder": "^5.4 || ^6.0 || ^7",
- "symfony/polyfill-php73": "^1.24",
- "symfony/polyfill-php80": "^1.24",
- "symfony/polyfill-php81": "^1.24",
- "symfony/process": "^5.4 || ^6.0 || ^7"
- },
- "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.4.1 || ^7.0.1"
- },
- "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.7-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",
- "security": "https://github.com/composer/composer/security/policy",
- "source": "https://github.com/composer/composer/tree/2.7.1"
- },
- "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": "2024-02-09T14:26:28+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.1",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/pcre.git",
- "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
- "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
- "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.1"
- },
- "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-10-11T07:11:09+00:00"
- },
- {
- "name": "composer/semver",
- "version": "3.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
- "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": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.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-08-31T09:50:34+00:00"
- },
- {
- "name": "composer/spdx-licenses",
- "version": "1.5.8",
- "source": {
- "type": "git",
- "url": "https://github.com/composer/spdx-licenses.git",
- "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
- "reference": "560bdcf8deb88ae5d611c80a2de8ea9d0358cc0a",
- "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": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/spdx-licenses/issues",
- "source": "https://github.com/composer/spdx-licenses/tree/1.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-11-20T07:44:33+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": "justinrainbow/json-schema",
- "version": "v5.2.13",
- "source": {
- "type": "git",
- "url": "https://github.com/justinrainbow/json-schema.git",
- "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793",
- "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793",
- "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/v5.2.13"
- },
- "time": "2023-09-26T02:20:38+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/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": "v3.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/reactphp/promise.git",
- "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c",
- "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.0"
- },
- "require-dev": {
- "phpstan/phpstan": "1.10.39 || 1.4.10",
- "phpunit/phpunit": "^9.6 || ^7.5"
- },
- "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/v3.1.0"
- },
- "funding": [
- {
- "url": "https://opencollective.com/reactphp",
- "type": "open_collective"
- }
- ],
- "time": "2023-11-16T16:21:57+00:00"
- },
- {
- "name": "seld/jsonlint",
- "version": "1.10.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9bb7db07b5d66d90f6ebf542f09fc67d800e5259",
- "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259",
- "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": "https://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.2"
- },
- "funding": [
- {
- "url": "https://github.com/Seldaek",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-07T12:57:50+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.2",
- "source": {
- "type": "git",
- "url": "https://github.com/Seldaek/signal-handler.git",
- "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98",
- "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98",
- "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.2"
- },
- "time": "2023-09-03T09:24:00+00:00"
- },
- {
- "name": "symfony/console",
- "version": "v6.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/console.git",
- "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
- "reference": "2aaf83b4de5b9d43b93e4aec6f2f8b676f7c567e",
- "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|^7.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|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/var-dumper": "^5.4|^6.0|^7.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.4.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": "2024-01-23T14:51:35+00:00"
- },
- {
- "name": "symfony/deprecation-contracts",
- "version": "v3.4.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.4.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": "v7.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/filesystem.git",
- "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12",
- "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "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/v7.0.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": "2024-01-23T15:02:46+00:00"
- },
- {
- "name": "symfony/finder",
- "version": "v7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "symfony/filesystem": "^6.4|^7.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/v7.0.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-10-31T17:59:56+00:00"
- },
- {
- "name": "symfony/http-client",
- "version": "v6.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client.git",
- "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/a9034bc119fab8238f76cf49c770f3135f3ead86",
- "reference": "a9034bc119fab8238f76cf49c770f3135f3ead86",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/log": "^1|^2|^3",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "^3",
- "symfony/service-contracts": "^2.5|^3"
- },
- "conflict": {
- "php-http/discovery": "<1.15",
- "symfony/http-foundation": "<6.3"
- },
- "provide": {
- "php-http/async-client-implementation": "*",
- "php-http/client-implementation": "*",
- "psr/http-client-implementation": "1.0",
- "symfony/http-client-implementation": "3.0"
- },
- "require-dev": {
- "amphp/amp": "^2.5",
- "amphp/http-client": "^4.2.1",
- "amphp/http-tunnel": "^1.0",
- "amphp/socket": "^1.1",
- "guzzlehttp/promises": "^1.4",
- "nyholm/psr7": "^1.0",
- "php-http/httplug": "^1.0|^2.0",
- "psr/http-client": "^1.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\HttpClient\\": ""
- },
- "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 powerful methods to fetch HTTP resources synchronously or asynchronously",
- "homepage": "https://symfony.com",
- "keywords": [
- "http"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client/tree/v6.4.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": "2024-01-29T15:01:07+00:00"
- },
- {
- "name": "symfony/http-client-contracts",
- "version": "v3.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "1ee70e699b41909c209a0c930f11034b93578654"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654",
- "reference": "1ee70e699b41909c209a0c930f11034b93578654",
- "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": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- },
- "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 HTTP clients",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.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-07-30T20:28:31+00:00"
- },
- {
- "name": "symfony/polyfill-ctype",
- "version": "v1.29.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4",
- "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-ctype": "*"
- },
- "suggest": {
- "ext-ctype": "For best performance"
- },
- "type": "library",
- "extra": {
- "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.29.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": "2024-01-29T20:11:03+00:00"
- },
- {
- "name": "symfony/polyfill-intl-grapheme",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "875e90aeea2777b6f135677f618529449334a612"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
- "reference": "875e90aeea2777b6f135677f618529449334a612",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-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.28.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-01-26T09:26:14+00:00"
- },
- {
- "name": "symfony/polyfill-intl-normalizer",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
- "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-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.28.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-01-26T09:26:14+00:00"
- },
- {
- "name": "symfony/polyfill-mbstring",
- "version": "v1.29.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
- "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "provide": {
- "ext-mbstring": "*"
- },
- "suggest": {
- "ext-mbstring": "For best performance"
- },
- "type": "library",
- "extra": {
- "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.29.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": "2024-01-29T20:11:03+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.29.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2",
- "reference": "21bd091060673a1177ae842c0ef8fe30893114d2",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "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.29.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": "2024-01-29T20:11:03+00:00"
- },
- {
- "name": "symfony/polyfill-php80",
- "version": "v1.29.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
- "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "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.29.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": "2024-01-29T20:11:03+00:00"
- },
- {
- "name": "symfony/polyfill-php81",
- "version": "v1.29.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d",
- "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "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.29.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": "2024-01-29T20:11:03+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v7.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "937a195147e0c27b2759ade834169ed006d0bc74"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74",
- "reference": "937a195147e0c27b2759ade834169ed006d0bc74",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "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/v7.0.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": "2024-01-23T15:02:46+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v3.4.1",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0",
- "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "psr/container": "^1.1|^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.4.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-12-26T14:02:43+00:00"
- },
- {
- "name": "symfony/string",
- "version": "v7.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/string.git",
- "reference": "524aac4a280b90a4420d8d6a040718d0586505ac"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac",
- "reference": "524aac4a280b90a4420d8d6a040718d0586505ac",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "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": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
- "symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.4|^7.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/v7.0.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": "2024-01-29T15:41:16+00:00"
- }
- ],
- "packages-dev": [
- {
- "name": "dealerdirect/phpcodesniffer-composer-installer",
- "version": "v1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHPCSStandards/composer-installer.git",
- "reference": "4be43904336affa5c2f70744a348312336afd0da"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da",
- "reference": "4be43904336affa5c2f70744a348312336afd0da",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.0 || ^2.0",
- "php": ">=5.4",
- "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
- },
- "require-dev": {
- "composer/composer": "*",
- "ext-json": "*",
- "ext-zip": "*",
- "php-parallel-lint/php-parallel-lint": "^1.3.1",
- "phpcompatibility/php-compatibility": "^9.0",
- "yoast/phpunit-polyfills": "^1.0"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
- },
- "autoload": {
- "psr-4": {
- "PHPCSStandards\\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/PHPCSStandards/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/PHPCSStandards/composer-installer/issues",
- "source": "https://github.com/PHPCSStandards/composer-installer"
- },
- "time": "2023-01-05T11:28:13+00:00"
- },
- {
- "name": "drupal/coder",
- "version": "8.3.23",
- "source": {
- "type": "git",
- "url": "https://github.com/pfrenssen/coder.git",
- "reference": "1a1613d83c08dac5be593f2775c9eccae1b41805"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pfrenssen/coder/zipball/1a1613d83c08dac5be593f2775c9eccae1b41805",
- "reference": "1a1613d83c08dac5be593f2775c9eccae1b41805",
- "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": "2024-01-27T18:13:12+00:00"
- },
- {
- "name": "helmich/phpunit-json-assert",
- "version": "v3.5.1",
- "source": {
- "type": "git",
- "url": "https://github.com/martin-helmich/phpunit-json-assert.git",
- "reference": "5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c",
- "reference": "5a3a53e46f4d1f1b324c5cc2e33d87ad2d37260c",
- "shasum": ""
- },
- "require": {
- "justinrainbow/json-schema": "^5.0",
- "php": "^8.0",
- "softcreatr/jsonpath": "^0.8"
- },
- "conflict": {
- "phpunit/phpunit": "<8.0 || >= 11.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Helmich\\JsonAssert\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Martin Helmich",
- "email": "m.helmich@mittwald.de"
- }
- ],
- "description": "PHPUnit assertions for JSON documents",
- "support": {
- "issues": "https://github.com/martin-helmich/phpunit-json-assert/issues",
- "source": "https://github.com/martin-helmich/phpunit-json-assert/tree/v3.5.1"
- },
- "funding": [
- {
- "url": "https://donate.helmich.me",
- "type": "custom"
- },
- {
- "url": "https://github.com/martin-helmich",
- "type": "github"
- }
- ],
- "time": "2023-03-03T14:09:38+00:00"
- },
- {
- "name": "mikey179/vfsstream",
- "version": "v1.6.11",
- "source": {
- "type": "git",
- "url": "https://github.com/bovigo/vfsStream.git",
- "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
- "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.5|^5.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.6.x-dev"
- }
- },
- "autoload": {
- "psr-0": {
- "org\\bovigo\\vfs\\": "src/main/php"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Frank Kleine",
- "homepage": "http://frankkleine.de/",
- "role": "Developer"
- }
- ],
- "description": "Virtual file system to mock the real file system in unit tests.",
- "homepage": "http://vfs.bovigo.org/",
- "support": {
- "issues": "https://github.com/bovigo/vfsStream/issues",
- "source": "https://github.com/bovigo/vfsStream/tree/master",
- "wiki": "https://github.com/bovigo/vfsStream/wiki"
- },
- "time": "2022-02-23T02:02:42+00:00"
- },
- {
- "name": "myclabs/deep-copy",
- "version": "1.11.1",
- "source": {
- "type": "git",
- "url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
- "shasum": ""
- },
- "require": {
- "php": "^7.1 || ^8.0"
- },
- "conflict": {
- "doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
- },
- "require-dev": {
- "doctrine/collections": "^1.6.8",
- "doctrine/common": "^2.13.3 || ^3.2.2",
- "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/DeepCopy/deep_copy.php"
- ],
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Create deep copies (clones) of your objects",
- "keywords": [
- "clone",
- "copy",
- "duplicate",
- "object",
- "object graph"
- ],
- "support": {
- "issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
- }
- ],
- "time": "2023-03-08T13:26:56+00:00"
- },
- {
- "name": "nikic/php-parser",
- "version": "v5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
- "reference": "4a21235f7e56e713259a6f76bf4b5ea08502b9dc",
- "shasum": ""
- },
- "require": {
- "ext-ctype": "*",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": ">=7.4"
- },
- "require-dev": {
- "ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
- },
- "bin": [
- "bin/php-parse"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "5.0-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PhpParser\\": "lib/PhpParser"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Nikita Popov"
- }
- ],
- "description": "A PHP parser written in PHP",
- "keywords": [
- "parser",
- "php"
- ],
- "support": {
- "issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.0"
- },
- "time": "2024-01-07T17:17:35+00:00"
- },
- {
- "name": "opis/closure",
- "version": "3.6.3",
- "source": {
- "type": "git",
- "url": "https://github.com/opis/closure.git",
- "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad",
- "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad",
- "shasum": ""
- },
- "require": {
- "php": "^5.4 || ^7.0 || ^8.0"
- },
- "require-dev": {
- "jeremeamia/superclosure": "^2.0",
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.6.x-dev"
- }
- },
- "autoload": {
- "files": [
- "functions.php"
- ],
- "psr-4": {
- "Opis\\Closure\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marius Sarca",
- "email": "marius.sarca@gmail.com"
- },
- {
- "name": "Sorin Sarca",
- "email": "sarca_sorin@hotmail.com"
- }
- ],
- "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.",
- "homepage": "https://opis.io/closure",
- "keywords": [
- "anonymous functions",
- "closure",
- "function",
- "serializable",
- "serialization",
- "serialize"
- ],
- "support": {
- "issues": "https://github.com/opis/closure/issues",
- "source": "https://github.com/opis/closure/tree/3.6.3"
- },
- "time": "2022-01-27T09:35:39+00:00"
- },
- {
- "name": "pdepend/pdepend",
- "version": "2.16.2",
- "source": {
- "type": "git",
- "url": "https://github.com/pdepend/pdepend.git",
- "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
- "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.7",
- "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
- "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
- "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
- "symfony/polyfill-mbstring": "^1.19"
- },
- "require-dev": {
- "easy-doc/easy-doc": "0.0.0|^1.2.3",
- "gregwar/rst": "^1.0",
- "squizlabs/php_codesniffer": "^2.0.0"
- },
- "bin": [
- "src/bin/pdepend"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "PDepend\\": "src/main/php/PDepend"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "Official version of pdepend to be handled with Composer",
- "keywords": [
- "PHP Depend",
- "PHP_Depend",
- "dev",
- "pdepend"
- ],
- "support": {
- "issues": "https://github.com/pdepend/pdepend/issues",
- "source": "https://github.com/pdepend/pdepend/tree/2.16.2"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
- "type": "tidelift"
- }
- ],
- "time": "2023-12-17T18:09:59+00:00"
- },
- {
- "name": "phar-io/manifest",
- "version": "2.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/manifest.git",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-phar": "*",
- "ext-xmlwriter": "*",
- "phar-io/version": "^3.0.1",
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
- "support": {
- "issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.3"
- },
- "time": "2021-07-20T11:28:43+00:00"
- },
- {
- "name": "phar-io/version",
- "version": "3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/phar-io/version.git",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Heuer",
- "email": "sebastian@phpeople.de",
- "role": "Developer"
- },
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "Developer"
- }
- ],
- "description": "Library for handling version information and constraints",
- "support": {
- "issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.2.1"
- },
- "time": "2022-02-21T01:04:05+00:00"
- },
- {
- "name": "phpmd/phpmd",
- "version": "2.15.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpmd/phpmd.git",
- "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0",
- "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0",
- "shasum": ""
- },
- "require": {
- "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
- "ext-xml": "*",
- "pdepend/pdepend": "^2.16.1",
- "php": ">=5.3.9"
- },
- "require-dev": {
- "easy-doc/easy-doc": "0.0.0 || ^1.3.2",
- "ext-json": "*",
- "ext-simplexml": "*",
- "gregwar/rst": "^1.0",
- "mikey179/vfsstream": "^1.6.8",
- "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
- },
- "bin": [
- "src/bin/phpmd"
- ],
- "type": "library",
- "autoload": {
- "psr-0": {
- "PHPMD\\": "src/main/php"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Manuel Pichler",
- "email": "github@manuel-pichler.de",
- "homepage": "https://github.com/manuelpichler",
- "role": "Project Founder"
- },
- {
- "name": "Marc Würth",
- "email": "ravage@bluewin.ch",
- "homepage": "https://github.com/ravage84",
- "role": "Project Maintainer"
- },
- {
- "name": "Other contributors",
- "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
- "role": "Contributors"
- }
- ],
- "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
- "homepage": "https://phpmd.org/",
- "keywords": [
- "dev",
- "mess detection",
- "mess detector",
- "pdepend",
- "phpmd",
- "pmd"
- ],
- "support": {
- "irc": "irc://irc.freenode.org/phpmd",
- "issues": "https://github.com/phpmd/phpmd/issues",
- "source": "https://github.com/phpmd/phpmd/tree/2.15.0"
- },
- "funding": [
- {
- "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
- "type": "tidelift"
- }
- ],
- "time": "2023-12-11T08:22:20+00:00"
- },
- {
- "name": "phpstan/phpdoc-parser",
- "version": "1.25.0",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240",
- "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240",
- "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.25.0"
- },
- "time": "2024-01-04T17:06:16+00:00"
- },
- {
- "name": "phpstan/phpstan",
- "version": "1.10.58",
- "source": {
- "type": "git",
- "url": "https://github.com/phpstan/phpstan.git",
- "reference": "a23518379ec4defd9e47cbf81019526861623ec2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2",
- "reference": "a23518379ec4defd9e47cbf81019526861623ec2",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0"
- },
- "conflict": {
- "phpstan/phpstan-shim": "*"
- },
- "bin": [
- "phpstan",
- "phpstan.phar"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "PHPStan - PHP Static Analysis Tool",
- "keywords": [
- "dev",
- "static analysis"
- ],
- "support": {
- "docs": "https://phpstan.org/user-guide/getting-started",
- "forum": "https://github.com/phpstan/phpstan/discussions",
- "issues": "https://github.com/phpstan/phpstan/issues",
- "security": "https://github.com/phpstan/phpstan/security/policy",
- "source": "https://github.com/phpstan/phpstan-src"
- },
- "funding": [
- {
- "url": "https://github.com/ondrejmirtes",
- "type": "github"
- },
- {
- "url": "https://github.com/phpstan",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-12T20:02:57+00:00"
- },
- {
- "name": "phpunit/php-code-coverage",
- "version": "10.1.11",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "78c3b7625965c2513ee96569a4dbb62601784145"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145",
- "reference": "78c3b7625965c2513ee96569a4dbb62601784145",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-libxml": "*",
- "ext-xmlwriter": "*",
- "nikic/php-parser": "^4.18 || ^5.0",
- "php": ">=8.1",
- "phpunit/php-file-iterator": "^4.0",
- "phpunit/php-text-template": "^3.0",
- "sebastian/code-unit-reverse-lookup": "^3.0",
- "sebastian/complexity": "^3.0",
- "sebastian/environment": "^6.0",
- "sebastian/lines-of-code": "^2.0",
- "sebastian/version": "^4.0",
- "theseer/tokenizer": "^1.2.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.1"
- },
- "suggest": {
- "ext-pcov": "PHP extension that provides line coverage",
- "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "10.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
- "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
- "keywords": [
- "coverage",
- "testing",
- "xunit"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-12-21T15:38:30+00:00"
- },
- {
- "name": "phpunit/php-file-iterator",
- "version": "4.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c",
- "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "FilterIterator implementation that filters files based on a list of suffixes.",
- "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
- "keywords": [
- "filesystem",
- "iterator"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-08-31T06:24:48+00:00"
- },
- {
- "name": "phpunit/php-invoker",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
- "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "ext-pcntl": "*",
- "phpunit/phpunit": "^10.0"
- },
- "suggest": {
- "ext-pcntl": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Invoke callables with a timeout",
- "homepage": "https://github.com/sebastianbergmann/php-invoker/",
- "keywords": [
- "process"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T06:56:09+00:00"
- },
- {
- "name": "phpunit/php-text-template",
- "version": "3.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748",
- "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Simple template engine.",
- "homepage": "https://github.com/sebastianbergmann/php-text-template/",
- "keywords": [
- "template"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
- "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-08-31T14:07:24+00:00"
- },
- {
- "name": "phpunit/php-timer",
- "version": "6.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d",
- "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Utility class for timing",
- "homepage": "https://github.com/sebastianbergmann/php-timer/",
- "keywords": [
- "timer"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T06:57:52+00:00"
- },
- {
- "name": "phpunit/phpunit",
- "version": "10.5.10",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c",
- "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-json": "*",
- "ext-libxml": "*",
- "ext-mbstring": "*",
- "ext-xml": "*",
- "ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.3",
- "phar-io/version": "^3.0.2",
- "php": ">=8.1",
- "phpunit/php-code-coverage": "^10.1.5",
- "phpunit/php-file-iterator": "^4.0",
- "phpunit/php-invoker": "^4.0",
- "phpunit/php-text-template": "^3.0",
- "phpunit/php-timer": "^6.0",
- "sebastian/cli-parser": "^2.0",
- "sebastian/code-unit": "^2.0",
- "sebastian/comparator": "^5.0",
- "sebastian/diff": "^5.0",
- "sebastian/environment": "^6.0",
- "sebastian/exporter": "^5.1",
- "sebastian/global-state": "^6.0.1",
- "sebastian/object-enumerator": "^5.0",
- "sebastian/recursion-context": "^5.0",
- "sebastian/type": "^4.0",
- "sebastian/version": "^4.0"
- },
- "suggest": {
- "ext-soap": "To be able to generate mocks based on WSDL files"
- },
- "bin": [
- "phpunit"
- ],
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "10.5-dev"
- }
- },
- "autoload": {
- "files": [
- "src/Framework/Assert/Functions.php"
- ],
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "The PHP Unit Testing framework.",
- "homepage": "https://phpunit.de/",
- "keywords": [
- "phpunit",
- "testing",
- "xunit"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.10"
- },
- "funding": [
- {
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
- }
- ],
- "time": "2024-02-04T09:07:51+00:00"
- },
- {
- "name": "rector/rector",
- "version": "0.19.8",
- "source": {
- "type": "git",
- "url": "https://github.com/rectorphp/rector.git",
- "reference": "de3b3bb159abd704b144aa86fb244f7f1f4ac947"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/de3b3bb159abd704b144aa86fb244f7f1f4ac947",
- "reference": "de3b3bb159abd704b144aa86fb244f7f1f4ac947",
- "shasum": ""
- },
- "require": {
- "php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.10.56"
- },
- "conflict": {
- "rector/rector-doctrine": "*",
- "rector/rector-downgrade-php": "*",
- "rector/rector-phpunit": "*",
- "rector/rector-symfony": "*"
- },
- "bin": [
- "bin/rector"
- ],
- "type": "library",
- "autoload": {
- "files": [
- "bootstrap.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "description": "Instant Upgrade and Automated Refactoring of any PHP code",
- "keywords": [
- "automation",
- "dev",
- "migration",
- "refactoring"
- ],
- "support": {
- "issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.19.8"
- },
- "funding": [
- {
- "url": "https://github.com/tomasvotruba",
- "type": "github"
- }
- ],
- "time": "2024-02-05T10:59:13+00:00"
- },
- {
- "name": "sebastian/cli-parser",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae",
- "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for parsing CLI options",
- "homepage": "https://github.com/sebastianbergmann/cli-parser",
- "support": {
- "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T06:58:15+00:00"
- },
- {
- "name": "sebastian/code-unit",
- "version": "2.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "a81fee9eef0b7a76af11d121767abc44c104e503"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503",
- "reference": "a81fee9eef0b7a76af11d121767abc44c104e503",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the PHP code units",
- "homepage": "https://github.com/sebastianbergmann/code-unit",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit/issues",
- "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T06:58:43+00:00"
- },
- {
- "name": "sebastian/code-unit-reverse-lookup",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
- "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Looks up which function or method a line of code belongs to",
- "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
- "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T06:59:15+00:00"
- },
- {
- "name": "sebastian/comparator",
- "version": "5.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "2db5010a484d53ebf536087a70b4a5423c102372"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372",
- "reference": "2db5010a484d53ebf536087a70b4a5423c102372",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-mbstring": "*",
- "php": ">=8.1",
- "sebastian/diff": "^5.0",
- "sebastian/exporter": "^5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.3"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@2bepublished.at"
- }
- ],
- "description": "Provides the functionality to compare PHP values for equality",
- "homepage": "https://github.com/sebastianbergmann/comparator",
- "keywords": [
- "comparator",
- "compare",
- "equality"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/comparator/issues",
- "security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-08-14T13:18:12+00:00"
- },
- {
- "name": "sebastian/complexity",
- "version": "3.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "68ff824baeae169ec9f2137158ee529584553799"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799",
- "reference": "68ff824baeae169ec9f2137158ee529584553799",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^4.18 || ^5.0",
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.2-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for calculating the complexity of PHP code units",
- "homepage": "https://github.com/sebastianbergmann/complexity",
- "support": {
- "issues": "https://github.com/sebastianbergmann/complexity/issues",
- "security": "https://github.com/sebastianbergmann/complexity/security/policy",
- "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-12-21T08:37:17+00:00"
- },
- {
- "name": "sebastian/diff",
- "version": "5.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
- "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0",
- "symfony/process": "^4.2 || ^5"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.1-dev"
- }
- },
- "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": "Diff implementation",
- "homepage": "https://github.com/sebastianbergmann/diff",
- "keywords": [
- "diff",
- "udiff",
- "unidiff",
- "unified diff"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/diff/issues",
- "security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-12-22T10:55:06+00:00"
- },
- {
- "name": "sebastian/environment",
- "version": "6.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951",
- "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "suggest": {
- "ext-posix": "*"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "https://github.com/sebastianbergmann/environment",
- "keywords": [
- "Xdebug",
- "environment",
- "hhvm"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/environment/issues",
- "security": "https://github.com/sebastianbergmann/environment/security/policy",
- "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-04-11T05:39:26+00:00"
- },
- {
- "name": "sebastian/exporter",
- "version": "5.1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc",
- "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc",
- "shasum": ""
- },
- "require": {
- "ext-mbstring": "*",
- "php": ">=8.1",
- "sebastian/recursion-context": "^5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.1-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Volker Dusch",
- "email": "github@wallbash.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- },
- {
- "name": "Bernhard Schussek",
- "email": "bschussek@gmail.com"
- }
- ],
- "description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "https://www.github.com/sebastianbergmann/exporter",
- "keywords": [
- "export",
- "exporter"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/exporter/issues",
- "security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-09-24T13:22:09+00:00"
- },
- {
- "name": "sebastian/global-state",
- "version": "6.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4",
- "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "sebastian/object-reflector": "^3.0",
- "sebastian/recursion-context": "^5.0"
- },
- "require-dev": {
- "ext-dom": "*",
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "6.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
- "keywords": [
- "global state"
- ],
- "support": {
- "issues": "https://github.com/sebastianbergmann/global-state/issues",
- "security": "https://github.com/sebastianbergmann/global-state/security/policy",
- "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-07-19T07:19:23+00:00"
- },
- {
- "name": "sebastian/lines-of-code",
- "version": "2.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0",
- "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0",
- "shasum": ""
- },
- "require": {
- "nikic/php-parser": "^4.18 || ^5.0",
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library for counting the lines of code in PHP source code",
- "homepage": "https://github.com/sebastianbergmann/lines-of-code",
- "support": {
- "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-12-21T08:38:20+00:00"
- },
- {
- "name": "sebastian/object-enumerator",
- "version": "5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906",
- "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "sebastian/object-reflector": "^3.0",
- "sebastian/recursion-context": "^5.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Traverses array structures and object graphs to enumerate all referenced objects",
- "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T07:08:32+00:00"
- },
- {
- "name": "sebastian/object-reflector",
- "version": "3.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "24ed13d98130f0e7122df55d06c5c4942a577957"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957",
- "reference": "24ed13d98130f0e7122df55d06c5c4942a577957",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "3.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- }
- ],
- "description": "Allows reflection of object attributes, including inherited and non-public ones",
- "homepage": "https://github.com/sebastianbergmann/object-reflector/",
- "support": {
- "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T07:06:18+00:00"
- },
- {
- "name": "sebastian/recursion-context",
- "version": "5.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
- "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "5.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de"
- },
- {
- "name": "Jeff Welch",
- "email": "whatthejeff@gmail.com"
- },
- {
- "name": "Adam Harvey",
- "email": "aharvey@php.net"
- }
- ],
- "description": "Provides functionality to recursively process PHP variables",
- "homepage": "https://github.com/sebastianbergmann/recursion-context",
- "support": {
- "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T07:05:40+00:00"
- },
- {
- "name": "sebastian/type",
- "version": "4.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/type.git",
- "reference": "462699a16464c3944eefc02ebdd77882bd3925bf"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf",
- "reference": "462699a16464c3944eefc02ebdd77882bd3925bf",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "require-dev": {
- "phpunit/phpunit": "^10.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Collection of value objects that represent the types of the PHP type system",
- "homepage": "https://github.com/sebastianbergmann/type",
- "support": {
- "issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/4.0.0"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-03T07:10:45+00:00"
- },
- {
- "name": "sebastian/version",
- "version": "4.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17",
- "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "4.0-dev"
- }
- },
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Sebastian Bergmann",
- "email": "sebastian@phpunit.de",
- "role": "lead"
- }
- ],
- "description": "Library that helps with managing the version number of Git-hosted PHP projects",
- "homepage": "https://github.com/sebastianbergmann/version",
- "support": {
- "issues": "https://github.com/sebastianbergmann/version/issues",
- "source": "https://github.com/sebastianbergmann/version/tree/4.0.1"
- },
- "funding": [
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- }
- ],
- "time": "2023-02-07T11:34:05+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.14.1",
- "source": {
- "type": "git",
- "url": "https://github.com/slevomat/coding-standard.git",
- "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926",
- "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926",
- "shasum": ""
- },
- "require": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0",
- "php": "^7.2 || ^8.0",
- "phpstan/phpdoc-parser": "^1.23.1",
- "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.37",
- "phpstan/phpstan-deprecation-rules": "1.1.4",
- "phpstan/phpstan-phpunit": "1.3.14",
- "phpstan/phpstan-strict-rules": "1.5.1",
- "phpunit/phpunit": "8.5.21|9.6.8|10.3.5"
- },
- "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.14.1"
- },
- "funding": [
- {
- "url": "https://github.com/kukulich",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
- "type": "tidelift"
- }
- ],
- "time": "2023-10-08T07:28:08+00:00"
- },
- {
- "name": "softcreatr/jsonpath",
- "version": "0.8.3",
- "source": {
- "type": "git",
- "url": "https://github.com/SoftCreatR/JSONPath.git",
- "reference": "fc12dee0b46f3fa3a175c4051dbab60984acef4b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/SoftCreatR/JSONPath/zipball/fc12dee0b46f3fa3a175c4051dbab60984acef4b",
- "reference": "fc12dee0b46f3fa3a175c4051dbab60984acef4b",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "php": ">=8.0"
- },
- "replace": {
- "flow/jsonpath": "*"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.6",
- "roave/security-advisories": "dev-latest"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Flow\\JSONPath\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Stephen Frank",
- "email": "stephen@flowsa.com",
- "homepage": "https://prismaticbytes.com",
- "role": "Developer"
- },
- {
- "name": "Sascha Greuel",
- "email": "hello@1-2.dev",
- "homepage": "https://1-2.dev",
- "role": "Developer"
- }
- ],
- "description": "JSONPath implementation for parsing, searching and flattening arrays",
- "support": {
- "email": "hello@1-2.dev",
- "forum": "https://github.com/SoftCreatR/JSONPath/discussions",
- "issues": "https://github.com/SoftCreatR/JSONPath/issues",
- "source": "https://github.com/SoftCreatR/JSONPath"
- },
- "funding": [
- {
- "url": "https://ecologi.com/softcreatr?r=61212ab3fc69b8eb8a2014f4",
- "type": "custom"
- },
- {
- "url": "https://github.com/softcreatr",
- "type": "github"
- }
- ],
- "time": "2023-08-17T20:14:00+00:00"
- },
- {
- "name": "squizlabs/php_codesniffer",
- "version": "3.8.1",
- "source": {
- "type": "git",
- "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
- "reference": "14f5fff1e64118595db5408e946f3a22c75807f7"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7",
- "reference": "14f5fff1e64118595db5408e946f3a22c75807f7",
- "shasum": ""
- },
- "require": {
- "ext-simplexml": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": ">=5.4.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
- },
- "bin": [
- "bin/phpcbf",
- "bin/phpcs"
- ],
- "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": "Former lead"
- },
- {
- "name": "Juliette Reinders Folmer",
- "role": "Current lead"
- },
- {
- "name": "Contributors",
- "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors"
- }
- ],
- "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
- "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
- "keywords": [
- "phpcs",
- "standards",
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues",
- "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy",
- "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
- "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki"
- },
- "funding": [
- {
- "url": "https://github.com/PHPCSStandards",
- "type": "github"
- },
- {
- "url": "https://github.com/jrfnl",
- "type": "github"
- },
- {
- "url": "https://opencollective.com/php_codesniffer",
- "type": "open_collective"
- }
- ],
- "time": "2024-01-11T20:47:48+00:00"
- },
- {
- "name": "symfony/config",
- "version": "v7.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/config.git",
- "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/8789646600f4e7e451dde9e1dc81cfa429f3857a",
- "reference": "8789646600f4e7e451dde9e1dc81cfa429f3857a",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/filesystem": "^6.4|^7.0",
- "symfony/polyfill-ctype": "~1.8"
- },
- "conflict": {
- "symfony/finder": "<6.4",
- "symfony/service-contracts": "<2.5"
- },
- "require-dev": {
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/finder": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^6.4|^7.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Config\\": ""
- },
- "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": "Helps you find, load, combine, autofill and validate configuration values of any kind",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/config/tree/v7.0.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-11-09T08:30:23+00:00"
- },
- {
- "name": "symfony/dependency-injection",
- "version": "v7.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/dependency-injection.git",
- "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bd25ef7c937b9da12510bdc4f1c66728f19620e3",
- "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "psr/container": "^1.1|^2.0",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/service-contracts": "^3.3",
- "symfony/var-exporter": "^6.4|^7.0"
- },
- "conflict": {
- "ext-psr": "<1.1|>=2",
- "symfony/config": "<6.4",
- "symfony/finder": "<6.4",
- "symfony/yaml": "<6.4"
- },
- "provide": {
- "psr/container-implementation": "1.1|2.0",
- "symfony/service-implementation": "1.1|2.0|3.0"
- },
- "require-dev": {
- "symfony/config": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/yaml": "^6.4|^7.0"
- },
- "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/v7.0.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-12-28T19:18:20+00:00"
- },
- {
- "name": "symfony/var-exporter",
- "version": "v7.0.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/var-exporter.git",
- "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/345c62fefe92243c3a06fc0cc65f2ec1a47e0764",
- "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "symfony/var-dumper": "^6.4|^7.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\VarExporter\\": ""
- },
- "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": "Allows exporting any serializable PHP data structure to plain PHP code",
- "homepage": "https://symfony.com",
- "keywords": [
- "clone",
- "construct",
- "export",
- "hydrate",
- "instantiate",
- "lazy-loading",
- "proxy",
- "serialize"
- ],
- "support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.0.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-12-27T08:42:13+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v7.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "2d4fca631c00700597e9442a0b2451ce234513d3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3",
- "reference": "2d4fca631c00700597e9442a0b2451ce234513d3",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/console": "<6.4"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.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/v7.0.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": "2024-01-23T15:02:46+00:00"
- },
- {
- "name": "theseer/tokenizer",
- "version": "1.2.2",
- "source": {
- "type": "git",
- "url": "https://github.com/theseer/tokenizer.git",
- "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
- "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
- "shasum": ""
- },
- "require": {
- "ext-dom": "*",
- "ext-tokenizer": "*",
- "ext-xmlwriter": "*",
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "autoload": {
- "classmap": [
- "src/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Arne Blankerts",
- "email": "arne@blankerts.de",
- "role": "Developer"
- }
- ],
- "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
- "support": {
- "issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
- },
- "funding": [
- {
- "url": "https://github.com/theseer",
- "type": "github"
- }
- ],
- "time": "2023-11-20T00:12:19+00:00"
- }
- ],
- "aliases": [],
- "minimum-stability": "stable",
- "stability-flags": [],
- "prefer-stable": false,
- "prefer-lowest": false,
- "platform": {
- "php": ">=8.2"
- },
- "platform-dev": [],
- "plugin-api-version": "2.6.0"
-}
diff --git a/.drevops/devtool/devtool b/.drevops/devtool/devtool
deleted file mode 100755
index 1c6c8d452..000000000
--- a/.drevops/devtool/devtool
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/usr/bin/env php
-
-
- Custom PHPCS standard.
-
-
-
-
-
-
-
-
-
-
- src
- tests/phpunit
-
-
-
- *.Test\.php
- *.TestCase\.php
- *.test
-
-
-
-
- *.Test\.php
- *.TestCase\.php
- *.test
-
-
-
-
- *.Test\.php
- *.TestCase\.php
- *.test
-
-
diff --git a/.drevops/devtool/phpmd.xml b/.drevops/devtool/phpmd.xml
deleted file mode 100644
index 7d3cedb37..000000000
--- a/.drevops/devtool/phpmd.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.drevops/devtool/phpstan.neon b/.drevops/devtool/phpstan.neon
deleted file mode 100644
index 53eed2191..000000000
--- a/.drevops/devtool/phpstan.neon
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-# Configuration file for PHPStan static code checking, see https://phpstan.org .
-#
-
-parameters:
-
- level: 3
-
- paths:
- - src
- - tests/phpunit
-
- excludePaths:
- - vendor/*
- - node_modules/*
-
- # Do not report on ignored errors that do not occur in the results.
- reportUnmatchedIgnoredErrors: false
-
- ignoreErrors:
- -
- # Since tests and data providers do not have to have parameter docblocks,
- # it is not possible to specify the type of the parameter, so we ignore
- # this error.
- message: '#.*no value type specified in iterable type array.#'
- path: tests/phpunit/*
diff --git a/.drevops/devtool/phpunit.xml b/.drevops/devtool/phpunit.xml
deleted file mode 100644
index a64ad6068..000000000
--- a/.drevops/devtool/phpunit.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-
-
-
- tests/phpunit
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.drevops/devtool/rector.php b/.drevops/devtool/rector.php
deleted file mode 100644
index a158b559c..000000000
--- a/.drevops/devtool/rector.php
+++ /dev/null
@@ -1,65 +0,0 @@
-paths([
- __DIR__ . '/**',
- ]);
-
- $rectorConfig->sets([
- SetList::PHP_80,
- SetList::PHP_81,
- SetList::CODE_QUALITY,
- SetList::CODING_STYLE,
- SetList::DEAD_CODE,
- SetList::INSTANCEOF,
- SetList::TYPE_DECLARATION,
- ]);
-
- $rectorConfig->skip([
- // Rules added by Rector's rule sets.
- ArraySpreadInsteadOfArrayMergeRector::class,
- CountArrayToEmptyArrayComparisonRector::class,
- DisallowedEmptyRuleFixerRector::class,
- InlineArrayReturnAssignRector::class,
- NewlineAfterStatementRector::class,
- NewlineBeforeNewAssignSetRector::class,
- PostIncDecToPreIncDecRector::class,
- RemoveAlwaysTrueIfConditionRector::class,
- SimplifyEmptyCheckOnEmptyArrayRector::class,
- // Dependencies.
- '*/vendor/*',
- '*/node_modules/*',
- ]);
-
- $rectorConfig->fileExtensions([
- 'php',
- 'inc',
- ]);
-
- $rectorConfig->importNames(TRUE, FALSE);
- $rectorConfig->importShortClasses(FALSE);
-};
diff --git a/.drevops/devtool/src/Command/DevToolCommand.php b/.drevops/devtool/src/Command/DevToolCommand.php
deleted file mode 100644
index c47eaf1a7..000000000
--- a/.drevops/devtool/src/Command/DevToolCommand.php
+++ /dev/null
@@ -1,65 +0,0 @@
-io = $this->initIo($input, $output);
-
- $exit_code = $this->doExecute($input);
-
- $this->io->success('Finished ' . strtolower($this->getDescription()));
-
- return $exit_code;
- }
-
- /**
- * Execute command's business logic.
- *
- * @return int
- * Command exit code.
- */
- abstract protected function doExecute(InputInterface $input): int;
-
- /**
- * Initialize IO.
- *
- * @param \Symfony\Component\Console\Input\InputInterface $input
- * Input.
- * @param \Symfony\Component\Console\Output\OutputInterface $output
- * Output.
- *
- * @return \Symfony\Component\Console\Style\SymfonyStyle
- * IO.
- */
- protected function initIo(InputInterface $input, OutputInterface $output): SymfonyStyle {
- // Add support for ''.
- $output->getFormatter()->setStyle('code', new OutputFormatterStyle('yellow'));
-
- // Add support for ''.
- $output->getFormatter()->setStyle('bold', new OutputFormatterStyle(NULL, NULL, ['bold']));
-
- return new SymfonyStyle($input, $output);
- }
-
-}
diff --git a/.drevops/devtool/src/Command/ScaffoldUpdateCommand.php b/.drevops/devtool/src/Command/ScaffoldUpdateCommand.php
deleted file mode 100644
index c4fe96506..000000000
--- a/.drevops/devtool/src/Command/ScaffoldUpdateCommand.php
+++ /dev/null
@@ -1,58 +0,0 @@
-setDescription('Update scaffold files')
- ->addOption('root', 'r', InputOption::VALUE_REQUIRED, 'Path to the root of the project', getcwd());
- }
-
- /**
- * {@inheritdoc}
- */
- protected function doExecute(InputInterface $input): int {
- $root = $input->getOption('root');
- if (!is_string($root)) {
- throw new \InvalidArgumentException('Root must be a string');
- }
- $this->root = $root;
-
- $this->io->write('Updating composer.json
... ');
- (new ScaffoldManager($this->root))->update();
- $this->io->write('OK');
-
- return Command::SUCCESS;
- }
-
-}
diff --git a/.drevops/devtool/src/Composer/ComposerJsonManipulator.php b/.drevops/devtool/src/Composer/ComposerJsonManipulator.php
deleted file mode 100644
index 39e4ee101..000000000
--- a/.drevops/devtool/src/Composer/ComposerJsonManipulator.php
+++ /dev/null
@@ -1,208 +0,0 @@
-getContents());
- }
-
- /**
- * Save to file.
- *
- * @param string $path
- * Path to file.
- */
- public function save(string $path): void {
- file_put_contents($path, JsonFile::encode(json_decode($this->getContents()), JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES) . $this->getNewline());
- }
-
- /**
- * Add repository.
- *
- * @param string $name
- * Repository name.
- * @param mixed $config
- * Repository config.
- * @param bool $append
- * Append to existing repositories.
- *
- * @return bool
- * TRUE if added.
- *
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function addRepository(string $name, mixed $config, bool $append = TRUE): bool {
- $json = $this->getFormattedData();
-
- if (!empty($json['repositories'])) {
- if ($append) {
- $json['repositories'][] = $config;
- }
- else {
- $json['repositories'] = [$config];
- }
- }
- else {
- $json['repositories'] = [$config];
- }
-
- return $this->addProperty('repositories', $json['repositories']);
- }
-
- /**
- * Add dependency.
- *
- * @param string $package
- * Package name.
- * @param string $version
- * Package version.
- * @param bool $is_dev
- * Is dev dependency.
- *
- * @return bool
- * TRUE if added.
- */
- public function addDependency(string $package, string $version, bool $is_dev = FALSE): bool {
- $this->validatePackageName($package);
- $this->validatePackageVersion($version);
-
- return $this->addLink($is_dev ? 'require-dev' : 'require', $package, $version, TRUE);
- }
-
- /**
- * Add a dev dependency.
- *
- * @param string $package
- * Package name.
- * @param string $version
- * Package version.
- *
- * @return bool
- * TRUE if added.
- */
- public function addDevDependency(string $package, string $version): bool {
- return $this->addDependency($package, $version, TRUE);
- }
-
- /**
- * Add property after a specified property.
- *
- * @param string $name
- * Property name.
- * @param mixed $value
- * Property value.
- * @param string $after
- * Property name after which the value should be added.
- */
- public function addPropertyAfter(string $name, mixed $value, string $after): void {
- $json = $this->getFormattedData();
-
- $name_parents = explode('.', $name);
- $name_single = array_pop($name_parents);
-
- $after_parents = explode('.', $after);
- $after_single = array_pop($after_parents);
-
- $existing_value_parent = Arrays::getValue($json, $after_parents);
- if (!is_null($existing_value_parent)) {
- $existing_value_parent = Arrays::insertAfterKey($existing_value_parent, $after_single, $name_single, $value);
-
- Arrays::setValue($json, $name_parents, $existing_value_parent);
-
- $this->refreshContents($json);
- }
- }
-
- /**
- * Merge property.
- *
- * @param string $name
- * Property name.
- * @param array $value
- * Property value.
- * @param bool $sort
- * Should sort after merge.
- */
- public function mergeProperty(string $name, array $value, bool $sort = FALSE): void {
- $json = $this->getFormattedData();
-
- $existing_value = Arrays::getValue($json, $name);
- $existing_value = $existing_value ?: [];
- $existing_value = Arrays::mergeDeep($existing_value, $value);
-
- if ($sort) {
- ksort($existing_value);
- }
-
- Arrays::setValue($json, $name, $existing_value);
-
- $this->refreshContents($json);
- }
-
- /**
- * Refresh contents with new data.
- */
- protected function refreshContents(mixed $data): void {
- $reflection = new \ReflectionClass($this);
- $property = $reflection->getParentClass()->getProperty('contents');
- $property->setAccessible(TRUE);
- $property->setValue($this, $this->format($data));
- }
-
- /**
- * Get newline.
- */
- protected function getNewline(): string {
- $reflection = new \ReflectionClass($this);
- $property = $reflection->getParentClass()->getProperty('newline');
- $property->setAccessible(TRUE);
-
- return $property->getValue($this);
- }
-
- /**
- * Validate package name.
- */
- protected function validatePackageName($name) {
- // Regular expression for standard package names.
- $standardPattern = '/^[a-z0-9_.-]+\/[a-z0-9_.-]+$/i';
-
- // List of special package names.
- $specialPackages = ['php', 'ext-', 'lib-'];
-
- // Check if package name matches any special package patterns.
- $isSpecialPackage = array_reduce($specialPackages, static function ($carry, $item) use ($name) : bool {
- return $carry || str_starts_with((string) $name, $item);
- }, FALSE);
-
- if (!$isSpecialPackage && !preg_match($standardPattern, (string) $name)) {
- throw new \InvalidArgumentException(sprintf('Invalid package name "%s", should be in the form vendor/package or a special package (php, ext-*, lib-*)', $name));
- }
- }
-
- /**
- * Validate package version.
- */
- protected function validatePackageVersion($version) {
- $versionParser = new VersionParser();
- $versionParser->parseConstraints($version);
- }
-
-}
diff --git a/.drevops/devtool/src/Docker/DockerCommand.php b/.drevops/devtool/src/Docker/DockerCommand.php
deleted file mode 100644
index ccdf96303..000000000
--- a/.drevops/devtool/src/Docker/DockerCommand.php
+++ /dev/null
@@ -1,72 +0,0 @@
-keyword = $keyword;
- }
-
- /**
- * Get the command keyword.
- */
- public function getKeyword(): string {
- return $this->keyword;
- }
-
- /**
- * Get the command arguments.
- */
- public function getArguments(): string {
- return $this->arguments;
- }
-
-}
diff --git a/.drevops/devtool/src/Docker/DockerfileParser.php b/.drevops/devtool/src/Docker/DockerfileParser.php
deleted file mode 100644
index 0f8202818..000000000
--- a/.drevops/devtool/src/Docker/DockerfileParser.php
+++ /dev/null
@@ -1,54 +0,0 @@
-
- * An array of DockerCommand objects.
- */
- public static function parse(string $path): array {
- $lines = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
- $commands = [];
- $currentCommand = '';
-
- foreach ($lines as $line) {
- // Check for continuation lines.
- if (preg_match('/\\\\\s*$/', $line)) {
- $currentCommand .= preg_replace('/\\\\\s*$/', ' ', $line);
- continue;
- }
-
- $currentCommand .= $line;
-
- // Split the command into keyword and arguments.
- if (preg_match('/^(\w+)\s+(.*)$/', $currentCommand, $matches)) {
- try {
- $command = new DockerCommand($matches[1], $matches[2]);
- }
- catch (\Exception) {
- continue;
- }
- $commands[] = $command;
- }
-
- $currentCommand = '';
- }
-
- return $commands;
- }
-
-}
diff --git a/.drevops/devtool/src/Scaffold/AbstractScaffoldComponent.php b/.drevops/devtool/src/Scaffold/AbstractScaffoldComponent.php
deleted file mode 100644
index 6dae55e87..000000000
--- a/.drevops/devtool/src/Scaffold/AbstractScaffoldComponent.php
+++ /dev/null
@@ -1,69 +0,0 @@
-resourceUrls() as $root_file => $remote_file) {
- $this->files[$root_file] = $this->downloader->download($remote_file, $this->stubDir . DIRECTORY_SEPARATOR . basename($root_file));
- }
-
- $this->processResources();
- }
-
- /**
- * Return an array of resource files.
- */
- abstract protected function resourceUrls(): array;
-
- /**
- * Process resources.
- */
- abstract protected function processResources();
-
-}
diff --git a/.drevops/devtool/src/Scaffold/ComposerJsonScaffoldComponent.php b/.drevops/devtool/src/Scaffold/ComposerJsonScaffoldComponent.php
deleted file mode 100644
index a1a221680..000000000
--- a/.drevops/devtool/src/Scaffold/ComposerJsonScaffoldComponent.php
+++ /dev/null
@@ -1,169 +0,0 @@
- 'https://raw.githubusercontent.com/drupal-composer/drupal-project/10.x/composer.json',
- ];
- }
-
- /**
- * {@inheritdoc}
- */
- protected function processResources() {
- $manipulator = new ComposerJsonManipulator(file_get_contents($this->files['composer.json']));
-
- $this->alter($manipulator);
-
- $manipulator->save($this->files['composer.json']);
- }
-
- /**
- * Alter composer.json.
- *
- * @param \DrevOps\DevTool\Composer\ComposerJsonManipulator $m
- * ComposerJsonManipulator instance.
- */
- protected function alter(ComposerJsonManipulator $m) {
- $m->addProperty('name', 'your_org/your_site');
- $m->addProperty('description', 'Drupal 10 implementation of YOURSITE for YOURORG');
- $m->addProperty('license', 'proprietary');
- $m->removeProperty('authors');
-
- $m->addRepository('asset-packagist', [
- 'type' => 'composer',
- 'url' => 'https://asset-packagist.org',
- ]);
-
- $m->addDependency('php', '>=8.2');
- $m->addDependency('drupal/admin_toolbar', '^3.1');
- $m->addDependency('drupal/clamav', '^2.0.2');
- $m->addDependency('drupal/coffee', '^1.2');
- $m->addDependency('drupal/config_split', '^1');
- $m->addDependency('drupal/config_update', '^2@alpha');
- $m->addDependency('drupal/environment_indicator', '^4.0');
- $m->addDependency('drupal/pathauto', '^1.10');
- $m->addDependency('drupal/redirect', '^1.7');
- $m->addDependency('drupal/redis', '^1.6');
- $m->addDependency('drupal/search_api', '^1.29');
- $m->addDependency('drupal/search_api_solr', '^4.2');
- $m->addDependency('drupal/shield', '^1.6');
- $m->addDependency('drupal/stage_file_proxy', '^2');
- $m->addDependency('drush/drush', '^12');
- $m->addDependency('oomphinc/composer-installers-extender', '^2.0');
-
- $m->addDevDependency('behat/behat', '^3.10');
- $m->addDevDependency('dealerdirect/phpcodesniffer-composer-installer', '^0.7');
- $m->addDevDependency('drevops/behat-format-progress-fail', '^1');
- $m->addDevDependency('drevops/behat-screenshot', '^1');
- $m->addDevDependency('drevops/behat-steps', '^2');
- $m->addDevDependency('drupal/drupal-extension', '^5@rc');
- $m->addDevDependency('friendsoftwig/twigcs', '^6.2');
- $m->addDevDependency('mglaman/phpstan-drupal', '^1.2');
- $m->addDevDependency('palantirnet/drupal-rector', '^0.19');
- $m->addDevDependency('phpcompatibility/php-compatibility', '^9.3');
- $m->addDevDependency('phpmd/phpmd', '^2.13');
- $m->addDevDependency('phpspec/prophecy-phpunit', '^2.0');
- $m->addDevDependency('phpstan/extension-installer', '^1.3');
- $m->addDevDependency('pyrech/composer-changelogs', '^1.8');
-
- $m->addProperty('minimum-stability', 'stable');
-
- $m->addConfigSetting('platform', ['php' => $this->getPlatformPhpVersion() ?: '8.2.13']);
-
- $m->mergeProperty('config.allow-plugins', [
- 'oomphinc/composer-installers-extender' => TRUE,
- 'pyrech/composer-changelogs' => TRUE,
- ], TRUE);
-
- // @see https://github.com/drevops/drevops/issues/806
- $m->removeSubNode('autoload', 'files');
-
- $m->addPropertyAfter('autoload-dev', [
- 'classmap' => [
- 'tests/phpunit/',
- ],
- ], 'autoload');
-
- $m->mergeProperty('extra.drupal-scaffold', [
- 'file-mapping' => [
- '[project-root]/.editorconfig' => FALSE,
- '[project-root]/.gitattributes' => FALSE,
- '[web-root]/.htaccess' => FALSE,
- '[web-root]/.ht.router.php' => FALSE,
- '[web-root]/example.gitignore' => FALSE,
- '[web-root]/INSTALL.txt' => FALSE,
- '[web-root]/README.txt' => FALSE,
- '[web-root]/sites/example.settings.local.php' => FALSE,
- '[web-root]/sites/example.sites.php' => FALSE,
- '[web-root]/web.config' => FALSE,
- ],
- ]);
-
- $m->mergeProperty('extra.installer-paths', [
- 'web/libraries/{$name}' => [
- 'type:bower-asset',
- 'type:npm-asset',
- ],
- 'web/modules/custom/{$name}' => [
- 'type:drupal-custom-module',
- ],
- 'web/themes/custom/{$name}' => [
- 'type:drupal-custom-theme',
- ],
- ]);
-
- $m->addPropertyAfter('extra.installer-types', [
- "bower-asset",
- "npm-asset",
- "drupal-library",
- ], 'extra.installer-paths');
- }
-
- /**
- * Get the PHP version from the platform.
- */
- protected function getPlatformPhpVersion() {
- $version = NULL;
-
- // Parse the CLI Dockerfile for commands.
- $commands = DockerfileParser::parse($this->rootDir . '/.docker/cli.dockerfile');
- $from_commands = array_filter($commands, static function (DockerCommand $command) : bool {
- return $command->getKeyword() === 'FROM';
- });
-
- if (!empty($from_commands)) {
- $from_command = reset($from_commands);
- $image_name = $from_command->getArguments();
-
- // Get the PHP version from the image.
- $output = shell_exec('docker run --rm ' . $image_name . ' bash -c "echo \$PHP_VERSION"');
-
- // Parse the version number from the output.
- if (!empty($output) && !preg_match('/\b\d+\.\d+\.\d+\b/', $output, $matches)) {
- // Returns the first match which should be the version number.
- $version = $matches[0];
- }
- }
-
- return $version;
- }
-
-}
diff --git a/.drevops/devtool/src/Scaffold/ScaffoldManager.php b/.drevops/devtool/src/Scaffold/ScaffoldManager.php
deleted file mode 100644
index 1031ec52d..000000000
--- a/.drevops/devtool/src/Scaffold/ScaffoldManager.php
+++ /dev/null
@@ -1,70 +0,0 @@
-fs = new Filesystem();
- $this->stubDir = sys_get_temp_dir() . '/temp_' . uniqid();
- $this->fs->mkdir($this->stubDir);
- }
-
- /**
- * Update root using scaffold.
- */
- public function update(): void {
- $component_classes = ClassLoader::load(__DIR__, AbstractScaffoldComponent::class);
- usort($component_classes, static function ($a, $b) : int {
- return $a::$weight <=> $b::$weight;
- });
-
- $downloader = new Downloader();
- foreach ($component_classes as $component_class) {
- $component = new $component_class($this->root, $this->stubDir, $downloader);
- $component->process();
- }
-
- if (!empty($component_classes)) {
- $this->updateRoot();
- }
- }
-
- /**
- * Update root directory.
- */
- protected function updateRoot() {
- $this->fs->mirror($this->stubDir, $this->root);
- }
-
-}
diff --git a/.drevops/devtool/src/Utils/Arrays.php b/.drevops/devtool/src/Utils/Arrays.php
deleted file mode 100644
index be46ab306..000000000
--- a/.drevops/devtool/src/Utils/Arrays.php
+++ /dev/null
@@ -1,216 +0,0 @@
- $value) {
- $newArray[$currentKey] = $value;
-
- if ($currentKey === $key) {
- $newArray[$new_key] = $new_value;
- $inserted = TRUE;
- }
- }
-
- if (!$inserted) {
- $newArray[$new_key] = $new_value;
- }
-
- return $newArray;
- }
-
- /**
- * Get a value from an array using a string of dot-separated keys.
- *
- * @param array $array
- * The array from which to get the value.
- * @param array|string $parents
- * An array of parent keys of the value, starting with the outermost key.
- * @param null $key_exists
- * (optional) If given, an already defined variable that is altered by
- * reference.
- *
- * @return mixed
- * The value specified by the parents or NULL if the parents are not found.
- */
- public static function &getValue(array &$array, array|string $parents, &$key_exists = NULL): mixed {
- $ref = &$array;
-
- $parents = is_array($parents) ? $parents : explode('.', $parents);
-
- foreach ($parents as $parent) {
- if (is_array($ref) && \array_key_exists($parent, $ref)) {
- $ref = &$ref[$parent];
- }
- else {
- $key_exists = FALSE;
- $null = NULL;
-
- return $null;
- }
- }
- $key_exists = TRUE;
-
- return $ref;
- }
-
- /**
- * Set a value in an array using a string of dot-separated keys.
- *
- * @param array $array
- * The array in which to set the value.
- * @param array|string $parents
- * An array of parent keys of the value, starting with the outermost key.
- * @param mixed $value
- * The value to set.
- * @param bool $force
- * (optional) If TRUE, any non-array parents will be converted to an array.
- */
- public static function setValue(array &$array, array|string $parents, mixed $value, bool $force = FALSE): void {
- $ref = &$array;
-
- $parents = is_array($parents) ? $parents : explode('.', $parents);
-
- foreach ($parents as $parent) {
- // PHP auto-creates container arrays and NULL entries without error if
- // $ref is NULL, but throws an error if $ref is set, but not an array.
- if ($force && isset($ref) && !is_array($ref)) {
- $ref = [];
- }
- $ref = &$ref[$parent];
- }
- $ref = $value;
- }
-
- /**
- * Merges multiple arrays, recursively, and returns the merged array.
- *
- * This function is similar to PHP's array_merge_recursive() function, but it
- * handles non-array values differently. When merging values that are not both
- * arrays, the latter value replaces the former rather than merging with it.
- *
- * Example:
- *
- * @code
- *
- * $link_options_1 = [
- * 'fragment' => 'x',
- * 'attributes' => ['title' => t('X'), 'class' => ['a', 'b']],
- * ];
- * $link_options_2 = [
- * 'fragment' => 'y',
- * 'attributes' => ['title' => t('Y'), 'class' => ['c', 'd']],
- * ];
- *
- * // This results in
- * [
- * 'fragment' => ['x', 'y'],
- * 'attributes' => [
- * 'title' => [t('X'), t('Y')],
- * 'class' => ['a', 'b', 'c', 'd']
- * ]
- * ]
- * $incorrect = array_merge_recursive($link_options_1, $link_options_2);
- *
- * // This results in
- * [
- * 'fragment' => 'y',
- * 'attributes' => [
- * 'title' => t('Y'),
- * 'class' => ['a', 'b', 'c', 'd']
- * ]
- * ]
- * $correct = Arrays::mergeDeep($link_options_1, $link_options_2);
- * @endcode
- *
- * @param array ...
- * Arrays to merge.
- *
- * @return array
- * The merged array.
- *
- * @see Arrays::mergeDeepArray()
- * @phpstan-ignore-next-line
- */
- public static function mergeDeep(): array {
- return self::mergeDeepArray(func_get_args());
- }
-
- /**
- * Merges multiple arrays, recursively, and returns the merged array.
- *
- * This function is equivalent to Arrays::mergeDeep(), except the
- * input arrays are passed as a single array parameter rather than a variable
- * parameter list.
- *
- * The following are equivalent:
- * - Arrays::mergeDeep($a, $b);
- * - Arrays::mergeDeepArray(array($a, $b));
- *
- * The following are also equivalent:
- * - call_user_func_array('Arrays::mergeDeep', $arrays_to_merge);
- * - Arrays::mergeDeepArray($arrays_to_merge);
- *
- * @param array $arrays
- * An arrays of arrays to merge.
- * @param bool $preserve_integer_keys
- * (optional) If given, integer keys will be preserved and merged instead of
- * appended. Defaults to FALSE.
- *
- * @return array
- * The merged array.
- *
- * @see Arrays::mergeDeep()
- */
- public static function mergeDeepArray(array $arrays, bool $preserve_integer_keys = FALSE): array {
- $result = [];
- foreach ($arrays as $array) {
- foreach ($array as $key => $value) {
- // Renumber integer keys as array_merge_recursive() does unless
- // $preserve_integer_keys is set to TRUE. Note that PHP automatically
- // converts array keys that are integer strings (e.g., '1') to integers.
- if (is_int($key) && !$preserve_integer_keys) {
- $result[] = $value;
- }
- // Recurse when both values are arrays.
- elseif (isset($result[$key]) && is_array($result[$key]) && is_array($value)) {
- $result[$key] = self::mergeDeepArray([$result[$key], $value], $preserve_integer_keys);
- }
- // Otherwise, use the latter value, overriding any previous value.
- else {
- $result[$key] = $value;
- }
- }
- }
-
- return $result;
- }
-
-}
diff --git a/.drevops/devtool/src/Utils/ClassLoader.php b/.drevops/devtool/src/Utils/ClassLoader.php
deleted file mode 100644
index 61383b13a..000000000
--- a/.drevops/devtool/src/Utils/ClassLoader.php
+++ /dev/null
@@ -1,97 +0,0 @@
- $class) {
- if (!is_subclass_of($class, $parent_class) || (new \ReflectionClass($class))->isAbstract()) {
- unset($classes[$k]);
- }
- }
-
- return $classes;
- }
-
- /**
- * Glob files.
- *
- * @param string $directory
- * Directory to scan.
- * @param string $pattern
- * Pattern to match.
- *
- * @return array
- * Array of files.
- */
- protected static function glob(string $directory, string $pattern): array {
- $files = [];
-
- foreach (scandir($directory) as $filename) {
- // @phpcs:disable Drupal.Functions.DiscouragedFunctions.Discouraged
- if (fnmatch($pattern, $filename)) {
- $files[] = $directory . '/' . $filename;
- }
- }
-
- return $files;
- }
-
-}
diff --git a/.drevops/devtool/src/Utils/Downloader.php b/.drevops/devtool/src/Utils/Downloader.php
deleted file mode 100644
index d253e4dbb..000000000
--- a/.drevops/devtool/src/Utils/Downloader.php
+++ /dev/null
@@ -1,56 +0,0 @@
-httpClient = $client ?: HttpClient::create();
- $this->fs = $fs ?: new Filesystem();
- }
-
- /**
- * Download file.
- *
- * @param string $src
- * Source URL.
- * @param string $dst
- * Destination path.
- */
- public function download(string $src, string $dst): string {
- $response = $this->httpClient->request('GET', $src);
-
- if ($response->getStatusCode() !== 200) {
- throw new \Exception(sprintf('Failed to download the file from %s.', $src));
- }
-
- $this->fs->appendToFile($dst, $response->getContent());
-
- return $dst;
- }
-
-}
diff --git a/.drevops/devtool/src/app.php b/.drevops/devtool/src/app.php
deleted file mode 100644
index 90ef7ae6f..000000000
--- a/.drevops/devtool/src/app.php
+++ /dev/null
@@ -1,19 +0,0 @@
-setName('DrevOps development tool');
-
-$command = new ScaffoldUpdateCommand();
-$application->add($command);
-
-$application->run();
-// @codeCoverageIgnoreEnd
diff --git a/.drevops/devtool/tests/.gitkeep b/.drevops/devtool/tests/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/.drevops/devtool/tests/phpunit/Fixtures/.gitkeep b/.drevops/devtool/tests/phpunit/Fixtures/.gitkeep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/.drevops/devtool/tests/phpunit/Fixtures/root_dir/.docker/cli.dockerfile b/.drevops/devtool/tests/phpunit/Fixtures/root_dir/.docker/cli.dockerfile
deleted file mode 100644
index 12bbb3bfd..000000000
--- a/.drevops/devtool/tests/phpunit/Fixtures/root_dir/.docker/cli.dockerfile
+++ /dev/null
@@ -1,86 +0,0 @@
-# CLI container.
-#
-# All CLI operations performed in this container.
-#
-# @see https://hub.docker.com/r/uselagoon/php-8.2-cli-drupal/tags
-# @see https://github.com/uselagoon/lagoon-images/tree/main/images/php-cli-drupal
-FROM uselagoon/php-8.2-cli-drupal:24.1.0
-
-# Add missing variables.
-# @todo Remove once https://github.com/uselagoon/lagoon/issues/3121 is resolved.
-ARG LAGOON_PR_HEAD_BRANCH=""
-ENV LAGOON_PR_HEAD_BRANCH=${LAGOON_PR_HEAD_BRANCH}
-ARG LAGOON_PR_HEAD_SHA=""
-ENV LAGOON_PR_HEAD_SHA=${LAGOON_PR_HEAD_SHA}
-
-# Webroot is used for Drush aliases.
-ARG WEBROOT=web
-
-ARG GITHUB_TOKEN=""
-ENV GITHUB_TOKEN=${GITHUB_TOKEN}
-
-# Set default values for environment variables.
-# These values will be overridden if set in docker-compose.yml or .env file
-# during build stage.
-ENV WEBROOT=${WEBROOT} \
- COMPOSER_ALLOW_SUPERUSER=1 \
- COMPOSER_CACHE_DIR=/tmp/.composer/cache \
- SIMPLETEST_DB=mysql://drupal:drupal@mariadb/drupal \
- SIMPLETEST_BASE_URL=http://nginx:8080 \
- SYMFONY_DEPRECATIONS_HELPER=disabled
-
-# Strating from this line, Docker will add result of each command into a
-# separate layer. These layers are then cached and re-used when the project is
-# rebuilt.
-# Note that layers are only rebuilt if files added into the image with `ADD`
-# have changed since the last build. So, adding files that are unlikely to
-# change earlier in the build process (closer to the start of this file)
-# reduce build time.
-
-# Adding more tools.
-RUN apk add --no-cache ncurses=6.4_p20231125-r0 pv=1.8.5-r0 tzdata=2023c-r1
-
-# Adding patches and scripts.
-COPY patches /app/patches
-COPY scripts /app/scripts
-
-# Copy files required for PHP dependencies resolution.
-# Note that composer.lock is not explicitly copied, allowing to run the stack
-# without existing lock file (this is not advisable, but allows to build
-# using latest versions of packages). composer.lock should be comitted to the
-# repository.
-# File .env (and other environment files) is copied into image as it may be
-# required by composer scripts to get some additions variables.
-COPY composer.json composer.* .env* auth* /app/
-
-# Install PHP dependencies without including development dependencies. This is
-# crucial as it prevents potential security vulnerabilities from being exposed
-# to the production environment.
-RUN if [ -n "${GITHUB_TOKEN}" ]; then export COMPOSER_AUTH="{\"github-oauth\": {\"github.com\": \"${GITHUB_TOKEN}\"}}"; fi && \
- COMPOSER_MEMORY_LIMIT=-1 composer install -n --no-dev --ansi --prefer-dist --optimize-autoloader
-
-# Install NodeJS dependencies.
-# Note that package-lock.json is not explicitly copied, allowing to run the
-# stack without existing lock file (this is not advisable, but allows to build
-# using latest versions of packages). package-lock.json should be comitted to
-# the repository.
-# File Gruntfile.js is copied into image as it is required to generate
-# front-end assets.
-COPY ${WEBROOT}/themes/custom/your_site_theme/Gruntfile.js ${WEBROOT}/themes/custom/your_site_theme/.eslintrc.json ${WEBROOT}/themes/custom/your_site_theme/package.json ${WEBROOT}/themes/custom/your_site_theme/package* /app/${WEBROOT}/themes/custom/your_site_theme/
-COPY ${WEBROOT}/themes/custom/your_site_theme/patches /app/${WEBROOT}/themes/custom/your_site_theme/patches
-
-# Install NodeJS dependencies.
-# Since Drupal does not use NodeJS for production, it does not matter if we
-# install development dependencnies here - they are not exposed in any way.
-RUN npm --prefix /app/${WEBROOT}/themes/custom/your_site_theme install --no-audit --no-progress --unsafe-perm
-
-# Copy all files into appllication source directory. Existing files are always
-# overridden.
-COPY . /app
-
-# Compile front-end assets. Running this after copying all files as we need
-# sources to compile assets.
-WORKDIR /app/${WEBROOT}/themes/custom/your_site_theme
-RUN npm run build
-
-WORKDIR /app
diff --git a/.drevops/devtool/tests/phpunit/Fixtures/root_dir/composer.json b/.drevops/devtool/tests/phpunit/Fixtures/root_dir/composer.json
deleted file mode 100644
index 33a6e54aa..000000000
--- a/.drevops/devtool/tests/phpunit/Fixtures/root_dir/composer.json
+++ /dev/null
@@ -1,159 +0,0 @@
-{
- "name": "your_org/your_site",
- "description": "Drupal 10 implementation of YOURSITE for YOURORG",
- "type": "project",
- "license": "proprietary",
- "repositories": [
- {
- "type": "composer",
- "url": "https://packages.drupal.org/8"
- },
- {
- "type": "composer",
- "url": "https://asset-packagist.org"
- }
- ],
- "require": {
- "php": ">=8.1",
- "composer/installers": "^2.1",
- "cweagans/composer-patches": "^1.7",
- "drupal/admin_toolbar": "^3.1",
- "drupal/clamav": "^2.0.2",
- "drupal/coffee": "^1.2",
- "drupal/config_split": "^1",
- "drupal/config_update": "^2@alpha",
- "drupal/core-composer-scaffold": "^10.0.0",
- "drupal/core-recommended": "^10.0.0",
- "drupal/environment_indicator": "^4.0",
- "drupal/pathauto": "^1.10",
- "drupal/redirect": "^1.7",
- "drupal/redis": "^1.6",
- "drupal/search_api": "^1.29",
- "drupal/search_api_solr": "^4.2",
- "drupal/shield": "^1.6",
- "drupal/stage_file_proxy": "^2",
- "drush/drush": "^12",
- "oomphinc/composer-installers-extender": "^2.0",
- "vlucas/phpdotenv": "^5.1",
- "webflo/drupal-finder": "^1.2"
- },
- "require-dev": {
- "behat/behat": "^3.10",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
- "drevops/behat-format-progress-fail": "^1",
- "drevops/behat-screenshot": "^1",
- "drevops/behat-steps": "^2",
- "drupal/core-dev": "^10.0.0",
- "drupal/drupal-extension": "^5@rc",
- "friendsoftwig/twigcs": "^6.2",
- "mglaman/phpstan-drupal": "^1.2",
- "palantirnet/drupal-rector": "^0.18",
- "phpcompatibility/php-compatibility": "^9.3",
- "phpmd/phpmd": "^2.13",
- "phpspec/prophecy-phpunit": "^2.0",
- "phpstan/extension-installer": "^1.3",
- "pyrech/composer-changelogs": "^1.8"
- },
- "conflict": {
- "drupal/drupal": "*"
- },
- "minimum-stability": "stable",
- "prefer-stable": true,
- "config": {
- "discard-changes": true,
- "sort-packages": true,
- "allow-plugins": {
- "composer/installers": true,
- "cweagans/composer-patches": true,
- "dealerdirect/phpcodesniffer-composer-installer": true,
- "drupal/core-composer-scaffold": true,
- "oomphinc/composer-installers-extender": true,
- "phpstan/extension-installer": true,
- "pyrech/composer-changelogs": true
- },
- "platform": {
- "php": "8.1.0"
- }
- },
- "autoload": {
- "classmap": [
- "scripts/composer/ScriptHandler.php"
- ]
- },
- "autoload-dev": {
- "classmap": [
- "tests/phpunit/"
- ]
- },
- "scripts": {
- "pre-install-cmd": [
- "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
- ],
- "pre-update-cmd": [
- "DrupalProject\\composer\\ScriptHandler::checkComposerVersion"
- ],
- "post-install-cmd": [
- "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
- ],
- "post-update-cmd": [
- "DrupalProject\\composer\\ScriptHandler::createRequiredFiles"
- ]
- },
- "extra": {
- "drupal-scaffold": {
- "locations": {
- "web-root": "web/"
- },
- "file-mapping": {
- "[project-root]/.editorconfig": false,
- "[project-root]/.gitattributes": false,
- "[web-root]/.htaccess": false,
- "[web-root]/.ht.router.php": false,
- "[web-root]/example.gitignore": false,
- "[web-root]/INSTALL.txt": false,
- "[web-root]/README.txt": false,
- "[web-root]/sites/example.settings.local.php": false,
- "[web-root]/sites/example.sites.php": false,
- "[web-root]/web.config": false
- }
- },
- "installer-paths": {
- "web/core": [
- "type:drupal-core"
- ],
- "web/libraries/{$name}": [
- "type:drupal-library",
- "type:bower-asset",
- "type:npm-asset"
- ],
- "web/modules/contrib/{$name}": [
- "type:drupal-module"
- ],
- "web/profiles/contrib/{$name}": [
- "type:drupal-profile"
- ],
- "web/themes/contrib/{$name}": [
- "type:drupal-theme"
- ],
- "drush/Commands/contrib/{$name}": [
- "type:drupal-drush"
- ],
- "web/modules/custom/{$name}": [
- "type:drupal-custom-module"
- ],
- "web/themes/custom/{$name}": [
- "type:drupal-custom-theme"
- ]
- },
- "installer-types": [
- "bower-asset",
- "npm-asset",
- "drupal-library"
- ],
- "composer-exit-on-patch-failure": true,
- "patchLevel": {
- "drupal/core": "-p2"
- },
- "patches": {}
- }
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/ArrayTrait.php b/.drevops/devtool/tests/phpunit/Traits/ArrayTrait.php
deleted file mode 100644
index c699ad161..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/ArrayTrait.php
+++ /dev/null
@@ -1,31 +0,0 @@
- $item) {
- $array[$k] = is_array($item) ? static::arrayReplaceValue($item, $cb) : $cb($item);
- }
-
- return $array;
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/AssertTrait.php b/.drevops/devtool/tests/phpunit/Traits/AssertTrait.php
deleted file mode 100644
index 414dd508c..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/AssertTrait.php
+++ /dev/null
@@ -1,34 +0,0 @@
-addToAssertionCount(1);
-
- return;
- }
- }
- $this->fail(sprintf('Failed asserting that string "%s" is present in array %s.', $needle, print_r($haystack, TRUE)));
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/ClosureWrapperTrait.php b/.drevops/devtool/tests/phpunit/Traits/ClosureWrapperTrait.php
deleted file mode 100644
index a79bf102f..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/ClosureWrapperTrait.php
+++ /dev/null
@@ -1,48 +0,0 @@
-getClosure() : $callback;
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/EnvTrait.php b/.drevops/devtool/tests/phpunit/Traits/EnvTrait.php
deleted file mode 100644
index 8b631ef1b..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/EnvTrait.php
+++ /dev/null
@@ -1,101 +0,0 @@
- $value) {
- if (str_starts_with($name, $prefix)) {
- static::envSet($name, $value);
- if ($remove) {
- unset($input[$name]);
- }
- }
- }
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/MockTrait.php b/.drevops/devtool/tests/phpunit/Traits/MockTrait.php
deleted file mode 100644
index dc2acc800..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/MockTrait.php
+++ /dev/null
@@ -1,82 +0,0 @@
- $methods_map
- * Optional array of methods and values, keyed by method name.
- * @param array|bool $args
- * Optional array of constructor arguments. If omitted, a constructor will
- * not be called. If TRUE, the original constructor will be called as-is.
- *
- * @return \PHPUnit\Framework\MockObject\MockObject
- * An instance of the mock.
- *
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- */
- protected function prepareMock(string $class, array $methods_map = [], array|bool $args = []): MockObject {
- $methods = array_filter(array_keys($methods_map), 'is_string');
-
- if (!class_exists($class)) {
- throw new \InvalidArgumentException(sprintf('Class %s does not exist', $class));
- }
-
- $reflection_class = new \ReflectionClass($class);
-
- if ($reflection_class->isAbstract()) {
- $mock = $this->getMockForAbstractClass($class, is_array($args) ? $args : [], '', !empty($args), TRUE, TRUE, $methods);
- }
- else {
- $mock = $this->getMockBuilder($class);
- if (is_array($args) && !empty($args)) {
- $mock = $mock->enableOriginalConstructor()
- ->setConstructorArgs($args);
- }
- elseif ($args === FALSE) {
- $mock = $mock->disableOriginalConstructor();
- }
-
- if (!empty($methods)) {
- $mock = $mock->onlyMethods($methods);
- }
-
- $mock = $mock->getMock();
- }
-
- foreach ($methods_map as $method => $value) {
- // Handle callback values differently.
- if ($value instanceof Stub) {
- $mock->expects($this->any())
- ->method($method)
- ->will($value);
- }
- elseif (is_callable($value)) {
- $mock->expects($this->any())
- ->method($method)
- ->willReturnCallback($value);
- }
- else {
- $mock->expects($this->any())
- ->method($method)
- ->willReturn($value);
- }
- }
-
- return $mock;
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/ReflectionTrait.php b/.drevops/devtool/tests/phpunit/Traits/ReflectionTrait.php
deleted file mode 100644
index d13fde60c..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/ReflectionTrait.php
+++ /dev/null
@@ -1,100 +0,0 @@
-hasMethod($name)) {
- throw new \InvalidArgumentException(sprintf('Method %s does not exist', $name));
- }
-
- $method = $class->getMethod($name);
-
- $original_accessibility = $method->isPublic();
-
- // Set method accessibility to true, so it can be invoked.
- $method->setAccessible(TRUE);
-
- // If the method is static, we won't pass an object instance to invokeArgs()
- // Otherwise, we ensure to pass the object instance.
- $invoke_object = $method->isStatic() ? NULL : (is_object($object) ? $object : NULL);
-
- // Ensure we have an object for non-static methods.
- if (!$method->isStatic() && $invoke_object === NULL) {
- throw new \InvalidArgumentException("An object instance is required for non-static methods");
- }
-
- $result = $method->invokeArgs($invoke_object, $args);
-
- // Reset the method's accessibility to its original state.
- $method->setAccessible($original_accessibility);
-
- return $result;
- }
-
- /**
- * Set protected property value.
- *
- * @param object $object
- * Object to set the value on.
- * @param string $property
- * Property name to set the value. Property should exists in the object.
- * @param mixed $value
- * Value to set to the property.
- */
- protected static function setProtectedValue($object, $property, mixed $value): void {
- $class = new \ReflectionClass($object::class);
- $property = $class->getProperty($property);
- $property->setAccessible(TRUE);
-
- $property->setValue($object, $value);
- }
-
- /**
- * Get protected value from the object.
- *
- * @param object $object
- * Object to set the value on.
- * @param string $property
- * Property name to get the value. Property should exists in the object.
- *
- * @return mixed
- * Protected property value.
- */
- protected static function getProtectedValue($object, $property) {
- $class = new \ReflectionClass($object::class);
- $property = $class->getProperty($property);
- $property->setAccessible(TRUE);
-
- return $property->getValue($class);
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Traits/VfsTrait.php b/.drevops/devtool/tests/phpunit/Traits/VfsTrait.php
deleted file mode 100644
index 7e4d0cdc4..000000000
--- a/.drevops/devtool/tests/phpunit/Traits/VfsTrait.php
+++ /dev/null
@@ -1,122 +0,0 @@
-testPath = $this->vfsCreateDirectory('somedir')->url();
- * $this->vfsCreateFile($this->testPath . '/file1');
- * $this->vfsCreateFile($this->testPath . '/file2');
- * }
- *
- * public function testSomething() {
- * // The full path will start with 'vfs://' stream wrapper.
- * $this->assertFileExists($this->testPath . '/file1');
- * $this->assertFileExists($this->testPath . '/file2');
- * }
- *
- * @endcode
- */
-trait VfsTrait {
-
- /**
- * The root directory for the virtual file system.
- *
- * @var \org\bovigo\vfs\vfsStreamDirectory
- */
- protected static $vfsRootDirectory;
-
- /**
- * Set up the root directory for the virtual file system.
- *
- * @param string $name
- * The name of the root directory.
- */
- public static function vfsSetRoot(string $name = 'root'): void {
- self::$vfsRootDirectory = vfsStream::setup($name);
- }
-
- /**
- * Create a directory.
- *
- * @param string $path
- * The path to the directory.
- *
- * @return \org\bovigo\vfs\vfsStreamDirectory
- * The directory container.
- */
- public static function vfsCreateDirectory(string $path): vfsStreamDirectory {
- if (!static::$vfsRootDirectory) {
- static::vfsSetRoot();
- }
-
- $path = static::vfsNormalizePath($path);
-
- $dirs = explode('/', $path);
- $container = static::$vfsRootDirectory;
- foreach ($dirs as $dir) {
- if (!$container->hasChild($dir)) {
- $container = vfsStream::newDirectory($dir)->at($container);
- }
- else {
- $container = $container->getChild($dir);
- }
- }
-
- return $container;
- }
-
- /**
- * Create a file.
- *
- * @param string $path
- * The path to the file.
- * @param string|null $contents
- * The contents of the file.
- * @param int|null $permissions
- * The permissions of the file.
- *
- * @return \org\bovigo\vfs\vfsStreamFile
- * The file container.
- */
- public static function vfsCreateFile($path, $contents = NULL, $permissions = NULL): vfsStreamFile {
- if (!static::$vfsRootDirectory) {
- static::vfsSetRoot();
- }
-
- $path = static::vfsNormalizePath($path);
-
- $dirs = explode('/', $path);
- $filename = array_pop($dirs);
- $container = self::vfsCreateDirectory(implode('/', $dirs));
-
- $container = vfsStream::newFile($filename, $permissions)->at($container);
-
- if ($contents) {
- $container->withContent($contents);
- }
-
- return $container;
- }
-
- protected static function vfsNormalizePath(string $path): string {
- $prefix = static::$vfsRootDirectory ? static::$vfsRootDirectory->url() . '/' : 'vfs://root/';
-
- if (str_starts_with($path, $prefix)) {
- $path = substr($path, strlen($prefix));
- }
-
- return $path;
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Command/CommandTestCase.php b/.drevops/devtool/tests/phpunit/Unit/Command/CommandTestCase.php
deleted file mode 100644
index 4fd891663..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Command/CommandTestCase.php
+++ /dev/null
@@ -1,62 +0,0 @@
- $input
- * Optional array of input arguments.
- * @param array $options
- * Optional array of options. See CommandTester::execute() for details.
- *
- * @return array
- * Array of output lines.
- */
- protected function runExecute(string|object $object_or_class, array $input = [], array $options = []): array {
- $application = new Application();
- /** @var \Symfony\Component\Console\Command\Command $instance */
- $instance = is_object($object_or_class) ? $object_or_class : new $object_or_class();
- $application->add($instance);
-
- /** @var string $name */
- $name = $this->getProtectedValue($instance, 'defaultName');
- $command = $application->find($name);
- $this->commandTester = new CommandTester($command);
-
- $this->commandTester->execute($input, $options);
-
- return explode(PHP_EOL, $this->commandTester->getDisplay());
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Command/ScaffoldUpdateCommandTest.php b/.drevops/devtool/tests/phpunit/Unit/Command/ScaffoldUpdateCommandTest.php
deleted file mode 100644
index d1cb44905..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Command/ScaffoldUpdateCommandTest.php
+++ /dev/null
@@ -1,62 +0,0 @@
-vfsCreateDirectory('root_dir');
- $this->rootDir = $root_dir_container->url();
-
- vfsStream::copyFromFileSystem($this->fixturesDir . '/root_dir', $root_dir_container, 1024 * 10);
-
- $this->scaffoldDir = $this->vfsCreateDirectory('scaffold_dir')->url();
- }
-
- /**
- * Test the execute method.
- *
- * @covers ::execute
- * @covers ::doExecute
- * @covers ::initIo
- * @covers ::configure
- * @group command
- */
- public function testExecute(): void {
- $output = $this->runExecute(ScaffoldUpdateCommand::class, [
- '--root' => $this->rootDir,
- ]);
- $this->assertArrayContainsString('Updating composer.json', $output);
-
- $this->assertArrayContainsString('Finished update scaffold files', $output);
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Composer/ComposerJsonManipulatorTest.php b/.drevops/devtool/tests/phpunit/Unit/Composer/ComposerJsonManipulatorTest.php
deleted file mode 100644
index 3e1d7df3d..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Composer/ComposerJsonManipulatorTest.php
+++ /dev/null
@@ -1,395 +0,0 @@
-testJsonFilePath = $this->vfsCreateFile('/test.json')->url();
- }
-
- /**
- * @covers ::save
- * @covers ::getFormattedData
- * @covers ::getNewline
- */
- public function testSave(): void {
- $m = new ComposerJsonManipulator(json_encode((object) [
- 'string' => 'value',
- 'int' => 1,
- 'float' => 1.1,
- 'array' => ['a', 'b', 'c'],
- 'object' => (object) ['a' => 'b'],
- ]));
-
- $m->save($this->testJsonFilePath);
- $actual = JsonFile::parseJson(file_get_contents($this->testJsonFilePath));
-
- $this->assertJsonValueEquals($actual, '$.string', 'value');
- $this->assertJsonValueEquals($actual, '$.int', 1);
- $this->assertJsonValueEquals($actual, '$.float', 1.1);
- $this->assertJsonValueEquals($actual, '$.array', ['a', 'b', 'c']);
- $this->assertJsonValueEquals($actual, '$.object.a', 'b');
- }
-
- /**
- * @covers ::addRepository
- * @dataProvider dataProviderAddRepository
- */
- public function testAddRepository(array $structure, array $additions, mixed $expected, bool $append = TRUE): void {
- $m = new ComposerJsonManipulator(json_encode((object) $structure));
-
- foreach ($additions as $name => $config) {
- $m->addRepository($name, $config, $append);
- }
-
- $this->assertEquals($expected, $m->getFormattedData());
- }
-
- public static function dataProviderAddRepository(): array {
- return [
-
- [[], [], []],
- [
- [],
- ['name' => ['type' => 'vcs', 'url' => 'https://example.com/repo.git']],
- ['repositories' => [['type' => 'vcs', 'url' => 'https://example.com/repo.git']]],
- ],
-
- [
- [],
- [
- 'repo1' => ['type' => 'git', 'url' => 'https://example.com/repo1.git'],
- 'repo2' => ['type' => 'composer', 'url' => 'https://example.com/repo2'],
- ],
- [
- 'repositories' => [
- ['type' => 'git', 'url' => 'https://example.com/repo1.git'],
- ['type' => 'composer', 'url' => 'https://example.com/repo2'],
- ],
- ],
- ],
-
- [
- ['repositories' => [['type' => 'package', 'url' => 'https://example.com/oldrepo']]],
- ['new_repo' => ['type' => 'vcs', 'url' => 'https://example.com/newrepo.git']],
- [
- 'repositories' => [
- ['type' => 'package', 'url' => 'https://example.com/oldrepo'],
- ['type' => 'vcs', 'url' => 'https://example.com/newrepo.git'],
- ],
- ],
- ],
-
- // Rewrite instead of append.
- [
- ['repositories' => [['type' => 'package', 'url' => 'https://example.com/oldrepo']]],
- ['new_repo' => ['type' => 'vcs', 'url' => 'https://example.com/newrepo.git']],
- [
- 'repositories' => [
- ['type' => 'vcs', 'url' => 'https://example.com/newrepo.git'],
- ],
- ],
- FALSE,
- ],
- ];
- }
-
- /**
- * @covers ::addDependency
- * @covers ::validatePackageName
- * @covers ::validatePackageVersion
- * @dataProvider dataProviderAddDependency
- */
- public function testAddDependency(array $initialData, string $package, string $version, mixed $expected, bool $expect_exception = FALSE): void {
- if ($expect_exception) {
- $this->expectException(\Exception::class);
- }
-
- $m = new ComposerJsonManipulator(json_encode((object) $initialData));
- $m->addDependency($package, $version);
- $this->assertEquals($expected, $m->getFormattedData());
- }
-
- public static function dataProviderAddDependency(): array {
- return [
- // Adding a dependency to an empty require section.
- [
- [],
- 'example/package',
- '^1.0',
- ['require' => ['example/package' => '^1.0']],
- ],
-
- // Adding a dependency when require section already has packages.
- [
- ['require' => ['existing/package' => '1.0.0']],
- 'example/package',
- '^1.0',
- ['require' => ['existing/package' => '1.0.0', 'example/package' => '^1.0']],
- ],
-
- // Adding a dependency when require section already has packages - order.
- [
- ['require' => ['existing/package' => '1.0.0']],
- 'an-example/package',
- '^1.0',
- ['require' => ['an-example/package' => '^1.0', 'existing/package' => '1.0.0']],
- ],
-
- // Adding a dependency that already exists (should update the version)
- [
- ['require' => ['example/package' => '1.0.0']],
- 'example/package',
- '^2.0',
- ['require' => ['example/package' => '^2.0']],
- ],
-
- // Adding a dependency with invalid package name.
- [
- ['require' => []],
- 'invalid/package/name',
- '^1.0',
- NULL,
- TRUE,
-
- ],
-
- // Adding a dependency with invalid version.
- [
- ['require' => []],
- 'example/package',
- 'invalid-version',
- NULL,
- TRUE,
- ],
- ];
- }
-
- /**
- * @covers ::addDevDependency
- * @covers ::validatePackageName
- * @covers ::validatePackageVersion
- * @dataProvider dataProviderAddDevDependency
- */
- public function testAddDevDependency(array $initialData, string $package, string $version, mixed $expected, bool $expect_exception = FALSE): void {
- if ($expect_exception) {
- $this->expectException(\Exception::class);
- }
-
- $m = new ComposerJsonManipulator(json_encode((object) $initialData));
- $m->addDevDependency($package, $version);
- $this->assertEquals($expected, $m->getFormattedData());
- }
-
- public static function dataProviderAddDevDependency(): array {
- return [
- // Adding a dependency to an empty require-dev section.
- [
- [],
- 'example/package',
- '^1.0',
- ['require-dev' => ['example/package' => '^1.0']],
- ],
-
- // Adding a dependency when require-dev section already has packages.
- [
- ['require-dev' => ['existing/package' => '1.0.0']],
- 'example/package',
- '^1.0',
- ['require-dev' => ['existing/package' => '1.0.0', 'example/package' => '^1.0']],
- ],
-
- // Adding a dependency when require-dev already has packages - order.
- [
- ['require-dev' => ['existing/package' => '1.0.0']],
- 'an-example/package',
- '^1.0',
- ['require-dev' => ['an-example/package' => '^1.0', 'existing/package' => '1.0.0']],
- ],
-
- // Adding a dependency that already exists (should update the version)
- [
- ['require-dev' => ['example/package' => '1.0.0']],
- 'example/package',
- '^2.0',
- ['require-dev' => ['example/package' => '^2.0']],
- ],
-
- // Adding a dependency with invalid package name.
- [
- ['require-dev' => []],
- 'invalid/package/name',
- '^1.0',
- NULL,
- TRUE,
-
- ],
-
- // Adding a dependency with invalid version.
- [
- ['require-dev' => []],
- 'example/package',
- 'invalid-version',
- NULL,
- TRUE,
- ],
- ];
- }
-
- /**
- * @covers ::mergeProperty
- * @covers ::refreshContents
- * @dataProvider dataProviderMergeProperty
- */
- public function testMergeProperty(array $initialData, string $propertyName, array $valueToMerge, bool $sort, mixed $expected): void {
- $m = new ComposerJsonManipulator(json_encode((object) $initialData));
-
- $m->mergeProperty($propertyName, $valueToMerge, $sort);
-
- $this->assertEquals($expected, $m->getFormattedData());
- }
-
- public static function dataProviderMergeProperty(): array {
- return [
- // Merging into an empty property.
- [
- [],
- 'extra',
- ['branch-alias' => ['dev-master' => '1.0-dev']],
- FALSE,
- ['extra' => ['branch-alias' => ['dev-master' => '1.0-dev']]],
- ],
-
- // Merging into an existing property.
- [
- ['extra' => ['branch-alias' => ['dev-master' => '1.0-dev']]],
- 'extra',
- ['branch-alias' => ['dev-feature' => '2.0-dev']],
- FALSE,
- ['extra' => ['branch-alias' => ['dev-master' => '1.0-dev', 'dev-feature' => '2.0-dev']]],
- ],
-
- // Merging and sorting.
- [
- ['extra' => ['b' => 'value1', 'a' => 'value2']],
- 'extra',
- ['c' => 'value3'],
- TRUE,
- ['extra' => ['a' => 'value2', 'b' => 'value1', 'c' => 'value3']],
- ],
-
- // Merging with an empty array.
- [
- ['extra' => ['some-key' => 'some-value']],
- 'extra',
- [],
- FALSE,
- ['extra' => ['some-key' => 'some-value']],
- ],
-
- ];
- }
-
- /**
- * @covers ::addPropertyAfter
- * @covers ::refreshContents
- * @dataProvider dataProviderAddPropertyAfter
- */
- public function testAddPropertyAfter(array $initialData, string $name, mixed $value, string $after, mixed $expected): void {
- $m = new ComposerJsonManipulator(json_encode((object) $initialData));
-
- $m->addPropertyAfter($name, $value, $after);
-
- $this->assertEquals($expected, $m->getFormattedData());
- }
-
- public static function dataProviderAddPropertyAfter(): array {
- return [
- // Adding a property at the root level.
- [
- ['property1' => 'value1', 'property2' => 'value2'],
- 'newProperty',
- 'newValue',
- 'property1',
- ['property1' => 'value1', 'newProperty' => 'newValue', 'property2' => 'value2'],
- ],
-
- // Adding a nested property.
- [
- ['parent' => ['child1' => 'value1', 'child2' => 'value2']],
- 'parent.newChild',
- 'newValue',
- 'parent.child1',
- ['parent' => ['child1' => 'value1', 'newChild' => 'newValue', 'child2' => 'value2']],
- ],
-
- // Adding a property when the 'after' property doesn't exist.
- [
- ['property1' => 'value1'],
- 'newProperty',
- 'newValue',
- 'nonExistingProperty',
- // Adjust based on actual behavior.
- ['property1' => 'value1', 'newProperty' => 'newValue'],
- ],
-
- // Adding a property when the target parent in 'after' does not exist.
- [
- ['existingProperty' => 'value'],
- 'newProperty',
- 'newValue',
- 'nonExistingParent.afterProperty',
- [
- 'existingProperty' => 'value',
- ],
- ],
-
- // Adding a property to an empty JSON structure.
- [
- [],
- 'newProperty',
- 'newValue',
- 'afterProperty',
- [
- 'newProperty' => 'newValue',
- ],
- ],
-
- // Adding a deeply nested new property.
- [
- ['level1' => ['level2' => ['existingProperty' => 'value']]],
- 'level1.level2.newProperty',
- 'newValue',
- 'level1.level2.existingProperty',
- [
- 'level1' => [
- 'level2' => [
- 'existingProperty' => 'value',
- 'newProperty' => 'newValue',
- ],
- ],
- ],
- ],
-
- ];
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Docker/DockerCommandTest.php b/.drevops/devtool/tests/phpunit/Unit/Docker/DockerCommandTest.php
deleted file mode 100644
index 1aa017b15..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Docker/DockerCommandTest.php
+++ /dev/null
@@ -1,43 +0,0 @@
-assertEquals('RUN', $command->getKeyword());
- $this->assertEquals('apt-get update', $command->getArguments());
- }
-
- /**
- * @covers ::__construct
- * @covers ::getKeyword
- * @covers ::getArguments
- */
- public function testInvalidCommandCreation(): void {
- $this->expectException(Exception::class);
- new DockerCommand('INVALIDKEYWORD', 'some arguments');
- }
-
- /**
- * @covers ::__construct
- * @covers ::getKeyword
- * @covers ::getArguments
- */
- public function testValidCommandWithMultipleArguments(): void {
- $command = new DockerCommand('ADD', '/source /destination');
- $this->assertEquals('ADD', $command->getKeyword());
- $this->assertEquals('/source /destination', $command->getArguments());
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Docker/DockerfileParserTest.php b/.drevops/devtool/tests/phpunit/Unit/Docker/DockerfileParserTest.php
deleted file mode 100644
index 727227c95..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Docker/DockerfileParserTest.php
+++ /dev/null
@@ -1,85 +0,0 @@
-assertCount(2, $commands);
- $this->assertEquals('FROM', $commands[0]->getKeyword());
- $this->assertEquals('php:7.4-cli', $commands[0]->getArguments());
- $this->assertEquals('RUN', $commands[1]->getKeyword());
- $this->assertEquals('apt-get update', $commands[1]->getArguments());
-
- unlink($dockerfile);
- }
-
- /**
- * @covers ::parse
- */
- public function testParseMultilineCommands(): void {
- $dockerfile = __DIR__ . '/Dockerfile.test';
- file_put_contents($dockerfile, "RUN apt-get update \\\n && apt-get install -y git");
-
- $commands = DockerfileParser::parse($dockerfile);
- $this->assertCount(1, $commands);
- $this->assertEquals('RUN', $commands[0]->getKeyword());
- $this->assertEquals('apt-get update && apt-get install -y git', $commands[0]->getArguments());
-
- unlink($dockerfile);
- }
-
- /**
- * @covers ::parse
- */
- public function testParseWithInvalidCommands(): void {
- $dockerfile = __DIR__ . '/Dockerfile.test';
- file_put_contents($dockerfile, "INVALID INSTRUCTION\nRUN apt-get update");
-
- $commands = DockerfileParser::parse($dockerfile);
- $this->assertCount(0, $commands);
-
- unlink($dockerfile);
- }
-
- /**
- * @covers ::parse
- */
- public function testParseWithEmptyFile(): void {
- $dockerfile = __DIR__ . '/Dockerfile.test';
- file_put_contents($dockerfile, "");
-
- $commands = DockerfileParser::parse($dockerfile);
- $this->assertEmpty($commands);
-
- unlink($dockerfile);
- }
-
- /**
- * @covers ::parse
- */
- public function testParseWithIncorrectFormat(): void {
- $dockerfile = __DIR__ . '/Dockerfile.test';
- file_put_contents($dockerfile, "RUNwithoutSpace apt-get update");
-
- $commands = DockerfileParser::parse($dockerfile);
- $this->assertEmpty($commands);
-
- unlink($dockerfile);
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Utils/ArraysTest.php b/.drevops/devtool/tests/phpunit/Unit/Utils/ArraysTest.php
deleted file mode 100644
index 86c4f9d63..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Utils/ArraysTest.php
+++ /dev/null
@@ -1,284 +0,0 @@
-form['details']['element'] = [
- '#value' => 'Nested element',
- ];
-
- // Set up parent array.
- $this->parents = ['details', 'element'];
- }
-
- /**
- * @covers ::insertAfterKey
- * @dataProvider providerForInsertAfterKey
- */
- public function testInsertAfterKey(array $originalArray, string $key, string $newKey, mixed $newValue, mixed $expectedArray): void {
- $result = Arrays::insertAfterKey($originalArray, $key, $newKey, $newValue);
- $this->assertEquals($expectedArray, $result);
- }
-
- public static function providerForInsertAfterKey(): array {
- return [
- // Test insertion in the middle of array.
- [
- ['a' => 1, 'b' => 2, 'c' => 3],
- 'a',
- 'newKey',
- 'newValue',
- ['a' => 1, 'newKey' => 'newValue', 'b' => 2, 'c' => 3],
- ],
- // Test insertion at the end.
- [
- ['a' => 1, 'b' => 2],
- 'b',
- 'newKey',
- 'newValue',
- ['a' => 1, 'b' => 2, 'newKey' => 'newValue'],
- ],
- // Test insertion when key does not exist.
- [
- ['a' => 1, 'b' => 2],
- 'nonExistingKey',
- 'newKey',
- 'newValue',
- ['a' => 1, 'b' => 2, 'newKey' => 'newValue'],
- ],
- // Test insertion in an empty array.
- [
- [],
- 'anyKey',
- 'newKey',
- 'newValue',
- ['newKey' => 'newValue'],
- ],
-
- // Test with object as new value.
- [
- ['a' => 1, 'b' => 2],
- 'a',
- 'newKey',
- (object) ['property' => 'value'],
- ['a' => 1, 'newKey' => (object) ['property' => 'value'], 'b' => 2],
- ],
- // Test with array as new value.
- [
- ['a' => 1, 'b' => 2],
- 'b',
- 'newKey',
- ['nestedKey' => 'nestedValue'],
- ['a' => 1, 'b' => 2, 'newKey' => ['nestedKey' => 'nestedValue']],
- ],
- ];
- }
-
- /**
- * Tests getting nested array values.
- *
- * @covers ::getValue
- */
- public function testGetValue(): void {
- // Verify getting a value of a nested element.
- $value = Arrays::getValue($this->form, $this->parents);
- $this->assertSame('Nested element', $value['#value'], 'Nested element value found.');
-
- // Verify changing a value of a nested element by reference.
- $value = &Arrays::getValue($this->form, $this->parents);
- $value['#value'] = 'New value';
- $value = Arrays::getValue($this->form, $this->parents);
- $this->assertSame('New value', $value['#value'], 'Nested element value was changed by reference.');
- $this->assertSame('New value', $this->form['details']['element']['#value'], 'Nested element value was changed by reference.');
-
- // Verify that an existing key is reported back.
- $key_exists = NULL;
- Arrays::getValue($this->form, $this->parents, $key_exists);
- $this->assertTrue($key_exists, 'Existing key found.');
-
- // Verify that a non-existing key is reported back and throws no errors.
- $key_exists = NULL;
- $parents = $this->parents;
- $parents[] = 'foo';
- Arrays::getValue($this->form, $parents, $key_exists);
- $this->assertFalse($key_exists, 'Non-existing key not found.');
- }
-
- /**
- * Tests setting nested array values.
- *
- * @covers ::setValue
- */
- public function testSetValue(): void {
- $new_value = [
- '#value' => 'New value',
- '#required' => TRUE,
- ];
-
- // Verify setting the value of a nested element.
- Arrays::setValue($this->form, $this->parents, $new_value);
- $this->assertSame('New value', $this->form['details']['element']['#value'], 'Changed nested element value found.');
- $this->assertTrue($this->form['details']['element']['#required'], 'New nested element value found.');
- }
-
- /**
- * Tests force-setting values.
- *
- * @covers ::setValue
- */
- public function testSetValueForce(): void {
- $new_value = [
- 'one',
- ];
- $this->form['details']['non-array-parent'] = 'string';
- $parents = ['details', 'non-array-parent', 'child'];
- Arrays::setValue($this->form, $parents, $new_value, TRUE);
- $this->assertSame($new_value, $this->form['details']['non-array-parent']['child'], 'The nested element was not forced to the new value.');
- }
-
- /**
- * Tests Arrays::mergeDeepArray().
- *
- * @covers ::mergeDeep
- * @covers ::mergeDeepArray
- */
- public function testMergeDeepArray(): void {
- $link_options_1 = [
- 'fragment' => 'x',
- 'attributes' => ['title' => 'X', 'class' => ['a', 'b']],
- 'language' => 'en',
- ];
- $link_options_2 = [
- 'fragment' => 'y',
- 'attributes' => ['title' => 'Y', 'class' => ['c', 'd']],
- 'absolute' => TRUE,
- ];
- $expected = [
- 'fragment' => 'y',
- 'attributes' => ['title' => 'Y', 'class' => ['a', 'b', 'c', 'd']],
- 'language' => 'en',
- 'absolute' => TRUE,
- ];
- $this->assertSame($expected, Arrays::mergeDeepArray([$link_options_1, $link_options_2]), 'Arrays::mergeDeepArray() returned a properly merged array.');
- // Test wrapper function, Arrays::mergeDeep().
- $this->assertSame($expected, Arrays::mergeDeep($link_options_1, $link_options_2), 'Arrays::mergeDeep() returned a properly merged array.');
- }
-
- /**
- * Tests that arrays with implicit keys are appended, not merged.
- *
- * @covers ::mergeDeepArray
- */
- public function testMergeImplicitKeys(): void {
- $a = [
- 'subkey' => ['X', 'Y'],
- ];
- $b = [
- 'subkey' => ['X'],
- ];
-
- // Drupal core behavior.
- $expected = [
- 'subkey' => ['X', 'Y', 'X'],
- ];
- $actual = Arrays::mergeDeepArray([$a, $b]);
- $this->assertSame($expected, $actual, 'drupal_array_merge_deep() creates new numeric keys in the implicit sequence.');
- }
-
- /**
- * Tests that even with explicit keys, values are appended, not merged.
- *
- * @covers ::mergeDeepArray
- */
- public function testMergeExplicitKeys(): void {
- $a = [
- 'subkey' => [
- 0 => 'A',
- 1 => 'B',
- ],
- ];
- $b = [
- 'subkey' => [
- 0 => 'C',
- 1 => 'D',
- ],
- ];
-
- // Drupal core behavior.
- $expected = [
- 'subkey' => [
- 0 => 'A',
- 1 => 'B',
- 2 => 'C',
- 3 => 'D',
- ],
- ];
- $actual = Arrays::mergeDeepArray([$a, $b]);
- $this->assertSame($expected, $actual, 'drupal_array_merge_deep() creates new numeric keys in the explicit sequence.');
- }
-
- /**
- * Tests that array keys values on the first array are ignored when merging.
- *
- * Even if the initial ordering would place the data from the second array
- * before those in the first one, they are still appended, and the keys on
- * the first array are deleted and regenerated.
- *
- * @covers ::mergeDeepArray
- */
- public function testMergeOutOfSequenceKeys(): void {
- $a = [
- 'subkey' => [
- 10 => 'A',
- 30 => 'B',
- ],
- ];
- $b = [
- 'subkey' => [
- 20 => 'C',
- 0 => 'D',
- ],
- ];
-
- // Drupal core behavior.
- $expected = [
- 'subkey' => [
- 0 => 'A',
- 1 => 'B',
- 2 => 'C',
- 3 => 'D',
- ],
- ];
- $actual = Arrays::mergeDeepArray([$a, $b]);
- $this->assertSame($expected, $actual, 'drupal_array_merge_deep() ignores numeric key order when merging.');
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Utils/ClassLoaderTest.php b/.drevops/devtool/tests/phpunit/Unit/Utils/ClassLoaderTest.php
deleted file mode 100644
index 2678e62d9..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Utils/ClassLoaderTest.php
+++ /dev/null
@@ -1,80 +0,0 @@
-testPath = $this->vfsCreateDirectory('classLoaderTest')->url();
-
- $this->vfsCreateFile($this->testPath . '/AbstractTestClass.php', <<<'EOD'
-vfsCreateFile($this->testPath . '/Test1Class.php', <<<'EOD'
-vfsCreateFile($this->testPath . '/Test2Class.php', <<<'EOD'
-testPath);
- $this->assertContains('DrevOps\DevTool\Utils\Tests\AbstractTestClass', $classes);
- $this->assertContains('DrevOps\DevTool\Utils\Tests\Test1Class', $classes);
- $this->assertContains('DrevOps\DevTool\Utils\Tests\Test2Class', $classes);
- }
-
- /**
- * @covers ::load
- * @covers ::glob
- */
- public function testLoadClassesFromPathFilterByParent(): void {
- $classes = ClassLoader::load($this->testPath, 'DrevOps\DevTool\Utils\Tests\AbstractTestClass');
- $this->assertNotContains('DrevOps\DevTool\Utils\Tests\AbstractTestClass', $classes);
- $this->assertContains('DrevOps\DevTool\Utils\Tests\Test1Class', $classes);
- $this->assertNotContains('DrevOps\DevTool\Utils\Tests\Test2Class', $classes);
- }
-
- /**
- * @covers ::filterByClass
- */
- public function testFilterByClass(): void {
- $classes = [
- 'DrevOps\DevTool\Utils\Tests\TestClass',
- 'DrevOps\DevTool\Utils\AnotherClass',
- ];
- $filtered = ClassLoader::filterByClass(TestCase::class, $classes);
- $this->assertNotContains('DrevOps\DevTool\Utils\Tests\TestClass', $filtered);
- }
-
-}
diff --git a/.drevops/devtool/tests/phpunit/Unit/Utils/DownloaderTest.php b/.drevops/devtool/tests/phpunit/Unit/Utils/DownloaderTest.php
deleted file mode 100644
index 1393c6dc7..000000000
--- a/.drevops/devtool/tests/phpunit/Unit/Utils/DownloaderTest.php
+++ /dev/null
@@ -1,52 +0,0 @@
- 200]);
- $client = new MockHttpClient($response);
-
- $downloader = new Downloader($client);
- $result = $downloader->download($src, $dst);
-
- $this->assertEquals($dst, $result);
- $this->assertStringEqualsFile($dst, $content);
- unlink($dst);
- }
-
- /**
- * @covers ::__construct
- * @covers ::download
- */
- public function testFailedDownload(): void {
- $this->expectException(\Exception::class);
-
- $src = 'http://example.com/invalidfile.txt';
- $dst = 'path/to/local/file.txt';
-
- $response = new MockResponse('', ['http_code' => 404]);
- $client = new MockHttpClient($response);
-
- $downloader = new Downloader($client);
- $downloader->download($src, $dst);
- }
-
-}