From f14b9febe94a5341a967995a3c5639ed6229f4d6 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Thu, 7 Nov 2024 13:31:12 +0100 Subject: [PATCH 01/62] re organized structure --- .github/workflows/deployment_build.yml | 2 +- .rsync-exclude | 27 -------------------------- .rsync-include | 14 +++++++++++++ 3 files changed, 15 insertions(+), 28 deletions(-) delete mode 100644 .rsync-exclude create mode 100644 .rsync-include diff --git a/.github/workflows/deployment_build.yml b/.github/workflows/deployment_build.yml index d7edda4f..11684b58 100644 --- a/.github/workflows/deployment_build.yml +++ b/.github/workflows/deployment_build.yml @@ -208,7 +208,7 @@ jobs: - name: rsync deployments uses: burnett01/rsync-deployments@7.0.1 with: - switches: -avz --no-o --no-g --no-perms --no-t --omit-dir-times --delete --exclude-from='.rsync-exclude' + switches: -avz --no-o --no-g --no-perms --no-t --omit-dir-times --delete --exclude '*' --include-from='.rsync-include' path: / remote_path: ${{ secrets.DEPLOY_PATH_API_BUILD }} remote_host: ${{ secrets.DEPLOY_HOST }} diff --git a/.rsync-exclude b/.rsync-exclude deleted file mode 100644 index 08a0a9c2..00000000 --- a/.rsync-exclude +++ /dev/null @@ -1,27 +0,0 @@ -/.git -/*.dist -/bin -/tests/ -/config/autoload/*.dist -/config/autoload/*.develope.php -/config/autoload/*.local.php -/config/autoload/*.testing.php -/config/*.dist -/node_modules -/client -/database -/data/log/* -/scripts -/docker -/public/assets -/public/index.html -/*.md -/*.xml -/*.neon -/composer.* -/*.yml -/LICENSE -/.github -/docs -.env* -.rsync-exclude diff --git a/.rsync-include b/.rsync-include new file mode 100644 index 00000000..aae45ac2 --- /dev/null +++ b/.rsync-include @@ -0,0 +1,14 @@ +/config/config.php +/config/container.php +/config/pipeline.php +/config/routes.php +/config/autoload/*.global.php +/data/ +/data/cache/ +/data/log/ +/public/*.txt +/puplic/*.ico +/public/api/* +/public/api/.* +/public/src/* +/constants.php From f0a39e0409718b5318b952db6f6dbc2f32623ba8 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Mon, 16 Jun 2025 18:51:22 +0200 Subject: [PATCH 02/62] update dependecies --- composer.lock | 2059 +++++++++++++++++++++++-------------------------- 1 file changed, 953 insertions(+), 1106 deletions(-) diff --git a/composer.lock b/composer.lock index d2920520..ed20a505 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "brick/math", - "version": "0.12.1", + "version": "0.13.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1" + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1", - "reference": "f510c0a40911935b77b86859eb5223d58d660df1", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", "shasum": "" }, "require": { @@ -26,7 +26,7 @@ "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^10.1", - "vimeo/psalm": "5.16.0" + "vimeo/psalm": "6.8.8" }, "type": "library", "autoload": { @@ -56,7 +56,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.12.1" + "source": "https://github.com/brick/math/tree/0.13.1" }, "funding": [ { @@ -64,30 +64,30 @@ "type": "github" } ], - "time": "2023-11-29T23:19:16+00:00" + "time": "2025-03-29T13:50:30+00:00" }, { "name": "brick/varexporter", - "version": "0.5.0", + "version": "0.6.0", "source": { "type": "git", "url": "https://github.com/brick/varexporter.git", - "reference": "84b2a7a91f69aa5d079aec5a0a7256ebf2dceb6b" + "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/84b2a7a91f69aa5d079aec5a0a7256ebf2dceb6b", - "reference": "84b2a7a91f69aa5d079aec5a0a7256ebf2dceb6b", + "url": "https://api.github.com/repos/brick/varexporter/zipball/af98bfc2b702a312abbcaff37656dbe419cec5bc", + "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc", "shasum": "" }, "require": { "nikic/php-parser": "^5.0", - "php": "^7.4 || ^8.0" + "php": "^8.1" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^9.3", - "psalm/phar": "5.21.1" + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "6.8.4" }, "type": "library", "autoload": { @@ -105,7 +105,7 @@ ], "support": { "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.5.0" + "source": "https://github.com/brick/varexporter/tree/0.6.0" }, "funding": [ { @@ -113,7 +113,7 @@ "type": "github" } ], - "time": "2024-05-10T17:15:19+00:00" + "time": "2025-02-20T17:42:39+00:00" }, { "name": "composer/package-versions-deprecated", @@ -190,16 +190,16 @@ }, { "name": "doctrine/dbal", - "version": "4.0.4", + "version": "4.2.4", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "50fda19f80724b55ff770bb4ff352407008e63c5" + "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/50fda19f80724b55ff770bb4ff352407008e63c5", - "reference": "50fda19f80724b55ff770bb4ff352407008e63c5", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b37d160498ea91a2382a2ebe825c4ea6254fc0ec", + "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec", "shasum": "" }, "require": { @@ -209,19 +209,17 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/coding-standard": "13.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "1.11.5", - "phpstan/phpstan-phpunit": "1.4.0", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "10.5.22", - "psalm/plugin-phpunit": "0.19.0", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.1", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "10.5.46", + "slevomat/coding-standard": "8.16.2", + "squizlabs/php_codesniffer": "3.13.1", "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0", - "vimeo/psalm": "5.24.0" + "symfony/console": "^5.4|^6.3|^7.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -278,7 +276,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.0.4" + "source": "https://github.com/doctrine/dbal/tree/4.2.4" }, "funding": [ { @@ -294,33 +292,34 @@ "type": "tidelift" } ], - "time": "2024-06-19T11:57:23+00:00" + "time": "2025-06-15T23:15:01+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.3", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -328,7 +327,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -339,9 +338,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/event-manager", @@ -513,16 +512,16 @@ }, { "name": "doctrine/migrations", - "version": "3.8.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "535a70dcbd88b8c6ba945be050977457f4f4c06c" + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/535a70dcbd88b8c6ba945be050977457f4f4c06c", - "reference": "535a70dcbd88b8c6ba945be050977457f4f4c06c", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", "shasum": "" }, "require": { @@ -542,9 +541,10 @@ "require-dev": { "doctrine/coding-standard": "^12", "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", + "fig/log-test": "^1", "phpstan/phpstan": "^1.10", "phpstan/phpstan-deprecation-rules": "^1.1", "phpstan/phpstan-phpunit": "^1.3", @@ -595,7 +595,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.8.0" + "source": "https://github.com/doctrine/migrations/tree/3.9.0" }, "funding": [ { @@ -611,20 +611,20 @@ "type": "tidelift" } ], - "time": "2024-06-26T14:12:46+00:00" + "time": "2025-03-26T06:48:45+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.2", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", "shasum": "" }, "require": { @@ -670,7 +670,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" }, "funding": [ { @@ -678,7 +678,7 @@ "type": "github" } ], - "time": "2023-10-06T06:47:41+00:00" + "time": "2025-03-06T22:45:56+00:00" }, { "name": "envms/fluentpdo", @@ -796,16 +796,16 @@ }, { "name": "firebase/php-jwt", - "version": "v6.10.1", + "version": "v6.11.1", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "500501c2ce893c824c801da135d02661199f60c5" + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/500501c2ce893c824c801da135d02661199f60c5", - "reference": "500501c2ce893c824c801da135d02661199f60c5", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", "shasum": "" }, "require": { @@ -853,22 +853,22 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.10.1" + "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" }, - "time": "2024-05-18T18:05:11+00:00" + "time": "2025-04-09T20:32:01+00:00" }, { "name": "jetbrains/phpstorm-attributes", - "version": "1.1", + "version": "1.2", "source": { "type": "git", "url": "https://github.com/JetBrains/phpstorm-attributes.git", - "reference": "22fb28d679deceedba8366dbae65cc8ebfc17e26" + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/22fb28d679deceedba8366dbae65cc8ebfc17e26", - "reference": "22fb28d679deceedba8366dbae65cc8ebfc17e26", + "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/64de815a4509c29e00d5e3474087fd24c171afc2", + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2", "shasum": "" }, "type": "library", @@ -895,41 +895,43 @@ ], "support": { "issues": "https://youtrack.jetbrains.com/newIssue?project=WI", - "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.1" + "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.2" }, - "time": "2023-09-01T08:50:25+00:00" + "time": "2024-10-11T10:46:19+00:00" }, { "name": "laminas/laminas-cli", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-cli.git", - "reference": "cc59875b2a983b05a70abf4f9b3af739b1257f34" + "reference": "159b48f896fb2502cb6618a95307b56a0f23e592" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cli/zipball/cc59875b2a983b05a70abf4f9b3af739b1257f34", - "reference": "cc59875b2a983b05a70abf4f9b3af739b1257f34", + "url": "https://api.github.com/repos/laminas/laminas-cli/zipball/159b48f896fb2502cb6618a95307b56a0f23e592", + "reference": "159b48f896fb2502cb6618a95307b56a0f23e592", "shasum": "" }, "require": { "composer-runtime-api": "^2.0.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0 || ^2.0", "symfony/console": "^6.0 || ^7.0", "symfony/event-dispatcher": "^6.0 || ^7.0", - "symfony/polyfill-php80": "^1.17", "webmozart/assert": "^1.10" }, + "conflict": { + "amphp/amp": "<2.6.4" + }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-mvc": "^3.7.0", - "laminas/laminas-servicemanager": "^3.22.1", + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-mvc": "^3.8.0", + "laminas/laminas-servicemanager": "^3.23.0", "mikey179/vfsstream": "2.0.x-dev", - "phpunit/phpunit": "^10.5.5", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.18" + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "bin": [ "bin/laminas" @@ -965,31 +967,31 @@ "type": "community_bridge" } ], - "time": "2024-01-02T15:08:03+00:00" + "time": "2024-11-22T12:39:15+00:00" }, { "name": "laminas/laminas-code", - "version": "4.14.0", + "version": "4.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c" + "reference": "1793e78dad4108b594084d05d1fb818b85b110af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/562e02b7d85cb9142b5116cc76c4c7c162a11a1c", - "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1793e78dad4108b594084d05d1fb818b85b110af", + "reference": "1793e78dad4108b594084d05d1fb818b85b110af", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.5.0", - "laminas/laminas-stdlib": "^3.17.0", - "phpunit/phpunit": "^10.3.3", + "laminas/laminas-coding-standard": "^3.0.0", + "laminas/laminas-stdlib": "^3.18.0", + "phpunit/phpunit": "^10.5.37", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.15.0" }, @@ -1028,36 +1030,36 @@ "type": "community_bridge" } ], - "time": "2024-06-17T08:50:25+00:00" + "time": "2024-11-20T13:15:13+00:00" }, { "name": "laminas/laminas-component-installer", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-component-installer.git", - "reference": "e4c15d50c5dcbe0207285659f083df70bb256bb6" + "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-component-installer/zipball/e4c15d50c5dcbe0207285659f083df70bb256bb6", - "reference": "e4c15d50c5dcbe0207285659f083df70bb256bb6", + "url": "https://api.github.com/repos/laminas/laminas-component-installer/zipball/8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", + "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-component-installer": "*" }, "require-dev": { - "composer/composer": "^2.6.4", - "laminas/laminas-coding-standard": "~2.5.0", + "composer/composer": "^2.7.7", + "laminas/laminas-coding-standard": "~3.0.0", "mikey179/vfsstream": "^1.6.11", - "phpunit/phpunit": "^10.4", - "psalm/plugin-phpunit": "^0.18.0", - "vimeo/psalm": "^5.15.0", + "phpunit/phpunit": "^10.5.35", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.24.0", "webmozart/assert": "^1.11.0" }, "type": "composer-plugin", @@ -1095,26 +1097,26 @@ "type": "community_bridge" } ], - "time": "2023-11-21T15:32:55+00:00" + "time": "2024-11-26T14:11:43+00:00" }, { "name": "laminas/laminas-config-aggregator", - "version": "1.15.0", + "version": "1.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config-aggregator.git", - "reference": "102e048734413a4499846571b156aeaa6c2aba56" + "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/102e048734413a4499846571b156aeaa6c2aba56", - "reference": "102e048734413a4499846571b156aeaa6c2aba56", + "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/a5cc009f58daa4e1b968abd65972fa3a481c22c5", + "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5", "shasum": "" }, "require": { - "brick/varexporter": "^0.5.0 || ^0.4.0", + "brick/varexporter": "^0.5.0 || ^0.4.0 || ^0.6.0", "laminas/laminas-stdlib": "^3.18.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "webimpress/safe-writer": "^2.2.0" }, "conflict": { @@ -1122,11 +1124,11 @@ "zendframework/zend-config-aggregator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-config": "^3.9.0", - "phpunit/phpunit": "^10.5.11", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.22.2" + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-config": "^3.10.1", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.8.6" }, "suggest": { "laminas/laminas-config": "Allows loading configuration from XML, INI, YAML, and JSON files", @@ -1163,34 +1165,34 @@ "type": "community_bridge" } ], - "time": "2024-05-12T10:04:30+00:00" + "time": "2025-02-21T18:18:40+00:00" }, { "name": "laminas/laminas-development-mode", - "version": "3.12.0", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-development-mode.git", - "reference": "cd2f9885deab41ef590924d53ad4041db490b923" + "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/cd2f9885deab41ef590924d53ad4041db490b923", - "reference": "cd2f9885deab41ef590924d53ad4041db490b923", + "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/21e4e5fd40c5b22b710306f72060c15ec6091279", + "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zfcampus/zf-development-mode": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "mikey179/vfsstream": "^1.6.11", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "laminas/laminas-coding-standard": "~3.1.0", + "mikey179/vfsstream": "^1.6.12", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.12.0" }, "bin": [ "bin/laminas-development-mode" @@ -1224,7 +1226,7 @@ "type": "community_bridge" } ], - "time": "2023-11-21T16:03:48+00:00" + "time": "2025-06-16T09:56:05+00:00" }, { "name": "laminas/laminas-diactoros", @@ -1267,8 +1269,8 @@ "type": "library", "extra": { "laminas": { - "config-provider": "Laminas\\Diactoros\\ConfigProvider", - "module": "Laminas\\Diactoros" + "module": "Laminas\\Diactoros", + "config-provider": "Laminas\\Diactoros\\ConfigProvider" } }, "autoload": { @@ -1325,33 +1327,32 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.13.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba", + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.27.0", - "laminas/laminas-coding-standard": "~2.5.0", - "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.7", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.9" + "infection/infection": "^0.29.8", + "laminas/laminas-coding-standard": "~3.0.1", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.6.2" }, "type": "library", "autoload": { @@ -1383,42 +1384,42 @@ "type": "community_bridge" } ], - "time": "2023-10-10T08:35:13+00:00" + "time": "2025-05-06T19:29:36+00:00" }, { "name": "laminas/laminas-filter", - "version": "2.36.0", + "version": "2.41.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "307afc21ada0648e84cdcf9e14cd84bd43ee9d13" + "reference": "eaa00111231bf6669826ae84d3abe85b94477585" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/307afc21ada0648e84cdcf9e14cd84bd43ee9d13", - "reference": "307afc21ada0648e84cdcf9e14cd84bd43ee9d13", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/eaa00111231bf6669826ae84d3abe85b94477585", + "reference": "eaa00111231bf6669826ae84d3abe85b94477585", "shasum": "" }, "require": { "ext-mbstring": "*", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.13.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "laminas/laminas-stdlib": "^3.19.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "laminas/laminas-validator": "<2.10.1", "zendframework/zend-filter": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-crypt": "^3.11", - "laminas/laminas-i18n": "^2.26.0", - "laminas/laminas-uri": "^2.11", + "laminas/laminas-coding-standard": "~3.0", + "laminas/laminas-crypt": "^3.12", + "laminas/laminas-i18n": "^2.28.1", + "laminas/laminas-uri": "^2.12", "pear/archive_tar": "^1.5.0", - "phpunit/phpunit": "^10.5.20", + "phpunit/phpunit": "^10.5.36", "psalm/plugin-phpunit": "^0.19.0", "psr/http-factory": "^1.1.0", - "vimeo/psalm": "^5.24.0" + "vimeo/psalm": "^5.26.1" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -1462,34 +1463,34 @@ "type": "community_bridge" } ], - "time": "2024-06-13T10:31:36+00:00" + "time": "2025-05-05T02:02:31+00:00" }, { "name": "laminas/laminas-httphandlerrunner", - "version": "2.10.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-httphandlerrunner.git", - "reference": "35a0ba92e940a2f9533754f5a56187fa321f7693" + "reference": "b14da3519c650e9436e410cfedee6f860312eff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/35a0ba92e940a2f9533754f5a56187fa321f7693", - "reference": "35a0ba92e940a2f9533754f5a56187fa321f7693", + "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/b14da3519c650e9436e410cfedee6f860312eff9", + "reference": "b14da3519c650e9436e410cfedee6f860312eff9", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/http-message": "^1.0 || ^2.0", "psr/http-message-implementation": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3.0", - "phpunit/phpunit": "^10.5.5", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.18" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.3" }, "type": "library", "extra": { @@ -1529,46 +1530,46 @@ "type": "community_bridge" } ], - "time": "2024-01-04T10:50:34+00:00" + "time": "2025-05-13T21:21:16+00:00" }, { "name": "laminas/laminas-hydrator", - "version": "4.15.0", + "version": "4.16.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-hydrator.git", - "reference": "43ccca88313fdcceca37865109dffc69ecd2cf8f" + "reference": "a162bd571924968d67ef1f43aed044b8f9c108ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-hydrator/zipball/43ccca88313fdcceca37865109dffc69ecd2cf8f", - "reference": "43ccca88313fdcceca37865109dffc69ecd2cf8f", + "url": "https://api.github.com/repos/laminas/laminas-hydrator/zipball/a162bd571924968d67ef1f43aed044b8f9c108ef", + "reference": "a162bd571924968d67ef1f43aed044b8f9c108ef", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.3", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "webmozart/assert": "^1.10" + "laminas/laminas-stdlib": "^3.20", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "webmozart/assert": "^1.11" }, "conflict": { "laminas/laminas-servicemanager": "<3.14.0", "zendframework/zend-hydrator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-eventmanager": "^3.12", - "laminas/laminas-modulemanager": "^2.15.0", + "laminas/laminas-coding-standard": "~3.0", + "laminas/laminas-eventmanager": "^3.13.1", + "laminas/laminas-modulemanager": "^2.16.0", "laminas/laminas-serializer": "^2.17.0", - "laminas/laminas-servicemanager": "^3.22.1", - "phpbench/phpbench": "^1.2.14", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-servicemanager": "^3.23.0", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { - "laminas/laminas-eventmanager": "^3.2, to support aggregate hydrator usage", - "laminas/laminas-serializer": "^2.9, to use the SerializableStrategy", - "laminas/laminas-servicemanager": "^3.14, to support hydrator plugin manager usage" + "laminas/laminas-eventmanager": "^3.13, to support aggregate hydrator usage", + "laminas/laminas-serializer": "^2.17, to use the SerializableStrategy", + "laminas/laminas-servicemanager": "^3.22, to support hydrator plugin manager usage" }, "type": "library", "extra": { @@ -1606,39 +1607,40 @@ "type": "community_bridge" } ], - "time": "2023-11-08T11:11:45+00:00" + "time": "2024-11-13T14:04:02+00:00" }, { "name": "laminas/laminas-inputfilter", - "version": "2.30.1", + "version": "2.33.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-inputfilter.git", - "reference": "f07a908df1052f28b18904d3745cdd5b183938c9" + "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/f07a908df1052f28b18904d3745cdd5b183938c9", - "reference": "f07a908df1052f28b18904d3745cdd5b183938c9", + "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", + "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", "shasum": "" }, "require": { "laminas/laminas-filter": "^2.19", "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.0", - "laminas/laminas-validator": "^2.52", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "laminas/laminas-stdlib": "^3.19", + "laminas/laminas-validator": "^2.60.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.1 || ^2.0" }, "conflict": { "zendframework/zend-inputfilter": "*" }, "require-dev": { "ext-json": "*", - "laminas/laminas-coding-standard": "~2.5.0", - "phpunit/phpunit": "^10.5.15", - "psalm/plugin-phpunit": "^0.19.0", + "laminas/laminas-coding-standard": "^3.1.0", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", "psr/http-message": "^2.0", - "vimeo/psalm": "^5.23.1", + "vimeo/psalm": "^6.11.0", "webmozart/assert": "^1.11" }, "suggest": { @@ -1680,20 +1682,20 @@ "type": "community_bridge" } ], - "time": "2024-04-03T15:14:05+00:00" + "time": "2025-05-27T09:48:19+00:00" }, { "name": "laminas/laminas-log", - "version": "2.17.0", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-log.git", - "reference": "f24c4c78d3024bb59610845328d7876d6c797065" + "reference": "abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-log/zipball/f24c4c78d3024bb59610845328d7876d6c797065", - "reference": "f24c4c78d3024bb59610845328d7876d6c797065", + "url": "https://api.github.com/repos/laminas/laminas-log/zipball/abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c", + "reference": "abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c", "shasum": "" }, "require": { @@ -1768,25 +1770,26 @@ "type": "community_bridge" } ], - "time": "2023-12-05T18:27:50+00:00" + "abandoned": "monolog/monolog", + "time": "2024-12-05T15:59:56+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.22.1", + "version": "3.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "de98d297d4743956a0558a6d71616979ff779328" + "reference": "a8640182b892b99767d54404d19c5c3b3699f79b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/de98d297d4743956a0558a6d71616979ff779328", - "reference": "de98d297d4743956a0558a6d71616979ff779328", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/a8640182b892b99767d54404d19c5c3b3699f79b", + "reference": "a8640182b892b99767d54404d19c5c3b3699f79b", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.17", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0" }, "conflict": { @@ -1803,15 +1806,15 @@ }, "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", - "friendsofphp/proxy-manager-lts": "^1.0.14", - "laminas/laminas-code": "^4.10.0", + "friendsofphp/proxy-manager-lts": "^1.0.18", + "laminas/laminas-code": "^4.14.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", - "mikey179/vfsstream": "^1.6.11", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.4", + "mikey179/vfsstream": "^1.6.12", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.36", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8.0" + "vimeo/psalm": "^5.26.1" }, "suggest": { "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" @@ -1858,34 +1861,34 @@ "type": "community_bridge" } ], - "time": "2023-10-24T11:19:47+00:00" + "time": "2024-10-28T21:32:16+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.19.0", + "version": "3.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3" + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", - "reference": "6a192dd0882b514e45506f533b833b623b78fff3", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.15", - "phpunit/phpunit": "^10.5.8", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.20.0" + "laminas/laminas-coding-standard": "^3.0", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -1917,26 +1920,26 @@ "type": "community_bridge" } ], - "time": "2024-01-19T12:39:49+00:00" + "time": "2024-10-29T13:46:07+00:00" }, { "name": "laminas/laminas-stratigility", - "version": "3.11.0", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stratigility.git", - "reference": "4dee4580a8efea63a8b2b24dbf4604ee480e8cd6" + "reference": "3df57528b5c8e9d958515c51006825a83f76d62b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/4dee4580a8efea63a8b2b24dbf4604ee480e8cd6", - "reference": "4dee4580a8efea63a8b2b24dbf4604ee480e8cd6", + "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/3df57528b5c8e9d958515c51006825a83f76d62b", + "reference": "3df57528b5c8e9d958515c51006825a83f76d62b", "shasum": "" }, "require": { "fig/http-message-util": "^1.1", "laminas/laminas-escaper": "^2.10.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/http-message": "^1.0 || ^2.0", "psr/http-server-middleware": "^1.0.2" }, @@ -1945,10 +1948,10 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^2.25 || ^3.3", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "laminas/laminas-diactoros": "^2.25 || ^3.5.0", + "phpunit/phpunit": "^10.5.37", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., laminas/laminas-diactoros" @@ -1996,26 +1999,26 @@ "type": "community_bridge" } ], - "time": "2023-10-31T16:26:05+00:00" + "time": "2024-10-28T11:28:41+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.60.0", + "version": "2.64.4", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "66ab091fc08a8b1e2851eec62dda4bafa977fe9c" + "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/66ab091fc08a8b1e2851eec62dda4bafa977fe9c", - "reference": "66ab091fc08a8b1e2851eec62dda4bafa977fe9c", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e2e6631f599a9b0db1e23adb633c09a2f0c68bed", + "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.13", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -2080,7 +2083,7 @@ "type": "community_bridge" } ], - "time": "2024-06-25T20:11:22+00:00" + "time": "2025-06-16T14:38:00+00:00" }, { "name": "laminas/laminas-zendframework-bridge", @@ -2147,16 +2150,16 @@ }, { "name": "mezzio/mezzio", - "version": "3.19.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio.git", - "reference": "e9bbc0addbf2dbde6721e4d30a965d8512c5ce54" + "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio/zipball/e9bbc0addbf2dbde6721e4d30a965d8512c5ce54", - "reference": "e9bbc0addbf2dbde6721e4d30a965d8512c5ce54", + "url": "https://api.github.com/repos/mezzio/mezzio/zipball/1ec7e77a0532984c30d18e7278d9bbc596c6293a", + "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a", "shasum": "" }, "require": { @@ -2165,12 +2168,12 @@ "laminas/laminas-stratigility": "^3.5", "mezzio/mezzio-router": "^3.7", "mezzio/mezzio-template": "^2.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0||^2.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0.1 || ^2.0.0", "psr/http-server-middleware": "^1.0", - "webmozart/assert": "^1.10" + "webmozart/assert": "^1.11.0" }, "conflict": { "container-interop/container-interop": "<1.2.0", @@ -2182,16 +2185,15 @@ "zendframework/zend-expressive": "*" }, "require-dev": { - "filp/whoops": "^2.15.4", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3.0", - "laminas/laminas-servicemanager": "^3.22.1", - "mezzio/mezzio-aurarouter": "^3.7", - "mezzio/mezzio-fastroute": "^3.11", - "mezzio/mezzio-laminasrouter": "^3.9", - "phpunit/phpunit": "^10.5.9", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.21.1" + "filp/whoops": "^2.18.0", + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-diactoros": "^3.5.0", + "laminas/laminas-servicemanager": "^3.23.0", + "mezzio/mezzio-fastroute": "^3.13", + "mezzio/mezzio-laminasrouter": "^3.11", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" }, "suggest": { "filp/whoops": "^2.1 to use the Whoops error handler", @@ -2250,28 +2252,28 @@ "type": "community_bridge" } ], - "time": "2024-02-14T10:42:11+00:00" + "time": "2025-04-27T12:45:58+00:00" }, { "name": "mezzio/mezzio-fastroute", - "version": "3.11.0", + "version": "3.13.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-fastroute.git", - "reference": "118ef1009c7252dc408c28b3041f4b04751d7321" + "reference": "513a636c1ca539e7e687e994f92856cc99358e4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/118ef1009c7252dc408c28b3041f4b04751d7321", - "reference": "118ef1009c7252dc408c28b3041f4b04751d7321", + "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/513a636c1ca539e7e687e994f92856cc99358e4a", + "reference": "513a636c1ca539e7e687e994f92856cc99358e4a", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.2", - "laminas/laminas-stdlib": "^3.1", - "mezzio/mezzio-router": "^3.14", + "laminas/laminas-stdlib": "^3.19.0", + "mezzio/mezzio-router": "^3.14 || ^4.0.1", "nikic/fast-route": "^1.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0 || ^2.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, @@ -2280,13 +2282,13 @@ "zendframework/zend-expressive-fastroute": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3.0", - "laminas/laminas-stratigility": "^3.11", - "mikey179/vfsstream": "^1.6.11", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-diactoros": "^3.5.0", + "laminas/laminas-stratigility": "^4.1.0", + "mikey179/vfsstream": "^1.6.12", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" }, "type": "library", "extra": { @@ -2328,39 +2330,42 @@ "type": "community_bridge" } ], - "time": "2023-11-01T11:16:57+00:00" + "time": "2025-04-27T12:05:55+00:00" }, { "name": "mezzio/mezzio-helpers", - "version": "5.16.0", + "version": "5.18.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-helpers.git", - "reference": "39ede1ba9ac6398d535339c1fbabcd6e40a55110" + "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/39ede1ba9ac6398d535339c1fbabcd6e40a55110", - "reference": "39ede1ba9ac6398d535339c1fbabcd6e40a55110", + "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/8d76502e4d71aff178f2084eadd71d12fe737d3c", + "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c", "shasum": "" }, "require": { - "mezzio/mezzio-router": "^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "mezzio/mezzio-router": "^3.0 || ^4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.0 || ^2.0", "psr/http-message": "^1.0.1 || ^2.0.0", "psr/http-server-middleware": "^1.0" }, "conflict": { + "amphp/amp": "<2.6.4", + "amphp/dns": "<2.1.2", + "amphp/socket": "<2.3.1", "zendframework/zend-expressive-helpers": "*" }, "require-dev": { "ext-json": "*", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-diactoros": "^3.5", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" }, "suggest": { "ext-json": "If you wish to use the JsonStrategy with BodyParamsMiddleware" @@ -2404,25 +2409,25 @@ "type": "community_bridge" } ], - "time": "2023-11-01T11:19:55+00:00" + "time": "2025-04-27T08:59:18+00:00" }, { "name": "mezzio/mezzio-router", - "version": "3.17.0", + "version": "3.18.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-router.git", - "reference": "78573e16144a70ccf02039e1a2600788119c0dbb" + "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/78573e16144a70ccf02039e1a2600788119c0dbb", - "reference": "78573e16144a70ccf02039e1a2600788119c0dbb", + "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/75e9a3e636ee69f3a51006772cf29c00cb5da675", + "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "psr/container": "^1.1.2 || ^2.0", "psr/http-factory": "^1.0.2", "psr/http-message": "^1.0.1 || ^2.0.0", @@ -2435,12 +2440,12 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3.0", - "laminas/laminas-servicemanager": "^3.22.1", - "laminas/laminas-stratigility": "^3.11.0", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "laminas/laminas-diactoros": "^3.4.0", + "laminas/laminas-servicemanager": "^4.2.0", + "laminas/laminas-stratigility": "^4.0.2", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { "mezzio/mezzio-aurarouter": "^3.0 to use the Aura.Router routing adapter", @@ -2486,33 +2491,33 @@ "type": "community_bridge" } ], - "time": "2023-10-31T17:23:17+00:00" + "time": "2024-10-16T21:18:01+00:00" }, { "name": "mezzio/mezzio-template", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-template.git", - "reference": "2cc943c996b8a63f1f945a2b891346ecbc8f7a33" + "reference": "836b7e55f92277d5c557f96895d13a547c4abf14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/2cc943c996b8a63f1f945a2b891346ecbc8f7a33", - "reference": "2cc943c996b8a63f1f945a2b891346ecbc8f7a33", + "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/836b7e55f92277d5c557f96895d13a547c4abf14", + "reference": "836b7e55f92277d5c557f96895d13a547c4abf14", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-expressive-template": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "phpunit/phpunit": "^10.4.2", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15" + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { "mezzio/mezzio-laminasviewrenderer": "^2.0 to use the laminas-view PhpRenderer template renderer", @@ -2550,20 +2555,20 @@ "type": "community_bridge" } ], - "time": "2024-01-08T15:20:45+00:00" + "time": "2024-10-16T20:54:53+00:00" }, { "name": "mezzio/mezzio-tooling", - "version": "2.9.0", + "version": "2.10.1", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-tooling.git", - "reference": "6108df988eb6f7d977d870a2ab7af035cbe8a0ae" + "reference": "4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-tooling/zipball/6108df988eb6f7d977d870a2ab7af035cbe8a0ae", - "reference": "6108df988eb6f7d977d870a2ab7af035cbe8a0ae", + "url": "https://api.github.com/repos/mezzio/mezzio-tooling/zipball/4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0", + "reference": "4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0", "shasum": "" }, "require": { @@ -2574,17 +2579,22 @@ "laminas/laminas-stratigility": "^3.9.0", "mezzio/mezzio": "^3.13.0", "mezzio/mezzio-router": "^3.9.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.1", "symfony/process": "^6.0.11" }, + "conflict": { + "amphp/amp": "<2.6.4", + "symfony/console": "<5.4.45", + "symfony/string": "<5.4.45" + }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-diactoros": "^3.3", - "mikey179/vfsstream": "^1.6.11", - "mockery/mockery": "^1.6.7", + "mikey179/vfsstream": "^1.6.12", + "mockery/mockery": "^1.6.10", "php-mock/php-mock-phpunit": "^2.9.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^9.6.15", + "phpunit/phpunit": "^10.5.35", "psalm/plugin-mockery": "^0.11.0", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.17.0" @@ -2628,7 +2638,7 @@ "type": "community_bridge" } ], - "time": "2023-12-12T16:13:23+00:00" + "time": "2025-03-05T09:37:20+00:00" }, { "name": "nikic/fast-route", @@ -2682,16 +2692,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.1.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/683130c2ff8c2739f4822ff7ac5c873ec529abd1", - "reference": "683130c2ff8c2739f4822ff7ac5c873ec529abd1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -2734,9 +2744,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.1.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-07-01T20:03:41+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "psr/cache", @@ -3158,16 +3168,16 @@ }, { "name": "ramsey/collection", - "version": "2.0.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", - "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -3175,25 +3185,22 @@ }, "require-dev": { "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.28.3", - "fakerphp/faker": "^1.21", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^1.0", - "mockery/mockery": "^1.5", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.3", - "phpcsstandards/phpcsutils": "^1.0.0-rc1", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5", - "psalm/plugin-mockery": "^1.1", - "psalm/plugin-phpunit": "^0.18.4", - "ramsey/coding-standard": "^2.0.3", - "ramsey/conventional-commits": "^1.3", - "vimeo/psalm": "^5.4" + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" }, "type": "library", "extra": { @@ -3231,36 +3238,26 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.0.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", - "type": "tidelift" - } - ], - "time": "2022-12-31T21:50:55+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.8.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", + "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" @@ -3269,26 +3266,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -3323,32 +3317,22 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.8.1" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-06-01T06:28:46+00:00" }, { "name": "symfony/console", - "version": "v6.4.9", + "version": "v6.4.22", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9" + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", - "reference": "6edb5363ec0c78ad4d48c5128ebf4d083d89d3a9", + "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", + "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", "shasum": "" }, "require": { @@ -3413,7 +3397,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.9" + "source": "https://github.com/symfony/console/tree/v6.4.22" }, "funding": [ { @@ -3429,20 +3413,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2025-05-07T07:05:04+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -3450,12 +3434,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3480,7 +3464,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -3496,20 +3480,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7" + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", - "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", "shasum": "" }, "require": { @@ -3560,7 +3544,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" }, "funding": [ { @@ -3576,20 +3560,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-04-22T09:11:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -3598,12 +3582,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -3636,7 +3620,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -3652,20 +3636,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/finder", - "version": "v6.4.8", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", - "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", "shasum": "" }, "require": { @@ -3700,7 +3684,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.8" + "source": "https://github.com/symfony/finder/tree/v6.4.17" }, "funding": [ { @@ -3716,20 +3700,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2024-12-29T13:51:37+00:00" }, { "name": "symfony/mailer", - "version": "v6.4.9", + "version": "v6.4.21", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45" + "reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", - "reference": "e2d56f180f5b8c5e7c0fbea872bb1f529b6d6d45", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ada2809ccd4ec27aba9fc344e3efdaec624c6438", + "reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438", "shasum": "" }, "require": { @@ -3780,7 +3764,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.9" + "source": "https://github.com/symfony/mailer/tree/v6.4.21" }, "funding": [ { @@ -3796,20 +3780,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T07:59:05+00:00" + "time": "2025-04-26T23:47:35+00:00" }, { "name": "symfony/mime", - "version": "v7.1.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc" + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/26a00b85477e69a4bab63b66c5dce64f18b0cbfc", - "reference": "26a00b85477e69a4bab63b66c5dce64f18b0cbfc", + "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", "shasum": "" }, "require": { @@ -3864,7 +3848,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.1.2" + "source": "https://github.com/symfony/mime/tree/v7.3.0" }, "funding": [ { @@ -3880,24 +3864,24 @@ "type": "tidelift" } ], - "time": "2024-06-28T10:03:55+00:00" + "time": "2025-02-19T08:51:26+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540", - "reference": "0424dff1c58f028c451efff2045f5d92410bd540", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3908,8 +3892,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3943,7 +3927,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" }, "funding": [ { @@ -3959,24 +3943,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a", - "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -3984,8 +3968,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4021,7 +4005,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -4037,26 +4021,25 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", - "reference": "a6e83bdeb3c84391d1dfe16f42e40727ce524a5c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" @@ -4064,8 +4047,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4105,7 +4088,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" }, "funding": [ { @@ -4121,24 +4104,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb", - "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -4146,8 +4129,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4186,7 +4169,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -4202,24 +4185,25 @@ "type": "tidelift" } ], - "time": "2024-05-31T15:07:36+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.30.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c", - "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { - "php": ">=7.1" + "ext-iconv": "*", + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -4230,8 +4214,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4266,80 +4250,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.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-06-19T12:30:46+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.30.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "10112722600777e02d2745716b70c5db4ca70442" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442", - "reference": "10112722600777e02d2745716b70c5db4ca70442", - "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\\Php72\\": "" - } - }, - "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.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -4355,100 +4266,20 @@ "type": "tidelift" } ], - "time": "2024-06-19T12:30:46+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "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.31.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-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/process", - "version": "v6.4.14", + "version": "v6.4.20", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "25214adbb0996d18112548de20c281be9f27279f" + "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/25214adbb0996d18112548de20c281be9f27279f", - "reference": "25214adbb0996d18112548de20c281be9f27279f", + "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20", + "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20", "shasum": "" }, "require": { @@ -4480,7 +4311,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.14" + "source": "https://github.com/symfony/process/tree/v6.4.20" }, "funding": [ { @@ -4496,20 +4327,20 @@ "type": "tidelift" } ], - "time": "2024-11-06T09:25:01+00:00" + "time": "2025-03-10T17:11:00+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -4522,12 +4353,12 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.5-dev" - }, "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" } }, "autoload": { @@ -4563,7 +4394,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -4579,20 +4410,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.1.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", - "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", "shasum": "" }, "require": { @@ -4625,7 +4456,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -4641,20 +4472,20 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:57:53+00:00" + "time": "2025-02-24T10:49:57+00:00" }, { "name": "symfony/string", - "version": "v7.1.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8" + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/14221089ac66cf82e3cf3d1c1da65de305587ff8", - "reference": "14221089ac66cf82e3cf3d1c1da65de305587ff8", + "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", "shasum": "" }, "require": { @@ -4712,7 +4543,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.2" + "source": "https://github.com/symfony/string/tree/v7.3.0" }, "funding": [ { @@ -4728,24 +4559,25 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:27:18+00:00" + "time": "2025-04-20T20:19:01+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.1.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" + "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", - "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c9a1168891b5aaadfd6332ef44393330b3498c4c", + "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/property-access": "^6.4|^7.0", @@ -4788,7 +4620,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.3.0" }, "funding": [ { @@ -4804,20 +4636,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T08:00:31+00:00" + "time": "2025-05-15T09:04:05+00:00" }, { "name": "symfony/yaml", - "version": "v6.4.8", + "version": "v6.4.21", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "52903de178d542850f6f341ba92995d3d63e60c9" + "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/52903de178d542850f6f341ba92995d3d63e60c9", - "reference": "52903de178d542850f6f341ba92995d3d63e60c9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f01987f45676778b474468aa266fe2eda1f2bc7e", + "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e", "shasum": "" }, "require": { @@ -4860,7 +4692,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.4.8" + "source": "https://github.com/symfony/yaml/tree/v6.4.21" }, "funding": [ { @@ -4876,7 +4708,7 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:49:08+00:00" + "time": "2025-04-04T09:48:44+00:00" }, { "name": "webimpress/safe-writer", @@ -4997,16 +4829,16 @@ }, { "name": "zircote/swagger-php", - "version": "4.10.0", + "version": "4.11.1", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56" + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56", - "reference": "2d983ce67b9eb7e18403ae7bc5e765f8ce7b8d56", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/7df10e8ec47db07c031db317a25bef962b4e5de1", + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1", "shasum": "" }, "require": { @@ -5020,7 +4852,7 @@ "require-dev": { "composer/package-versions-deprecated": "^1.11", "doctrine/annotations": "^1.7 || ^2.0", - "friendsofphp/php-cs-fixer": "^2.17 || ^3.47.1", + "friendsofphp/php-cs-fixer": "^2.17 || 3.62.0", "phpstan/phpstan": "^1.6", "phpunit/phpunit": ">=8", "vimeo/psalm": "^4.23" @@ -5072,9 +4904,9 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/4.10.0" + "source": "https://github.com/zircote/swagger-php/tree/4.11.1" }, - "time": "2024-06-06T22:42:02+00:00" + "time": "2024-10-15T19:20:02+00:00" } ], "packages-dev": [ @@ -5158,26 +4990,26 @@ }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "59a123a3d459c5a23055802237cb317f609867e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -5217,7 +5049,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.18.3" }, "funding": [ { @@ -5225,32 +5057,32 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2025-06-16T00:02:10+00:00" }, { "name": "helmich/phpunit-json-assert", - "version": "v3.5.2", + "version": "v3.5.3", "source": { "type": "git", "url": "https://github.com/martin-helmich/phpunit-json-assert.git", - "reference": "f8958119e9e9ea1339d6b4d6fd2df24536261b50" + "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/f8958119e9e9ea1339d6b4d6fd2df24536261b50", - "reference": "f8958119e9e9ea1339d6b4d6fd2df24536261b50", + "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", + "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", "shasum": "" }, "require": { "justinrainbow/json-schema": "^5.0", - "php": "^8.0", + "php": "^8.1", "softcreatr/jsonpath": "^0.8" }, "conflict": { - "phpunit/phpunit": "<8.0 || >= 12.0" + "phpunit/phpunit": "<8.0 || >= 13.0" }, "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0" + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0" }, "type": "library", "autoload": { @@ -5271,7 +5103,7 @@ "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.2" + "source": "https://github.com/martin-helmich/phpunit-json-assert/tree/v3.5.3" }, "funding": [ { @@ -5283,24 +5115,24 @@ "type": "github" } ], - "time": "2024-05-20T11:18:46+00:00" + "time": "2025-05-19T22:04:17+00:00" }, { "name": "justinrainbow/json-schema", - "version": "v5.2.13", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", @@ -5311,11 +5143,6 @@ "bin/validate-json" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "JsonSchema\\": "src/JsonSchema/" @@ -5351,22 +5178,22 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/v5.2.13" + "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" }, - "time": "2023-09-26T02:20:38+00:00" + "time": "2024-07-06T21:00:26+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.13.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", "shasum": "" }, "require": { @@ -5405,7 +5232,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" }, "funding": [ { @@ -5413,7 +5240,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2025-04-29T12:36:36+00:00" }, { "name": "n98/junit-xml", @@ -5650,30 +5477,30 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", - "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^5.3.0", "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", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -5691,22 +5518,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" }, - "time": "2024-05-31T08:52:43+00:00" + "time": "2025-02-19T13:28:12+00:00" }, { "name": "phpstan/phpstan", - "version": "1.11.6", + "version": "1.12.27", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "6ac78f1165346c83b4a753f7e4186d969c6ad0ee" + "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6ac78f1165346c83b4a753f7e4186d969c6ad0ee", - "reference": "6ac78f1165346c83b4a753f7e4186d969c6ad0ee", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162", + "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162", "shasum": "" }, "require": { @@ -5751,25 +5578,25 @@ "type": "github" } ], - "time": "2024-07-01T15:33:06+00:00" + "time": "2025-05-21T20:51:45+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26" + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/fa8cce7720fa782899a0aa97b6a41225d1bb7b26", - "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82", + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.11" + "phpstan/phpstan": "^1.12" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -5796,38 +5623,38 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1" }, - "time": "2024-04-20T06:39:48+00:00" + "time": "2024-09-11T15:52:35+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.15", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", - "reference": "5da8b1728acd1e6ffdf2ff32ffbdfd04307f26ae", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.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" + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { "phpunit/phpunit": "^10.1" @@ -5839,7 +5666,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -5868,7 +5695,7 @@ "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.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -5876,7 +5703,7 @@ "type": "github" } ], - "time": "2024-06-29T08:25:15+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6123,16 +5950,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.24", + "version": "10.5.46", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "5f124e3e3e561006047b532fd0431bf5bb6b9015" + "reference": "8080be387a5be380dda48c6f41cee4a13aadab3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/5f124e3e3e561006047b532fd0431bf5bb6b9015", - "reference": "5f124e3e3e561006047b532fd0431bf5bb6b9015", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8080be387a5be380dda48c6f41cee4a13aadab3d", + "reference": "8080be387a5be380dda48c6f41cee4a13aadab3d", "shasum": "" }, "require": { @@ -6142,26 +5969,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.13.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "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" + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -6204,7 +6031,7 @@ "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.24" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.46" }, "funding": [ { @@ -6215,12 +6042,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-06-20T13:09:54+00:00" + "time": "2025-05-02T06:46:24+00:00" }, { "name": "roave/security-advisories", @@ -6228,37 +6063,44 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "27714b56f04815b654c3805502ab77207505ac19" + "reference": "0a95bcf39c5b55601cb073bc307d567a16e31dc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/27714b56f04815b654c3805502ab77207505ac19", - "reference": "27714b56f04815b654c3805502ab77207505ac19", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0a95bcf39c5b55601cb073bc307d567a16e31dc0", + "reference": "0a95bcf39c5b55601cb073bc307d567a16e31dc0", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.2.13", - "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", + "adaptcms/adaptcms": "<=1.3", + "admidio/admidio": "<4.3.12", + "adodb/adodb-php": "<=5.22.8", "aheinze/cockpit": "<2.2", + "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", + "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", + "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", "airesvsg/acf-to-rest-api": "<=3.1", "akaunting/akaunting": "<2.1.13", "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<1.5", + "alextselegidis/easyappointments": "<=1.5.1", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", + "ameos/ameos_tarteaucitron": "<1.2.23", "amphp/artax": "<1.0.6|>=2,<2.0.6", "amphp/http": "<=1.7.2|>=2,<=2.1", "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "aoe/restler": "<1.7.1", "apache-solr-for-typo3/solr": "<2.8.3", "apereo/phpcas": "<1.6", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", + "api-platform/core": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", + "api-platform/graphql": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", "appwrite/server-ce": "<=1.2.1", "arc/web": "<3", "area17/twill": "<1.2.5|>=2,<2.5.3", @@ -6266,28 +6108,37 @@ "asymmetricrypt/asymmetricrypt": "<9.9.99", "athlon1600/php-proxy": "<=5.1", "athlon1600/php-proxy-app": "<=3", + "athlon1600/youtube-downloader": "<=4", "austintoddj/canvas": "<=3.4.2", - "automad/automad": "<=1.10.9", + "auth0/auth0-php": ">=8.0.0.0-beta1,<8.14", + "auth0/login": "<7.17", + "auth0/symfony": "<5.4", + "auth0/wordpress": "<5.3", + "automad/automad": "<2.0.0.0-alpha5", "automattic/jetpack": "<9.8", "awesome-support/awesome-support": "<=6.0.7", "aws/aws-sdk-php": "<3.288.1", "azuracast/azuracast": "<0.18.3", - "backdrop/backdrop": "<1.24.2", + "b13/seo_basics": "<0.8.2", + "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", "backpack/crud": "<3.4.9", + "backpack/filemanager": "<2.0.2|>=3,<3.0.9", "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", "badaso/core": "<2.7", "bagisto/bagisto": "<2.1", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.2", + "barryvdh/laravel-translation-manager": "<0.6.8", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<5.0.9", + "baserproject/basercms": "<=5.1.1", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bbpress/bbpress": "<2.6.5", + "bcit-ci/codeigniter": "<3.1.3", "bcosca/fatfree": "<3.7.2", "bedita/bedita": "<4", + "bednee/cooluri": "<1.0.30", "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<2.9.5", + "billz/raspap-webgui": "<=3.1.4", "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", "blueimp/jquery-file-upload": "==6.4.4", "bmarshall511/wordpress_zero_spam": "<5.2.13", @@ -6302,6 +6153,7 @@ "brotkrueml/typo3-matomo-integration": "<1.3.2", "buddypress/buddypress": "<7.2.1", "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bvbmedia/multishop": "<2.0.39", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", @@ -6312,47 +6164,61 @@ "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", - "causal/oidc": "<2.1", + "causal/oidc": "<4", "cecil/cecil": "<7.47.1", "centreon/centreon": "<22.10.15", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "chrome-php/chrome": "<1.14", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.24", + "ckeditor/ckeditor": "<4.25", + "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", + "co-stack/fal_sftp": "<0.2.6", "cockpit-hq/cockpit": "<2.7|==2.7", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<4.4.7", + "codeigniter4/framework": "<4.5.8", "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", + "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9", + "commerceteam/commerce": ">=0.9.6,<0.9.9", + "components/jquery": ">=1.0.3,<3.5", "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", - "concrete5/concrete5": "<9.2.8", + "concrete5/concrete5": "<9.4.0.0-RC2-dev", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.40|>=5,<5.3.4", + "contao/core-bundle": "<4.13.54|>=5,<5.3.30|>=5.4,<5.5.6", "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", "contao/managed-edition": "<=1.5", "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", - "craftcms/cms": "<4.6.2", + "couleurcitron/tarteaucitron-wp": "<0.3", + "craftcms/cms": "<4.15.3|>=5,<5.7.5", "croogo/croogo": "<4", "cuyz/valinor": "<0.12", + "czim/file-handling": "<1.5|>=2,<2.3", "czproject/git-php": "<4.0.3", + "damienharper/auditor-bundle": "<5.2.6", "dapphp/securimage": "<3.6.6", "darylldoyle/safe-svg": "<1.9.10", "datadog/dd-trace": ">=0.30,<0.30.2", "datatables/datatables": "<1.10.10", "david-garcia/phpwhois": "<=4.3.1", "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3.0-beta", + "dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta", "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", + "dev-lancer/minecraft-motd-parser": "<=1.0.5", "devgroup/dotplant": "<2020.09.14-dev", + "digimix/wp-svg-upload": "<=1", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "dl/yag": "<3.0.1", + "dmk/webkitpdf": "<1.1.4", + "dnadesign/silverstripe-elemental": "<5.3.12", "doctrine/annotations": "<1.2.7", "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", "doctrine/common": "<2.4.3|>=2.5,<2.5.1", @@ -6362,20 +6228,43 @@ "doctrine/mongodb-odm": "<1.0.2", "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<19.0.2", + "dolibarr/dolibarr": "<19.0.2|==21.0.0.0-beta", "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "drupal/admin_audit_trail": "<1.0.5", + "drupal/ai": "<1.0.5", + "drupal/alogin": "<2.0.6", + "drupal/cache_utility": "<1.2.1", + "drupal/commerce_alphabank_redirect": "<1.0.3", + "drupal/commerce_eurobank_redirect": "<2.1.1", + "drupal/config_split": "<1.10|>=2,<2.0.2", + "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", + "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/formatter_suite": "<2.1", + "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", + "drupal/google_tag": "<1.8|>=2,<2.0.8", + "drupal/ignition": "<1.0.4", + "drupal/lightgallery": "<1.6", + "drupal/link_field_display_mode_formatter": "<1.6", + "drupal/matomo": "<1.24", + "drupal/oauth2_client": "<4.1.3", + "drupal/oauth2_server": "<2.1", + "drupal/obfuscate": "<2.0.1", + "drupal/quick_node_block": "<2", + "drupal/rapidoc_elements_field_formatter": "<1.0.1", + "drupal/spamspan": "<3.2.1", + "drupal/tfa": "<1.10", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<16.1.20170922", + "egroupware/egroupware": "<23.1.20240624", "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", "elijaa/phpmemcacheadmin": "<=1.3", + "elmsln/haxcms": "<11", "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", "enhavo/enhavo-app": "<=0.13.1", @@ -6390,34 +6279,39 @@ "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.38|>=3.3,<3.3.39", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-http-cache": "<2.3.16", "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40", "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<4.1.1", + "ezyang/htmlpurifier": "<=4.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", "facturascripts/facturascripts": "<=2022.08", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", + "filament/actions": ">=3.2,<3.2.123", + "filament/infolists": ">=3,<3.2.115", + "filament/tables": ">=3,<3.2.115", "filegator/filegator": "<7.8", "filp/whoops": "<2.1.13", "fineuploader/php-traditional-server": "<=1.2.2", "firebase/php-jwt": "<6", + "fisharebest/webtrees": "<=2.1.18", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", - "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.5", + "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8.10", "flarum/flarum": "<0.1.0.0-beta8", - "flarum/framework": "<1.8.5", + "flarum/framework": "<1.8.10", "flarum/mentions": "<1.6.3", "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", "flarum/tags": "<=0.1.0.0-beta13", @@ -6435,25 +6329,28 @@ "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", "friendsofsymfony/user-bundle": ">=1,<1.3.5", "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", - "friendsofsymfony1/symfony1": ">=1.1,<1.15.19", + "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", - "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3", - "froxlor/froxlor": "<2.1.9", + "froala/wysiwyg-editor": "<=4.3", + "froxlor/froxlor": "<=2.2.5", "frozennode/administrator": "<=5.0.12", "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", + "funadmin/funadmin": "<=5.0.2", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1", + "georgringer/news": "<1.3.3", + "geshi/geshi": "<1.0.8.11-dev", + "getformwork/formwork": "<1.13.1|>=2.0.0.0-beta1,<2.0.0.0-beta4", "getgrav/grav": "<1.7.46", - "getkirby/cms": "<4.1.1", - "getkirby/kirby": "<=2.5.12", + "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", + "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", "gilacms/gila": "<=1.15.4", "gleez/cms": "<=1.3|==2", "globalpayments/php-sdk": "<2", + "goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11", "gogentooss/samlbase": "<1.2.7", "google/protobuf": "<3.15", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", @@ -6462,8 +6359,10 @@ "grumpydictator/firefly-iii": "<6.1.17", "gugoan/economizzer": "<=0.9.0.0-beta1", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/oauth-subscriber": "<0.8.1", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "handcraftedinthealps/goodby-csv": "<1.4.3", "harvesthq/chosen": "<1.8.7", "helloxz/imgurl": "<=2.31", "hhxsv5/laravel-s": "<3.7.36", @@ -6473,10 +6372,13 @@ "hov/jobfair": "<1.0.13|>=2,<2.0.2", "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3", + "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.21", + "ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21", "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", + "ibexa/fieldtype-richtext": ">=4.6,<4.6.21", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", - "ibexa/post-install": "<=1.0.4", + "ibexa/http-cache": ">=4.6,<4.6.14", + "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", "ibexa/solr": ">=4.5,<4.5.4", "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", @@ -6489,87 +6391,115 @@ "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", "imdbphp/imdbphp": "<=5.1.1", "impresscms/impresscms": "<=1.4.5", - "impresspages/impresspages": "<=1.0.12", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", + "impresspages/impresspages": "<1.0.13", + "in2code/femanager": "<5.5.5|>=6,<6.4.1|>=7,<7.4.2|>=8,<8.2.2", "in2code/ipandlanguageredirect": "<5.1.2", "in2code/lux": "<17.6.1|>=18,<24.0.2", + "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.4.1", "innologi/typo3-appointments": "<2.0.6", "intelliants/subrion": "<4.2.2", "inter-mediator/inter-mediator": "==5.5", + "ipl/web": "<0.10.1", + "islandora/crayfish": "<4.1", "islandora/islandora": ">=2,<2.4.1", "ivankristianto/phpwhois": "<=4.3", "jackalope/jackalope-doctrine-dbal": "<1.7.4", + "jambagecom/div2007": "<0.10.2", "james-heinrich/getid3": "<1.9.21", "james-heinrich/phpthumb": "<1.7.12", "jasig/phpcas": "<1.3.3", + "jbartels/wec-map": "<3.0.3", "jcbrand/converse.js": "<3.3.3", + "joelbutcher/socialstream": "<5.6|>=6,<6.2", "johnbillion/wp-crontrol": "<1.16.2", "joomla/application": "<1.0.13", "joomla/archive": "<1.1.12|>=2,<2.0.1", + "joomla/database": ">=1,<2.2|>=3,<3.4", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=2.5,<3.9.12", + "joomla/joomla-cms": "<3.9.12|>=4,<4.4.13|>=5,<5.2.6", + "joomla/joomla-platform": "<1.5.4", "joomla/session": "<1.3.1", "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", "juzaweb/cms": "<=3.4", "jweiland/events2": "<8.3.8|>=9,<9.0.6", + "jweiland/kk-downloader": "<1.2.2", "kazist/phpwhois": "<=4.2.6", "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", "khodakhah/nodcms": "<=3", - "kimai/kimai": "<2.16", + "kimai/kimai": "<=2.20.1", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", "knplabs/knp-snappy": "<=1.4.2", "kohana/core": "<3.3.3", - "krayin/laravel-crm": "<1.2.2", + "koillection/koillection": "<1.6.12", + "krayin/laravel-crm": "<=1.3", "kreait/firebase-php": ">=3.2,<3.8.1", "kumbiaphp/kumbiapp": "<=1.1.1", "la-haute-societe/tcpdf": "<6.2.22", "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", "laminas/laminas-http": "<2.14.2", + "lara-zeus/artemis": ">=1,<=1.0.6", + "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", + "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1", "laravel/laravel": ">=5.4,<5.4.22", + "laravel/pulse": "<1.3.1", + "laravel/reverb": "<1.4", "laravel/socialite": ">=1,<2.0.10", "latte/latte": "<2.10.8", "lavalite/cms": "<=9|==10.1", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", - "league/commonmark": "<0.18.3", + "league/commonmark": "<2.7", "league/flysystem": "<1.1.4|>=2,<2.1.1", "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", + "leantime/leantime": "<3.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", "libreform/libreform": ">=2,<=2.0.8", "librenms/librenms": "<2017.08.18", "liftkit/database": "<2.13.2", "lightsaml/lightsaml": "<1.3.5", - "limesurvey/limesurvey": "<3.27.19", + "limesurvey/limesurvey": "<6.5.12", "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9", + "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.5.2", + "livewire/volt": "<1.7", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "lomkit/laravel-rest-api": "<2.13", + "luracast/restler": "<3.1", "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch8|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch6|==2.4.7", + "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", + "maestroerror/php-heic-to-jpg": "<1.0.5", + "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch12|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch10|>=2.4.7.0-beta1,<2.4.7.0-patch5|>=2.4.8.0-beta1,<2.4.8.0-beta2", "magento/core": "<=1.9.4.5", "magento/magento1ce": "<1.9.4.3-dev", "magento/magento1ee": ">=1,<1.14.4.3-dev", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", + "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", + "magento/project-community-edition": "<=2.0.2", "magneto/core": "<1.9.4.4-dev", "maikuolan/phpmussel": ">=1,<1.6", "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<2.26.2", + "mantisbt/mantisbt": "<=2.26.3", "marcwillmann/turn": "<0.3.3", + "matomo/matomo": "<1.11", "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4", + "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", + "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", + "maximebf/debugbar": "<1.19", "mdanter/ecc": "<2", - "mediawiki/core": "<1.36.2", + "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", + "mediawiki/cargo": "<3.6.1", + "mediawiki/core": "<1.39.5|==1.40", + "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2", "mediawiki/matomo": "<2.4.3", "mediawiki/semantic-media-wiki": "<4.0.2", + "mehrwert/phpmyadmin": "<3.2", "melisplatform/melis-asset-manager": "<5.0.1", "melisplatform/melis-cms": "<5.0.1", "melisplatform/melis-front": "<5.0.1", @@ -6578,16 +6508,16 @@ "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", "microsoft/microsoft-graph-beta": "<2.0.1", "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.4", + "microweber/microweber": "<=2.0.16", "mikehaertl/php-shellcommand": "<1.6.1", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<=2.8.3.0-patch", + "modx/revolution": "<=3.1", "mojo42/jirafeau": "<4.4", "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1", + "moodle/moodle": "<4.3.12|>=4.4,<4.4.8|>=4.5.0.0-beta,<4.5.4", "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", "movingbytes/social-network": "<=1.2.1", @@ -6599,7 +6529,10 @@ "munkireport/reportdata": "<3.5", "munkireport/softwareupdate": "<1.6", "mustache/mustache": ">=2,<2.14.1", + "mwdelaney/wp-enable-svg": "<=0.2", "namshi/jose": "<2.2", + "nasirkhan/laravel-starter": "<11.11", + "nategood/httpful": "<1", "neoan3-apps/template": "<1.1.1", "neorazorx/facturascripts": "<2022.04", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", @@ -6607,10 +6540,13 @@ "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", "neos/swiftmailer": "<5.4.5", + "nesbot/carbon": "<2.72.6|>=3,<3.8.4", + "netcarver/textile": "<=4.1.2", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.0.10", + "nilsteampassnet/teampass": "<3.1.3.1-dev", + "nitsan/ns-backup": "<13.0.1", "nonfiction/nterchange": "<4.1.1", "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", @@ -6622,26 +6558,28 @@ "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", "october/backend": "<1.1.2", "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<=3.4.4", + "october/october": "<3.7.5", "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15", + "october/system": "<3.7.5", + "oliverklee/phpunit": "<3.5.15", "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.10.4", "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.9|>=4", + "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.5", + "openmage/magento-lts": "<20.12.3", "opensolutions/vimbadmin": "<=3.0.15", - "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", + "orchid/platform": ">=8,<14.43", "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", - "oxid-esales/oxideshop-ce": "<4.5", + "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", + "oxid-esales/oxideshop-ce": "<=7.0.5", "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", "packbackbooks/lti-1-3-php-library": "<5", "padraic/humbug_get_contents": "<1.1.2", @@ -6657,6 +6595,7 @@ "pear/archive_tar": "<1.4.14", "pear/auth": "<1.2.4", "pear/crypt_gpg": "<1.6.7", + "pear/http_request2": "<2.7", "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", @@ -6664,16 +6603,17 @@ "phenx/php-svg-lib": "<0.5.2", "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpbb/phpbb": "<3.3.11", "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5", + "phpmyadmin/phpmyadmin": "<5.2.2", + "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", "phpoffice/common": "<0.2.9", - "phpoffice/phpexcel": "<1.8", - "phpoffice/phpspreadsheet": "<1.16", + "phpoffice/math": "<=0.2", + "phpoffice/phpexcel": "<=1.8.2", + "phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9", "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", "phpservermon/phpservermon": "<3.6", "phpsysinfo/phpsysinfo": "<3.4.3", @@ -6682,17 +6622,19 @@ "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<=1.4.2", - "pimcore/customer-management-framework-bundle": "<4.0.6", + "pimcore/admin-ui-classic-bundle": "<1.7.6", + "pimcore/customer-management-framework-bundle": "<4.2.1", "pimcore/data-hub": "<1.2.4", + "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", "pimcore/demo": "<10.3", "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.2.4", - "pixelfed/pixelfed": "<0.11.11", + "pimcore/pimcore": "<11.5.4", + "piwik/piwik": "<1.11", + "pixelfed/pixelfed": "<0.12.5", "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.11.2", + "pocketmine/pocketmine-mp": "<5.25.2", "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", @@ -6702,19 +6644,22 @@ "prestashop/gamification": "<2.3.2", "prestashop/prestashop": "<8.1.6", "prestashop/productcomments": "<5.0.2", + "prestashop/ps_contactinfo": "<=3.3.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.210", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", + "processwire/processwire": "<=3.0.229", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.11.6", + "pterodactyl/panel": "<1.11.8", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", "pubnub/pubnub": "<6.1", + "punktde/pt_extbase": "<1.5.1", "pusher/pusher-php-server": "<2.2.1", "pwweb/laravel-core": "<=0.3.6.0-beta", + "pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3", "pyrocms/pyrocms": "<=3.9.1", "qcubed/qcubed": "<=3.1.1", "quickapps/cms": "<=2.0.0.0-beta2", @@ -6725,41 +6670,47 @@ "rap2hpoutre/laravel-log-viewer": "<0.13", "react/http": ">=0.7,<1.9", "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<=5.15.1", + "redaxo/source": "<5.18.3", "remdex/livehelperchat": "<4.29", + "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", "reportico-web/reportico": "<=8.1", "rhukster/dom-sanitizer": "<1.0.7", "rmccue/requests": ">=1.6,<1.8", "robrichards/xmlseclibs": ">=1,<3.0.4", "roots/soil": "<4.1", + "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", "rudloff/alltube": "<3.0.3", + "rudloff/rtmpdump-bin": "<=2.3.1", "s-cart/core": "<6.9", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "samwilson/unlinked-wikibase": "<1.42", "scheb/two-factor-bundle": "<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<=1.2", - "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", - "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1", + "sheng/yiicms": "<1.2.1", + "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", + "shopware/platform": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<6.2.3", + "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", - "shopxo/shopxo": "<2.2.6", + "shopxo/shopxo": "<=6.4", "showdoc/showdoc": "<2.10.4", + "shuchkin/simplexlsx": ">=1.0.12,<1.1.13", "silverstripe-australia/advancedreports": ">=1,<=2", "silverstripe/admin": "<1.13.19|>=2,<2.1.8", "silverstripe/assets": ">=1,<1.11.1", "silverstripe/cms": "<4.11.3", "silverstripe/comments": ">=1.3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.13.39|>=5,<5.1.11", + "silverstripe/framework": "<5.3.23", "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/reports": "<5.2.3", "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", "silverstripe/subsites": ">=2,<2.6.1", @@ -6767,48 +6718,56 @@ "silverstripe/userforms": "<3|>=5,<5.4.2", "silverstripe/versioned-admin": ">=1,<1.11.1", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19", + "simplesamlphp/saml2-legacy": "<=4.16.15", "simplesamlphp/simplesamlphp": "<1.18.6", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", "simplesamlphp/simplesamlphp-module-openid": "<1", "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-common": "<1.20", "simplesamlphp/xml-security": "==1.6.11", "simplito/elliptic-php": "<1.0.6", "sitegeist/fluid-components": "<3.5", + "sjbr/sr-feuser-register": "<2.6.2|>=5.1,<12.5", "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "sjbr/static-info-tables": "<2.3.1", "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", "slim/slim": "<2.6", "slub/slub-events": "<3.0.3", "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<6.4.2", + "snipe/snipe-it": "<8.1", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", - "spatie/browsershot": "<3.57.4", + "spatie/browsershot": "<5.0.5", "spatie/image-optimizer": "<1.7.3", + "spencer14420/sp-php-email-handler": "<1", "spipu/html2pdf": "<5.2.8", "spoon/library": "<1.4.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.02.3", - "statamic/cms": "<4.46|>=5.3,<5.6.2", + "ssddanbrown/bookstack": "<24.05.1", + "starcitizentools/citizen-skin": ">=2.4.2,<3.3.1", + "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2", + "statamic/cms": "<=5.16", "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<2.1.62", + "studio-42/elfinder": "<=2.1.64", "studiomitte/friendlycaptcha": "<0.1.4", "subhh/libconnect": "<7.0.8|>=8,<8.1", "sukohi/surpass": "<1", "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13", + "sulu/sulu": "<1.6.44|>=2,<2.5.25|>=2.6,<2.6.9|>=3.0.0.0-alpha1,<3.0.0.0-alpha3", "sumocoders/framework-user-bundle": "<1.4", "superbig/craft-audit": "<3.0.2", + "svewap/a21glossary": "<=0.4.10", "swag/paypal": "<5.4.4", "swiftmailer/swiftmailer": "<6.2.5", "swiftyedit/swiftyedit": "<1.2", "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", "sylius/grid-bundle": "<1.10.1", - "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", + "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2", "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2|>=1.12.0.0-alpha1,<1.12.16|>=1.13.0.0-alpha1,<1.13.1", + "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", "symbiote/silverstripe-multivaluefield": ">=3,<3.1", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", "symbiote/silverstripe-seed": "<6.0.3", @@ -6819,7 +6778,8 @@ "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", - "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", @@ -6827,20 +6787,24 @@ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/polyfill": ">=1,<1.10", "symfony/polyfill-php55": ">=1,<1.10", + "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", + "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/symfony": "<5.4.47|>=6,<6.4.15|>=7,<7.1.8", "symfony/translation": ">=2,<2.0.17", "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/ux-autocomplete": "<2.11.2", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/ux-live-component": "<2.25.1", + "symfony/ux-twig-component": "<2.25.1", + "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", "symfony/webhook": ">=6.3,<6.3.8", @@ -6849,39 +6813,52 @@ "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", "t3s/content-consent": "<1.0.3|>=2,<2.0.2", - "tastyigniter/tastyigniter": "<3.3", - "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<=6.7.4", + "tastyigniter/tastyigniter": "<4", + "tcg/voyager": "<=1.8", + "tecnickcom/tc-lib-pdf-font": "<2.6.4", + "tecnickcom/tcpdf": "<6.8", "terminal42/contao-tablelookupwizard": "<3.3.5", "thelia/backoffice-default-template": ">=2.1,<2.1.2", "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<3.2.2", + "thorsten/phpmyfaq": "<=4.0.1", "tikiwiki/tiki-manager": "<=17.1", "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", "tinymce/tinymce": "<7.2", "tinymighty/wiki-seo": "<1.2.2", "titon/framework": "<9.9.99", + "tltneon/lgsl": "<7", "tobiasbg/tablepress": "<=2.0.0.0-RC1", - "topthink/framework": "<6.0.17|>=6.1,<6.1.5|>=8,<8.0.4", + "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3", - "torrentpier/torrentpier": "<=2.4.1", + "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", + "torrentpier/torrentpier": "<=2.4.3", "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<9.5.60602", + "tribalsystems/zenario": "<=9.7.61188", "truckersmp/phpwhois": "<=4.3.1", "ttskch/pagination-service-provider": "<1", - "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", + "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", + "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-felogin": ">=4.2,<4.2.3", "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", + "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2", + "typo3/cms-lowlevel": ">=11,<=11.5.41", "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/cms-scheduler": ">=11,<=11.5.41", + "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", @@ -6890,27 +6867,32 @@ "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", "ua-parser/uap-php": "<3.8", "uasoft-indonesia/badaso": "<=2.9.7", - "unisharp/laravel-filemanager": "<2.6.4", + "unisharp/laravel-filemanager": "<2.9.1", + "unopim/unopim": "<0.1.5", "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", "uvdesk/core-framework": "<=1.1.1", "vanilla/safecurl": "<0.9.2", "verbb/comments": "<1.5.5", - "verbb/formie": "<2.1.6", + "verbb/formie": "<=2.1.43", "verbb/image-resizer": "<2.0.9", "verbb/knock-knock": "<1.2.8", "verot/class.upload.php": "<=2.1.6", + "vertexvaar/falsftp": "<0.2.6", "villagedefrance/opencart-overclocked": "<=1.11.1", "vova07/yii2-fileapi-widget": "<0.1.9", "vrana/adminer": "<4.8.1", "vufind/vufind": ">=2,<9.1.1", "waldhacker/hcaptcha": "<2.1.2", "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<2.6.7", + "wallabag/wallabag": "<2.6.11", "wanglelecc/laracms": "<=1.0.3", - "web-auth/webauthn-framework": ">=3.3,<3.3.4", + "wapplersystems/a21glossary": "<=0.4.10", + "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", + "web-auth/webauthn-lib": ">=4.5,<4.9", "web-feet/coastercms": "==5.5", + "web-tp3/wec_map": "<3.0.3", "webbuilders-group/silverstripe-kapost-bridge": "<0.4", "webcoast/deferred-image-processing": "<1.0.2", "webklex/laravel-imap": "<5.3", @@ -6920,9 +6902,11 @@ "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", "winter/wn-backend-module": "<1.2.4", + "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", "winter/wn-dusk-plugin": "<2.1", "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<=1.2.3", + "wireui/wireui": "<1.19.3|>=2,<2.1.3", "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", "wp-cli/wp-cli": ">=0.12,<2.5", "wp-graphql/wp-graphql": "<=1.14.5", @@ -6934,19 +6918,19 @@ "xataface/xataface": "<3", "xpressengine/xpressengine": "<3.0.15", "yab/quarx": "<2.4.5", - "yeswiki/yeswiki": "<4.1", - "yetiforce/yetiforce-crm": "<=6.4", + "yeswiki/yeswiki": "<4.5.4", + "yetiforce/yetiforce-crm": "<6.5", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.29", - "yiisoft/yii2": "<2.0.50", + "yiisoft/yii": "<1.1.31", + "yiisoft/yii2": "<2.0.52", "yiisoft/yii2-authclient": "<2.2.15", "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.43", + "yiisoft/yii2-dev": "<=2.0.45", "yiisoft/yii2-elasticsearch": "<2.0.5", "yiisoft/yii2-gii": "<=2.2.4", "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", + "yiisoft/yii2-redis": "<2.0.20", "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", @@ -7025,7 +7009,7 @@ "type": "tidelift" } ], - "time": "2024-06-26T15:05:17+00:00" + "time": "2025-06-13T22:05:09+00:00" }, { "name": "sebastian/cli-parser", @@ -7197,16 +7181,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -7217,7 +7201,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -7262,7 +7246,7 @@ "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" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -7270,7 +7254,7 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -7945,32 +7929,32 @@ }, { "name": "slevomat/coding-standard", - "version": "8.15.0", + "version": "8.19.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "7d1d957421618a3803b593ec31ace470177d7817" + "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", - "reference": "7d1d957421618a3803b593ec31ace470177d7817", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/458d665acd49009efebd7e0cb385d71ae9ac3220", + "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220", "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.9.0" + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^2.1.0", + "squizlabs/php_codesniffer": "^3.13.0" }, "require-dev": { - "phing/phing": "2.17.4", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.60", - "phpstan/phpstan-deprecation-rules": "1.1.4", - "phpstan/phpstan-phpunit": "1.3.16", - "phpstan/phpstan-strict-rules": "1.5.2", - "phpunit/phpunit": "8.5.21|9.6.8|10.5.11" + "phing/phing": "3.0.1", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-deprecation-rules": "2.0.3", + "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan-strict-rules": "2.0.4", + "phpunit/phpunit": "9.6.8|10.5.45|11.4.4|11.5.21|12.1.3" }, "type": "phpcodesniffer-standard", "extra": { @@ -7994,7 +7978,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" + "source": "https://github.com/slevomat/coding-standard/tree/8.19.1" }, "funding": [ { @@ -8006,7 +7990,7 @@ "type": "tidelift" } ], - "time": "2024-03-09T15:20:58+00:00" + "time": "2025-06-09T17:53:57+00:00" }, { "name": "softcreatr/jsonpath", @@ -8078,16 +8062,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.1", + "version": "3.13.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877" + "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/8f90f7a53ce271935282967f53d0894f8f1ff877", - "reference": "8f90f7a53ce271935282967f53d0894f8f1ff877", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", + "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", "shasum": "" }, "require": { @@ -8152,148 +8136,13 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2024-05-22T21:24:41+00:00" - }, - { - "name": "thecodingmachine/safe", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } - }, - "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", - "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" - }, - "time": "2023-04-05T11:54:14+00:00" + "time": "2025-06-12T15:04:34+00:00" }, { "name": "theseer/tokenizer", @@ -8347,45 +8196,43 @@ }, { "name": "trinet/mezzio-test", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/trinet-at/mezzio-test.git", - "reference": "d64fe3a2b5161805679716e2e445b835ab22a468" + "reference": "4e4cb96d39fa5653c43d56c447b9b552d0b8d08b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/trinet-at/mezzio-test/zipball/d64fe3a2b5161805679716e2e445b835ab22a468", - "reference": "d64fe3a2b5161805679716e2e445b835ab22a468", + "url": "https://api.github.com/repos/trinet-at/mezzio-test/zipball/4e4cb96d39fa5653c43d56c447b9b552d0b8d08b", + "reference": "4e4cb96d39fa5653c43d56c447b9b552d0b8d08b", "shasum": "" }, "require": { "fig/http-message-util": "^1.1", "laminas/laminas-config-aggregator": "^1.2", - "laminas/laminas-diactoros": "^2.2", + "laminas/laminas-diactoros": "^2.2 || ^3.5", "laminas/laminas-stratigility": "^3.2", "mezzio/mezzio": "^3.2", "mezzio/mezzio-router": "^3.1", - "php": "^7.4 || ^8.0", + "php": "^8.2", "psr/container": "^1.0 || ^2.0", - "psr/http-message": "^1.0", - "thecodingmachine/safe": "^1.0 || ^2.0" + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { - "bnf/phpstan-psr-container": "^1.0", - "eventjet/coding-standard": "^3.1", - "infection/infection": "^0.26.0", - "laminas/laminas-servicemanager": "^3.4", - "maglnet/composer-require-checker": "^3.3 || ^4.0", - "mezzio/mezzio-fastroute": "^3.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.16.1", - "thecodingmachine/phpstan-safe-rule": "^1.0", - "vimeo/psalm": "^4.0" + "bnf/phpstan-psr-container": "^1.1", + "eventjet/coding-standard": "^3.18", + "infection/infection": "^0.27.11", + "laminas/laminas-servicemanager": "^4.0", + "maglnet/composer-require-checker": "^4.14", + "mezzio/mezzio-fastroute": "^3.12", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.19", + "vimeo/psalm": "^5.26" }, "type": "library", "autoload": { @@ -8400,9 +8247,9 @@ "description": "Testing helpers for mezzio projects", "support": { "issues": "https://github.com/trinet-at/mezzio-test/issues", - "source": "https://github.com/trinet-at/mezzio-test/tree/1.1.2" + "source": "https://github.com/trinet-at/mezzio-test/tree/1.2.0" }, - "time": "2022-02-25T15:51:27+00:00" + "time": "2025-01-11T13:55:22+00:00" } ], "aliases": [], From 47fa610349e889e675257af4de5dfe3c64dfcb39 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Mon, 16 Jun 2025 18:56:32 +0200 Subject: [PATCH 03/62] adjust workflows --- .github/workflows/codestyle-and-unittest.yml | 10 +++++----- .github/workflows/deployment_build.yml | 12 ++++++------ .github/workflows/deployment_production.yml | 4 ++-- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/codestyle-and-unittest.yml b/.github/workflows/codestyle-and-unittest.yml index b64b4dfa..c6be1757 100644 --- a/.github/workflows/codestyle-and-unittest.yml +++ b/.github/workflows/codestyle-and-unittest.yml @@ -11,7 +11,7 @@ on: jobs: phplint: name: PHP Lint - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -36,7 +36,7 @@ jobs: phpstan: name: PHP Stan - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -61,7 +61,7 @@ jobs: phpcs: name: PHP CodeSniffer - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -90,7 +90,7 @@ jobs: - phplint - phpstan - phpcs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -119,7 +119,7 @@ jobs: - phplint - phpstan - phpcs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 diff --git a/.github/workflows/deployment_build.yml b/.github/workflows/deployment_build.yml index 11684b58..e6f1be5f 100644 --- a/.github/workflows/deployment_build.yml +++ b/.github/workflows/deployment_build.yml @@ -8,7 +8,7 @@ jobs: phplint: name: PHP Lint - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -41,7 +41,7 @@ jobs: phpstan: name: PHP Stan - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -74,7 +74,7 @@ jobs: phpcs: name: PHP CodeSniffer - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -111,7 +111,7 @@ jobs: - phplint - phpstan - phpcs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -148,7 +148,7 @@ jobs: - phplint - phpstan - phpcs - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4.1.1 @@ -194,7 +194,7 @@ jobs: - phpstan - phpunit - phpfunctional - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Get latest code uses: actions/checkout@v4.1.1 diff --git a/.github/workflows/deployment_production.yml b/.github/workflows/deployment_production.yml index 68c01dfa..49208751 100644 --- a/.github/workflows/deployment_production.yml +++ b/.github/workflows/deployment_production.yml @@ -8,10 +8,10 @@ jobs: deployment_of_hackathon_to_production: env: VUE_APP_API_BASE_URL: 'https://hackathon.exdrals.de' - runs-on: ubuntu-20.04 + runs-on: ubuntu-latest steps: - name: Get latest code - uses: actions/checkout@v2 + uses: actions/checkout@v4.1.1 - name: Install Composer Dependencies run: composer install --prefer-dist --no-progress --no-dev From b838ee0ac588d5c5b5ff7d3c67f03288244b44d4 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Mon, 16 Jun 2025 19:05:06 +0200 Subject: [PATCH 04/62] fix codesniffer ruleset --- phpcs.xml | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/phpcs.xml b/phpcs.xml index a8ea11aa..001e6dc9 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -84,17 +84,8 @@ - - - - - - - - - - - + + From 093f6ae155251c3607d9275791ffe358ed967126 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Mon, 16 Jun 2025 19:14:48 +0200 Subject: [PATCH 05/62] remove zendframework bridge --- composer.json | 1 - composer.lock | 65 +-------------------------------------------------- 2 files changed, 1 insertion(+), 65 deletions(-) diff --git a/composer.json b/composer.json index d8315009..bf337028 100644 --- a/composer.json +++ b/composer.json @@ -73,7 +73,6 @@ "laminas/laminas-servicemanager": "^3.10", "laminas/laminas-stdlib": "^3.6.0", "laminas/laminas-validator": "^2.15", - "laminas/laminas-zendframework-bridge": "^1.4.0", "mezzio/mezzio": "^3.6.0", "mezzio/mezzio-fastroute": "^3.3.0", "mezzio/mezzio-helpers": "^5.7.0", diff --git a/composer.lock b/composer.lock index ed20a505..6b14bf32 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c26f79a035cdf55aaffbf44b2cad64ef", + "content-hash": "c1163df690d66e16e3b4322b0d759a8f", "packages": [ { "name": "brick/math", @@ -2085,69 +2085,6 @@ ], "time": "2025-06-16T14:38:00+00:00" }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.8.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/eb0d96c708b92177a92bc2239543d3ed523452c6", - "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.4", - "psalm/plugin-phpunit": "^0.18.0", - "squizlabs/php_codesniffer": "^3.7.1", - "vimeo/psalm": "^5.16.0" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "abandoned": true, - "time": "2023-11-24T13:56:19+00:00" - }, { "name": "mezzio/mezzio", "version": "3.21.0", From b707d13c0d594709e84e81d223ea9d41656c1469 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 14:07:18 +0200 Subject: [PATCH 06/62] clean --- .env.dist | 14 - .phplint.yml | 9 - .rsync-include | 14 - CHANGELOG.md | 4 +- bin/migrations.php | 70 - composer.json | 108 - composer.lock | 8207 ----------------- config/autoload/database.develope.php | 19 - config/autoload/database.global.php | 19 - config/autoload/database.testing.php | 9 - config/autoload/dependencies.global.php | 30 - .../development.config.global.php.dist | 5 - config/autoload/development.local.php.dist | 36 - config/autoload/discord.global.php | 9 - config/autoload/local.php.dist | 13 - config/autoload/logger.global.php | 7 - config/autoload/mail.develope.php | 8 - config/autoload/mail.global.php | 8 - config/autoload/mezzio.global.php | 23 - config/autoload/mezzio.local.php | 23 - config/autoload/migrations.develope.php | 22 - config/autoload/migrations.global.php | 22 - config/autoload/migrations.testing.php | 22 - config/autoload/token.develope.php | 18 - config/autoload/token.global.php | 18 - config/autoload/token.testing.php | 18 - config/config.php | 57 - config/container.php | 10 - config/development.config.php.dist | 31 - config/migrations.template.tpl | 19 - config/pipeline.php | 85 - config/routes.php | 165 - .../Version20220921183401CreateRoleTable.php | 29 - .../Version20220921183501CreateUserTable.php | 42 - .../Version20220921184501CreateEventTable.php | 43 - ...sion20220921195606CreateTopicPoolTable.php | 39 - ...on20220921200325CreateParticipantTable.php | 45 - ...ersion20220921200425CreateProjectTable.php | 40 - ...n20220921210101CreateGarbageTableTable.php | 24 - ...921210102CreateGarbageReasonTypesTable.php | 24 - ...20921210259CreateGarbageContainerTable.php | 48 - ...0220921220101CreateUserActivationTable.php | 27 - ...0220921220156InsertDefaultsToRoleTable.php | 35 - docker-compose.yml | 14 + phpcs.xml | 146 - phpstan.neon | 11 - phpunit_functionaltest.xml | 20 - phpunit_unittest.xml | 32 - src/App/ConfigProvider.php | 203 - src/App/Dto/Event/EventDto.php | 61 - src/App/Dto/Event/EventListDto.php | 23 - .../Topic/TopicCreateFailureMessageDto.php | 22 - src/App/Dto/Topic/TopicCreateRequestDto.php | 29 - src/App/Dto/Topic/TopicCreateResponseDto.php | 22 - src/App/Dto/Topic/TopicListDto.php | 30 - src/App/Entity/Event.php | 28 - src/App/Entity/Participant.php | 21 - src/App/Entity/Project.php | 24 - src/App/Entity/Role.php | 19 - src/App/Entity/Topic.php | 21 - src/App/Enum/DateTimeFormat.php | 8 - src/App/Enum/EventStatus.php | 29 - src/App/Enum/UserRole.php | 23 - src/App/Handler/Event/EventCreateHandler.php | 19 - src/App/Handler/Event/EventHandler.php | 92 - src/App/Handler/Event/EventListHandler.php | 47 - src/App/Handler/Event/EventNameHandler.php | 27 - .../EventParticipantSubscribeHandler.php | 53 - .../EventParticipantUnsubscribeHandler.php | 22 - src/App/Handler/System/ApiMeHandler.php | 57 - src/App/Handler/System/PingHandler.php | 43 - src/App/Handler/System/TestMailHandler.php | 32 - src/App/Handler/Topic/TopicCreateHandler.php | 59 - .../Topic/TopicListAvailableHandler.php | 38 - .../Event/EventCreateMiddleware.php | 44 - .../Event/EventCreateMiddlewareFactory.php | 42 - .../Event/EventCreateValidationMiddleware.php | 35 - .../Middleware/Event/EventListMiddleware.php | 67 - src/App/Middleware/Event/EventMiddleware.php | 27 - .../Middleware/Event/EventNameMiddleware.php | 32 - .../EventParticipantSubscribeMiddleware.php | 50 - .../EventParticipantUnsubscribeMiddleware.php | 42 - .../Middleware/Project/ProjectMiddleware.php | 27 - .../Project/ProjectOwnerMiddleware.php | 30 - .../Project/ProjectParticipantMiddleware.php | 31 - .../Topic/TopicCreateSubmitMiddleware.php | 46 - .../Topic/TopicCreateValidationMiddleware.php | 34 - .../Topic/TopicEntryStatisticMiddleware.php | 24 - .../Topic/TopicListAvailableMiddleware.php | 26 - .../Middleware/Topic/TopicListMiddleware.php | 24 - src/App/Repository/EventRepository.php | 21 - src/App/Repository/ParticipantRepository.php | 19 - src/App/Repository/ProjectRepository.php | 10 - src/App/Repository/TopicPoolRepository.php | 27 - .../Service/EMail/EMailServiceInterface.php | 10 - .../Service/EMail/TopicCreateEMailService.php | 37 - .../EMail/TopicCreateEMailServiceFactory.php | 20 - src/App/Service/Event/EventService.php | 94 - src/App/Service/Event/EventServiceFactory.php | 48 - .../Participant/ParticipantService.php | 77 - .../Participant/ParticipantServiceFactory.php | 30 - src/App/Service/Project/ProjectService.php | 41 - .../Service/Project/ProjectServiceFactory.php | 36 - src/App/Service/Topic/TopicPoolService.php | 112 - .../Service/Topic/TopicPoolServiceFactory.php | 27 - src/App/Service/User/UserService.php | 95 - src/App/Service/User/UserServiceFactory.php | 52 - src/App/Table/EventTable.php | 75 - src/App/Table/ParticipantTable.php | 69 - src/App/Table/ProjectTable.php | 16 - src/App/Table/TopicPoolTable.php | 89 - src/App/Validator/EventCreateValidator.php | 27 - .../Input/Event/EventDescriptionInput.php | 27 - .../Input/Event/EventDurationInput.php | 26 - .../Input/Event/EventStartTimeInput.php | 27 - .../Validator/Input/Event/EventTextInput.php | 27 - .../Validator/Input/Event/EventTitleInput.php | 27 - .../Input/Topic/TopicDescriptionInput.php | 26 - src/App/Validator/Input/Topic/TopicInput.php | 26 - src/App/Validator/TopicCreateValidator.php | 18 - src/Core/ConfigProvider.php | 156 - src/Core/Dto/ApiMeDto.php | 38 - src/Core/Dto/HttpStatusCodeMessage.php | 35 - src/Core/Dto/SimpleMessageDto.php | 20 - src/Core/Dto/User/LoginTokenDto.php | 20 - .../User/LoginValidationFailureMessageDto.php | 36 - src/Core/Dto/User/UserLogInDataDto.php | 27 - src/Core/Entity/User.php | 29 - src/Core/Exception/ClientException.php | 9 - .../Exception/DuplicateEntryException.php | 19 - .../Exception/DuplicateNameHttpException.php | 19 - src/Core/Exception/HttpException.php | 28 - .../Exception/HttpExceptionMiddleware.php | 21 - .../InvalidArgumentHttpException.php | 19 - .../InvalidAuthenticationException.php | 14 - src/Core/Exception/ServerException.php | 9 - src/Core/Factory/DatabaseFactory.php | 28 - src/Core/Factory/LoggerFactory.php | 53 - src/Core/Factory/MailFactory.php | 18 - src/Core/Factory/QueryFactory.php | 15 - src/Core/Factory/UuidFactory.php | 15 - src/Core/Handler/LoginHandler.php | 64 - src/Core/Handler/LoginHandlerFactory.php | 15 - src/Core/Handler/LogoutHandler.php | 32 - src/Core/Handler/UserHandler.php | 29 - .../Handler/UserPasswordChangeHandler.php | 17 - .../Handler/UserPasswordForgottonHandler.php | 48 - .../UserPasswordForgottonHandlerFactory.php | 18 - .../UserPasswordVerifyTokenHandler.php | 17 - .../Handler/UserRegisterSubmitHandler.php | 33 - .../Hydrator/ClassMethodsHydratorFactory.php | 14 - .../DateTimeFormatterStrategyFactory.php | 14 - ...eTimeImmutableFormatterStrategyFactory.php | 15 - src/Core/Hydrator/NullableStrategyFactory.php | 17 - src/Core/Hydrator/ReflectionHydrator.php | 49 - src/Core/Hydrator/Strategy/UuidStrategy.php | 47 - src/Core/Listener/LoggingErrorListener.php | 32 - .../LoggingErrorListenerDelegatorFactory.php | 17 - .../Listener/LoggingErrorListenerFactory.php | 16 - src/Core/Logger/BaseInformationProcessor.php | 29 - src/Core/Middleware/ApiAccessMiddleware.php | 30 - .../IsLoggedInAuthenticationMiddleware.php | 29 - .../JwtAuthenticationMiddleware.php | 60 - .../JwtAuthenticationMiddlewareFactory.php | 24 - .../LoginAuthenticationMiddleware.php | 41 - .../Middleware/LoginValidationMiddleware.php | 37 - .../UpdateLastUserActionTimeMiddleware.php | 29 - src/Core/Middleware/UserMiddleware.php | 33 - .../UserPasswordChangeMiddleware.php | 43 - .../UserPasswordChangeValidatorMiddleware.php | 35 - .../UserPasswordForgottenMiddleware.php | 40 - .../UserPasswordForgottenValidator.php | 35 - .../UserPasswordVerifyTokenMiddleware.php | 37 - .../Middleware/UserRegisterMiddleware.php | 64 - .../UserRegisterValidationMiddleware.php | 39 - src/Core/Repository/Repository.php | 12 - src/Core/Repository/UserRepository.php | 21 - src/Core/Service/ApiAccessService.php | 16 - src/Core/Service/ApiAccessServiceFactory.php | 15 - .../Service/LoginAuthenticationService.php | 19 - src/Core/Table/AbstractTable.php | 41 - src/Core/Table/UserTable.php | 93 - src/Core/Token/JwtTokenGeneratorTrait.php | 26 - src/Core/Token/TokenService.php | 14 - src/Core/Trait/CloneReadonlyClassWith.php | 14 - src/Core/Validator/DateLessNow.php | 37 - src/Core/Validator/Input/EmailInput.php | 26 - src/Core/Validator/Input/PasswordInput.php | 25 - src/Core/Validator/Input/UsernameInput.php | 26 - src/Core/Validator/LoginValidator.php | 18 - .../PasswordForgottenEmailValidator.php | 15 - src/Core/Validator/RegisterValidator.php | 15 - .../Validator/UserPasswordChangeValidator.php | 15 - tests/Data/Entity/EventTestEntity.php | 28 - tests/Data/Entity/ParticipantTestEntity.php | 21 - tests/Data/Entity/ProjectTestEntity.php | 24 - tests/Data/Entity/RoleTestEntity.php | 19 - tests/Data/Entity/TopicTestEntity.php | 21 - tests/Data/Entity/UserTestEntity.php | 25 - tests/Data/TestConstants.php | 110 - tests/Functional/FunctionalTestCase.php | 22 - tests/Functional/JsonRequestHelper.php | 15 - tests/Functional/Mock/NullLogger.php | 73 - tests/Functional/Mock/NullLoggerFactory.php | 14 - tests/Functional/Root/PingTest.php | 26 - tests/Functional/UserControl/UserMeTest.php | 54 - .../Handler/Topic/TopicCreateHandlerTest.php | 32 - .../Topic/TopicListAvailableHandlerTest.php | 34 - .../EventCreateMiddlewareFactoryTest.php | 35 - .../Event/EventCreateMiddlewareTest.php | 53 - .../EventCreateValidationMiddlewareTest.php | 42 - .../Event/EventListMiddlewareTest.php | 60 - .../Middleware/Event/EventMiddlewareTest.php | 41 - .../Event/EventNameMiddlewareTest.php | 44 - .../Topic/TopicCreateSubmitMiddlewareTest.php | 45 - .../TopicCreateValidationMiddlewareTest.php | 43 - .../Topic/TopicListMiddlewareTest.php | 20 - .../App/Service/EventServiceFactoryTest.php | 30 - tests/Unit/App/Service/EventServiceTest.php | 98 - .../Service/ParticipantServiceFactoryTest.php | 30 - .../App/Service/ParticipantServiceTest.php | 109 - .../App/Service/ProjectServiceFactoryTest.php | 30 - tests/Unit/App/Service/ProjectServiceTest.php | 51 - .../Unit/App/Service/TopicPoolServiceTest.php | 113 - tests/Unit/App/Table/EventTableTest.php | 137 - tests/Unit/App/Table/ParticipantTableTest.php | 125 - tests/Unit/App/Table/ProjectTableTest.php | 47 - tests/Unit/App/Table/TopicPoolTableTest.php | 108 - .../Unit/Core/Factory/DatabaseFactoryTest.php | 55 - tests/Unit/Core/Factory/MailFactoryTest.php | 28 - tests/Unit/Core/Factory/QueryFactoryTest.php | 23 - tests/Unit/Core/Factory/UuidFactoryTest.php | 20 - tests/Unit/Core/Handler/AbstractHandler.php | 21 - tests/Unit/Core/Handler/LoginHandlerTest.php | 32 - .../ClassMethodsHydratorFactoryTest.php | 18 - .../DateTimeFormatterStrategyFactoryTest.php | 18 - .../Hydrator/NullableStrategyFactoryTest.php | 23 - .../Core/Hydrator/ReflectionHydratorTest.php | 49 - .../Core/Middleware/AbstractMiddleware.php | 26 - .../Middleware/ApiAccessMiddlewareTest.php | 57 - ...UpdateLastUserActionTimeMiddlewareTest.php | 36 - .../Core/Middleware/UserMiddlewareTest.php | 48 - tests/Unit/Core/Service/AbstractService.php | 33 - .../Service/ApiAccessServiceFactoryTest.php | 37 - .../Core/Service/ApiAccessServiceTest.php | 38 - tests/Unit/Core/Service/TokenServiceTest.php | 18 - .../Core/Service/UserServiceFactoryTest.php | 33 - tests/Unit/Core/Service/UserServiceTest.php | 134 - tests/Unit/Core/Table/AbstractTable.php | 39 - tests/Unit/Core/Table/UserTableTest.php | 158 - tests/Unit/Mock/Database/MockDelete.php | 37 - tests/Unit/Mock/Database/MockInsert.php | 58 - tests/Unit/Mock/Database/MockPDO.php | 18 - tests/Unit/Mock/Database/MockQuery.php | 37 - .../Unit/Mock/Database/MockQueryForCanNot.php | 37 - tests/Unit/Mock/Database/MockSelect.php | 144 - .../Mock/Database/MockSelectForFetchAll.php | 109 - tests/Unit/Mock/Database/MockUpdate.php | 46 - .../Mock/Database/MockUpdateForNotUpdate.php | 46 - tests/Unit/Mock/Mailer/MockMailer.php | 15 - tests/Unit/Mock/MockContainer.php | 32 - tests/Unit/Mock/MockRequestHandler.php | 15 - tests/Unit/Mock/MockResponse.php | 79 - tests/Unit/Mock/MockServerRequest.php | 180 - .../Mock/Service/MockApiAccessService.php | 18 - tests/Unit/Mock/Service/MockEventService.php | 46 - .../Service/MockTopicCreateEMailService.php | 14 - .../Mock/Service/MockTopicPoolService.php | 32 - tests/Unit/Mock/Service/MockUserService.php | 35 - tests/Unit/Mock/Table/MockEventTable.php | 44 - .../Unit/Mock/Table/MockParticipantTable.php | 45 - tests/Unit/Mock/Table/MockProjectTable.php | 28 - tests/Unit/Mock/Table/MockTopicPoolTable.php | 46 - tests/Unit/Mock/Table/MockUserTable.php | 50 - .../Validator/MockEventCreateValidator.php | 43 - .../Validator/MockTopicCreateValidator.php | 20 - tests/bootstrap.php | 6 - .../autoload/database.testing.local.php | 14 - .../autoload/dependencies.testing.local.php | 22 - tests/config/autoload/token.testing.local.php | 18 - tests/config/config.php | 24 - tests/config/container.php | 14 - tests/config/pipeline.php | 18 - tests/config/routes.php | 19 - 284 files changed, 15 insertions(+), 18902 deletions(-) delete mode 100644 .env.dist delete mode 100644 .phplint.yml delete mode 100644 .rsync-include delete mode 100755 bin/migrations.php delete mode 100644 composer.json delete mode 100644 composer.lock delete mode 100644 config/autoload/database.develope.php delete mode 100644 config/autoload/database.global.php delete mode 100644 config/autoload/database.testing.php delete mode 100644 config/autoload/dependencies.global.php delete mode 100644 config/autoload/development.config.global.php.dist delete mode 100644 config/autoload/development.local.php.dist delete mode 100644 config/autoload/discord.global.php delete mode 100644 config/autoload/local.php.dist delete mode 100644 config/autoload/logger.global.php delete mode 100644 config/autoload/mail.develope.php delete mode 100644 config/autoload/mail.global.php delete mode 100644 config/autoload/mezzio.global.php delete mode 100644 config/autoload/mezzio.local.php delete mode 100644 config/autoload/migrations.develope.php delete mode 100644 config/autoload/migrations.global.php delete mode 100644 config/autoload/migrations.testing.php delete mode 100644 config/autoload/token.develope.php delete mode 100644 config/autoload/token.global.php delete mode 100644 config/autoload/token.testing.php delete mode 100644 config/config.php delete mode 100644 config/container.php delete mode 100644 config/development.config.php.dist delete mode 100644 config/migrations.template.tpl delete mode 100644 config/pipeline.php delete mode 100644 config/routes.php delete mode 100644 database/migrations/Version20220921183401CreateRoleTable.php delete mode 100644 database/migrations/Version20220921183501CreateUserTable.php delete mode 100644 database/migrations/Version20220921184501CreateEventTable.php delete mode 100644 database/migrations/Version20220921195606CreateTopicPoolTable.php delete mode 100644 database/migrations/Version20220921200325CreateParticipantTable.php delete mode 100644 database/migrations/Version20220921200425CreateProjectTable.php delete mode 100644 database/migrations/Version20220921210101CreateGarbageTableTable.php delete mode 100644 database/migrations/Version20220921210102CreateGarbageReasonTypesTable.php delete mode 100644 database/migrations/Version20220921210259CreateGarbageContainerTable.php delete mode 100644 database/migrations/Version20220921220101CreateUserActivationTable.php delete mode 100644 database/migrations/Version20220921220156InsertDefaultsToRoleTable.php delete mode 100644 phpcs.xml delete mode 100644 phpstan.neon delete mode 100644 phpunit_functionaltest.xml delete mode 100644 phpunit_unittest.xml delete mode 100644 src/App/ConfigProvider.php delete mode 100644 src/App/Dto/Event/EventDto.php delete mode 100644 src/App/Dto/Event/EventListDto.php delete mode 100644 src/App/Dto/Topic/TopicCreateFailureMessageDto.php delete mode 100644 src/App/Dto/Topic/TopicCreateRequestDto.php delete mode 100644 src/App/Dto/Topic/TopicCreateResponseDto.php delete mode 100644 src/App/Dto/Topic/TopicListDto.php delete mode 100644 src/App/Entity/Event.php delete mode 100644 src/App/Entity/Participant.php delete mode 100644 src/App/Entity/Project.php delete mode 100644 src/App/Entity/Role.php delete mode 100644 src/App/Entity/Topic.php delete mode 100644 src/App/Enum/DateTimeFormat.php delete mode 100644 src/App/Enum/EventStatus.php delete mode 100644 src/App/Enum/UserRole.php delete mode 100644 src/App/Handler/Event/EventCreateHandler.php delete mode 100644 src/App/Handler/Event/EventHandler.php delete mode 100644 src/App/Handler/Event/EventListHandler.php delete mode 100644 src/App/Handler/Event/EventNameHandler.php delete mode 100644 src/App/Handler/Event/EventParticipantSubscribeHandler.php delete mode 100644 src/App/Handler/Event/EventParticipantUnsubscribeHandler.php delete mode 100644 src/App/Handler/System/ApiMeHandler.php delete mode 100644 src/App/Handler/System/PingHandler.php delete mode 100644 src/App/Handler/System/TestMailHandler.php delete mode 100644 src/App/Handler/Topic/TopicCreateHandler.php delete mode 100644 src/App/Handler/Topic/TopicListAvailableHandler.php delete mode 100644 src/App/Middleware/Event/EventCreateMiddleware.php delete mode 100644 src/App/Middleware/Event/EventCreateMiddlewareFactory.php delete mode 100644 src/App/Middleware/Event/EventCreateValidationMiddleware.php delete mode 100644 src/App/Middleware/Event/EventListMiddleware.php delete mode 100644 src/App/Middleware/Event/EventMiddleware.php delete mode 100644 src/App/Middleware/Event/EventNameMiddleware.php delete mode 100644 src/App/Middleware/Event/EventParticipantSubscribeMiddleware.php delete mode 100644 src/App/Middleware/Event/EventParticipantUnsubscribeMiddleware.php delete mode 100644 src/App/Middleware/Project/ProjectMiddleware.php delete mode 100644 src/App/Middleware/Project/ProjectOwnerMiddleware.php delete mode 100644 src/App/Middleware/Project/ProjectParticipantMiddleware.php delete mode 100644 src/App/Middleware/Topic/TopicCreateSubmitMiddleware.php delete mode 100644 src/App/Middleware/Topic/TopicCreateValidationMiddleware.php delete mode 100644 src/App/Middleware/Topic/TopicEntryStatisticMiddleware.php delete mode 100644 src/App/Middleware/Topic/TopicListAvailableMiddleware.php delete mode 100644 src/App/Middleware/Topic/TopicListMiddleware.php delete mode 100644 src/App/Repository/EventRepository.php delete mode 100644 src/App/Repository/ParticipantRepository.php delete mode 100644 src/App/Repository/ProjectRepository.php delete mode 100644 src/App/Repository/TopicPoolRepository.php delete mode 100644 src/App/Service/EMail/EMailServiceInterface.php delete mode 100644 src/App/Service/EMail/TopicCreateEMailService.php delete mode 100644 src/App/Service/EMail/TopicCreateEMailServiceFactory.php delete mode 100644 src/App/Service/Event/EventService.php delete mode 100644 src/App/Service/Event/EventServiceFactory.php delete mode 100644 src/App/Service/Participant/ParticipantService.php delete mode 100644 src/App/Service/Participant/ParticipantServiceFactory.php delete mode 100644 src/App/Service/Project/ProjectService.php delete mode 100644 src/App/Service/Project/ProjectServiceFactory.php delete mode 100644 src/App/Service/Topic/TopicPoolService.php delete mode 100644 src/App/Service/Topic/TopicPoolServiceFactory.php delete mode 100644 src/App/Service/User/UserService.php delete mode 100644 src/App/Service/User/UserServiceFactory.php delete mode 100644 src/App/Table/EventTable.php delete mode 100644 src/App/Table/ParticipantTable.php delete mode 100644 src/App/Table/ProjectTable.php delete mode 100644 src/App/Table/TopicPoolTable.php delete mode 100644 src/App/Validator/EventCreateValidator.php delete mode 100644 src/App/Validator/Input/Event/EventDescriptionInput.php delete mode 100644 src/App/Validator/Input/Event/EventDurationInput.php delete mode 100644 src/App/Validator/Input/Event/EventStartTimeInput.php delete mode 100644 src/App/Validator/Input/Event/EventTextInput.php delete mode 100644 src/App/Validator/Input/Event/EventTitleInput.php delete mode 100644 src/App/Validator/Input/Topic/TopicDescriptionInput.php delete mode 100644 src/App/Validator/Input/Topic/TopicInput.php delete mode 100644 src/App/Validator/TopicCreateValidator.php delete mode 100644 src/Core/ConfigProvider.php delete mode 100644 src/Core/Dto/ApiMeDto.php delete mode 100644 src/Core/Dto/HttpStatusCodeMessage.php delete mode 100644 src/Core/Dto/SimpleMessageDto.php delete mode 100644 src/Core/Dto/User/LoginTokenDto.php delete mode 100644 src/Core/Dto/User/LoginValidationFailureMessageDto.php delete mode 100644 src/Core/Dto/User/UserLogInDataDto.php delete mode 100644 src/Core/Entity/User.php delete mode 100644 src/Core/Exception/ClientException.php delete mode 100644 src/Core/Exception/DuplicateEntryException.php delete mode 100644 src/Core/Exception/DuplicateNameHttpException.php delete mode 100644 src/Core/Exception/HttpException.php delete mode 100644 src/Core/Exception/HttpExceptionMiddleware.php delete mode 100644 src/Core/Exception/InvalidArgumentHttpException.php delete mode 100644 src/Core/Exception/InvalidAuthenticationException.php delete mode 100644 src/Core/Exception/ServerException.php delete mode 100644 src/Core/Factory/DatabaseFactory.php delete mode 100644 src/Core/Factory/LoggerFactory.php delete mode 100644 src/Core/Factory/MailFactory.php delete mode 100644 src/Core/Factory/QueryFactory.php delete mode 100644 src/Core/Factory/UuidFactory.php delete mode 100644 src/Core/Handler/LoginHandler.php delete mode 100644 src/Core/Handler/LoginHandlerFactory.php delete mode 100644 src/Core/Handler/LogoutHandler.php delete mode 100644 src/Core/Handler/UserHandler.php delete mode 100644 src/Core/Handler/UserPasswordChangeHandler.php delete mode 100644 src/Core/Handler/UserPasswordForgottonHandler.php delete mode 100644 src/Core/Handler/UserPasswordForgottonHandlerFactory.php delete mode 100644 src/Core/Handler/UserPasswordVerifyTokenHandler.php delete mode 100644 src/Core/Handler/UserRegisterSubmitHandler.php delete mode 100644 src/Core/Hydrator/ClassMethodsHydratorFactory.php delete mode 100644 src/Core/Hydrator/DateTimeFormatterStrategyFactory.php delete mode 100644 src/Core/Hydrator/DateTimeImmutableFormatterStrategyFactory.php delete mode 100644 src/Core/Hydrator/NullableStrategyFactory.php delete mode 100644 src/Core/Hydrator/ReflectionHydrator.php delete mode 100644 src/Core/Hydrator/Strategy/UuidStrategy.php delete mode 100644 src/Core/Listener/LoggingErrorListener.php delete mode 100644 src/Core/Listener/LoggingErrorListenerDelegatorFactory.php delete mode 100644 src/Core/Listener/LoggingErrorListenerFactory.php delete mode 100644 src/Core/Logger/BaseInformationProcessor.php delete mode 100644 src/Core/Middleware/ApiAccessMiddleware.php delete mode 100644 src/Core/Middleware/IsLoggedInAuthenticationMiddleware.php delete mode 100644 src/Core/Middleware/JwtAuthenticationMiddleware.php delete mode 100644 src/Core/Middleware/JwtAuthenticationMiddlewareFactory.php delete mode 100644 src/Core/Middleware/LoginAuthenticationMiddleware.php delete mode 100644 src/Core/Middleware/LoginValidationMiddleware.php delete mode 100644 src/Core/Middleware/UpdateLastUserActionTimeMiddleware.php delete mode 100644 src/Core/Middleware/UserMiddleware.php delete mode 100644 src/Core/Middleware/UserPasswordChangeMiddleware.php delete mode 100644 src/Core/Middleware/UserPasswordChangeValidatorMiddleware.php delete mode 100644 src/Core/Middleware/UserPasswordForgottenMiddleware.php delete mode 100644 src/Core/Middleware/UserPasswordForgottenValidator.php delete mode 100644 src/Core/Middleware/UserPasswordVerifyTokenMiddleware.php delete mode 100644 src/Core/Middleware/UserRegisterMiddleware.php delete mode 100644 src/Core/Middleware/UserRegisterValidationMiddleware.php delete mode 100644 src/Core/Repository/Repository.php delete mode 100644 src/Core/Repository/UserRepository.php delete mode 100644 src/Core/Service/ApiAccessService.php delete mode 100644 src/Core/Service/ApiAccessServiceFactory.php delete mode 100644 src/Core/Service/LoginAuthenticationService.php delete mode 100644 src/Core/Table/AbstractTable.php delete mode 100644 src/Core/Table/UserTable.php delete mode 100644 src/Core/Token/JwtTokenGeneratorTrait.php delete mode 100644 src/Core/Token/TokenService.php delete mode 100644 src/Core/Trait/CloneReadonlyClassWith.php delete mode 100644 src/Core/Validator/DateLessNow.php delete mode 100644 src/Core/Validator/Input/EmailInput.php delete mode 100644 src/Core/Validator/Input/PasswordInput.php delete mode 100644 src/Core/Validator/Input/UsernameInput.php delete mode 100644 src/Core/Validator/LoginValidator.php delete mode 100644 src/Core/Validator/PasswordForgottenEmailValidator.php delete mode 100644 src/Core/Validator/RegisterValidator.php delete mode 100644 src/Core/Validator/UserPasswordChangeValidator.php delete mode 100644 tests/Data/Entity/EventTestEntity.php delete mode 100644 tests/Data/Entity/ParticipantTestEntity.php delete mode 100644 tests/Data/Entity/ProjectTestEntity.php delete mode 100644 tests/Data/Entity/RoleTestEntity.php delete mode 100644 tests/Data/Entity/TopicTestEntity.php delete mode 100644 tests/Data/Entity/UserTestEntity.php delete mode 100644 tests/Data/TestConstants.php delete mode 100644 tests/Functional/FunctionalTestCase.php delete mode 100644 tests/Functional/JsonRequestHelper.php delete mode 100644 tests/Functional/Mock/NullLogger.php delete mode 100644 tests/Functional/Mock/NullLoggerFactory.php delete mode 100644 tests/Functional/Root/PingTest.php delete mode 100644 tests/Functional/UserControl/UserMeTest.php delete mode 100644 tests/Unit/App/Handler/Topic/TopicCreateHandlerTest.php delete mode 100644 tests/Unit/App/Handler/Topic/TopicListAvailableHandlerTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventCreateMiddlewareFactoryTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventCreateMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventCreateValidationMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventListMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Event/EventNameMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Topic/TopicCreateSubmitMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Topic/TopicCreateValidationMiddlewareTest.php delete mode 100644 tests/Unit/App/Middleware/Topic/TopicListMiddlewareTest.php delete mode 100644 tests/Unit/App/Service/EventServiceFactoryTest.php delete mode 100644 tests/Unit/App/Service/EventServiceTest.php delete mode 100644 tests/Unit/App/Service/ParticipantServiceFactoryTest.php delete mode 100644 tests/Unit/App/Service/ParticipantServiceTest.php delete mode 100644 tests/Unit/App/Service/ProjectServiceFactoryTest.php delete mode 100644 tests/Unit/App/Service/ProjectServiceTest.php delete mode 100644 tests/Unit/App/Service/TopicPoolServiceTest.php delete mode 100644 tests/Unit/App/Table/EventTableTest.php delete mode 100644 tests/Unit/App/Table/ParticipantTableTest.php delete mode 100644 tests/Unit/App/Table/ProjectTableTest.php delete mode 100644 tests/Unit/App/Table/TopicPoolTableTest.php delete mode 100644 tests/Unit/Core/Factory/DatabaseFactoryTest.php delete mode 100644 tests/Unit/Core/Factory/MailFactoryTest.php delete mode 100644 tests/Unit/Core/Factory/QueryFactoryTest.php delete mode 100644 tests/Unit/Core/Factory/UuidFactoryTest.php delete mode 100644 tests/Unit/Core/Handler/AbstractHandler.php delete mode 100644 tests/Unit/Core/Handler/LoginHandlerTest.php delete mode 100644 tests/Unit/Core/Hydrator/ClassMethodsHydratorFactoryTest.php delete mode 100644 tests/Unit/Core/Hydrator/DateTimeFormatterStrategyFactoryTest.php delete mode 100644 tests/Unit/Core/Hydrator/NullableStrategyFactoryTest.php delete mode 100644 tests/Unit/Core/Hydrator/ReflectionHydratorTest.php delete mode 100644 tests/Unit/Core/Middleware/AbstractMiddleware.php delete mode 100644 tests/Unit/Core/Middleware/ApiAccessMiddlewareTest.php delete mode 100644 tests/Unit/Core/Middleware/UpdateLastUserActionTimeMiddlewareTest.php delete mode 100644 tests/Unit/Core/Middleware/UserMiddlewareTest.php delete mode 100644 tests/Unit/Core/Service/AbstractService.php delete mode 100644 tests/Unit/Core/Service/ApiAccessServiceFactoryTest.php delete mode 100644 tests/Unit/Core/Service/ApiAccessServiceTest.php delete mode 100644 tests/Unit/Core/Service/TokenServiceTest.php delete mode 100644 tests/Unit/Core/Service/UserServiceFactoryTest.php delete mode 100644 tests/Unit/Core/Service/UserServiceTest.php delete mode 100644 tests/Unit/Core/Table/AbstractTable.php delete mode 100644 tests/Unit/Core/Table/UserTableTest.php delete mode 100644 tests/Unit/Mock/Database/MockDelete.php delete mode 100644 tests/Unit/Mock/Database/MockInsert.php delete mode 100644 tests/Unit/Mock/Database/MockPDO.php delete mode 100644 tests/Unit/Mock/Database/MockQuery.php delete mode 100644 tests/Unit/Mock/Database/MockQueryForCanNot.php delete mode 100644 tests/Unit/Mock/Database/MockSelect.php delete mode 100644 tests/Unit/Mock/Database/MockSelectForFetchAll.php delete mode 100644 tests/Unit/Mock/Database/MockUpdate.php delete mode 100644 tests/Unit/Mock/Database/MockUpdateForNotUpdate.php delete mode 100644 tests/Unit/Mock/Mailer/MockMailer.php delete mode 100644 tests/Unit/Mock/MockContainer.php delete mode 100644 tests/Unit/Mock/MockRequestHandler.php delete mode 100644 tests/Unit/Mock/MockResponse.php delete mode 100644 tests/Unit/Mock/MockServerRequest.php delete mode 100644 tests/Unit/Mock/Service/MockApiAccessService.php delete mode 100644 tests/Unit/Mock/Service/MockEventService.php delete mode 100644 tests/Unit/Mock/Service/MockTopicCreateEMailService.php delete mode 100644 tests/Unit/Mock/Service/MockTopicPoolService.php delete mode 100644 tests/Unit/Mock/Service/MockUserService.php delete mode 100644 tests/Unit/Mock/Table/MockEventTable.php delete mode 100644 tests/Unit/Mock/Table/MockParticipantTable.php delete mode 100644 tests/Unit/Mock/Table/MockProjectTable.php delete mode 100644 tests/Unit/Mock/Table/MockTopicPoolTable.php delete mode 100644 tests/Unit/Mock/Table/MockUserTable.php delete mode 100644 tests/Unit/Mock/Validator/MockEventCreateValidator.php delete mode 100644 tests/Unit/Mock/Validator/MockTopicCreateValidator.php delete mode 100644 tests/bootstrap.php delete mode 100644 tests/config/autoload/database.testing.local.php delete mode 100644 tests/config/autoload/dependencies.testing.local.php delete mode 100644 tests/config/autoload/token.testing.local.php delete mode 100644 tests/config/config.php delete mode 100644 tests/config/container.php delete mode 100644 tests/config/pipeline.php delete mode 100644 tests/config/routes.php diff --git a/.env.dist b/.env.dist deleted file mode 100644 index dd0e0373..00000000 --- a/.env.dist +++ /dev/null @@ -1,14 +0,0 @@ -#docker configuration -ENV=dev -USERMAP_UID=1000 -USERMAP_GID=984 -MYSQL_USER=dev -MYSQL_PASSWORD=dev -MYSQL_ROOT_PASSWORD=root -MYSQL_DATABASE=db -MYSQL_PUBLIC_PORT=3306 -PHP_VERSION=8.3 -MARIADB_VERSION=latest -APACHE_VERSION=2.4-alpine -HTTP_PORT=80 -SHTTP_PORT=443 diff --git a/.phplint.yml b/.phplint.yml deleted file mode 100644 index c4f8ebb9..00000000 --- a/.phplint.yml +++ /dev/null @@ -1,9 +0,0 @@ -path: ./src -jobs: 10 -cache: .phplint.cache -extensions: - - php -exclude: - - vendor -warning: true -memory_limit: -1 diff --git a/.rsync-include b/.rsync-include deleted file mode 100644 index aae45ac2..00000000 --- a/.rsync-include +++ /dev/null @@ -1,14 +0,0 @@ -/config/config.php -/config/container.php -/config/pipeline.php -/config/routes.php -/config/autoload/*.global.php -/data/ -/data/cache/ -/data/log/ -/public/*.txt -/puplic/*.ico -/public/api/* -/public/api/.* -/public/src/* -/constants.php diff --git a/CHANGELOG.md b/CHANGELOG.md index 1fe5a2f2..ec2148df 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,9 +22,7 @@ Example: ## Unreleased -### Added -- add Changelog #74 @BibaltiK -- add Issues Templates #77 @BibaltiK + diff --git a/bin/migrations.php b/bin/migrations.php deleted file mode 100755 index bea2a60f..00000000 --- a/bin/migrations.php +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env php -setCustomTemplate(__DIR__ . '/../config/migrations.template.tpl'); - -$configuration->addMigrationsDirectory('Migrations', $config['migrations_paths']['Migrations']); -$configuration->setAllOrNothing($config['all_or_nothing']); -$configuration->setCheckDatabasePlatform($config['check_database_platform']); -$configuration->setTransactional($config['transactional']); -$configuration->setMigrationOrganization($config['organize_migrations']); - - -$storageConfiguration = new TableMetadataStorageConfiguration(); -$storageConfiguration->setTableName($config['table_storage']['table_name']); -$storageConfiguration->setVersionColumnName($config['table_storage']['version_column_name']); -$storageConfiguration->setVersionColumnLength($config['table_storage']['version_column_length']); -$storageConfiguration->setExecutedAtColumnName($config['table_storage']['executed_at_column_name']); -$storageConfiguration->setExecutionTimeColumnName($config['table_storage']['execution_time_column_name']); - - -$configuration->setMetadataStorageConfiguration($storageConfiguration); - -$container = require_once __DIR__ . '/../config/container.php'; - -$dependencyFactory = DependencyFactory::fromConnection( - new ExistingConfiguration($configuration), - new ExistingConnection($connection) -); - -$dependencyFactory->setService(Psr\Container\ContainerInterface::class, $container); - -$cli = new Application('Doctrine Migrations'); -$cli->setCatchExceptions(true); - -$cli->addCommands([ - new Command\DumpSchemaCommand($dependencyFactory), - new Command\ExecuteCommand($dependencyFactory), - new Command\GenerateCommand($dependencyFactory), - new Command\LatestCommand($dependencyFactory), - new Command\ListCommand($dependencyFactory), - new Command\MigrateCommand($dependencyFactory), - new Command\RollupCommand($dependencyFactory), - new Command\StatusCommand($dependencyFactory), - new Command\SyncMetadataCommand($dependencyFactory), - new Command\VersionCommand($dependencyFactory), -]); - -$cli->run(); diff --git a/composer.json b/composer.json deleted file mode 100644 index bf337028..00000000 --- a/composer.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "name": "ownhackathon/hackathon-api", - "description": "Evaluation project for the Hackathon on the Discord server from BlackScorp", - "type": "project", - "license": "BSD-3-Clause", - "authors": [ - { - "name": "BibaltiK", - "email": "bibaltik@exdrals.de" - } - ], - "keywords": [ - "BlackScorp", - "Hackathon", - "Discord" - ], - "homepage": "https://hackathon.exdrals.de", - "config": { - "sort-packages": true, - "allow-plugins": { - "composer/package-versions-deprecated": true, - "laminas/laminas-component-installer": true, - "dealerdirect/phpcodesniffer-composer-installer": true - } - }, - "scripts": { - "post-create-project-cmd": [ - "@development-enable" - ], - "development-disable": "laminas-development-mode disable", - "development-enable": "laminas-development-mode enable", - "development-status": "laminas-development-mode status", - "mezzio": "laminas --ansi", - "doctrine": "php ./bin/migrations.php", - "openapi": "php ./vendor/bin/openapi ./src -f json -o ./public/api/doc/swagger.json", - "phplint": "phplint -c .phplint.yml --no-cache", - "phpcs": "phpcs --standard=phpcs.xml --extensions=php --tab-width=4 -sp src tests", - "phpcbf": "phpcbf --standard=phpcs.xml --extensions=php --tab-width=4 -sp src tests", - "phpstan": "vendor/bin/phpstan analyse -c phpstan.neon", - "unittest": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --colors=always --configuration phpunit_unittest.xml", - "functionaltest": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --colors=always --configuration phpunit_functionaltest.xml", - "test": [ - "@unittest", - "@functionaltest" - ], - "check": [ - "@phplint", - "@phpcs", - "@phpstan", - "@unittest", - "@functionaltest" - ], - "clear-config-cache": "php bin/clear-config-cache.php", - "enable-codestandard": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run" - }, - "require": { - "php": "^8.3", - "ext-json": "*", - "ext-openssl": "*", - "ext-pdo": "*", - "composer/package-versions-deprecated": "^1.11.99.4", - "doctrine/migrations": "^3.5", - "envms/fluentpdo": "^2.2.0", - "firebase/php-jwt": "^6.0", - "jetbrains/phpstorm-attributes": "^1.0", - "laminas/laminas-component-installer": "^3.2.0", - "laminas/laminas-config-aggregator": "^1.6.0", - "laminas/laminas-development-mode": "^3.12", - "laminas/laminas-diactoros": "^2.8.0", - "laminas/laminas-hydrator": "^4.3.1", - "laminas/laminas-inputfilter": "^2.12", - "laminas/laminas-log": "^2.17", - "laminas/laminas-servicemanager": "^3.10", - "laminas/laminas-stdlib": "^3.6.0", - "laminas/laminas-validator": "^2.15", - "mezzio/mezzio": "^3.6.0", - "mezzio/mezzio-fastroute": "^3.3.0", - "mezzio/mezzio-helpers": "^5.7.0", - "mezzio/mezzio-tooling": "^2.9", - "ramsey/uuid": "^4.3", - "symfony/mailer": "^6.1", - "zircote/swagger-php": "^4.6" - }, - "require-dev": { - "filp/whoops": "^2.14.4", - "helmich/phpunit-json-assert": "^3.5", - "overtrue/phplint": "^5.3", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1.2", - "phpunit/phpunit": "^10.0", - "roave/security-advisories": "dev-latest", - "slevomat/coding-standard": "^8.14", - "squizlabs/php_codesniffer": "^3.6", - "trinet/mezzio-test": "^1.1" - }, - "autoload": { - "psr-4": { - "App\\": "src/App/", - "Core\\": "src/Core/", - "Migrations\\": "database/migrations" - } - }, - "autoload-dev": { - "psr-4": { - "Test\\": "tests" - } - } -} diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 6b14bf32..00000000 --- a/composer.lock +++ /dev/null @@ -1,8207 +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": "c1163df690d66e16e3b4322b0d759a8f", - "packages": [ - { - "name": "brick/math", - "version": "0.13.1", - "source": { - "type": "git", - "url": "https://github.com/brick/math.git", - "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", - "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.1", - "vimeo/psalm": "6.8.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\Math\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Arbitrary-precision arithmetic library", - "keywords": [ - "Arbitrary-precision", - "BigInteger", - "BigRational", - "arithmetic", - "bigdecimal", - "bignum", - "bignumber", - "brick", - "decimal", - "integer", - "math", - "mathematics", - "rational" - ], - "support": { - "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.13.1" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2025-03-29T13:50:30+00:00" - }, - { - "name": "brick/varexporter", - "version": "0.6.0", - "source": { - "type": "git", - "url": "https://github.com/brick/varexporter.git", - "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/brick/varexporter/zipball/af98bfc2b702a312abbcaff37656dbe419cec5bc", - "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": "^8.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "6.8.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Brick\\VarExporter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A powerful alternative to var_export(), which can export closures and objects without __set_state()", - "keywords": [ - "var_export" - ], - "support": { - "issues": "https://github.com/brick/varexporter/issues", - "source": "https://github.com/brick/varexporter/tree/0.6.0" - }, - "funding": [ - { - "url": "https://github.com/BenMorel", - "type": "github" - } - ], - "time": "2025-02-20T17:42:39+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" - }, - "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-01-17T14:14:24+00:00" - }, - { - "name": "doctrine/dbal", - "version": "4.2.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b37d160498ea91a2382a2ebe825c4ea6254fc0ec", - "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^0.5.3|^1", - "php": "^8.1", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "13.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.17", - "phpstan/phpstan-phpunit": "2.0.6", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "10.5.46", - "slevomat/coding-standard": "8.16.2", - "squizlabs/php_codesniffer": "3.13.1", - "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.4" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", - "type": "tidelift" - } - ], - "time": "2025-06-15T23:15:01+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" - }, - "time": "2025-04-07T20:06:18+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2024-05-22T20:47:39+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2024-02-05T11:56:58+00:00" - }, - { - "name": "doctrine/migrations", - "version": "3.9.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/migrations.git", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/dbal": "^3.6 || ^4", - "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.2 || ^2.0", - "php": "^8.1", - "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" - }, - "conflict": { - "doctrine/orm": "<2.12 || >=4" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3 || ^4", - "doctrine/sql-formatter": "^1.0", - "ext-pdo_sqlite": "*", - "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" - }, - "suggest": { - "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", - "symfony/yaml": "Allows the use of yaml for migration configuration files." - }, - "bin": [ - "bin/doctrine-migrations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Migrations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Michael Simonson", - "email": "contact@mikesimonson.com" - } - ], - "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", - "homepage": "https://www.doctrine-project.org/projects/migrations.html", - "keywords": [ - "database", - "dbal", - "migrations" - ], - "support": { - "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", - "type": "tidelift" - } - ], - "time": "2025-03-26T06:48:45+00:00" - }, - { - "name": "egulias/email-validator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", - "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2.0 || ^3.0", - "php": ">=8.1", - "symfony/polyfill-intl-idn": "^1.26" - }, - "require-dev": { - "phpunit/phpunit": "^10.2", - "vimeo/psalm": "^5.12" - }, - "suggest": { - "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Egulias\\EmailValidator\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eduardo Gulias Davis" - } - ], - "description": "A library for validating emails against several RFCs", - "homepage": "https://github.com/egulias/EmailValidator", - "keywords": [ - "email", - "emailvalidation", - "emailvalidator", - "validation", - "validator" - ], - "support": { - "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/egulias", - "type": "github" - } - ], - "time": "2025-03-06T22:45:56+00:00" - }, - { - "name": "envms/fluentpdo", - "version": "v2.2.4", - "source": { - "type": "git", - "url": "https://github.com/envms/fluentpdo.git", - "reference": "1985e0e8406a56140f387bc9bec786b419cbeccc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/envms/fluentpdo/zipball/1985e0e8406a56140f387bc9bec786b419cbeccc", - "reference": "1985e0e8406a56140f387bc9bec786b419cbeccc", - "shasum": "" - }, - "require": { - "ext-pdo": "*", - "php": ">=7.1" - }, - "require-dev": { - "envms/fluent-test": "^1.0", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Envms\\FluentPDO\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0", - "GPL-2.0+" - ], - "authors": [ - { - "name": "envms", - "homepage": "https://env.ms" - } - ], - "description": "FluentPDO is a quick and light PHP library for rapid query building. It features a smart join builder, which automatically creates table joins.", - "homepage": "https://github.com/envms/fluentpdo", - "keywords": [ - "builder", - "database", - "db", - "dbal", - "fluent", - "mysql", - "oracle", - "pdo", - "query" - ], - "support": { - "issues": "https://github.com/envms/fluentpdo/issues", - "source": "https://github.com/envms/fluentpdo/tree/v2.2.4" - }, - "time": "2022-01-27T21:49:44+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "firebase/php-jwt", - "version": "v6.11.1", - "source": { - "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", - "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "guzzlehttp/guzzle": "^7.4", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "psr/cache": "^2.0||^3.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0" - }, - "suggest": { - "ext-sodium": "Support EdDSA (Ed25519) signatures", - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" - }, - "type": "library", - "autoload": { - "psr-4": { - "Firebase\\JWT\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Neuman Vong", - "email": "neuman+pear@twilio.com", - "role": "Developer" - }, - { - "name": "Anant Narayanan", - "email": "anant@php.net", - "role": "Developer" - } - ], - "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", - "keywords": [ - "jwt", - "php" - ], - "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" - }, - "time": "2025-04-09T20:32:01+00:00" - }, - { - "name": "jetbrains/phpstorm-attributes", - "version": "1.2", - "source": { - "type": "git", - "url": "https://github.com/JetBrains/phpstorm-attributes.git", - "reference": "64de815a4509c29e00d5e3474087fd24c171afc2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/64de815a4509c29e00d5e3474087fd24c171afc2", - "reference": "64de815a4509c29e00d5e3474087fd24c171afc2", - "shasum": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "JetBrains\\PhpStorm\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "JetBrains", - "homepage": "https://www.jetbrains.com" - } - ], - "description": "PhpStorm specific attributes", - "keywords": [ - "attributes", - "jetbrains", - "phpstorm" - ], - "support": { - "issues": "https://youtrack.jetbrains.com/newIssue?project=WI", - "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.2" - }, - "time": "2024-10-11T10:46:19+00:00" - }, - { - "name": "laminas/laminas-cli", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-cli.git", - "reference": "159b48f896fb2502cb6618a95307b56a0f23e592" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-cli/zipball/159b48f896fb2502cb6618a95307b56a0f23e592", - "reference": "159b48f896fb2502cb6618a95307b56a0f23e592", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.0 || ^2.0", - "symfony/console": "^6.0 || ^7.0", - "symfony/event-dispatcher": "^6.0 || ^7.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "amphp/amp": "<2.6.4" - }, - "require-dev": { - "laminas/laminas-coding-standard": "^3.0.1", - "laminas/laminas-mvc": "^3.8.0", - "laminas/laminas-servicemanager": "^3.23.0", - "mikey179/vfsstream": "2.0.x-dev", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "bin": [ - "bin/laminas" - ], - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Cli\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Command-line interface for Laminas projects", - "keywords": [ - "cli", - "command", - "console", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-cli/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/laminas-cli/issues", - "rss": "https://github.com/mezzio/laminas-cli/releases.atom", - "source": "https://github.com/mezzio/laminas-cli" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-11-22T12:39:15+00:00" - }, - { - "name": "laminas/laminas-code", - "version": "4.16.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "1793e78dad4108b594084d05d1fb818b85b110af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1793e78dad4108b594084d05d1fb818b85b110af", - "reference": "1793e78dad4108b594084d05d1fb818b85b110af", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0.1", - "ext-phar": "*", - "laminas/laminas-coding-standard": "^3.0.0", - "laminas/laminas-stdlib": "^3.18.0", - "phpunit/phpunit": "^10.5.37", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.15.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas", - "laminasframework" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-11-20T13:15:13+00:00" - }, - { - "name": "laminas/laminas-component-installer", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-component-installer.git", - "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-component-installer/zipball/8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", - "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^2.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "zendframework/zend-component-installer": "*" - }, - "require-dev": { - "composer/composer": "^2.7.7", - "laminas/laminas-coding-standard": "~3.0.0", - "mikey179/vfsstream": "^1.6.11", - "phpunit/phpunit": "^10.5.35", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.24.0", - "webmozart/assert": "^1.11.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Laminas\\ComponentInstaller\\ComponentInstaller" - }, - "autoload": { - "psr-4": { - "Laminas\\ComponentInstaller\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Composer plugin for injecting modules and configuration providers into application configuration", - "homepage": "https://laminas.dev", - "keywords": [ - "component installer", - "composer", - "laminas", - "plugin" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-component-installer/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-component-installer/issues", - "rss": "https://github.com/laminas/laminas-component-installer/releases.atom", - "source": "https://github.com/laminas/laminas-component-installer" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-11-26T14:11:43+00:00" - }, - { - "name": "laminas/laminas-config-aggregator", - "version": "1.18.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-config-aggregator.git", - "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/a5cc009f58daa4e1b968abd65972fa3a481c22c5", - "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5", - "shasum": "" - }, - "require": { - "brick/varexporter": "^0.5.0 || ^0.4.0 || ^0.6.0", - "laminas/laminas-stdlib": "^3.18.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "webimpress/safe-writer": "^2.2.0" - }, - "conflict": { - "nikic/php-parser": "<4.12", - "zendframework/zend-config-aggregator": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.0.1", - "laminas/laminas-config": "^3.10.1", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.2", - "vimeo/psalm": "^6.8.6" - }, - "suggest": { - "laminas/laminas-config": "Allows loading configuration from XML, INI, YAML, and JSON files", - "laminas/laminas-config-aggregator-modulemanager": "Allows loading configuration from laminas-mvc Module classes", - "laminas/laminas-config-aggregator-parameters": "Allows usage of templated parameters within your configuration" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\ConfigAggregator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Lightweight library for collecting and merging configuration from different sources", - "homepage": "https://laminas.dev", - "keywords": [ - "config-aggregator", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-config-aggregator/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-config-aggregator/issues", - "rss": "https://github.com/laminas/laminas-config-aggregator/releases.atom", - "source": "https://github.com/laminas/laminas-config-aggregator" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-02-21T18:18:40+00:00" - }, - { - "name": "laminas/laminas-development-mode", - "version": "3.14.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-development-mode.git", - "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/21e4e5fd40c5b22b710306f72060c15ec6091279", - "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "zfcampus/zf-development-mode": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.1.0", - "mikey179/vfsstream": "^1.6.12", - "phpunit/phpunit": "^10.5.46", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.12.0" - }, - "bin": [ - "bin/laminas-development-mode" - ], - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\DevelopmentMode\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas development mode script", - "homepage": "https://laminas.dev", - "keywords": [ - "framework", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-development-mode/issues", - "rss": "https://github.com/laminas/laminas-development-mode/releases.atom", - "source": "https://github.com/laminas/laminas-development-mode" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-06-16T09:56:05+00:00" - }, - { - "name": "laminas/laminas-diactoros", - "version": "2.26.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "6584d44eb8e477e89d453313b858daac6183cddc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", - "reference": "6584d44eb8e477e89d453313b858daac6183cddc", - "shasum": "" - }, - "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.1" - }, - "conflict": { - "zendframework/zend-diactoros": "*" - }, - "provide": { - "psr/http-factory-implementation": "1.0", - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "ext-dom": "*", - "ext-gd": "*", - "ext-libxml": "*", - "http-interop/http-factory-tests": "^0.9.0", - "laminas/laminas-coding-standard": "^2.5", - "php-http/psr7-integration-tests": "^1.2", - "phpunit/phpunit": "^9.5.28", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.6" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\Diactoros", - "config-provider": "Laminas\\Diactoros\\ConfigProvider" - } - }, - "autoload": { - "files": [ - "src/functions/create_uploaded_file.php", - "src/functions/marshal_headers_from_sapi.php", - "src/functions/marshal_method_from_sapi.php", - "src/functions/marshal_protocol_version_from_sapi.php", - "src/functions/marshal_uri_from_sapi.php", - "src/functions/normalize_server.php", - "src/functions/normalize_uploaded_files.php", - "src/functions/parse_cookie_header.php", - "src/functions/create_uploaded_file.legacy.php", - "src/functions/marshal_headers_from_sapi.legacy.php", - "src/functions/marshal_method_from_sapi.legacy.php", - "src/functions/marshal_protocol_version_from_sapi.legacy.php", - "src/functions/marshal_uri_from_sapi.legacy.php", - "src/functions/normalize_server.legacy.php", - "src/functions/normalize_uploaded_files.legacy.php", - "src/functions/parse_cookie_header.legacy.php" - ], - "psr-4": { - "Laminas\\Diactoros\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR HTTP Message implementations", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "psr", - "psr-17", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-diactoros/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-diactoros/issues", - "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", - "source": "https://github.com/laminas/laminas-diactoros" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2023-10-29T16:17:44+00:00" - }, - { - "name": "laminas/laminas-escaper", - "version": "2.17.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba", - "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "zendframework/zend-escaper": "*" - }, - "require-dev": { - "infection/infection": "^0.29.8", - "laminas/laminas-coding-standard": "~3.0.1", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.2", - "vimeo/psalm": "^6.6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Escaper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", - "homepage": "https://laminas.dev", - "keywords": [ - "escaper", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-escaper/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-escaper/issues", - "rss": "https://github.com/laminas/laminas-escaper/releases.atom", - "source": "https://github.com/laminas/laminas-escaper" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-05-06T19:29:36+00:00" - }, - { - "name": "laminas/laminas-filter", - "version": "2.41.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-filter.git", - "reference": "eaa00111231bf6669826ae84d3abe85b94477585" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/eaa00111231bf6669826ae84d3abe85b94477585", - "reference": "eaa00111231bf6669826ae84d3abe85b94477585", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.19.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "laminas/laminas-validator": "<2.10.1", - "zendframework/zend-filter": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.0", - "laminas/laminas-crypt": "^3.12", - "laminas/laminas-i18n": "^2.28.1", - "laminas/laminas-uri": "^2.12", - "pear/archive_tar": "^1.5.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "psr/http-factory": "^1.1.0", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", - "laminas/laminas-i18n": "Laminas\\I18n component for filters depending on i18n functionality", - "laminas/laminas-uri": "Laminas\\Uri component, for the UriNormalize filter", - "psr/http-factory-implementation": "psr/http-factory-implementation, for creating file upload instances when consuming PSR-7 in file upload filters" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Filter", - "config-provider": "Laminas\\Filter\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Filter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Programmatically filter and normalize data and files", - "homepage": "https://laminas.dev", - "keywords": [ - "filter", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-filter/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-filter/issues", - "rss": "https://github.com/laminas/laminas-filter/releases.atom", - "source": "https://github.com/laminas/laminas-filter" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-05-05T02:02:31+00:00" - }, - { - "name": "laminas/laminas-httphandlerrunner", - "version": "2.12.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-httphandlerrunner.git", - "reference": "b14da3519c650e9436e410cfedee6f860312eff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/b14da3519c650e9436e410cfedee6f860312eff9", - "reference": "b14da3519c650e9436e410cfedee6f860312eff9", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/http-message-implementation": "^1.0 || ^2.0", - "psr/http-server-handler": "^1.0" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.1.0", - "laminas/laminas-diactoros": "^3.6.0", - "phpunit/phpunit": "^10.5.46", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.10.3" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\HttpHandlerRunner\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.", - "homepage": "https://laminas.dev", - "keywords": [ - "components", - "laminas", - "mezzio", - "psr-15", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-httphandlerrunner/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-httphandlerrunner/issues", - "rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom", - "source": "https://github.com/laminas/laminas-httphandlerrunner" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-05-13T21:21:16+00:00" - }, - { - "name": "laminas/laminas-hydrator", - "version": "4.16.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-hydrator.git", - "reference": "a162bd571924968d67ef1f43aed044b8f9c108ef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-hydrator/zipball/a162bd571924968d67ef1f43aed044b8f9c108ef", - "reference": "a162bd571924968d67ef1f43aed044b8f9c108ef", - "shasum": "" - }, - "require": { - "laminas/laminas-stdlib": "^3.20", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "webmozart/assert": "^1.11" - }, - "conflict": { - "laminas/laminas-servicemanager": "<3.14.0", - "zendframework/zend-hydrator": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.0", - "laminas/laminas-eventmanager": "^3.13.1", - "laminas/laminas-modulemanager": "^2.16.0", - "laminas/laminas-serializer": "^2.17.0", - "laminas/laminas-servicemanager": "^3.23.0", - "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "laminas/laminas-eventmanager": "^3.13, to support aggregate hydrator usage", - "laminas/laminas-serializer": "^2.17, to use the SerializableStrategy", - "laminas/laminas-servicemanager": "^3.22, to support hydrator plugin manager usage" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Hydrator", - "config-provider": "Laminas\\Hydrator\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Hydrator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Serialize objects to arrays, and vice versa", - "homepage": "https://laminas.dev", - "keywords": [ - "hydrator", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-hydrator/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-hydrator/issues", - "rss": "https://github.com/laminas/laminas-hydrator/releases.atom", - "source": "https://github.com/laminas/laminas-hydrator" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-11-13T14:04:02+00:00" - }, - { - "name": "laminas/laminas-inputfilter", - "version": "2.33.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-inputfilter.git", - "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", - "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", - "shasum": "" - }, - "require": { - "laminas/laminas-filter": "^2.19", - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.19", - "laminas/laminas-validator": "^2.60.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.1 || ^2.0" - }, - "conflict": { - "zendframework/zend-inputfilter": "*" - }, - "require-dev": { - "ext-json": "*", - "laminas/laminas-coding-standard": "^3.1.0", - "phpunit/phpunit": "^10.5.46", - "psalm/plugin-phpunit": "^0.19.5", - "psr/http-message": "^2.0", - "vimeo/psalm": "^6.11.0", - "webmozart/assert": "^1.11" - }, - "suggest": { - "psr/http-message-implementation": "PSR-7 is required if you wish to validate PSR-7 UploadedFileInterface payloads" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\InputFilter", - "config-provider": "Laminas\\InputFilter\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\InputFilter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Normalize and validate input sets from the web, APIs, the CLI, and more, including files", - "homepage": "https://laminas.dev", - "keywords": [ - "inputfilter", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-inputfilter/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-inputfilter/issues", - "rss": "https://github.com/laminas/laminas-inputfilter/releases.atom", - "source": "https://github.com/laminas/laminas-inputfilter" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-05-27T09:48:19+00:00" - }, - { - "name": "laminas/laminas-log", - "version": "2.17.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-log.git", - "reference": "abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-log/zipball/abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c", - "reference": "abc93b0c597e5dd55a18d29f0ae3b18c2f0e3f0c", - "shasum": "" - }, - "require": { - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0", - "psr/log": "^1.1.2" - }, - "conflict": { - "zendframework/zend-log": "*" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "ext-dom": "*", - "ext-json": "*", - "ext-xml": "*", - "firephp/firephp-core": "^0.5.3", - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-db": "^2.6", - "laminas/laminas-escaper": "^2.5", - "laminas/laminas-filter": "^2.5", - "laminas/laminas-mail": "^2.6.1", - "laminas/laminas-validator": "^2.10.1", - "mikey179/vfsstream": "^1.6.7", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.10" - }, - "suggest": { - "ext-mongo": "mongo extension to use Mongo writer", - "ext-mongodb": "mongodb extension to use MongoDB writer", - "laminas/laminas-db": "Laminas\\Db component to use the database log writer", - "laminas/laminas-escaper": "Laminas\\Escaper component, for use in the XML log formatter", - "laminas/laminas-mail": "Laminas\\Mail component to use the email log writer", - "laminas/laminas-validator": "Laminas\\Validator component to block invalid log messages" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Log", - "config-provider": "Laminas\\Log\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Log\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Robust, composite logger with filtering, formatting, and PSR-3 support", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "log", - "logging" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-log/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-log/issues", - "rss": "https://github.com/laminas/laminas-log/releases.atom", - "source": "https://github.com/laminas/laminas-log" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "abandoned": "monolog/monolog", - "time": "2024-12-05T15:59:56+00:00" - }, - { - "name": "laminas/laminas-servicemanager", - "version": "3.23.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "a8640182b892b99767d54404d19c5c3b3699f79b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/a8640182b892b99767d54404d19c5c3b3699f79b", - "reference": "a8640182b892b99767d54404d19c5c3b3699f79b", - "shasum": "" - }, - "require": { - "laminas/laminas-stdlib": "^3.19", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.0" - }, - "conflict": { - "ext-psr": "*", - "laminas/laminas-code": "<4.10.0", - "zendframework/zend-code": "<3.3.1", - "zendframework/zend-servicemanager": "*" - }, - "provide": { - "psr/container-implementation": "^1.0" - }, - "replace": { - "container-interop/container-interop": "^1.2.0" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.11.99.5", - "friendsofphp/proxy-manager-lts": "^1.0.18", - "laminas/laminas-code": "^4.14.0", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-container-config-test": "^0.8", - "mikey179/vfsstream": "^1.6.12", - "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" - }, - "bin": [ - "bin/generate-deps-for-config-factory", - "bin/generate-factory-for-class" - ], - "type": "library", - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Factory-Driven Dependency Injection Container", - "homepage": "https://laminas.dev", - "keywords": [ - "PSR-11", - "dependency-injection", - "di", - "dic", - "laminas", - "service-manager", - "servicemanager" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-servicemanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-servicemanager/issues", - "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", - "source": "https://github.com/laminas/laminas-servicemanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-10-28T21:32:16+00:00" - }, - { - "name": "laminas/laminas-stdlib", - "version": "3.20.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", - "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "zendframework/zend-stdlib": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "^3.0", - "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Stdlib\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "SPL extensions, array utilities, error handlers, and more", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "stdlib" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-stdlib/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-stdlib/issues", - "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", - "source": "https://github.com/laminas/laminas-stdlib" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-10-29T13:46:07+00:00" - }, - { - "name": "laminas/laminas-stratigility", - "version": "3.13.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-stratigility.git", - "reference": "3df57528b5c8e9d958515c51006825a83f76d62b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/3df57528b5c8e9d958515c51006825a83f76d62b", - "reference": "3df57528b5c8e9d958515c51006825a83f76d62b", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1", - "laminas/laminas-escaper": "^2.10.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/http-server-middleware": "^1.0.2" - }, - "conflict": { - "zendframework/zend-stratigility": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^2.25 || ^3.5.0", - "phpunit/phpunit": "^10.5.37", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., laminas/laminas-diactoros" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions/double-pass-middleware.php", - "src/functions/host.php", - "src/functions/middleware.php", - "src/functions/path.php", - "src/functions/double-pass-middleware.legacy.php", - "src/functions/host.legacy.php", - "src/functions/middleware.legacy.php", - "src/functions/path.legacy.php" - ], - "psr-4": { - "Laminas\\Stratigility\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR-7 middleware foundation for building and dispatching middleware pipelines", - "homepage": "https://laminas.dev", - "keywords": [ - "http", - "laminas", - "middleware", - "psr-15", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-stratigility/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-stratigility/issues", - "rss": "https://github.com/laminas/laminas-stratigility/releases.atom", - "source": "https://github.com/laminas/laminas-stratigility" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-10-28T11:28:41+00:00" - }, - { - "name": "laminas/laminas-validator", - "version": "2.64.4", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-validator.git", - "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e2e6631f599a9b0db1e23adb633c09a2f0c68bed", - "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed", - "shasum": "" - }, - "require": { - "laminas/laminas-servicemanager": "^3.21.0", - "laminas/laminas-stdlib": "^3.19", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/http-message": "^1.0.1 || ^2.0.0" - }, - "conflict": { - "zendframework/zend-validator": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "^2.5", - "laminas/laminas-db": "^2.20", - "laminas/laminas-filter": "^2.35.2", - "laminas/laminas-i18n": "^2.26.0", - "laminas/laminas-session": "^2.20", - "laminas/laminas-uri": "^2.11.0", - "phpunit/phpunit": "^10.5.20", - "psalm/plugin-phpunit": "^0.19.0", - "psr/http-client": "^1.0.3", - "psr/http-factory": "^1.1.0", - "vimeo/psalm": "^5.24.0" - }, - "suggest": { - "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", - "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", - "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", - "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", - "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", - "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", - "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators" - }, - "type": "library", - "extra": { - "laminas": { - "component": "Laminas\\Validator", - "config-provider": "Laminas\\Validator\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Laminas\\Validator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria", - "homepage": "https://laminas.dev", - "keywords": [ - "laminas", - "validator" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-validator/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-validator/issues", - "rss": "https://github.com/laminas/laminas-validator/releases.atom", - "source": "https://github.com/laminas/laminas-validator" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-06-16T14:38:00+00:00" - }, - { - "name": "mezzio/mezzio", - "version": "3.21.0", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio.git", - "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio/zipball/1ec7e77a0532984c30d18e7278d9bbc596c6293a", - "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1.5", - "laminas/laminas-httphandlerrunner": "^2.1", - "laminas/laminas-stratigility": "^3.5", - "mezzio/mezzio-router": "^3.7", - "mezzio/mezzio-template": "^2.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.0||^2.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0.1 || ^2.0.0", - "psr/http-server-middleware": "^1.0", - "webmozart/assert": "^1.11.0" - }, - "conflict": { - "container-interop/container-interop": "<1.2.0", - "filp/whoops": "<2.14.4", - "laminas/laminas-diactoros": "<1.7.1", - "laminas/laminas-http": "<2.15.0", - "laminas/laminas-router": "<3.5.0", - "laminas/laminas-stdlib": "<3.6.0", - "zendframework/zend-expressive": "*" - }, - "require-dev": { - "filp/whoops": "^2.18.0", - "laminas/laminas-coding-standard": "^3.0.1", - "laminas/laminas-diactoros": "^3.5.0", - "laminas/laminas-servicemanager": "^3.23.0", - "mezzio/mezzio-fastroute": "^3.13", - "mezzio/mezzio-laminasrouter": "^3.11", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.10.1" - }, - "suggest": { - "filp/whoops": "^2.1 to use the Whoops error handler", - "laminas/laminas-auradi-config": "^2.0 to use Aura.Di dependency injection container", - "laminas/laminas-pimple-config": "^1.0 to use Pimple for dependency injection container", - "laminas/laminas-servicemanager": "^3.3 to use laminas-servicemanager for dependency injection", - "mezzio/mezzio-helpers": "^3.0 for its UrlHelper, ServerUrlHelper, and BodyParseMiddleware", - "mezzio/mezzio-tooling": "^1.0 for migration and development tools; require it with the --dev flag", - "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Mezzio; e.g., laminas/laminas-diactoros" - }, - "bin": [ - "bin/mezzio-tooling" - ], - "type": "library", - "extra": { - "laminas": { - "config-provider": "Mezzio\\ConfigProvider" - } - }, - "autoload": { - "files": [ - "src/constants.php", - "src/constants.legacy.php" - ], - "psr-4": { - "Mezzio\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "PSR-15 Middleware Microframework", - "homepage": "https://mezzio.dev", - "keywords": [ - "PSR-11", - "http", - "laminas", - "mezzio", - "middleware", - "psr", - "psr-15", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio/issues", - "rss": "https://github.com/mezzio/mezzio/releases.atom", - "source": "https://github.com/mezzio/mezzio" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-04-27T12:45:58+00:00" - }, - { - "name": "mezzio/mezzio-fastroute", - "version": "3.13.0", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio-fastroute.git", - "reference": "513a636c1ca539e7e687e994f92856cc99358e4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/513a636c1ca539e7e687e994f92856cc99358e4a", - "reference": "513a636c1ca539e7e687e994f92856cc99358e4a", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1.2", - "laminas/laminas-stdlib": "^3.19.0", - "mezzio/mezzio-router": "^3.14 || ^4.0.1", - "nikic/fast-route": "^1.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.0 || ^2.0", - "psr/http-message": "^1.0.1 || ^2.0.0" - }, - "conflict": { - "container-interop/container-interop": "<1.2.0", - "zendframework/zend-expressive-fastroute": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~3.0.1", - "laminas/laminas-diactoros": "^3.5.0", - "laminas/laminas-stratigility": "^4.1.0", - "mikey179/vfsstream": "^1.6.12", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.10.1" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Mezzio\\Router\\FastRouteRouter\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Mezzio\\Router\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "FastRoute integration for Mezzio", - "homepage": "https://mezzio.dev", - "keywords": [ - "FastRoute", - "http", - "laminas", - "mezzio", - "middleware", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/features/router/fast-route/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio-fastroute/issues", - "rss": "https://github.com/mezzio/mezzio-fastroute/releases.atom", - "source": "https://github.com/mezzio/mezzio-fastroute" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-04-27T12:05:55+00:00" - }, - { - "name": "mezzio/mezzio-helpers", - "version": "5.18.0", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio-helpers.git", - "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/8d76502e4d71aff178f2084eadd71d12fe737d3c", - "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c", - "shasum": "" - }, - "require": { - "mezzio/mezzio-router": "^3.0 || ^4.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.0 || ^2.0", - "psr/http-message": "^1.0.1 || ^2.0.0", - "psr/http-server-middleware": "^1.0" - }, - "conflict": { - "amphp/amp": "<2.6.4", - "amphp/dns": "<2.1.2", - "amphp/socket": "<2.3.1", - "zendframework/zend-expressive-helpers": "*" - }, - "require-dev": { - "ext-json": "*", - "laminas/laminas-coding-standard": "~3.0.1", - "laminas/laminas-diactoros": "^3.5", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.5", - "vimeo/psalm": "^6.10.1" - }, - "suggest": { - "ext-json": "If you wish to use the JsonStrategy with BodyParamsMiddleware" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Mezzio\\Helper\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Mezzio\\Helper\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Helper/Utility classes for Mezzio", - "homepage": "https://mezzio.dev", - "keywords": [ - "http", - "laminas", - "mezzio", - "middleware", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/features/helpers/intro/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio-helpers/issues", - "rss": "https://github.com/mezzio/mezzio-helpers/releases.atom", - "source": "https://github.com/mezzio/mezzio-helpers" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-04-27T08:59:18+00:00" - }, - { - "name": "mezzio/mezzio-router", - "version": "3.18.0", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio-router.git", - "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/75e9a3e636ee69f3a51006772cf29c00cb5da675", - "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", - "psr/container": "^1.1.2 || ^2.0", - "psr/http-factory": "^1.0.2", - "psr/http-message": "^1.0.1 || ^2.0.0", - "psr/http-server-middleware": "^1.0.2", - "webmozart/assert": "^1.11" - }, - "conflict": { - "mezzio/mezzio": "<3.5", - "zendframework/zend-expressive-router": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4.0", - "laminas/laminas-servicemanager": "^4.2.0", - "laminas/laminas-stratigility": "^4.0.2", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "mezzio/mezzio-aurarouter": "^3.0 to use the Aura.Router routing adapter", - "mezzio/mezzio-fastroute": "^3.0 to use the FastRoute routing adapter", - "mezzio/mezzio-laminasrouter": "^3.0 to use the laminas-router routing adapter" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Mezzio\\Router\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Mezzio\\Router\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Router subcomponent for Mezzio", - "homepage": "https://mezzio.dev", - "keywords": [ - "http", - "laminas", - "mezzio", - "middleware", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/features/router/intro/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio-router/issues", - "rss": "https://github.com/mezzio/mezzio-router/releases.atom", - "source": "https://github.com/mezzio/mezzio-router" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-10-16T21:18:01+00:00" - }, - { - "name": "mezzio/mezzio-template", - "version": "2.11.0", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio-template.git", - "reference": "836b7e55f92277d5c557f96895d13a547c4abf14" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/836b7e55f92277d5c557f96895d13a547c4abf14", - "reference": "836b7e55f92277d5c557f96895d13a547c4abf14", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" - }, - "conflict": { - "zendframework/zend-expressive-template": "*" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "suggest": { - "mezzio/mezzio-laminasviewrenderer": "^2.0 to use the laminas-view PhpRenderer template renderer", - "mezzio/mezzio-platesrenderer": "^2.0 to use the Plates template renderer", - "mezzio/mezzio-twigrenderer": "^2.0 to use the Twig template renderer" - }, - "type": "library", - "autoload": { - "psr-4": { - "Mezzio\\Template\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Template subcomponent for Mezzio", - "homepage": "https://mezzio.dev", - "keywords": [ - "laminas", - "mezzio", - "template" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/features/template/intro/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio-template/issues", - "rss": "https://github.com/mezzio/mezzio-template/releases.atom", - "source": "https://github.com/mezzio/mezzio-template" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2024-10-16T20:54:53+00:00" - }, - { - "name": "mezzio/mezzio-tooling", - "version": "2.10.1", - "source": { - "type": "git", - "url": "https://github.com/mezzio/mezzio-tooling.git", - "reference": "4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-tooling/zipball/4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0", - "reference": "4fcc2d4ebe5c99685b73920b6ec7259c46d4a3e0", - "shasum": "" - }, - "require": { - "ext-json": "*", - "laminas/laminas-cli": "^1.7.0", - "laminas/laminas-code": "^4.7.1", - "laminas/laminas-stdlib": "^3.15.0", - "laminas/laminas-stratigility": "^3.9.0", - "mezzio/mezzio": "^3.13.0", - "mezzio/mezzio-router": "^3.9.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.1", - "symfony/process": "^6.0.11" - }, - "conflict": { - "amphp/amp": "<2.6.4", - "symfony/console": "<5.4.45", - "symfony/string": "<5.4.45" - }, - "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.3", - "mikey179/vfsstream": "^1.6.12", - "mockery/mockery": "^1.6.10", - "php-mock/php-mock-phpunit": "^2.9.0", - "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.5.35", - "psalm/plugin-mockery": "^0.11.0", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.17.0" - }, - "type": "library", - "extra": { - "laminas": { - "config-provider": "Mezzio\\Tooling\\ConfigProvider" - } - }, - "autoload": { - "psr-4": { - "Mezzio\\Tooling\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Migration and development tooling for Mezzio", - "homepage": "https://mezzio.dev", - "keywords": [ - "http", - "laminas", - "mezzio", - "middleware", - "psr", - "psr-7" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.mezzio.dev/mezzio/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/mezzio/mezzio-tooling/issues", - "rss": "https://github.com/mezzio/mezzio-tooling/releases.atom", - "source": "https://github.com/mezzio/mezzio-tooling" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-03-05T09:37:20+00:00" - }, - { - "name": "nikic/fast-route", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/FastRoute.git", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", - "reference": "181d480e08d9476e61381e04a71b34dc0432e812", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35|~5.7" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "FastRoute\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov", - "email": "nikic@php.net" - } - ], - "description": "Fast request router for PHP", - "keywords": [ - "router", - "routing" - ], - "support": { - "issues": "https://github.com/nikic/FastRoute/issues", - "source": "https://github.com/nikic/FastRoute/tree/master" - }, - "time": "2018-02-13T20:26:39+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.5.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^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.5.0" - }, - "time": "2025-05-31T08:24:38+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, - { - "name": "psr/container", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "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/1.1.2" - }, - "time": "2021-11-05T16:50:12+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", - "shasum": "" - }, - "require": { - "php": ">=7.1", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-factory" - }, - "time": "2024-04-15T12:06:14+00:00" - }, - { - "name": "psr/http-message", - "version": "1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" - }, - "time": "2023-04-04T09:50:52+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", - "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "support": { - "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" - }, - "time": "2023-04-10T20:06:20+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", - "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0 || ^2.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-middleware/issues", - "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" - }, - "time": "2023-04-11T06:14:47+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "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/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "ramsey/collection", - "version": "2.1.1", - "source": { - "type": "git", - "url": "https://github.com/ramsey/collection.git", - "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", - "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "captainhook/plugin-composer": "^5.3", - "ergebnis/composer-normalize": "^2.45", - "fakerphp/faker": "^1.24", - "hamcrest/hamcrest-php": "^2.0", - "jangregor/phpstan-prophecy": "^2.1", - "mockery/mockery": "^1.6", - "php-parallel-lint/php-console-highlighter": "^1.0", - "php-parallel-lint/php-parallel-lint": "^1.4", - "phpspec/prophecy-phpunit": "^2.3", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-mockery": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^10.5", - "ramsey/coding-standard": "^2.3", - "ramsey/conventional-commits": "^1.6", - "roave/security-advisories": "dev-latest" - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - }, - "ramsey/conventional-commits": { - "configFile": "conventional-commits.json" - } - }, - "autoload": { - "psr-4": { - "Ramsey\\Collection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - } - ], - "description": "A PHP library for representing and manipulating collections.", - "keywords": [ - "array", - "collection", - "hash", - "map", - "queue", - "set" - ], - "support": { - "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.1.1" - }, - "time": "2025-03-22T05:38:12+00:00" - }, - { - "name": "ramsey/uuid", - "version": "4.8.1", - "source": { - "type": "git", - "url": "https://github.com/ramsey/uuid.git", - "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", - "reference": "fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28", - "shasum": "" - }, - "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", - "ext-json": "*", - "php": "^8.0", - "ramsey/collection": "^1.2 || ^2.0" - }, - "replace": { - "rhumsaa/uuid": "self.version" - }, - "require-dev": { - "captainhook/captainhook": "^5.25", - "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^1.0", - "ergebnis/composer-normalize": "^2.47", - "mockery/mockery": "^1.6", - "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.6", - "php-mock/php-mock-mockery": "^1.5", - "php-parallel-lint/php-parallel-lint": "^1.4.0", - "phpbench/phpbench": "^1.2.14", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-mockery": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^9.6", - "slevomat/coding-standard": "^8.18", - "squizlabs/php_codesniffer": "^3.13" - }, - "suggest": { - "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", - "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", - "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." - }, - "type": "library", - "extra": { - "captainhook": { - "force-install": true - } - }, - "autoload": { - "files": [ - "src/functions.php" - ], - "psr-4": { - "Ramsey\\Uuid\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", - "keywords": [ - "guid", - "identifier", - "uuid" - ], - "support": { - "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.8.1" - }, - "time": "2025-06-01T06:28:46+00:00" - }, - { - "name": "symfony/console", - "version": "v6.4.22", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", - "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3", - "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.22" - }, - "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": "2025-05-07T07:05:04+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "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.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-22T09:11:45+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0|^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/v6.4.17" - }, - "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-12-29T13:51:37+00:00" - }, - { - "name": "symfony/mailer", - "version": "v6.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/mailer.git", - "reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/ada2809ccd4ec27aba9fc344e3efdaec624c6438", - "reference": "ada2809ccd4ec27aba9fc344e3efdaec624c6438", - "shasum": "" - }, - "require": { - "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", - "psr/event-dispatcher": "^1", - "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/mime": "^6.2|^7.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/messenger": "^6.2|^7.0", - "symfony/twig-bridge": "^6.2|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mailer\\": "" - }, - "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 sending emails", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/mailer/tree/v6.4.21" - }, - "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": "2025-04-26T23:47:35+00:00" - }, - { - "name": "symfony/mime", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/mime.git", - "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", - "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" - }, - "conflict": { - "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" - }, - "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1|^4", - "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Mime\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Allows manipulating MIME messages", - "homepage": "https://symfony.com", - "keywords": [ - "mime", - "mime-type" - ], - "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-02-19T08:51:26+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "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.32.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-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "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.32.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-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-intl-idn", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.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-09-10T14:38:51+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "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.32.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-09-09T11:45:10+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", - "shasum": "" - }, - "require": { - "ext-iconv": "*", - "php": ">=7.2" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "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.32.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-12-23T08:48:59+00:00" - }, - { - "name": "symfony/process", - "version": "v6.4.20", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e2a61c16af36c9a07e5c9906498b73e091949a20", - "reference": "e2a61c16af36c9a07e5c9906498b73e091949a20", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.4.20" - }, - "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": "2025-03-10T17:11:00+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "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.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-25T09:37:31+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/service-contracts": "^2.5|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-02-24T10:49:57+00:00" - }, - { - "name": "symfony/string", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", - "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/emoji": "^7.1", - "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.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-20T20:19:01+00:00" - }, - { - "name": "symfony/var-exporter", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/var-exporter.git", - "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c9a1168891b5aaadfd6332ef44393330b3498c4c", - "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "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.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-05-15T09:04:05+00:00" - }, - { - "name": "symfony/yaml", - "version": "v6.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f01987f45676778b474468aa266fe2eda1f2bc7e", - "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0|^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/v6.4.21" - }, - "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": "2025-04-04T09:48:44+00:00" - }, - { - "name": "webimpress/safe-writer", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/webimpress/safe-writer.git", - "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", - "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5.4", - "vimeo/psalm": "^4.7", - "webimpress/coding-standard": "^1.2.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev", - "dev-develop": "2.3.x-dev", - "dev-release-1.0": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Webimpress\\SafeWriter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "description": "Tool to write files safely, to avoid race conditions", - "keywords": [ - "concurrent write", - "file writer", - "race condition", - "safe writer", - "webimpress" - ], - "support": { - "issues": "https://github.com/webimpress/safe-writer/issues", - "source": "https://github.com/webimpress/safe-writer/tree/2.2.0" - }, - "funding": [ - { - "url": "https://github.com/michalbundyra", - "type": "github" - } - ], - "time": "2021-04-19T16:34:45+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "zircote/swagger-php", - "version": "4.11.1", - "source": { - "type": "git", - "url": "https://github.com/zircote/swagger-php.git", - "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/7df10e8ec47db07c031db317a25bef962b4e5de1", - "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.2", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "symfony/deprecation-contracts": "^2 || ^3", - "symfony/finder": ">=2.2", - "symfony/yaml": ">=3.3" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.7 || ^2.0", - "friendsofphp/php-cs-fixer": "^2.17 || 3.62.0", - "phpstan/phpstan": "^1.6", - "phpunit/phpunit": ">=8", - "vimeo/psalm": "^4.23" - }, - "suggest": { - "doctrine/annotations": "^1.7 || ^2.0" - }, - "bin": [ - "bin/openapi" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "OpenApi\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Robert Allen", - "email": "zircote@gmail.com" - }, - { - "name": "Bob Fanger", - "email": "bfanger@gmail.com", - "homepage": "https://bfanger.nl" - }, - { - "name": "Martin Rademacher", - "email": "mano@radebatz.net", - "homepage": "https://radebatz.net" - } - ], - "description": "swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations", - "homepage": "https://github.com/zircote/swagger-php/", - "keywords": [ - "api", - "json", - "rest", - "service discovery" - ], - "support": { - "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/4.11.1" - }, - "time": "2024-10-15T19:20:02+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": "filp/whoops", - "version": "2.18.3", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "59a123a3d459c5a23055802237cb317f609867e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", - "reference": "59a123a3d459c5a23055802237cb317f609867e5", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.3" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2025-06-16T00:02:10+00:00" - }, - { - "name": "helmich/phpunit-json-assert", - "version": "v3.5.3", - "source": { - "type": "git", - "url": "https://github.com/martin-helmich/phpunit-json-assert.git", - "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", - "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", - "shasum": "" - }, - "require": { - "justinrainbow/json-schema": "^5.0", - "php": "^8.1", - "softcreatr/jsonpath": "^0.8" - }, - "conflict": { - "phpunit/phpunit": "<8.0 || >= 13.0" - }, - "require-dev": { - "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.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.3" - }, - "funding": [ - { - "url": "https://donate.helmich.me", - "type": "custom" - }, - { - "url": "https://github.com/martin-helmich", - "type": "github" - } - ], - "time": "2025-05-19T22:04:17+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", - "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "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", - "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/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" - }, - "time": "2024-07-06T21:00:26+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.13.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", - "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", - "phpspec/prophecy": "^1.10", - "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.13.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2025-04-29T12:36:36+00:00" - }, - { - "name": "n98/junit-xml", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/cmuench/junit-xml.git", - "reference": "0017dd92ac8cb619f02e32f4cffd768cfe327c73" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cmuench/junit-xml/zipball/0017dd92ac8cb619f02e32f4cffd768cfe327c73", - "reference": "0017dd92ac8cb619f02e32f4cffd768cfe327c73", - "shasum": "" - }, - "require-dev": { - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "N98\\JUnitXml\\": "src/N98/JUnitXml" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Münch", - "email": "c.muench@netz98.de" - } - ], - "description": "JUnit XML Document generation library", - "support": { - "issues": "https://github.com/cmuench/junit-xml/issues", - "source": "https://github.com/cmuench/junit-xml/tree/1.1.0" - }, - "time": "2020-12-25T09:08:58+00:00" - }, - { - "name": "overtrue/phplint", - "version": "5.5.0", - "source": { - "type": "git", - "url": "https://github.com/overtrue/phplint.git", - "reference": "6698f0c68abc1e7586fb3e1c8dd7246604fd06e6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/overtrue/phplint/zipball/6698f0c68abc1e7586fb3e1c8dd7246604fd06e6", - "reference": "6698f0c68abc1e7586fb3e1c8dd7246604fd06e6", - "shasum": "" - }, - "require": { - "ext-json": "*", - "n98/junit-xml": "1.1.0", - "php": "^8.1", - "symfony/console": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/process": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4", - "brainmaestro/composer-git-hooks": "^2.8.5", - "friendsofphp/php-cs-fixer": "^3.4.0", - "jetbrains/phpstorm-stubs": "^2021.3 || ^2022.0", - "php-parallel-lint/php-console-highlighter": "^1.0" - }, - "bin": [ - "bin/phplint" - ], - "type": "library", - "extra": { - "hooks": { - "pre-commit": [ - "composer fix-style" - ] - } - }, - "autoload": { - "psr-4": { - "Overtrue\\PHPLint\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "overtrue", - "email": "anzhengchao@gmail.com" - } - ], - "description": "`phplint` is a tool that can speed up linting of php files by running several lint processes at once.", - "keywords": [ - "check", - "lint", - "phplint", - "syntax" - ], - "support": { - "issues": "https://github.com/overtrue/phplint/issues", - "source": "https://github.com/overtrue/phplint/tree/5.5.0" - }, - "funding": [ - { - "url": "https://github.com/overtrue", - "type": "github" - } - ], - "time": "2022-12-28T13:45:44+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "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.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+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": "phpstan/phpdoc-parser", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^5.3.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6", - "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/2.1.0" - }, - "time": "2025-02-19T13:28:12+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.12.27", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162", - "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" - } - ], - "time": "2025-05-21T20:51:45+00:00" - }, - { - "name": "phpstan/phpstan-deprecation-rules", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82", - "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.12" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", - "support": { - "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1" - }, - "time": "2024-09-11T15:52:35+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "10.1.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", - "reference": "7e308268858ed6baedc8704a304727d20bc07c77", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=8.1", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-text-template": "^3.0.1", - "sebastian/code-unit-reverse-lookup": "^3.0.0", - "sebastian/complexity": "^3.2.0", - "sebastian/environment": "^6.1.0", - "sebastian/lines-of-code": "^2.0.2", - "sebastian/version": "^4.0.1", - "theseer/tokenizer": "^1.2.3" - }, - "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.x-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.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-08-22T04:31:57+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.46", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "8080be387a5be380dda48c6f41cee4a13aadab3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/8080be387a5be380dda48c6f41cee4a13aadab3d", - "reference": "8080be387a5be380dda48c6f41cee4a13aadab3d", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.1", - "phar-io/manifest": "^2.0.4", - "phar-io/version": "^3.2.1", - "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.16", - "phpunit/php-file-iterator": "^4.1.0", - "phpunit/php-invoker": "^4.0.0", - "phpunit/php-text-template": "^3.0.1", - "phpunit/php-timer": "^6.0.0", - "sebastian/cli-parser": "^2.0.1", - "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", - "sebastian/diff": "^5.1.1", - "sebastian/environment": "^6.1.0", - "sebastian/exporter": "^5.1.2", - "sebastian/global-state": "^6.0.2", - "sebastian/object-enumerator": "^5.0.0", - "sebastian/recursion-context": "^5.0.0", - "sebastian/type": "^4.0.0", - "sebastian/version": "^4.0.1" - }, - "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.46" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2025-05-02T06:46:24+00:00" - }, - { - "name": "roave/security-advisories", - "version": "dev-latest", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "0a95bcf39c5b55601cb073bc307d567a16e31dc0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0a95bcf39c5b55601cb073bc307d567a16e31dc0", - "reference": "0a95bcf39c5b55601cb073bc307d567a16e31dc0", - "shasum": "" - }, - "conflict": { - "3f/pygmentize": "<1.2", - "adaptcms/adaptcms": "<=1.3", - "admidio/admidio": "<4.3.12", - "adodb/adodb-php": "<=5.22.8", - "aheinze/cockpit": "<2.2", - "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", - "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", - "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", - "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", - "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", - "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", - "airesvsg/acf-to-rest-api": "<=3.1", - "akaunting/akaunting": "<2.1.13", - "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<=1.5.1", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amazing/media2click": ">=1,<1.3.3", - "ameos/ameos_tarteaucitron": "<1.2.23", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<=1.7.2|>=2,<=2.1", - "amphp/http-client": ">=4,<4.4", - "anchorcms/anchor-cms": "<=0.12.7", - "andreapollastri/cipi": "<=3.1.15", - "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", - "aoe/restler": "<1.7.1", - "apache-solr-for-typo3/solr": "<2.8.3", - "apereo/phpcas": "<1.6", - "api-platform/core": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", - "api-platform/graphql": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", - "appwrite/server-ce": "<=1.2.1", - "arc/web": "<3", - "area17/twill": "<1.2.5|>=2,<2.5.3", - "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": "<9.9.99", - "athlon1600/php-proxy": "<=5.1", - "athlon1600/php-proxy-app": "<=3", - "athlon1600/youtube-downloader": "<=4", - "austintoddj/canvas": "<=3.4.2", - "auth0/auth0-php": ">=8.0.0.0-beta1,<8.14", - "auth0/login": "<7.17", - "auth0/symfony": "<5.4", - "auth0/wordpress": "<5.3", - "automad/automad": "<2.0.0.0-alpha5", - "automattic/jetpack": "<9.8", - "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": "<3.288.1", - "azuracast/azuracast": "<0.18.3", - "b13/seo_basics": "<0.8.2", - "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", - "backpack/crud": "<3.4.9", - "backpack/filemanager": "<2.0.2|>=3,<3.0.9", - "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", - "badaso/core": "<2.7", - "bagisto/bagisto": "<2.1", - "barrelstrength/sprout-base-email": "<1.2.7", - "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.8", - "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<=5.1.1", - "bassjobsen/bootstrap-3-typeahead": ">4.0.2", - "bbpress/bbpress": "<2.6.5", - "bcit-ci/codeigniter": "<3.1.3", - "bcosca/fatfree": "<3.7.2", - "bedita/bedita": "<4", - "bednee/cooluri": "<1.0.30", - "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<=3.1.4", - "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", - "blueimp/jquery-file-upload": "==6.4.4", - "bmarshall511/wordpress_zero_spam": "<5.2.13", - "bolt/bolt": "<3.7.2", - "bolt/core": "<=4.2", - "born05/craft-twofactorauthentication": "<3.3.4", - "bottelet/flarepoint": "<2.2.1", - "bref/bref": "<2.1.17", - "brightlocal/phpwhois": "<=4.2.5", - "brotkrueml/codehighlight": "<2.7", - "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", - "brotkrueml/typo3-matomo-integration": "<1.3.2", - "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "bvbmedia/multishop": "<2.0.39", - "bytefury/crater": "<6.0.2", - "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cardgate/magento2": "<2.0.33", - "cardgate/woocommerce": "<=3.1.15", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "catfan/medoo": "<1.7.5", - "causal/oidc": "<4", - "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.15", - "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "chriskacerguis/codeigniter-restserver": "<=2.7.1", - "chrome-php/chrome": "<1.14", - "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.25", - "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", - "co-stack/fal_sftp": "<0.2.6", - "cockpit-hq/cockpit": "<2.7|==2.7", - "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<4.5.8", - "codeigniter4/shield": "<1.0.0.0-beta8", - "codiad/codiad": "<=2.8.4", - "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9", - "commerceteam/commerce": ">=0.9.6,<0.9.9", - "components/jquery": ">=1.0.3,<3.5", - "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", - "concrete5/concrete5": "<9.4.0.0-RC2-dev", - "concrete5/core": "<8.5.8|>=9,<9.1", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", - "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", - "contao/core": "<3.5.39", - "contao/core-bundle": "<4.13.54|>=5,<5.3.30|>=5.4,<5.5.6", - "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", - "contao/managed-edition": "<=1.5", - "corveda/phpsandbox": "<1.3.5", - "cosenary/instagram": "<=2.3", - "couleurcitron/tarteaucitron-wp": "<0.3", - "craftcms/cms": "<4.15.3|>=5,<5.7.5", - "croogo/croogo": "<4", - "cuyz/valinor": "<0.12", - "czim/file-handling": "<1.5|>=2,<2.3", - "czproject/git-php": "<4.0.3", - "damienharper/auditor-bundle": "<5.2.6", - "dapphp/securimage": "<3.6.6", - "darylldoyle/safe-svg": "<1.9.10", - "datadog/dd-trace": ">=0.30,<0.30.2", - "datatables/datatables": "<1.10.10", - "david-garcia/phpwhois": "<=4.3.1", - "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta", - "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", - "desperado/xml-bundle": "<=0.1.7", - "dev-lancer/minecraft-motd-parser": "<=1.0.5", - "devgroup/dotplant": "<2020.09.14-dev", - "digimix/wp-svg-upload": "<=1", - "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", - "dl/yag": "<3.0.1", - "dmk/webkitpdf": "<1.1.4", - "dnadesign/silverstripe-elemental": "<5.3.12", - "doctrine/annotations": "<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": "<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<0.7.2", - "doctrine/mongodb-odm": "<1.0.2", - "doctrine/mongodb-odm-bundle": "<3.0.1", - "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<19.0.2|==21.0.0.0-beta", - "dompdf/dompdf": "<2.0.4", - "doublethreedigital/guest-entries": "<3.1.2", - "drupal/admin_audit_trail": "<1.0.5", - "drupal/ai": "<1.0.5", - "drupal/alogin": "<2.0.6", - "drupal/cache_utility": "<1.2.1", - "drupal/commerce_alphabank_redirect": "<1.0.3", - "drupal/commerce_eurobank_redirect": "<2.1.1", - "drupal/config_split": "<1.10|>=2,<2.0.2", - "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", - "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", - "drupal/formatter_suite": "<2.1", - "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", - "drupal/google_tag": "<1.8|>=2,<2.0.8", - "drupal/ignition": "<1.0.4", - "drupal/lightgallery": "<1.6", - "drupal/link_field_display_mode_formatter": "<1.6", - "drupal/matomo": "<1.24", - "drupal/oauth2_client": "<4.1.3", - "drupal/oauth2_server": "<2.1", - "drupal/obfuscate": "<2.0.1", - "drupal/quick_node_block": "<2", - "drupal/rapidoc_elements_field_formatter": "<1.0.1", - "drupal/spamspan": "<3.2.1", - "drupal/tfa": "<1.10", - "duncanmcclean/guest-entries": "<3.1.2", - "dweeves/magmi": "<=0.7.24", - "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", - "ecodev/newsletter": "<=4", - "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<23.1.20240624", - "elefant/cms": "<2.0.7", - "elgg/elgg": "<3.3.24|>=4,<4.0.5", - "elijaa/phpmemcacheadmin": "<=1.3", - "elmsln/haxcms": "<11", - "encore/laravel-admin": "<=1.8.19", - "endroid/qr-code-bundle": "<3.4.2", - "enhavo/enhavo-app": "<=0.13.1", - "enshrined/svg-sanitize": "<0.15", - "erusev/parsedown": "<1.7.2", - "ether/logs": "<3.0.4", - "evolutioncms/evolution": "<=3.2.3", - "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "<2.2.3|==3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", - "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", - "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.38|>=3.3,<3.3.39", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", - "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", - "ezsystems/ezplatform-http-cache": "<2.3.16", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", - "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40", - "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", - "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", - "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<=4.2", - "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.08", - "fastly/magento2": "<1.2.26", - "feehi/cms": "<=2.1.1", - "feehi/feehicms": "<=2.1.1", - "fenom/fenom": "<=2.12.1", - "filament/actions": ">=3.2,<3.2.123", - "filament/infolists": ">=3,<3.2.115", - "filament/tables": ">=3,<3.2.115", - "filegator/filegator": "<7.8", - "filp/whoops": "<2.1.13", - "fineuploader/php-traditional-server": "<=1.2.2", - "firebase/php-jwt": "<6", - "fisharebest/webtrees": "<=2.1.18", - "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", - "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.10", - "flarum/flarum": "<0.1.0.0-beta8", - "flarum/framework": "<1.8.10", - "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", - "flarum/tags": "<=0.1.0.0-beta13", - "floriangaerber/magnesium": "<0.3.1", - "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", - "fof/upload": "<1.2.3", - "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", - "fooman/tcpdf": "<6.2.22", - "forkcms/forkcms": "<5.11.1", - "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<=11.5.1", - "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", - "friendsofsymfony/oauth2-php": "<1.3", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1,<1.3.5", - "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", - "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", - "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", - "froala/wysiwyg-editor": "<=4.3", - "froxlor/froxlor": "<=2.2.5", - "frozennode/administrator": "<=5.0.12", - "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=5.0.2", - "gaoming13/wechat-php-sdk": "<=1.10.2", - "genix/cms": "<=1.1.11", - "georgringer/news": "<1.3.3", - "geshi/geshi": "<1.0.8.11-dev", - "getformwork/formwork": "<1.13.1|>=2.0.0.0-beta1,<2.0.0.0-beta4", - "getgrav/grav": "<1.7.46", - "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", - "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", - "getkirby/panel": "<2.5.14", - "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.15.4", - "gleez/cms": "<=1.3|==2", - "globalpayments/php-sdk": "<2", - "goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11", - "gogentooss/samlbase": "<1.2.7", - "google/protobuf": "<3.15", - "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", - "gree/jose": "<2.2.1", - "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.17", - "gugoan/economizzer": "<=0.9.0.0-beta1", - "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", - "guzzlehttp/oauth-subscriber": "<0.8.1", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", - "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", - "handcraftedinthealps/goodby-csv": "<1.4.3", - "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "<=2.31", - "hhxsv5/laravel-s": "<3.7.36", - "hillelcoren/invoice-ninja": "<5.3.35", - "himiklab/yii2-jqgrid-widget": "<1.0.8", - "hjue/justwriting": "<=1", - "hov/jobfair": "<1.0.13|>=2,<2.0.2", - "httpsoft/http-message": "<1.0.12", - "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.21", - "ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", - "ibexa/fieldtype-richtext": ">=4.6,<4.6.21", - "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", - "ibexa/http-cache": ">=4.6,<4.6.14", - "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", - "ibexa/solr": ">=4.5,<4.5.4", - "ibexa/user": ">=4,<4.4.3", - "icecoder/icecoder": "<=8.1", - "idno/known": "<=1.3.1", - "ilicmiljan/secure-props": ">=1.2,<1.2.2", - "illuminate/auth": "<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", - "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "imdbphp/imdbphp": "<=5.1.1", - "impresscms/impresscms": "<=1.4.5", - "impresspages/impresspages": "<1.0.13", - "in2code/femanager": "<5.5.5|>=6,<6.4.1|>=7,<7.4.2|>=8,<8.2.2", - "in2code/ipandlanguageredirect": "<5.1.2", - "in2code/lux": "<17.6.1|>=18,<24.0.2", - "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.4.1", - "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<4.2.2", - "inter-mediator/inter-mediator": "==5.5", - "ipl/web": "<0.10.1", - "islandora/crayfish": "<4.1", - "islandora/islandora": ">=2,<2.4.1", - "ivankristianto/phpwhois": "<=4.3", - "jackalope/jackalope-doctrine-dbal": "<1.7.4", - "jambagecom/div2007": "<0.10.2", - "james-heinrich/getid3": "<1.9.21", - "james-heinrich/phpthumb": "<1.7.12", - "jasig/phpcas": "<1.3.3", - "jbartels/wec-map": "<3.0.3", - "jcbrand/converse.js": "<3.3.3", - "joelbutcher/socialstream": "<5.6|>=6,<6.2", - "johnbillion/wp-crontrol": "<1.16.2", - "joomla/application": "<1.0.13", - "joomla/archive": "<1.1.12|>=2,<2.0.1", - "joomla/database": ">=1,<2.2|>=3,<3.4", - "joomla/filesystem": "<1.6.2|>=2,<2.0.1", - "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", - "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": "<3.9.12|>=4,<4.4.13|>=5,<5.2.6", - "joomla/joomla-platform": "<1.5.4", - "joomla/session": "<1.3.1", - "joyqi/hyper-down": "<=2.4.27", - "jsdecena/laracom": "<2.0.9", - "jsmitty12/phpwhois": "<5.1", - "juzaweb/cms": "<=3.4", - "jweiland/events2": "<8.3.8|>=9,<9.0.6", - "jweiland/kk-downloader": "<1.2.2", - "kazist/phpwhois": "<=4.2.6", - "kelvinmo/simplexrd": "<3.1.1", - "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<=2.20.1", - "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", - "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<=1.4.2", - "kohana/core": "<3.3.3", - "koillection/koillection": "<1.6.12", - "krayin/laravel-crm": "<=1.3", - "kreait/firebase-php": ">=3.2,<3.8.1", - "kumbiaphp/kumbiapp": "<=1.1.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", - "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", - "laminas/laminas-http": "<2.14.2", - "lara-zeus/artemis": ">=1,<=1.0.6", - "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", - "laravel/fortify": "<1.11.1", - "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1", - "laravel/laravel": ">=5.4,<5.4.22", - "laravel/pulse": "<1.3.1", - "laravel/reverb": "<1.4", - "laravel/socialite": ">=1,<2.0.10", - "latte/latte": "<2.10.8", - "lavalite/cms": "<=9|==10.1", - "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", - "league/commonmark": "<2.7", - "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", - "leantime/leantime": "<3.3", - "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "libreform/libreform": ">=2,<=2.0.8", - "librenms/librenms": "<2017.08.18", - "liftkit/database": "<2.13.2", - "lightsaml/lightsaml": "<1.3.5", - "limesurvey/limesurvey": "<6.5.12", - "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.5.2", - "livewire/volt": "<1.7", - "lms/routes": "<2.1.1", - "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", - "lomkit/laravel-rest-api": "<2.13", - "luracast/restler": "<3.1", - "luyadev/yii-helpers": "<1.2.1", - "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", - "maestroerror/php-heic-to-jpg": "<1.0.5", - "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch12|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch10|>=2.4.7.0-beta1,<2.4.7.0-patch5|>=2.4.8.0-beta1,<2.4.8.0-beta2", - "magento/core": "<=1.9.4.5", - "magento/magento1ce": "<1.9.4.3-dev", - "magento/magento1ee": ">=1,<1.14.4.3-dev", - "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", - "magento/project-community-edition": "<=2.0.2", - "magneto/core": "<1.9.4.4-dev", - "maikuolan/phpmussel": ">=1,<1.6", - "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<=2.26.3", - "marcwillmann/turn": "<0.3.3", - "matomo/matomo": "<1.11", - "matyhtf/framework": "<3.0.6", - "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", - "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", - "maximebf/debugbar": "<1.19", - "mdanter/ecc": "<2", - "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", - "mediawiki/cargo": "<3.6.1", - "mediawiki/core": "<1.39.5|==1.40", - "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2", - "mediawiki/matomo": "<2.4.3", - "mediawiki/semantic-media-wiki": "<4.0.2", - "mehrwert/phpmyadmin": "<3.2", - "melisplatform/melis-asset-manager": "<5.0.1", - "melisplatform/melis-cms": "<5.0.1", - "melisplatform/melis-front": "<5.0.1", - "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", - "mgallegos/laravel-jqgrid": "<=1.3", - "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", - "microsoft/microsoft-graph-beta": "<2.0.1", - "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.16", - "mikehaertl/php-shellcommand": "<1.6.1", - "miniorange/miniorange-saml": "<1.4.3", - "mittwald/typo3_forum": "<1.2.1", - "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<=3.1", - "mojo42/jirafeau": "<4.4", - "mongodb/mongodb": ">=1,<1.9.2", - "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.12|>=4.4,<4.4.8|>=4.5.0.0-beta,<4.5.4", - "mos/cimage": "<0.7.19", - "movim/moxl": ">=0.8,<=0.10", - "movingbytes/social-network": "<=1.2.1", - "mpdf/mpdf": "<=7.1.7", - "munkireport/comment": "<4.1", - "munkireport/managedinstalls": "<2.6", - "munkireport/munki_facts": "<1.5", - "munkireport/munkireport": ">=2.5.3,<5.6.3", - "munkireport/reportdata": "<3.5", - "munkireport/softwareupdate": "<1.6", - "mustache/mustache": ">=2,<2.14.1", - "mwdelaney/wp-enable-svg": "<=0.2", - "namshi/jose": "<2.2", - "nasirkhan/laravel-starter": "<11.11", - "nategood/httpful": "<1", - "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.04", - "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": "<5.4.5", - "nesbot/carbon": "<2.72.6|>=3,<3.8.4", - "netcarver/textile": "<=4.1.2", - "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", - "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", - "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.1.3.1-dev", - "nitsan/ns-backup": "<13.0.1", - "nonfiction/nterchange": "<4.1.1", - "notrinos/notrinos-erp": "<=0.7", - "noumo/easyii": "<=0.9", - "novaksolutions/infusionsoft-php-sdk": "<1", - "nukeviet/nukeviet": "<4.5.02", - "nyholm/psr7": "<1.6.1", - "nystudio107/craft-seomatic": "<3.4.12", - "nzedb/nzedb": "<0.8", - "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", - "october/backend": "<1.1.2", - "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<3.7.5", - "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<3.7.5", - "oliverklee/phpunit": "<3.5.15", - "omeka/omeka-s": "<4.0.3", - "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", - "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": ">=0", - "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.12.3", - "opensolutions/vimbadmin": "<=3.0.15", - "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", - "orchid/platform": ">=8,<14.43", - "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", - "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", - "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", - "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", - "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", - "oxid-esales/oxideshop-ce": "<=7.0.5", - "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", - "packbackbooks/lti-1-3-php-library": "<5", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": "<3", - "pagekit/pagekit": "<=1.0.18", - "paragonie/ecc": "<2.0.1", - "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<4.6.2", - "paypal/adaptivepayments-sdk-php": "<=3.9.2", - "paypal/invoice-sdk-php": "<=3.9", - "paypal/merchant-sdk-php": "<3.12", - "paypal/permissions-sdk-php": "<=3.9.1", - "pear/archive_tar": "<1.4.14", - "pear/auth": "<1.2.4", - "pear/crypt_gpg": "<1.6.7", - "pear/http_request2": "<2.7", - "pear/pear": "<=1.10.1", - "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", - "personnummer/personnummer": "<3.0.2", - "phanan/koel": "<5.1.4", - "phenx/php-svg-lib": "<0.5.2", - "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", - "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.3.11", - "phpems/phpems": ">=6,<=6.1.3", - "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", - "phpmailer/phpmailer": "<6.5", - "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.2.2", - "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", - "phpoffice/common": "<0.2.9", - "phpoffice/math": "<=0.2", - "phpoffice/phpexcel": "<=1.8.2", - "phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9", - "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", - "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "phpxmlrpc/phpxmlrpc": "<4.9.2", - "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.7.6", - "pimcore/customer-management-framework-bundle": "<4.2.1", - "pimcore/data-hub": "<1.2.4", - "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", - "pimcore/demo": "<10.3", - "pimcore/ecommerce-framework-bundle": "<1.0.10", - "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.5.4", - "piwik/piwik": "<1.11", - "pixelfed/pixelfed": "<0.12.5", - "plotly/plotly.js": "<2.25.2", - "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<5.25.2", - "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", - "pressbooks/pressbooks": "<5.18", - "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/blockreassurance": "<=5.1.3", - "prestashop/blockwishlist": ">=2,<2.1.1", - "prestashop/contactform": ">=1.0.1,<4.3", - "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.6", - "prestashop/productcomments": "<5.0.2", - "prestashop/ps_contactinfo": "<=3.3.2", - "prestashop/ps_emailsubscription": "<2.6.1", - "prestashop/ps_facetedsearch": "<3.4.1", - "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", - "processwire/processwire": "<=3.0.229", - "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.11.8", - "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", - "ptrofimov/beanstalk_console": "<1.7.14", - "pubnub/pubnub": "<6.1", - "punktde/pt_extbase": "<1.5.1", - "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6.0-beta", - "pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3", - "pyrocms/pyrocms": "<=3.9.1", - "qcubed/qcubed": "<=3.1.1", - "quickapps/cms": "<=2.0.0.0-beta2", - "rainlab/blog-plugin": "<1.4.1", - "rainlab/debugbar-plugin": "<3.1", - "rainlab/user-plugin": "<=1.4.5", - "rankmath/seo-by-rank-math": "<=1.0.95", - "rap2hpoutre/laravel-log-viewer": "<0.13", - "react/http": ">=0.7,<1.9", - "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<5.18.3", - "remdex/livehelperchat": "<4.29", - "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", - "reportico-web/reportico": "<=8.1", - "rhukster/dom-sanitizer": "<1.0.7", - "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": ">=1,<3.0.4", - "roots/soil": "<4.1", - "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", - "rudloff/alltube": "<3.0.3", - "rudloff/rtmpdump-bin": "<=2.3.1", - "s-cart/core": "<6.9", - "s-cart/s-cart": "<6.9", - "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", - "samwilson/unlinked-wikibase": "<1.42", - "scheb/two-factor-bundle": "<3.26|>=4,<4.11", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<1.2.1", - "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", - "shopware/platform": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", - "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", - "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", - "shopxo/shopxo": "<=6.4", - "showdoc/showdoc": "<2.10.4", - "shuchkin/simplexlsx": ">=1.0.12,<1.1.13", - "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.13.19|>=2,<2.1.8", - "silverstripe/assets": ">=1,<1.11.1", - "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<3.1.1", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<5.3.23", - "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", - "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", - "silverstripe/recipe-cms": ">=4.5,<4.5.3", - "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/reports": "<5.2.3", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", - "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", - "silverstripe/subsites": ">=2,<2.6.1", - "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3|>=5,<5.4.2", - "silverstripe/versioned-admin": ">=1,<1.11.1", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19", - "simplesamlphp/saml2-legacy": "<=4.16.15", - "simplesamlphp/simplesamlphp": "<1.18.6", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "simplesamlphp/simplesamlphp-module-openid": "<1", - "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", - "simplesamlphp/xml-common": "<1.20", - "simplesamlphp/xml-security": "==1.6.11", - "simplito/elliptic-php": "<1.0.6", - "sitegeist/fluid-components": "<3.5", - "sjbr/sr-feuser-register": "<2.6.2|>=5.1,<12.5", - "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", - "sjbr/static-info-tables": "<2.3.1", - "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", - "slub/slub-events": "<3.0.3", - "smarty/smarty": "<4.5.3|>=5,<5.1.1", - "snipe/snipe-it": "<8.1", - "socalnick/scn-social-auth": "<1.15.2", - "socialiteproviders/steam": "<1.1", - "spatie/browsershot": "<5.0.5", - "spatie/image-optimizer": "<1.7.3", - "spencer14420/sp-php-email-handler": "<1", - "spipu/html2pdf": "<5.2.8", - "spoon/library": "<1.4.1", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<24.05.1", - "starcitizentools/citizen-skin": ">=2.4.2,<3.3.1", - "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2", - "statamic/cms": "<=5.16", - "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<=2.1.64", - "studiomitte/friendlycaptcha": "<0.1.4", - "subhh/libconnect": "<7.0.8|>=8,<8.1", - "sukohi/surpass": "<1", - "sulu/form-bundle": ">=2,<2.5.3", - "sulu/sulu": "<1.6.44|>=2,<2.5.25|>=2.6,<2.6.9|>=3.0.0.0-alpha1,<3.0.0.0-alpha3", - "sumocoders/framework-user-bundle": "<1.4", - "superbig/craft-audit": "<3.0.2", - "svewap/a21glossary": "<=0.4.10", - "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": "<6.2.5", - "swiftyedit/swiftyedit": "<1.2", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/grid-bundle": "<1.10.1", - "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2", - "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", - "symbiote/silverstripe-multivaluefield": ">=3,<3.1", - "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", - "symbiote/silverstripe-seed": "<6.0.3", - "symbiote/silverstripe-versionedfiles": "<=2.0.3", - "symfont/process": ">=0", - "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", - "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", - "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", - "symfony/mime": ">=4.3,<4.3.8", - "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", - "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.47|>=6,<6.4.15|>=7,<7.1.8", - "symfony/translation": ">=2,<2.0.17", - "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/ux-autocomplete": "<2.11.2", - "symfony/ux-live-component": "<2.25.1", - "symfony/ux-twig-component": "<2.25.1", - "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", - "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", - "symphonycms/symphony-2": "<2.6.4", - "t3/dce": "<0.11.5|>=2.2,<2.6.2", - "t3g/svg-sanitizer": "<1.0.3", - "t3s/content-consent": "<1.0.3|>=2,<2.0.2", - "tastyigniter/tastyigniter": "<4", - "tcg/voyager": "<=1.8", - "tecnickcom/tc-lib-pdf-font": "<2.6.4", - "tecnickcom/tcpdf": "<6.8", - "terminal42/contao-tablelookupwizard": "<3.3.5", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<6.0.8", - "thorsten/phpmyfaq": "<=4.0.1", - "tikiwiki/tiki-manager": "<=17.1", - "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", - "tinymce/tinymce": "<7.2", - "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": "<9.9.99", - "tltneon/lgsl": "<7", - "tobiasbg/tablepress": "<=2.0.0.0-RC1", - "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", - "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", - "torrentpier/torrentpier": "<=2.4.3", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<=9.7.61188", - "truckersmp/phpwhois": "<=4.3.1", - "ttskch/pagination-service-provider": "<1", - "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", - "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", - "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<=12.4.30|>=13,<=13.4.11", - "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", - "typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", - "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-felogin": ">=4.2,<4.2.3", - "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", - "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2", - "typo3/cms-lowlevel": ">=11,<=11.5.41", - "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", - "typo3/cms-scheduler": ">=11,<=11.5.41", - "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", - "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", - "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", - "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", - "ua-parser/uap-php": "<3.8", - "uasoft-indonesia/badaso": "<=2.9.7", - "unisharp/laravel-filemanager": "<2.9.1", - "unopim/unopim": "<0.1.5", - "userfrosting/userfrosting": ">=0.3.1,<4.6.3", - "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", - "uvdesk/community-skeleton": "<=1.1.1", - "uvdesk/core-framework": "<=1.1.1", - "vanilla/safecurl": "<0.9.2", - "verbb/comments": "<1.5.5", - "verbb/formie": "<=2.1.43", - "verbb/image-resizer": "<2.0.9", - "verbb/knock-knock": "<1.2.8", - "verot/class.upload.php": "<=2.1.6", - "vertexvaar/falsftp": "<0.2.6", - "villagedefrance/opencart-overclocked": "<=1.11.1", - "vova07/yii2-fileapi-widget": "<0.1.9", - "vrana/adminer": "<4.8.1", - "vufind/vufind": ">=2,<9.1.1", - "waldhacker/hcaptcha": "<2.1.2", - "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<2.6.11", - "wanglelecc/laracms": "<=1.0.3", - "wapplersystems/a21glossary": "<=0.4.10", - "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", - "web-auth/webauthn-lib": ">=4.5,<4.9", - "web-feet/coastercms": "==5.5", - "web-tp3/wec_map": "<3.0.3", - "webbuilders-group/silverstripe-kapost-bridge": "<0.4", - "webcoast/deferred-image-processing": "<1.0.2", - "webklex/laravel-imap": "<5.3", - "webklex/php-imap": "<5.3", - "webpa/webpa": "<3.1.2", - "wikibase/wikibase": "<=1.39.3", - "wikimedia/parsoid": "<0.12.2", - "willdurand/js-translation-bundle": "<2.1.1", - "winter/wn-backend-module": "<1.2.4", - "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", - "winter/wn-dusk-plugin": "<2.1", - "winter/wn-system-module": "<1.2.4", - "wintercms/winter": "<=1.2.3", - "wireui/wireui": "<1.19.3|>=2,<2.1.3", - "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", - "wp-cli/wp-cli": ">=0.12,<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", - "wp-premium/gravityforms": "<2.4.21", - "wpanel/wpanel4-cms": "<=4.3.1", - "wpcloud/wp-stateless": "<3.2", - "wpglobus/wpglobus": "<=1.9.6", - "wwbn/avideo": "<14.3", - "xataface/xataface": "<3", - "xpressengine/xpressengine": "<3.0.15", - "yab/quarx": "<2.4.5", - "yeswiki/yeswiki": "<4.5.4", - "yetiforce/yetiforce-crm": "<6.5", - "yidashi/yii2cmf": "<=2", - "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.31", - "yiisoft/yii2": "<2.0.52", - "yiisoft/yii2-authclient": "<2.2.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<=2.0.45", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<=2.2.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.20", - "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", - "yoast-seo-for-typo3/yoast_seo": "<7.2.3", - "yourls/yourls": "<=1.8.2", - "yuan1994/tpadmin": "<=1.3.12", - "zencart/zencart": "<=1.5.7.0-beta", - "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", - "zendframework/zend-diactoros": "<1.8.4", - "zendframework/zend-feed": "<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": "<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<=3", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": "<2.0.2", - "zendframework/zendrest": "<2.0.2", - "zendframework/zendservice-amazon": "<2.0.3", - "zendframework/zendservice-api": "<1", - "zendframework/zendservice-audioscrobbler": "<2.0.2", - "zendframework/zendservice-nirvanix": "<2.0.2", - "zendframework/zendservice-slideshare": "<2.0.2", - "zendframework/zendservice-technorati": "<2.0.2", - "zendframework/zendservice-windowsazure": "<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zenstruck/collection": "<0.2.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<=6.1.53" - }, - "default-branch": true, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - }, - { - "name": "Ilya Tribusean", - "email": "slash3b@gmail.com", - "role": "maintainer" - } - ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "keywords": [ - "dev" - ], - "support": { - "issues": "https://github.com/Roave/SecurityAdvisories/issues", - "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", - "type": "tidelift" - } - ], - "time": "2025-06-13T22:05:09+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", - "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", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:12:49+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.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5" - }, - "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.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-10-18T14:56:07+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.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", - "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^6.4" - }, - "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.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:15:17+00:00" - }, - { - "name": "sebastian/environment", - "version": "6.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", - "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.1-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.1.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-23T08:47:14+00:00" - }, - { - "name": "sebastian/exporter", - "version": "5.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", - "reference": "955288482d97c19a372d3f31006ab3f37da47adf", - "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.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:17:12+00:00" - }, - { - "name": "sebastian/global-state", - "version": "6.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", - "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": "https://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.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:19:19+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": "slevomat/coding-standard", - "version": "8.19.1", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/458d665acd49009efebd7e0cb385d71ae9ac3220", - "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", - "php": "^7.4 || ^8.0", - "phpstan/phpdoc-parser": "^2.1.0", - "squizlabs/php_codesniffer": "^3.13.0" - }, - "require-dev": { - "phing/phing": "3.0.1", - "php-parallel-lint/php-parallel-lint": "1.4.0", - "phpstan/phpstan": "2.1.17", - "phpstan/phpstan-deprecation-rules": "2.0.3", - "phpstan/phpstan-phpunit": "2.0.6", - "phpstan/phpstan-strict-rules": "2.0.4", - "phpunit/phpunit": "9.6.8|10.5.45|11.4.4|11.5.21|12.1.3" - }, - "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.19.1" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2025-06-09T17:53:57+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.13.1", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", - "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" - }, - { - "url": "https://thanks.dev/u/gh/phpcsstandards", - "type": "thanks_dev" - } - ], - "time": "2025-06-12T15:04:34+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "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.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - }, - { - "name": "trinet/mezzio-test", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/trinet-at/mezzio-test.git", - "reference": "4e4cb96d39fa5653c43d56c447b9b552d0b8d08b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/trinet-at/mezzio-test/zipball/4e4cb96d39fa5653c43d56c447b9b552d0b8d08b", - "reference": "4e4cb96d39fa5653c43d56c447b9b552d0b8d08b", - "shasum": "" - }, - "require": { - "fig/http-message-util": "^1.1", - "laminas/laminas-config-aggregator": "^1.2", - "laminas/laminas-diactoros": "^2.2 || ^3.5", - "laminas/laminas-stratigility": "^3.2", - "mezzio/mezzio": "^3.2", - "mezzio/mezzio-router": "^3.1", - "php": "^8.2", - "psr/container": "^1.0 || ^2.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "require-dev": { - "bnf/phpstan-psr-container": "^1.1", - "eventjet/coding-standard": "^3.18", - "infection/infection": "^0.27.11", - "laminas/laminas-servicemanager": "^4.0", - "maglnet/composer-require-checker": "^4.14", - "mezzio/mezzio-fastroute": "^3.12", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.19", - "vimeo/psalm": "^5.26" - }, - "type": "library", - "autoload": { - "psr-4": { - "Trinet\\MezzioTest\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Testing helpers for mezzio projects", - "support": { - "issues": "https://github.com/trinet-at/mezzio-test/issues", - "source": "https://github.com/trinet-at/mezzio-test/tree/1.2.0" - }, - "time": "2025-01-11T13:55:22+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "roave/security-advisories": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.3", - "ext-json": "*", - "ext-openssl": "*", - "ext-pdo": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.6.0" -} diff --git a/config/autoload/database.develope.php b/config/autoload/database.develope.php deleted file mode 100644 index 675fb163..00000000 --- a/config/autoload/database.develope.php +++ /dev/null @@ -1,19 +0,0 @@ - [ - 'driver' => 'mysql', - 'host' => 'hackathon-mariadb', - 'port' => '3306', - 'user' => 'dev', - 'password' => 'dev', - 'dbname' => 'db', - 'charset' => 'utf8mb4', - 'defaultTableOptions' => [ - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_general_ci', - 'engine' => 'InnoDB', - ], - 'error' => PDO::ERRMODE_EXCEPTION, - ] -]; diff --git a/config/autoload/database.global.php b/config/autoload/database.global.php deleted file mode 100644 index fe149128..00000000 --- a/config/autoload/database.global.php +++ /dev/null @@ -1,19 +0,0 @@ - [ - 'driver' => 'driver', - 'host' => 'host', - 'port' => 'port', - 'user' => 'user', - 'password' => 'password', - 'dbname' => 'dbname', - 'charset' => 'utf8mb4', - 'defaultTableOptions' => [ - 'charset' => 'utf8mb4', - 'collation' => 'utf8mb4_general_ci', - 'engine' => 'InnoDB', - ], - 'error' => PDO::ERRMODE_EXCEPTION, - ] -]; diff --git a/config/autoload/database.testing.php b/config/autoload/database.testing.php deleted file mode 100644 index 68e56478..00000000 --- a/config/autoload/database.testing.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'driver' => 'sqlite', - 'path' => __DIR__ . '/../../database/database.sqlite', - 'memory' => false, - ], -]; diff --git a/config/autoload/dependencies.global.php b/config/autoload/dependencies.global.php deleted file mode 100644 index a1774b71..00000000 --- a/config/autoload/dependencies.global.php +++ /dev/null @@ -1,30 +0,0 @@ - [ - 'aliases' => [ - PDO::class => 'database', - Envms\FluentPDO\Query::class => 'query', - Ramsey\Uuid\Uuid::class => 'uuid', - Symfony\Component\Mailer\Mailer::class => 'mailer', - Psr\Log\LoggerInterface::class => 'logger', - ], - 'invokables' => [ - ], - 'factories' => [ - 'database' => \Core\Factory\DatabaseFactory::class, - 'query' => \Core\Factory\QueryFactory::class, - 'uuid' => \Core\Factory\UuidFactory::class, - 'mailer' => \Core\Factory\MailFactory::class, - 'logger' => \Core\Factory\LoggerFactory::class, - ], - 'delegators' => [ - ErrorHandler::class => [ - LoggingErrorListenerDelegatorFactory::class, - ], - ], - ], -]; diff --git a/config/autoload/development.config.global.php.dist b/config/autoload/development.config.global.php.dist deleted file mode 100644 index fe5fd1bc..00000000 --- a/config/autoload/development.config.global.php.dist +++ /dev/null @@ -1,5 +0,0 @@ - true, -]; diff --git a/config/autoload/development.local.php.dist b/config/autoload/development.local.php.dist deleted file mode 100644 index 65372a01..00000000 --- a/config/autoload/development.local.php.dist +++ /dev/null @@ -1,36 +0,0 @@ - [ - 'factories' => [ - ErrorResponseGenerator::class => Container\WhoopsErrorResponseGeneratorFactory::class, - 'Mezzio\Whoops' => Container\WhoopsFactory::class, - 'Mezzio\WhoopsPageHandler' => Container\WhoopsPageHandlerFactory::class, - ], - ], - 'whoops' => [ - 'json_exceptions' => [ - 'display' => true, - 'show_trace' => true, - 'ajax_only' => true, - ], - ], -]; diff --git a/config/autoload/discord.global.php b/config/autoload/discord.global.php deleted file mode 100644 index 5ab3b592..00000000 --- a/config/autoload/discord.global.php +++ /dev/null @@ -1,9 +0,0 @@ - [ - 'clientId' => '{discord-client-id}', - 'clientSecret' => '{discord-client-secret}', - 'redirectUri' => '{your-server-uri-to-this-script-here}' - ], -]; \ No newline at end of file diff --git a/config/autoload/local.php.dist b/config/autoload/local.php.dist deleted file mode 100644 index db858d77..00000000 --- a/config/autoload/local.php.dist +++ /dev/null @@ -1,13 +0,0 @@ - [ - 'path' => __DIR__ . '/../../data/log/', - ] -]; diff --git a/config/autoload/mail.develope.php b/config/autoload/mail.develope.php deleted file mode 100644 index 7a17007e..00000000 --- a/config/autoload/mail.develope.php +++ /dev/null @@ -1,8 +0,0 @@ - [ - 'dsn' => 'smtp://mailhog:1025', - 'from' => 'hackathon@exdrals.de', - ], -]; diff --git a/config/autoload/mail.global.php b/config/autoload/mail.global.php deleted file mode 100644 index 3dd3456b..00000000 --- a/config/autoload/mail.global.php +++ /dev/null @@ -1,8 +0,0 @@ - [ - 'dsn' => 'smtp://server:port', - 'from' => 'email@adress', - ], -]; diff --git a/config/autoload/mezzio.global.php b/config/autoload/mezzio.global.php deleted file mode 100644 index 623582c7..00000000 --- a/config/autoload/mezzio.global.php +++ /dev/null @@ -1,23 +0,0 @@ - true, - - // Enable debugging; typically used to provide debugging information within templates. - 'mezzio' => [ - // Provide templates for the error handling middleware to use when - // generating responses. - 'error_handler' => [ - 'template_404' => 'error::404', - 'template_error' => 'error::error', - ], - ], -]; diff --git a/config/autoload/mezzio.local.php b/config/autoload/mezzio.local.php deleted file mode 100644 index 623582c7..00000000 --- a/config/autoload/mezzio.local.php +++ /dev/null @@ -1,23 +0,0 @@ - true, - - // Enable debugging; typically used to provide debugging information within templates. - 'mezzio' => [ - // Provide templates for the error handling middleware to use when - // generating responses. - 'error_handler' => [ - 'template_404' => 'error::404', - 'template_error' => 'error::error', - ], - ], -]; diff --git a/config/autoload/migrations.develope.php b/config/autoload/migrations.develope.php deleted file mode 100644 index 0626d103..00000000 --- a/config/autoload/migrations.develope.php +++ /dev/null @@ -1,22 +0,0 @@ - [ - 'table_storage' => [ - 'table_name' => 'MigrationVersions', - 'version_column_name' => 'version', - 'version_column_length' => 192, - 'executed_at_column_name' => 'executedAt', - 'execution_time_column_name' => 'executionTime', - ], - - 'migrations_paths' => [ - 'Migrations' => __DIR__ . '/../../database/migrations', - ], - - 'all_or_nothing' => true, - 'transactional' => true, - 'check_database_platform' => true, - 'organize_migrations' => 'none', - ], -]; diff --git a/config/autoload/migrations.global.php b/config/autoload/migrations.global.php deleted file mode 100644 index 0626d103..00000000 --- a/config/autoload/migrations.global.php +++ /dev/null @@ -1,22 +0,0 @@ - [ - 'table_storage' => [ - 'table_name' => 'MigrationVersions', - 'version_column_name' => 'version', - 'version_column_length' => 192, - 'executed_at_column_name' => 'executedAt', - 'execution_time_column_name' => 'executionTime', - ], - - 'migrations_paths' => [ - 'Migrations' => __DIR__ . '/../../database/migrations', - ], - - 'all_or_nothing' => true, - 'transactional' => true, - 'check_database_platform' => true, - 'organize_migrations' => 'none', - ], -]; diff --git a/config/autoload/migrations.testing.php b/config/autoload/migrations.testing.php deleted file mode 100644 index 0626d103..00000000 --- a/config/autoload/migrations.testing.php +++ /dev/null @@ -1,22 +0,0 @@ - [ - 'table_storage' => [ - 'table_name' => 'MigrationVersions', - 'version_column_name' => 'version', - 'version_column_length' => 192, - 'executed_at_column_name' => 'executedAt', - 'execution_time_column_name' => 'executionTime', - ], - - 'migrations_paths' => [ - 'Migrations' => __DIR__ . '/../../database/migrations', - ], - - 'all_or_nothing' => true, - 'transactional' => true, - 'check_database_platform' => true, - 'organize_migrations' => 'none', - ], -]; diff --git a/config/autoload/token.develope.php b/config/autoload/token.develope.php deleted file mode 100644 index f9d49b30..00000000 --- a/config/autoload/token.develope.php +++ /dev/null @@ -1,18 +0,0 @@ - [ - 'auth' => [ - 'secret' => '7TtyzSrTbDFZXQ5Mjpj5xvv9iphO5oYy', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - 'csrf' => [ - 'secret' => 'Uq3FFwZEtK41LMF3pkJLoXlyJIzHjalT', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - ], -]; diff --git a/config/autoload/token.global.php b/config/autoload/token.global.php deleted file mode 100644 index a6ad3c3e..00000000 --- a/config/autoload/token.global.php +++ /dev/null @@ -1,18 +0,0 @@ - [ - 'auth' => [ - 'secret' => 'SYAyJL7CwbfH1fuXIiFNHQpuXzK0o1L3', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - 'csrf' => [ - 'secret' => 'i97wWkFZcK43xcyfKXcyY4fkcqz3wavn', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - ], -]; diff --git a/config/autoload/token.testing.php b/config/autoload/token.testing.php deleted file mode 100644 index f9d49b30..00000000 --- a/config/autoload/token.testing.php +++ /dev/null @@ -1,18 +0,0 @@ - [ - 'auth' => [ - 'secret' => '7TtyzSrTbDFZXQ5Mjpj5xvv9iphO5oYy', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - 'csrf' => [ - 'secret' => 'Uq3FFwZEtK41LMF3pkJLoXlyJIzHjalT', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - ], -]; diff --git a/config/config.php b/config/config.php deleted file mode 100644 index ac00f87a..00000000 --- a/config/config.php +++ /dev/null @@ -1,57 +0,0 @@ - 'data/cache/config-cache.php', -]; - -$aggregator = new ConfigAggregator([ - Mezzio\Helper\ConfigProvider::class, - Laminas\Log\ConfigProvider::class, - Laminas\InputFilter\ConfigProvider::class, - Laminas\Filter\ConfigProvider::class, - Laminas\Validator\ConfigProvider::class, - Laminas\Hydrator\ConfigProvider::class, - Mezzio\Tooling\ConfigProvider::class, - Mezzio\Router\FastRouteRouter\ConfigProvider::class, - Laminas\HttpHandlerRunner\ConfigProvider::class, - // Include cache configuration - new ArrayProvider($cacheConfig), - Mezzio\ConfigProvider::class, - Mezzio\Router\ConfigProvider::class, - Laminas\Diactoros\ConfigProvider::class, - - // Swoole config to overwrite some services (if installed) - class_exists(Mezzio\Swoole\ConfigProvider::class) - ? Mezzio\Swoole\ConfigProvider::class - : function (): array { - return []; - }, - - // Default App module config - App\ConfigProvider::class, - Core\ConfigProvider::class, - - // Load application config in a pre-defined order in such a way that local settings - // overwrite global settings. (Loaded as first to last): - // - `global.php` - // - `*.global.php` - // - `local.php` - // - `*.local.php` - new PhpFileProvider( - realpath(__DIR__) . sprintf( - '/autoload/{,*.}{global,local,%s}.php', - getenv('APP_ENV') ?: 'production' - ) - ), - - // Load development config if it exists - new PhpFileProvider(realpath(__DIR__) . '/development.config.php'), -], $cacheConfig['config_cache_path']); - -return $aggregator->getMergedConfig(); diff --git a/config/container.php b/config/container.php deleted file mode 100644 index 34fa6f85..00000000 --- a/config/container.php +++ /dev/null @@ -1,10 +0,0 @@ - true, - ConfigAggregator::ENABLE_CACHE => false, -]; diff --git a/config/migrations.template.tpl b/config/migrations.template.tpl deleted file mode 100644 index 83fc0322..00000000 --- a/config/migrations.template.tpl +++ /dev/null @@ -1,19 +0,0 @@ - extends AbstractMigration -{ - public function up(Schema $schema): void - { - - } - - public function down(Schema $schema): void - { - - } -} diff --git a/config/pipeline.php b/config/pipeline.php deleted file mode 100644 index d1a2b4db..00000000 --- a/config/pipeline.php +++ /dev/null @@ -1,85 +0,0 @@ -pipe(ErrorHandler::class); - $app->pipe(HttpExceptionMiddleware::class); - $app->pipe(ServerUrlMiddleware::class); - $app->pipe(BodyParamsMiddleware::class); - - // Pipe more middleware here that you want to execute on every request: - // - bootstrapping - // - pre-conditions - // - modifications to outgoing responses - // - // Piped Middleware may be either callables or service names. Middleware may - // also be passed as an array; each item in the array must resolve to - // middleware eventually (i.e., callable or service name). - // - // Middleware can be attached to specific paths, allowing you to mix and match - // applications under a common domain. The handlers in each middleware - // attached this way will see a URI with the matched path segment removed. - // - // i.e., path of "/api/member/profile" only passes "/member/profile" to $apiMiddleware - // - $app->pipe('/api', $apiMiddleware); - // - $app->pipe('/docs', $apiDocMiddleware); - // - $app->pipe('/files', $filesMiddleware); - - // Register the routing middleware in the middleware pipeline. - // This middleware registers the Mezzio\Router\RouteResult request attribute. - $app->pipe(RouteMiddleware::class); - - // The following handle routing failures for common conditions: - // - HEAD request but no routes answer that method - // - OPTIONS request but no routes answer that method - // - method not allowed - // Order here matters; the MethodNotAllowedMiddleware should be placed - // after the Implicit*Middleware. - $app->pipe(ImplicitHeadMiddleware::class); - $app->pipe(ImplicitOptionsMiddleware::class); - $app->pipe(MethodNotAllowedMiddleware::class); - - // Seed the UrlHelper with the routing results: - $app->pipe(UrlHelperMiddleware::class); - - // Add more middleware here that needs to introspect the routing results; this - // might include: - // - // - route-based authentication - // - route-based validation - // - etc. - - $app->pipe(ApiAccessMiddleware::class); - $app->pipe(JwtAuthenticationMiddleware::class); - $app->pipe(UpdateLastUserActionTimeMiddleware::class); - - // Register the dispatch middleware in the middleware pipeline - $app->pipe(DispatchMiddleware::class); - - // At this point, if no Response is returned by any middleware, the - // NotFoundHandler kicks in; alternately, you can provide other fallback - // middleware to execute. - $app->pipe(NotFoundHandler::class); -}; - diff --git a/config/routes.php b/config/routes.php deleted file mode 100644 index 003d7552..00000000 --- a/config/routes.php +++ /dev/null @@ -1,165 +0,0 @@ -get('/api/testmail', \App\Handler\System\TestMailHandler::class, \App\Handler\System\TestMailHandler::class); - $app->get('/api/ping[/]', \App\Handler\System\PingHandler::class, \App\Handler\System\PingHandler::class); - - /** ToDo OpenApi */ - $app->get( - '/api/event[/]', - [ - \App\Middleware\Event\EventListMiddleware::class, - \App\Handler\Event\EventListHandler::class, - ], - \App\Handler\Event\EventListHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/event[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \App\Middleware\Event\EventCreateValidationMiddleware::class, - \App\Middleware\Event\EventCreateMiddleware::class, - \App\Handler\Event\EventCreateHandler::class, - ], - \App\Handler\Event\EventCreateHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/event/{eventId:\d+}[/]', - [ - \App\Middleware\Event\EventMiddleware::class, - \App\Handler\Event\EventHandler::class, - ], - \App\Handler\Event\EventHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/event/{eventName}[/]', - [ - \App\Middleware\Event\EventNameMiddleware::class, - \App\Handler\Event\EventNameHandler::class, - ], - \App\Handler\Event\EventNameHandler::class - ); - /** ToDo OpenApi */ - $app->put( - '/api/event/participant/subscribe/{eventId:\d+}[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \App\Middleware\Event\EventParticipantSubscribeMiddleware::class, - \App\Handler\Event\EventParticipantSubscribeHandler::class, - ], - \App\Handler\Event\EventParticipantSubscribeHandler::class - ); - /** ToDo OpenApi */ - $app->put( - '/api/event/participant/unsubscribe/{eventId:\d+}[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \App\Middleware\Event\EventParticipantUnsubscribeMiddleware::class, - \App\Handler\Event\EventParticipantUnsubscribeHandler::class, - ], - \App\Handler\Event\EventParticipantUnsubscribeHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/topic[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \App\Middleware\Topic\TopicCreateValidationMiddleware::class, - \App\Middleware\Topic\TopicCreateSubmitMiddleware::class, - \App\Handler\Topic\TopicCreateHandler::class, - ], - \App\Handler\Topic\TopicCreateHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/topics/available[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \App\Middleware\Topic\TopicListAvailableMiddleware::class, - \App\Handler\Topic\TopicListAvailableHandler::class, - ], - \App\Handler\Topic\TopicListAvailableHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/user/me[/]', - [ - \App\Handler\System\ApiMeHandler::class, - ], - \App\Handler\System\ApiMeHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/user/register[/]', - [ - \Core\Middleware\UserRegisterValidationMiddleware::class, - \Core\Middleware\UserRegisterMiddleware::class, - \Core\Handler\UserRegisterSubmitHandler::class, - ], - \Core\Handler\UserRegisterSubmitHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/user/{userUuid}[/]', - [ - \Core\Middleware\IsLoggedInAuthenticationMiddleware::class, - \Core\Middleware\UserMiddleware::class, - \Core\Handler\UserHandler::class, - ], - \Core\Handler\UserHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/login[/]', - [ - \Core\Middleware\LoginValidationMiddleware::class, - \Core\Middleware\LoginAuthenticationMiddleware::class, - \Core\Handler\LoginHandler::class, - ], - \Core\Handler\LoginHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/logout[/]', - [ - \Core\Handler\LogoutHandler::class, - ], - \Core\Handler\LogoutHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/user/password/forgotten', - [ - \Core\Middleware\UserPasswordForgottenValidator::class, - \Core\Middleware\UserPasswordForgottenMiddleware::class, - \Core\Handler\UserPasswordForgottonHandler::class, - ], - \Core\Handler\UserPasswordForgottonHandler::class - ); - /** ToDo OpenApi */ - $app->get( - '/api/user/password/{token}[/]', - [ - \Core\Middleware\UserPasswordVerifyTokenMiddleware::class, - \Core\Handler\UserPasswordVerifyTokenHandler::class, - ], - \Core\Handler\UserPasswordVerifyTokenHandler::class - ); - /** ToDo OpenApi */ - $app->post( - '/api/user/password/{token}[/]', - [ - \Core\Middleware\UserPasswordVerifyTokenMiddleware::class, - \Core\Middleware\UserPasswordChangeValidatorMiddleware::class, - \Core\Middleware\UserPasswordChangeMiddleware::class, - \Core\Handler\UserPasswordChangeHandler::class, - ], - \Core\Handler\UserPasswordChangeHandler::class - ); -}; diff --git a/database/migrations/Version20220921183401CreateRoleTable.php b/database/migrations/Version20220921183401CreateRoleTable.php deleted file mode 100644 index ddb7483e..00000000 --- a/database/migrations/Version20220921183401CreateRoleTable.php +++ /dev/null @@ -1,29 +0,0 @@ -createTable('Role'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => false, 'unsigned' => true,]); - $table->addColumn('uuid', Types::STRING, ['length' => 32,]); - $table->addColumn('name', Types::STRING, ['length' => 50,]); - $table->addColumn('description', Types::TEXT, ['default' => '',]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['name'], 'role_name_UNIQUE'); - - } - - public function down(Schema $schema): void - { - $schema->dropTable('Role'); - } -} diff --git a/database/migrations/Version20220921183501CreateUserTable.php b/database/migrations/Version20220921183501CreateUserTable.php deleted file mode 100644 index 054612bf..00000000 --- a/database/migrations/Version20220921183501CreateUserTable.php +++ /dev/null @@ -1,42 +0,0 @@ -createTable('User'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('uuid', Types::STRING, ['length' => 32,]); - $table->addColumn('roleId', Types::INTEGER, ['unsigned' => true, 'default' => 1]); - $table->addColumn('name', Types::STRING, ['length' => 50,]); - $table->addColumn('password', Types::STRING, ['length' => 255]); - $table->addColumn('email', Types::STRING, ['length' => 512]); - $table->addColumn('registrationAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - $table->addColumn('lastActionAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['uuid'], 'user_uuid_UNIQUE'); - $table->addUniqueIndex(['name'], 'user_name_UNIQUE'); - $table->addUniqueIndex(['email'], 'user_email_UNIQUE'); - - $schema->getTable('User')->addForeignKeyConstraint( - 'Role', - ['roleId'], - ['id'], - name: 'fk_User_Role_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->getTable('User')->dropIndex('fk_User_Role_idx'); - $schema->dropTable('User'); - } -} diff --git a/database/migrations/Version20220921184501CreateEventTable.php b/database/migrations/Version20220921184501CreateEventTable.php deleted file mode 100644 index 2f7482f5..00000000 --- a/database/migrations/Version20220921184501CreateEventTable.php +++ /dev/null @@ -1,43 +0,0 @@ -createTable('Event'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('uuid', Types::STRING, ['length' => 32]); - $table->addColumn('userId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('title', Types::STRING, ['length' => 255]); - $table->addColumn('description', Types::STRING, ['length' => 1024, 'default' => '']); - $table->addColumn('eventText', Types::TEXT); - $table->addColumn('createdAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP']); - $table->addColumn('startedAt', Types::DATETIME_IMMUTABLE); - $table->addColumn('duration', Types::SMALLINT, ['unsigned' => true,]); - $table->addColumn('status', Types::SMALLINT, ['unsigned' => true, 'default' => 1,]); - $table->addColumn('ratingCompleted', Types::BOOLEAN, ['default' => false]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['title'], 'event_title_UNIQUE'); - - $schema->getTable('Event')->addForeignKeyConstraint( - 'User', - ['userId'], - ['id'], - name: 'fk_Event_User_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->getTable('Event')->dropIndex('fk_Event_User_idx'); - $schema->dropTable('Event'); - } -} diff --git a/database/migrations/Version20220921195606CreateTopicPoolTable.php b/database/migrations/Version20220921195606CreateTopicPoolTable.php deleted file mode 100644 index 52f5bb9d..00000000 --- a/database/migrations/Version20220921195606CreateTopicPoolTable.php +++ /dev/null @@ -1,39 +0,0 @@ -createTable('TopicPool'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('uuid', Types::STRING, ['length' => 32,]); - $table->addColumn('eventId', Types::INTEGER, ['unsigned' => true, 'notnull' => false,]); - $table->addColumn('topic', Types::STRING, ['length' => 512, 'notnull' => false]); - $table->addColumn('description', Types::TEXT, ['default' => '',]); - $table->addColumn('accepted', Types::BOOLEAN, ['default' => NULL, 'notnull' => false,]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['uuid'], 'topicpool_uuid_UNIQUE'); - $table->addUniqueIndex(['topic'], 'topicpool_topic_UNIQUE'); - - $schema->getTable('TopicPool')->addForeignKeyConstraint( - 'Event', - ['eventId'], - ['id'], - name: 'fk_TopicPool_Event_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->getTable('TopicPool')->dropIndex('fk_TopicPool_Event_idx'); - $schema->dropTable('TopicPool'); - } -} diff --git a/database/migrations/Version20220921200325CreateParticipantTable.php b/database/migrations/Version20220921200325CreateParticipantTable.php deleted file mode 100644 index 96ec6779..00000000 --- a/database/migrations/Version20220921200325CreateParticipantTable.php +++ /dev/null @@ -1,45 +0,0 @@ -createTable('Participant'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('userId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('eventId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('requestedAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - $table->addColumn('subscribed', Types::BOOLEAN, ['default' => true,]); - $table->addColumn('disqualified', Types::BOOLEAN, ['default' => false,]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['userId', 'eventId'], 'UNIQUE_USER_EVENT'); - - $schema->getTable('Participant')->addForeignKeyConstraint( - 'Event', - ['eventId'], - ['id'], - name: 'fk_Participant_Event_idx' - ); - $schema->getTable('Participant')->addForeignKeyConstraint( - 'User', - ['userId'], - ['id'], - name: 'fk_Participant_User_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->getTable('Participant')->dropIndex('fk__Participant_User_idx'); - $schema->getTable('Participant')->dropIndex('fk_Participant_Event_idx'); - $schema->dropTable('Participant'); - } -} diff --git a/database/migrations/Version20220921200425CreateProjectTable.php b/database/migrations/Version20220921200425CreateProjectTable.php deleted file mode 100644 index 4bfbe382..00000000 --- a/database/migrations/Version20220921200425CreateProjectTable.php +++ /dev/null @@ -1,40 +0,0 @@ -createTable('Project'); - - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('uuid', Types::STRING, ['length' => 32,]); - $table->addColumn('participantId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('title', Types::STRING, ['length' => 512]); - $table->addColumn('description', Types::TEXT); - $table->addColumn('createdAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - $table->addColumn('gitRepoUri', Types::STRING, ['length' => 2083, 'default' => '',]); - $table->addColumn('demoPageUri', Types::STRING, ['length' => 2083, 'default' => '',]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['title'], 'project_title_UNIQUE'); - - $schema->getTable('Project')->addForeignKeyConstraint( - 'Participant', - ['participantId'], - ['id'], - name: 'fk_Project_Participant_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->getTable('Project')->dropIndex('fk_Project_Participant_idx'); - $schema->dropTable('Project'); - } -} diff --git a/database/migrations/Version20220921210101CreateGarbageTableTable.php b/database/migrations/Version20220921210101CreateGarbageTableTable.php deleted file mode 100644 index bb4f59b9..00000000 --- a/database/migrations/Version20220921210101CreateGarbageTableTable.php +++ /dev/null @@ -1,24 +0,0 @@ -createTable('GarbageTable'); - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('name', Types::STRING, ['length' => 50,]); - - $table->setPrimaryKey(['id']); - } - - public function down(Schema $schema): void - { - $schema->dropTable('GarbageTable'); - } -} diff --git a/database/migrations/Version20220921210102CreateGarbageReasonTypesTable.php b/database/migrations/Version20220921210102CreateGarbageReasonTypesTable.php deleted file mode 100644 index db57cc6f..00000000 --- a/database/migrations/Version20220921210102CreateGarbageReasonTypesTable.php +++ /dev/null @@ -1,24 +0,0 @@ -createTable('GarbageReasonType'); - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('name', Types::STRING, ['length' => 50,]); - - $table->setPrimaryKey(['id']); - } - - public function down(Schema $schema): void - { - $schema->dropTable('GarbageReasonType'); - } -} diff --git a/database/migrations/Version20220921210259CreateGarbageContainerTable.php b/database/migrations/Version20220921210259CreateGarbageContainerTable.php deleted file mode 100644 index ecd31e38..00000000 --- a/database/migrations/Version20220921210259CreateGarbageContainerTable.php +++ /dev/null @@ -1,48 +0,0 @@ -createTable('GarbageContainer'); - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('userId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('tableId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('referenceId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('reasonId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('userDefinedReason', Types::STRING, ['length' => 255, 'default' => '',]); - $table->addColumn('deletedAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - - $table->setPrimaryKey(['id']); - - $schema->getTable('GarbageContainer')->addForeignKeyConstraint( - 'Role', - ['userId'], - ['id'], - name: 'fk_GarbageContainer_User_idx' - ); - $schema->getTable('GarbageContainer')->addForeignKeyConstraint( - 'GarbageTable', - ['tableId'], - ['id'], - name: 'fk_GarbageContainer_GarbageTable_idx' - ); - $schema->getTable('GarbageContainer')->addForeignKeyConstraint( - 'GarbageReasonType', - ['reasonId'], - ['id'], - name: 'fk_GarbageContainer_GarbageReasonType_idx' - ); - } - - public function down(Schema $schema): void - { - $schema->dropTable('GarbageContainer'); - } -} diff --git a/database/migrations/Version20220921220101CreateUserActivationTable.php b/database/migrations/Version20220921220101CreateUserActivationTable.php deleted file mode 100644 index b523058b..00000000 --- a/database/migrations/Version20220921220101CreateUserActivationTable.php +++ /dev/null @@ -1,27 +0,0 @@ -createTable('UserActivation'); - $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); - $table->addColumn('userId', Types::INTEGER, ['unsigned' => true,]); - $table->addColumn('token', Types::STRING, ['length' => 32,]); - $table->addColumn('activationRequestTime', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); - - $table->setPrimaryKey(['id']); - $table->addUniqueIndex(['userId'], 'user_activation_userid_UNIQUE'); - } - - public function down(Schema $schema): void - { - $schema->dropTable('UserActivation'); - } -} diff --git a/database/migrations/Version20220921220156InsertDefaultsToRoleTable.php b/database/migrations/Version20220921220156InsertDefaultsToRoleTable.php deleted file mode 100644 index 27b32ac9..00000000 --- a/database/migrations/Version20220921220156InsertDefaultsToRoleTable.php +++ /dev/null @@ -1,35 +0,0 @@ -addSql($sql); - } - - public function down(Schema $schema): void - { - $sql = <<addSql($sql); - } -} diff --git a/docker-compose.yml b/docker-compose.yml index 1496ee78..d1f8c1a0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -33,6 +33,19 @@ services: - --character-set-server=utf8mb4 - --collation-server=utf8mb4_general_ci + database-testing: + image: mariadb:${MARIADB_VERSION:-latest} + container_name: hackathon-mariadb-testing + ports: + - "${MYSQL_TESTING_PORT:-3307}:3306" + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root} + MYSQL_DATABASE: ${MYSQL_DATABASE:-db} + MYSQL_USER: ${MYSQL_USER:-dev} + MYSQL_PASSWORD: ${MYSQL_PASSWORD:-dev} + volumes: + - db-testing:/var/lib/mysql + mailhog: image: mailhog/mailhog container_name: hackathon-mailhog @@ -44,3 +57,4 @@ services: volumes: db: + db-testing: diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index 001e6dc9..00000000 --- a/phpcs.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - src - - */vendor/* - */config/* - */database/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 96cea727..00000000 --- a/phpstan.neon +++ /dev/null @@ -1,11 +0,0 @@ -parameters: - level: 6 - paths: - - src - ignoreErrors: - - identifier: missingType.iterableValue - - identifier: missingType.generics - bootstrapFiles: - - constants.php -includes: - - vendor/phpstan/phpstan-deprecation-rules/rules.neon diff --git a/phpunit_functionaltest.xml b/phpunit_functionaltest.xml deleted file mode 100644 index d624e515..00000000 --- a/phpunit_functionaltest.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - - - tests/Functional - - - diff --git a/phpunit_unittest.xml b/phpunit_unittest.xml deleted file mode 100644 index 927c3dfd..00000000 --- a/phpunit_unittest.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - tests/Unit - - - - - - - - - - - src - - - diff --git a/src/App/ConfigProvider.php b/src/App/ConfigProvider.php deleted file mode 100644 index 68db57e7..00000000 --- a/src/App/ConfigProvider.php +++ /dev/null @@ -1,203 +0,0 @@ - $this->getDependencies(), - ConfigAbstractFactory::class => $this->getAbstractFactoryConfig(), - ]; - } - - public function getDependencies(): array - { - return [ - 'invokables' => [ - LoginAuthenticationService::class, - EventDescriptionInput::class, - EventDurationInput::class, - EventStartTimeInput::class, - EventTextInput::class, - EventTitleInput::class, - TopicDescriptionInput::class, - TopicInput::class, - ], - 'aliases' => [ - EventRepository::class => EventTable::class, - ParticipantRepository::class => ParticipantTable::class, - ProjectRepository::class => ProjectTable::class, - TopicPoolRepository::class => TopicPoolTable::class, - ], - 'factories' => [ - Handler\Event\EventHandler::class => ConfigAbstractFactory::class, - Handler\Event\EventParticipantSubscribeHandler::class => ConfigAbstractFactory::class, - Handler\Topic\TopicCreateHandler::class => ConfigAbstractFactory::class, - Handler\System\TestMailHandler::class => ConfigAbstractFactory::class, - - Middleware\Event\EventCreateMiddleware::class => EventCreateMiddlewareFactory::class, - Middleware\Event\EventCreateValidationMiddleware::class => ConfigAbstractFactory::class, - Middleware\Event\EventParticipantSubscribeMiddleware::class => ConfigAbstractFactory::class, - Middleware\Event\EventParticipantUnsubscribeMiddleware::class => ConfigAbstractFactory::class, - Middleware\Event\EventMiddleware::class => ConfigAbstractFactory::class, - Middleware\Event\EventNameMiddleware::class => ConfigAbstractFactory::class, - Middleware\Event\EventListMiddleware::class => ConfigAbstractFactory::class, - Middleware\Project\ProjectMiddleware::class => ConfigAbstractFactory::class, - Middleware\Project\ProjectOwnerMiddleware::class => ConfigAbstractFactory::class, - Middleware\Project\ProjectParticipantMiddleware::class => ConfigAbstractFactory::class, - Middleware\Topic\TopicCreateValidationMiddleware::class => ConfigAbstractFactory::class, - Middleware\Topic\TopicEntryStatisticMiddleware::class => ConfigAbstractFactory::class, - Middleware\Topic\TopicListAvailableMiddleware::class => ConfigAbstractFactory::class, - Middleware\Topic\TopicListMiddleware::class => ConfigAbstractFactory::class, - Middleware\Topic\TopicCreateSubmitMiddleware::class => ConfigAbstractFactory::class, - - Service\EMail\TopicCreateEMailService::class => TopicCreateEMailServiceFactory::class, - Service\Event\EventService::class => EventServiceFactory::class, - Service\Participant\ParticipantService::class => ParticipantServiceFactory::class, - Service\Project\ProjectService::class => ProjectServiceFactory::class, - Service\Topic\TopicPoolService::class => TopicPoolServiceFactory::class, - Service\User\UserService::class => UserServiceFactory::class, - - Table\EventTable::class => ConfigAbstractFactory::class, - Table\ParticipantTable::class => ConfigAbstractFactory::class, - Table\ProjectTable::class => ConfigAbstractFactory::class, - Table\TopicPoolTable::class => ConfigAbstractFactory::class, - - EventCreateValidator::class => ConfigAbstractFactory::class, - TopicCreateValidator::class => ConfigAbstractFactory::class, - ], - ]; - } - - public function getAbstractFactoryConfig(): array - { - return [ - Handler\Event\EventHandler::class => [ - UserService::class, - ParticipantService::class, - ProjectService::class, - TopicPoolService::class, - ], - Handler\Event\EventParticipantSubscribeHandler::class => [ - ParticipantService::class, - ProjectService::class, - ], - Handler\Topic\TopicCreateHandler::class => [ - TopicCreateEMailService::class, - ], - Handler\System\TestMailHandler::class => [ - Mailer::class, - ], - Middleware\Event\EventCreateValidationMiddleware::class => [ - EventCreateValidator::class, - ], - Middleware\Event\EventListMiddleware::class => [ - EventService::class, - UserService::class, - ], - Middleware\Event\EventMiddleware::class => [ - EventService::class, - ], - Middleware\Event\EventNameMiddleware::class => [ - EventService::class, - ], - Middleware\Event\EventParticipantSubscribeMiddleware::class => [ - ParticipantService::class, - EventService::class, - ], - Middleware\Event\EventParticipantUnsubscribeMiddleware::class => [ - ParticipantService::class, - EventService::class, - ], - Middleware\Project\ProjectMiddleware::class => [ - ProjectService::class, - ], - Middleware\Project\ProjectOwnerMiddleware::class => [ - UserService::class, - ], - Middleware\Project\ProjectParticipantMiddleware::class => [ - ParticipantService::class, - ], - Middleware\Topic\TopicCreateValidationMiddleware::class => [ - TopicCreateValidator::class, - ], - Middleware\Topic\TopicEntryStatisticMiddleware::class => [ - TopicPoolService::class, - ], - Middleware\Topic\TopicListAvailableMiddleware::class => [ - TopicPoolService::class, - ], - Middleware\Topic\TopicListMiddleware::class => [ - TopicPoolService::class, - ], - Middleware\Topic\TopicCreateSubmitMiddleware::class => [ - TopicPoolService::class, - ReflectionHydrator::class, - Uuid::class, - ], - Table\EventTable::class => [ - Query::class, - ], - Table\ParticipantTable::class => [ - Query::class, - ], - Table\ProjectTable::class => [ - Query::class, - ], - Table\TopicPoolTable::class => [ - Query::class, - ], - - EventCreateValidator::class => [ - EventTitleInput::class, - EventDescriptionInput::class, - EventTextInput::class, - EventStartTimeInput::class, - EventDurationInput::class, - ], - TopicCreateValidator::class => [ - TopicInput::class, - TopicDescriptionInput::class, - ], - ]; - } -} diff --git a/src/App/Dto/Event/EventDto.php b/src/App/Dto/Event/EventDto.php deleted file mode 100644 index a7223d28..00000000 --- a/src/App/Dto/Event/EventDto.php +++ /dev/null @@ -1,61 +0,0 @@ - - 1 = coming soon
- 2 = in preparation
- 3 = running
- 4 = in evaluation
- 5 = completed/finalized
- 6 = closed
- 7 = aborted
- 8 = hidden', - type: 'integer', - enum: EventStatus::class, - )] - public int $status; - - public function __construct( - int $id, - string $owner, - string $title, - ?string $description, - int $duration, - string $startedAt, - EventStatus $status - ) { - $this->id = $id; - $this->owner = $owner; - $this->title = $title; - $this->description = $description; - $this->duration = $duration; - $this->startedAt = $startedAt; - $this->status = $status->value; - } -} diff --git a/src/App/Dto/Event/EventListDto.php b/src/App/Dto/Event/EventListDto.php deleted file mode 100644 index 02108010..00000000 --- a/src/App/Dto/Event/EventListDto.php +++ /dev/null @@ -1,23 +0,0 @@ - $events - */ - public function __construct(array $events) - { - $this->events = $events; - } -} diff --git a/src/App/Dto/Topic/TopicCreateFailureMessageDto.php b/src/App/Dto/Topic/TopicCreateFailureMessageDto.php deleted file mode 100644 index bcb99bb8..00000000 --- a/src/App/Dto/Topic/TopicCreateFailureMessageDto.php +++ /dev/null @@ -1,22 +0,0 @@ -topic = $topic; - } -} diff --git a/src/App/Dto/Topic/TopicCreateRequestDto.php b/src/App/Dto/Topic/TopicCreateRequestDto.php deleted file mode 100644 index d71ab93d..00000000 --- a/src/App/Dto/Topic/TopicCreateRequestDto.php +++ /dev/null @@ -1,29 +0,0 @@ -topic = $topic->topic; - $this->description = $topic->description; - } -} diff --git a/src/App/Dto/Topic/TopicCreateResponseDto.php b/src/App/Dto/Topic/TopicCreateResponseDto.php deleted file mode 100644 index b482d6f6..00000000 --- a/src/App/Dto/Topic/TopicCreateResponseDto.php +++ /dev/null @@ -1,22 +0,0 @@ -uuid = $topic->uuid->getHex()->toString(); - parent::__construct($topic); - } -} diff --git a/src/App/Dto/Topic/TopicListDto.php b/src/App/Dto/Topic/TopicListDto.php deleted file mode 100644 index 6e21fe23..00000000 --- a/src/App/Dto/Topic/TopicListDto.php +++ /dev/null @@ -1,30 +0,0 @@ - $topics - */ - public function __construct(array $topics) - { - $topicList = []; - - foreach ($topics as $topic) { - $topicList[] = new TopicCreateResponseDto($topic); - } - - $this->topics = $topicList; - } -} diff --git a/src/App/Entity/Event.php b/src/App/Entity/Event.php deleted file mode 100644 index cd61a24e..00000000 --- a/src/App/Entity/Event.php +++ /dev/null @@ -1,28 +0,0 @@ - 'soon', - EventStatus::PREPARE => 'prepare', - EventStatus::RUNNING => 'running', - EventStatus::EVALUATION => 'evaluation', - EventStatus::COMPLETE => 'complete', - EventStatus::CLOSED => 'closed', - EventStatus::ABORTED => 'aborted', - EventStatus::HIDDEN => 'hidden', - }; - } -} diff --git a/src/App/Enum/UserRole.php b/src/App/Enum/UserRole.php deleted file mode 100644 index 43ac88c7..00000000 --- a/src/App/Enum/UserRole.php +++ /dev/null @@ -1,23 +0,0 @@ - 'Owner', - UserRole::ADMINISTRATOR => 'Administrator', - UserRole::MODERATOR => 'Moderator', - UserRole::USER => 'User', - UserRole::GUEST => 'Guest' - }; - } -} diff --git a/src/App/Handler/Event/EventCreateHandler.php b/src/App/Handler/Event/EventCreateHandler.php deleted file mode 100644 index c4f4c73c..00000000 --- a/src/App/Handler/Event/EventCreateHandler.php +++ /dev/null @@ -1,19 +0,0 @@ -getParsedBody(); - - return new JsonResponse($data, HTTP::STATUS_CREATED); - } -} diff --git a/src/App/Handler/Event/EventHandler.php b/src/App/Handler/Event/EventHandler.php deleted file mode 100644 index 998f1856..00000000 --- a/src/App/Handler/Event/EventHandler.php +++ /dev/null @@ -1,92 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - - /** - * @var Event $event - */ - $event = $request->getAttribute(Event::class); - - /** - * @var array $participants - */ - $participants = $this->participantService->findActiveParticipantByEvent($event->id); - - $data = [ - 'id' => $event->id, - 'owner' => $this->userService->findById($event->userId)->name, - 'title' => $event->title, - 'description' => $event->description, - 'eventText' => $event->eventText, - 'createdAt' => $event->createdAt->format('Y-m-d H:i'), - 'startedAt' => $event->startedAt->format('Y-m-d H:i'), - 'duration' => $event->duration, - 'status' => $event->status, - 'ratingCompleted' => $event->ratingCompleted, - ]; - - if ($user instanceof User) { - $participantData = []; - foreach ($participants as $participant) { - $user = $this->userService->findById($participant->userId); - $project = $this->projectService->findByParticipantId($participant->id); - $entry = [ - 'id' => $participant->id, - 'username' => $user->name, - 'userUuid' => $user->uuid, - 'requestedAt' => $participant->requestedAt->format('Y-m-d H:i'), - 'projectId' => $project?->id, - 'projectTitle' => $project?->title, - ]; - - $participantData[] = $entry; - } - - $data['participants'] = $participantData; - } - - $topic = $this->topicPoolService->findByEventId($event->id); - - if ($topic instanceof Topic) { - $topicData = [ - 'title' => $topic->topic, - 'description' => $topic->description, - ]; - - $data['topic'] = $topicData; - } - - return new JsonResponse($data, HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/Event/EventListHandler.php b/src/App/Handler/Event/EventListHandler.php deleted file mode 100644 index a75c54c1..00000000 --- a/src/App/Handler/Event/EventListHandler.php +++ /dev/null @@ -1,47 +0,0 @@ - - Options: ID|OWNER|TITLE|DESCRIPTION|DURATION|STARTEDAT|STATUS', - in: 'query', - required: false, - schema: new OA\Schema(type: 'string'), - example: 'startedAt', - )] - #[OA\QueryParameter( - name: 'sort', - description: 'determines the display order of the events
- Options: ASC|DESC', - in: 'query', - required: false, - schema: new OA\Schema(type: 'string'), - example: 'DESC', - )] - #[OA\Response( - response: HTTP::STATUS_OK, - description: 'Success', - content: new OA\JsonContent(type: 'array', items: new OA\Items(ref: EventDto::class)), - )] - public function handle(ServerRequestInterface $request): ResponseInterface - { - /** @var EventListDto $events */ - $events = $request->getAttribute(EventListDto::class); - - return new JsonResponse($events, HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/Event/EventNameHandler.php b/src/App/Handler/Event/EventNameHandler.php deleted file mode 100644 index 8730357c..00000000 --- a/src/App/Handler/Event/EventNameHandler.php +++ /dev/null @@ -1,27 +0,0 @@ -getAttribute(Event::class); - - $data = [ - 'eventId' => $event->id, - ]; - - return new JsonResponse($data, HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/Event/EventParticipantSubscribeHandler.php b/src/App/Handler/Event/EventParticipantSubscribeHandler.php deleted file mode 100644 index e1da6b66..00000000 --- a/src/App/Handler/Event/EventParticipantSubscribeHandler.php +++ /dev/null @@ -1,53 +0,0 @@ -getAttribute('participantCreateStatus'); - - if (!$participantCreateStatus) { - return new JsonResponse( - ['Status' => 'Benutzer konnte der Teilnehmerliste nicht hinzugefügt werden'], - HTTP::STATUS_METHOD_NOT_ALLOWED - ); - } - - /** - * @var User $user - */ - $user = $request->getAttribute(User::AUTHENTICATED_USER); - $eventId = (int)$request->getAttribute('eventId'); - - $participant = $this->participantService->findByUserIdAndEventId($user->id, $eventId); - $project = $this->projectService->findByParticipantId($participant->id); - - $participantData = [ - 'id' => $participant->id, - 'username' => $user->name, - 'userUuid' => $user->uuid, - 'requestedAt' => $participant->requestedAt->format('Y-m-d H:i'), - 'projectId' => $project?->id, - 'projectTitle' => $project?->title, - ]; - - return new JsonResponse($participantData, HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/Event/EventParticipantUnsubscribeHandler.php b/src/App/Handler/Event/EventParticipantUnsubscribeHandler.php deleted file mode 100644 index d0747b0c..00000000 --- a/src/App/Handler/Event/EventParticipantUnsubscribeHandler.php +++ /dev/null @@ -1,22 +0,0 @@ -getAttribute('participantRemoveStatus'); - - if (!$participantRemoveStatus) { - return new JsonResponse(['Status' => 'Benutzer konnte der Teilnehmerliste nicht entfernt werden'], HTTP::STATUS_METHOD_NOT_ALLOWED); - } - return new JsonResponse(['Status' => 'OK'], HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/System/ApiMeHandler.php b/src/App/Handler/System/ApiMeHandler.php deleted file mode 100644 index 60378705..00000000 --- a/src/App/Handler/System/ApiMeHandler.php +++ /dev/null @@ -1,57 +0,0 @@ - []]], -)] -readonly class ApiMeHandler implements RequestHandlerInterface -{ - #[OA\Get( - path: '/api/user/me', - summary: 'Returns minimal information for a logged-in user or empty', - tags: ['User Control'], - deprecated: true, - )] - #[OA\Response( - response: HTTP::STATUS_OK, - description: 'Success', - content: new OA\JsonContent(ref: ApiMeDto::class) - )] - #[OA\Response( - response: HTTP::STATUS_UNAUTHORIZED, - description: 'Incorrect authorization or expired', - content: new OA\JsonContent(ref: SimpleMessageDto::class) - )] - public function handle(ServerRequestInterface $request): ResponseInterface - { - $user = $request->getAttribute(User::AUTHENTICATED_USER); - - if (!($user instanceof User)) { - return new JsonResponse([], HTTP::STATUS_OK); - } - - return new JsonResponse(new ApiMeDto($user), HTTP::STATUS_OK); - } -} diff --git a/src/App/Handler/System/PingHandler.php b/src/App/Handler/System/PingHandler.php deleted file mode 100644 index 74b9ec0a..00000000 --- a/src/App/Handler/System/PingHandler.php +++ /dev/null @@ -1,43 +0,0 @@ - time()]); - } -} diff --git a/src/App/Handler/System/TestMailHandler.php b/src/App/Handler/System/TestMailHandler.php deleted file mode 100644 index 97ff1d0a..00000000 --- a/src/App/Handler/System/TestMailHandler.php +++ /dev/null @@ -1,32 +0,0 @@ -from('hello@example.com') - ->to('you@example.com') - ->subject('Time for Symfony Mailer!') - ->text('Sending emails is fun again!') - ->html('

See Twig integration for better HTML integration!

'); - - $this->mailer->send($email); - return new JsonResponse(['message' => 'You have a Mail'], HTTP::STATUS_CREATED); - } -} diff --git a/src/App/Handler/Topic/TopicCreateHandler.php b/src/App/Handler/Topic/TopicCreateHandler.php deleted file mode 100644 index 012d432e..00000000 --- a/src/App/Handler/Topic/TopicCreateHandler.php +++ /dev/null @@ -1,59 +0,0 @@ -getAttribute(Topic::class); - - $this->mailService->send($topic); - - $topic = new TopicCreateResponseDto($topic); - - return new JsonResponse($topic, HTTP::STATUS_CREATED); - } -} diff --git a/src/App/Handler/Topic/TopicListAvailableHandler.php b/src/App/Handler/Topic/TopicListAvailableHandler.php deleted file mode 100644 index c1ceba35..00000000 --- a/src/App/Handler/Topic/TopicListAvailableHandler.php +++ /dev/null @@ -1,38 +0,0 @@ - $data */ - $data = $request->getAttribute(TopicListDto::class); - - return new JsonResponse($data, HTTP::STATUS_OK); - } -} diff --git a/src/App/Middleware/Event/EventCreateMiddleware.php b/src/App/Middleware/Event/EventCreateMiddleware.php deleted file mode 100644 index a5bfb842..00000000 --- a/src/App/Middleware/Event/EventCreateMiddleware.php +++ /dev/null @@ -1,44 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - - $data = $request->getParsedBody(); - $data['userId'] = $user->id; - - $event = $this->hydrator->hydrate($data, Event::class); - - if (!$this->eventService->create($event)) { - return new JsonResponse([ - 'message' => 'Event already exists', - ], HTTP::STATUS_NOT_FOUND); - } - - return $handler->handle($request); - } -} diff --git a/src/App/Middleware/Event/EventCreateMiddlewareFactory.php b/src/App/Middleware/Event/EventCreateMiddlewareFactory.php deleted file mode 100644 index 96d8247a..00000000 --- a/src/App/Middleware/Event/EventCreateMiddlewareFactory.php +++ /dev/null @@ -1,42 +0,0 @@ -get(EventService::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - /** @var DateTimeFormatterStrategy $strategy */ - $strategy = $container->get(DateTimeFormatterStrategy::class); - - $hydrator->addStrategy( - 'createdAt', - $strategy, - ); - - $hydrator->addStrategy( - 'startedAt', - $strategy, - ); - - $hydrator->addStrategy( - 'event', - new HydratorStrategy($container->get(ReflectionHydrator::class), Event::class) - ); - - return new EventCreateMiddleware($service, $hydrator); - } -} diff --git a/src/App/Middleware/Event/EventCreateValidationMiddleware.php b/src/App/Middleware/Event/EventCreateValidationMiddleware.php deleted file mode 100644 index 3d136eb6..00000000 --- a/src/App/Middleware/Event/EventCreateValidationMiddleware.php +++ /dev/null @@ -1,35 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - return new JsonResponse([ - 'message' => 'Validation fault', - 'data' => $this->validator->getMessages(), - ], HTTP::STATUS_NOT_FOUND); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/App/Middleware/Event/EventListMiddleware.php b/src/App/Middleware/Event/EventListMiddleware.php deleted file mode 100644 index 466b77fb..00000000 --- a/src/App/Middleware/Event/EventListMiddleware.php +++ /dev/null @@ -1,67 +0,0 @@ -getQueryParams(); - - $sort = match (strtoupper($params['sort'] ?? '')) { - 'ASC' => 'ASC', - default => 'DESC', - }; - - $order = match (strtoupper($params['order'] ?? '')) { - 'ID' => 'id', - 'OWNER' => 'owner', - 'TITLE' => 'title', - 'DESCRIPTION' => 'description', - 'DURATION' => 'duration', - 'STATUS' => 'status', - default => 'startedAt', - }; - - /** @var array $events */ - $events = $this->eventService->findAll($order, $sort); - - $eventList = []; - - foreach ($events as $event) { - $entry = new EventDto( - $event->id, - $this->userService->findById($event->userId)->name, - $event->title, - $event->description, - $event->duration, - $event->createdAt->format('Y-m-d H:i'), - $event->status, - ); - - $eventList[] = $entry; - } - - $eventList = new EventListDto($eventList); - - return $handler->handle($request->withAttribute(EventListDto::class, $eventList)); - } -} diff --git a/src/App/Middleware/Event/EventMiddleware.php b/src/App/Middleware/Event/EventMiddleware.php deleted file mode 100644 index 4dfc01ef..00000000 --- a/src/App/Middleware/Event/EventMiddleware.php +++ /dev/null @@ -1,27 +0,0 @@ -getAttribute('eventId'); - - $event = $this->eventService->findById($eventId); - - return $handler->handle($request->withAttribute(Event::class, $event)); - } -} diff --git a/src/App/Middleware/Event/EventNameMiddleware.php b/src/App/Middleware/Event/EventNameMiddleware.php deleted file mode 100644 index a9d3258c..00000000 --- a/src/App/Middleware/Event/EventNameMiddleware.php +++ /dev/null @@ -1,32 +0,0 @@ -getAttribute('eventName'); - - $event = $this->eventService->findByTitle($eventName); - - if (!$event instanceof Event) { - throw new InvalidArgumentException('Could not find Event', 400); - } - - return $handler->handle($request->withAttribute(Event::class, $event)); - } -} diff --git a/src/App/Middleware/Event/EventParticipantSubscribeMiddleware.php b/src/App/Middleware/Event/EventParticipantSubscribeMiddleware.php deleted file mode 100644 index 0d76d5a2..00000000 --- a/src/App/Middleware/Event/EventParticipantSubscribeMiddleware.php +++ /dev/null @@ -1,50 +0,0 @@ -getAttribute('eventId'); - $event = $this->eventService->findById($eventId); - - if ($event->status->value >= EventStatus::RUNNING->value) { - return $handler->handle($request->withAttribute('participantCreateStatus', false)); - } - - /** - * @var User $user - */ - $user = $request->getAttribute(User::AUTHENTICATED_USER); - - $participant = new Participant( - 1, - $user->id, - $eventId, - new DateTimeImmutable(), - true, - false - ); - $participantCreateStatus = $this->participantService->create($participant); - - return $handler->handle($request->withAttribute('participantCreateStatus', $participantCreateStatus)); - } -} diff --git a/src/App/Middleware/Event/EventParticipantUnsubscribeMiddleware.php b/src/App/Middleware/Event/EventParticipantUnsubscribeMiddleware.php deleted file mode 100644 index 6072ffb4..00000000 --- a/src/App/Middleware/Event/EventParticipantUnsubscribeMiddleware.php +++ /dev/null @@ -1,42 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - $eventId = (int)$request->getAttribute('eventId'); - - $event = $this->eventService->findById($eventId); - - if ($event->status->value >= EventStatus::RUNNING->value) { - return $handler->handle($request->withAttribute('participantRemoveStatus', false)); - } - - $participant = $this->participantService->findByUserIdAndEventId($user->id, $eventId); - - $participantRemoveStatus = $this->participantService->remove($participant); - - return $handler->handle($request->withAttribute('participantRemoveStatus', $participantRemoveStatus)); - } -} diff --git a/src/App/Middleware/Project/ProjectMiddleware.php b/src/App/Middleware/Project/ProjectMiddleware.php deleted file mode 100644 index 39bddb68..00000000 --- a/src/App/Middleware/Project/ProjectMiddleware.php +++ /dev/null @@ -1,27 +0,0 @@ -getAttribute('projectId'); - - $project = $this->projectService->findById($projectId); - - return $handler->handle($request->withAttribute(Project::class, $project)); - } -} diff --git a/src/App/Middleware/Project/ProjectOwnerMiddleware.php b/src/App/Middleware/Project/ProjectOwnerMiddleware.php deleted file mode 100644 index 16779bb4..00000000 --- a/src/App/Middleware/Project/ProjectOwnerMiddleware.php +++ /dev/null @@ -1,30 +0,0 @@ -getAttribute(Participant::class); - - $projectOwner = $this->userService->findById($participant->userId); - - return $handler->handle($request->withAttribute('projectOwner', $projectOwner)); - } -} diff --git a/src/App/Middleware/Project/ProjectParticipantMiddleware.php b/src/App/Middleware/Project/ProjectParticipantMiddleware.php deleted file mode 100644 index 9182cd33..00000000 --- a/src/App/Middleware/Project/ProjectParticipantMiddleware.php +++ /dev/null @@ -1,31 +0,0 @@ -getAttribute(Project::class); - - $participant = $this->participantService->findById($project->participantId); - - return $handler->handle($request->withAttribute(Participant::class, $participant)); - } -} diff --git a/src/App/Middleware/Topic/TopicCreateSubmitMiddleware.php b/src/App/Middleware/Topic/TopicCreateSubmitMiddleware.php deleted file mode 100644 index 3d1589ce..00000000 --- a/src/App/Middleware/Topic/TopicCreateSubmitMiddleware.php +++ /dev/null @@ -1,46 +0,0 @@ -getParsedBody(); - - $topic = $this->hydrator->hydrate($data, Topic::class); - - $existTopic = $this->topicPoolService->findByTopic($topic->topic); - - if ($existTopic instanceof Topic) { - throw new DuplicateNameHttpException(['topic' => ['topic' => 'The Topic is already present']]); - } - - $topic = $topic->with(uuid: $this->uuid); - - $this->topicPoolService->insert($topic); - - return $handler->handle($request->withAttribute(Topic::class, $topic)); - } -} diff --git a/src/App/Middleware/Topic/TopicCreateValidationMiddleware.php b/src/App/Middleware/Topic/TopicCreateValidationMiddleware.php deleted file mode 100644 index 9d2ac799..00000000 --- a/src/App/Middleware/Topic/TopicCreateValidationMiddleware.php +++ /dev/null @@ -1,34 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - throw new InvalidArgumentHttpException($this->validator->getMessages()); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/App/Middleware/Topic/TopicEntryStatisticMiddleware.php b/src/App/Middleware/Topic/TopicEntryStatisticMiddleware.php deleted file mode 100644 index 3008b7f0..00000000 --- a/src/App/Middleware/Topic/TopicEntryStatisticMiddleware.php +++ /dev/null @@ -1,24 +0,0 @@ -topicPoolService->getEntriesStatistic(); - - return $handler->handle($request->withAttribute('topicEntriesStatistic', $data)); - } -} diff --git a/src/App/Middleware/Topic/TopicListAvailableMiddleware.php b/src/App/Middleware/Topic/TopicListAvailableMiddleware.php deleted file mode 100644 index f5249469..00000000 --- a/src/App/Middleware/Topic/TopicListAvailableMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -topicPoolService->findAvailable(); - $topics = new TopicListDto($topics); - - return $handler->handle($request->withAttribute(TopicListDto::class, $topics)); - } -} diff --git a/src/App/Middleware/Topic/TopicListMiddleware.php b/src/App/Middleware/Topic/TopicListMiddleware.php deleted file mode 100644 index 3d647d38..00000000 --- a/src/App/Middleware/Topic/TopicListMiddleware.php +++ /dev/null @@ -1,24 +0,0 @@ -topicPoolService->findAll(); - - return $handler->handle($request->withAttribute('topics', $topics)); - } -} diff --git a/src/App/Repository/EventRepository.php b/src/App/Repository/EventRepository.php deleted file mode 100644 index 2c0a69dc..00000000 --- a/src/App/Repository/EventRepository.php +++ /dev/null @@ -1,21 +0,0 @@ -topic); - $text = sprintf( - "Check the new topic and approve it if necessary\r\n\r\nTitle:\r\n%s\r\n\r\nDescription:\r\n%s\r\n\r\nLink:\r\n%s/topic/%s", - $topic->topic, - $topic->description, - $this->projectUri, - $topic->uuid, - ); - - $email = (new Email()) - ->from($this->mailSender) - ->to('hackathon@exdrals.de') - ->subject($subject) - ->text($text); - - $this->mailer->send($email); - } -} diff --git a/src/App/Service/EMail/TopicCreateEMailServiceFactory.php b/src/App/Service/EMail/TopicCreateEMailServiceFactory.php deleted file mode 100644 index b231a896..00000000 --- a/src/App/Service/EMail/TopicCreateEMailServiceFactory.php +++ /dev/null @@ -1,20 +0,0 @@ -get(Mailer::class); - - $mailSender = $container->get('config')['mailer']['from']; - $projectUri = $container->get('config')['project']['uri']; - - return new TopicCreateEMailService($mailer, $mailSender, $projectUri); - } -} diff --git a/src/App/Service/Event/EventService.php b/src/App/Service/Event/EventService.php deleted file mode 100644 index cd685c3c..00000000 --- a/src/App/Service/Event/EventService.php +++ /dev/null @@ -1,94 +0,0 @@ -isEventExist($event->title)) { - return false; - } - - $this->repository->insert($event); - - return true; - } - - public function findById(int $id): Event - { - $event = $this->repository->findById($id); - - if ($event === []) { - throw new InvalidArgumentException( - sprintf('Could not find Event with id %d', $id), - HTTP::STATUS_NOT_FOUND - ); - } - - return $this->hydrator->hydrate($event, Event::class); - } - - public function findByTitle(string $topic): ?Event - { - $event = $this->repository->findByTitle($topic); - - return $this->hydrator->hydrate($event, Event::class); - } - - /** - * @return array - */ - public function findAll(string $order = 'startedAt', string $sort = 'DESC'): array - { - $events = $this->repository->findAll($order, $sort); - - return $this->hydrator->hydrateList($events, Event::class); - } - - /** - * @return array|null - */ - public function findAllActive(): ?array - { - $events = $this->repository->findAllActive(); - - return $this->hydrator->hydrateList($events, Event::class); - } - - /** - * @return array|null - */ - public function findAllNotActive(): ?array - { - $events = $this->repository->findAllInactive(); - - return $this->hydrator->hydrateList($events, Event::class); - } - - public function isRatingCompleted(int $id): bool - { - $event = $this->findById($id); - - return $event->ratingCompleted; - } - - public function isEventExist(string $topic): bool - { - $event = $this->findByTitle($topic); - - return $event instanceof Event; - } -} diff --git a/src/App/Service/Event/EventServiceFactory.php b/src/App/Service/Event/EventServiceFactory.php deleted file mode 100644 index 2efb2f32..00000000 --- a/src/App/Service/Event/EventServiceFactory.php +++ /dev/null @@ -1,48 +0,0 @@ -get(EventRepository::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - /** @var DateTimeFormatterStrategy $strategy */ - $strategy = $container->get(DateTimeFormatterStrategy::class); - - $hydrator->addStrategy( - 'createdAt', - $strategy, - ); - - $hydrator->addStrategy( - 'startedAt', - $strategy, - ); - - $hydrator->addStrategy( - 'status', - new BackedEnumStrategy(EventStatus::class) - ); - - $hydrator->addStrategy( - 'uuid', - new UuidStrategy() - ); - - return new EventService($repository, $hydrator); - } -} diff --git a/src/App/Service/Participant/ParticipantService.php b/src/App/Service/Participant/ParticipantService.php deleted file mode 100644 index f1ce23d1..00000000 --- a/src/App/Service/Participant/ParticipantService.php +++ /dev/null @@ -1,77 +0,0 @@ -isParticipantInEventExist($participant->userId, $participant->eventId)) { - return false; - } - - return $this->repository->insert($participant) !== 0; - } - - public function remove(Participant $participant): bool - { - return (int)$this->repository->remove($participant) !== 0; - } - - public function findById(int $id): Participant - { - $participant = $this->repository->findById($id); - - if ($participant === []) { - throw new InvalidArgumentException( - sprintf('Could not find Participant with id %d', $id), - HTTP::STATUS_NOT_FOUND - ); - } - - return $this->hydrator->hydrate($participant, Participant::class); - } - - public function findByUserId(int $userId): ?Participant - { - $participant = $this->repository->findByUserId($userId); - - return $this->hydrator->hydrate($participant, Participant::class); - } - - public function findByUserIdAndEventId(int $userId, int $eventId): ?Participant - { - $participant = $this->repository->findUserForAnEvent($userId, $eventId); - - return $this->hydrator->hydrate($participant, Participant::class); - } - - /** - * @return array|null - */ - public function findActiveParticipantByEvent(int $eventId): ?array - { - $participants = $this->repository->findActiveParticipantsByEvent($eventId); - - return $this->hydrator->hydrateList($participants, Participant::class); - } - - private function isParticipantInEventExist(int $userId, int $eventId): bool - { - $participant = $this->findByUserIdAndEventId($userId, $eventId); - - return $participant instanceof Participant; - } -} diff --git a/src/App/Service/Participant/ParticipantServiceFactory.php b/src/App/Service/Participant/ParticipantServiceFactory.php deleted file mode 100644 index eb8e157a..00000000 --- a/src/App/Service/Participant/ParticipantServiceFactory.php +++ /dev/null @@ -1,30 +0,0 @@ -get(ParticipantRepository::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - /** @var DateTimeFormatterStrategy $strategy */ - $strategy = $container->get(DateTimeFormatterStrategy::class); - - $hydrator->addStrategy( - 'requestTime', - $strategy, - ); - - return new ParticipantService($repository, $hydrator); - } -} diff --git a/src/App/Service/Project/ProjectService.php b/src/App/Service/Project/ProjectService.php deleted file mode 100644 index f340cb6d..00000000 --- a/src/App/Service/Project/ProjectService.php +++ /dev/null @@ -1,41 +0,0 @@ -repository->findById($id); - - if ($project === []) { - throw new InvalidArgumentException( - sprintf('Project with id %d not found', $id), - HTTP::STATUS_NOT_FOUND - ); - } - - return $this->hydrator->hydrate($project, Project::class); - } - - public function findByParticipantId(int $id): ?Project - { - $project = $this->repository->findByParticipantId($id); - - return $this->hydrator->hydrate($project, Project::class); - } -} diff --git a/src/App/Service/Project/ProjectServiceFactory.php b/src/App/Service/Project/ProjectServiceFactory.php deleted file mode 100644 index 784ded97..00000000 --- a/src/App/Service/Project/ProjectServiceFactory.php +++ /dev/null @@ -1,36 +0,0 @@ -get(ProjectRepository::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - /** @var DateTimeFormatterStrategy $strategy */ - $strategy = $container->get(DateTimeFormatterStrategy::class); - - $hydrator->addStrategy( - 'createdAt', - $strategy, - ); - - $hydrator->addStrategy( - 'uuid', - new UuidStrategy() - ); - - return new ProjectService($repository, $hydrator); - } -} diff --git a/src/App/Service/Topic/TopicPoolService.php b/src/App/Service/Topic/TopicPoolService.php deleted file mode 100644 index 37f907e0..00000000 --- a/src/App/Service/Topic/TopicPoolService.php +++ /dev/null @@ -1,112 +0,0 @@ -repository->insert($topic); - } catch (PDOException $e) { - /** TODO: Change to Logger */ - throw new HttpException(['PDO' => $e->getMessage()], HTTP::STATUS_INTERNAL_SERVER_ERROR); - } - - return $this; - } - - public function updateEventId(Topic $topic): self - { - $this->repository->assignAnEvent($topic->id, $topic->eventId); - - return $this; - } - - public function findById(int $id): Topic - { - $event = $this->repository->findById($id); - - if ($event === []) { - throw new InvalidArgumentException( - sprintf('Could not find Event with id %d', $id), - HTTP::STATUS_NOT_FOUND - ); - } - - return $this->hydrator->hydrate($event, Topic::class); - } - - public function findByEventId(int $id): ?Topic - { - $topic = $this->repository->findByEventId($id); - - return $this->hydrator->hydrate($topic, Topic::class); - } - - /** - * @return array|null - */ - public function findAvailable(): ?array - { - $topics = $this->repository->findAvailable(); - - return $this->hydrator->hydrateList($topics, Topic::class); - } - - /** - * @return array|null - */ - public function findAll(): ?array - { - $topics = $this->repository->findAll(); - - return $this->hydrator->hydrateList($topics, Topic::class); - } - - public function isTopic(string $topic): bool - { - $topic = $this->findByTopic($topic); - - return $topic instanceof Topic; - } - - public function findByTopic(string $topic): ?Topic - { - $topic = $this->repository->findByTopic($topic); - - return $this->hydrator->hydrate($topic, Topic::class); - } - - #[ArrayShape([ - 'allTopic' => 'int', - 'allAcceptedTopic' => 'int', - 'allSelectionAvailableTopic' => 'int', - ])] - public function getEntriesStatistic(): array - { - return [ - 'allTopic' => $this->repository->getCountTopic(), - 'allAcceptedTopic' => $this->repository->getCountTopicAccepted(), - 'allSelectionAvailableTopic' => $this->repository->getCountTopicSelectionAvailable(), - ]; - } -} diff --git a/src/App/Service/Topic/TopicPoolServiceFactory.php b/src/App/Service/Topic/TopicPoolServiceFactory.php deleted file mode 100644 index f1d579a2..00000000 --- a/src/App/Service/Topic/TopicPoolServiceFactory.php +++ /dev/null @@ -1,27 +0,0 @@ -get(TopicPoolRepository::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - $hydrator->addStrategy( - 'uuid', - new UuidStrategy() - ); - - return new TopicPoolService($repository, $hydrator); - } -} diff --git a/src/App/Service/User/UserService.php b/src/App/Service/User/UserService.php deleted file mode 100644 index 9cff7f00..00000000 --- a/src/App/Service/User/UserService.php +++ /dev/null @@ -1,95 +0,0 @@ -repository->updateLastUserActionTime($user->id, new DateTime()); - - return $user; - } - - public function create(User $user, UserRole $role = UserRole::USER): int - { - if ($this->isEmailExist($user->email)) { - return throw new DuplicateEntryException('User', $user->uuid->getHex()->toString()); - } - - $hashedPassword = password_hash($user->password, PASSWORD_BCRYPT); - - $user = $user->with( - password: $hashedPassword, - role: $role, - uuid: $this->uuid, - ); - - return $this->repository->insert($user); - } - - public function update(User $user): bool - { - return (bool)$this->repository->update($user); - } - - // @phpstan-ignore-next-line - private function isUserExist(string $userName): bool - { - $user = $this->findByName($userName); - - return $user instanceof User; - } - - private function isEmailExist(string $email): bool - { - $user = $this->findByEMail($email); - - return ($user instanceof User); - } - - public function findById(int $id): ?User - { - $user = $this->repository->findById($id); - - return $user !== [] ? $this->hydrator->hydrate($user, User::class) : null; - } - - public function findByUuid(string $uuid): ?User - { - $user = $this->repository->findByUuid($uuid); - - return $user !== [] ? $this->hydrator->hydrate($user, User::class) : null; - } - - public function findByName(string $name): ?User - { - $user = $this->repository->findByName($name); - - return $user !== [] ? $this->hydrator->hydrate($user, User::class) : null; - } - - public function findByEMail(string $email): ?User - { - $user = $this->repository->findByEMail($email); - - return $user !== [] ? $this->hydrator->hydrate($user, User::class) : null; - } -} diff --git a/src/App/Service/User/UserServiceFactory.php b/src/App/Service/User/UserServiceFactory.php deleted file mode 100644 index 21b3e213..00000000 --- a/src/App/Service/User/UserServiceFactory.php +++ /dev/null @@ -1,52 +0,0 @@ -get(UserRepository::class); - - /** @var ReflectionHydrator $hydrator */ - $hydrator = clone $container->get(ReflectionHydrator::class); - - /** @var DateTimeImmutableFormatterStrategy $dateTimeFormatterStrategy */ - $dateTimeFormatterStrategy = $container->get(DateTimeImmutableFormatterStrategy::class); - - /** @var Uuid $uuid */ - $uuid = $container->get(Uuid::class); - - $hydrator->addStrategy( - 'registrationAt', - $dateTimeFormatterStrategy, - ); - - $hydrator->addStrategy( - 'lastActionAt', - $dateTimeFormatterStrategy, - ); - - $hydrator->addStrategy( - 'role', - new BackedEnumStrategy(UserRole::class) - ); - - $hydrator->addStrategy( - 'uuid', - new UuidStrategy() - ); - - return new UserService($repository, $hydrator, $uuid); - } -} diff --git a/src/App/Table/EventTable.php b/src/App/Table/EventTable.php deleted file mode 100644 index d789fec6..00000000 --- a/src/App/Table/EventTable.php +++ /dev/null @@ -1,75 +0,0 @@ - $event->uuid->getHex()->toString(), - 'userId' => $event->userId, - 'title' => $event->title, - 'description' => $event->description, - 'eventText' => $event->eventText, - 'startedAt' => $event->startedAt->format('Y-m-d H:i'), - 'duration' => $event->duration, - ]; - - $insertStatus = $this->query->insertInto($this->table, $values)->execute(); - - if (!$insertStatus) { - throw new DuplicateEntryException('Event', $event->uuid->getHex()->toString()); - } - - return (int)$insertStatus; - } - - public function findAll(string $order = 'startedAt', string $sort = 'DESC'): array - { - $result = $this->query->from($this->table)->orderBy($order . ' ' . $sort)->fetchAll(); - - return $result ?: []; - } - - public function findByTitle(string $title): array - { - $result = $this->query->from($this->table) - ->where('title', $title) - ->fetch(); - - return $result ?: []; - } - - public function findAllActive(): array - { - $result = $this->query->from($this->table) - ->where('active', 1) - ->orderBy('startedAt DESC') - ->fetchAll(); - - return $result ?: []; - } - - public function findAllInactive(): array - { - $result = $this->query->from($this->table) - ->where('active', 0) - ->orderBy('startedAt DESC') - ->fetchAll(); - - return $result ?: []; - } - - public function remove(Event $event): bool - { - return $this->query->deleteFrom($this->table) - ->where('id', $event->id) - ->execute(); - } -} diff --git a/src/App/Table/ParticipantTable.php b/src/App/Table/ParticipantTable.php deleted file mode 100644 index 65a8532f..00000000 --- a/src/App/Table/ParticipantTable.php +++ /dev/null @@ -1,69 +0,0 @@ - $participant->userId, - 'eventId' => $participant->eventId, - ]; - - $insertStatus = $this->query->insertInto($this->table, $values) - ->onDuplicateKeyUpdate(['subscribed' => 1]) - ->execute(); - - if (!$insertStatus) { - throw new DuplicateEntryException('Participant', (string)$participant->id); - } - - return (int)$insertStatus; - } - - public function remove(Participant $participant): bool - { - return (bool)$this->query->update($this->table) - ->set(['subscribed' => 0]) - ->where('userId', $participant->userId) - ->where('eventId', $participant->eventId) - ->execute(); - } - - public function findByUserId(int $userId): array - { - $result = $this->query->from($this->table) - ->where('userId', $userId) - ->fetch(); - - return $result ?: []; - } - - public function findUserForAnEvent(int $userId, int $eventId): array - { - $result = $this->query->from($this->table) - ->where('userId', $userId) - ->where('eventId', $eventId) - ->where('subscribed', 1) - ->fetch(); - - return $result ?: []; - } - - public function findActiveParticipantsByEvent(int $eventId): array - { - $result = $this->query->from($this->table) - ->where('eventId', $eventId) - ->where('subscribed', 1) - ->where('disqualified', 0) - ->fetchAll(); - - return $result ?: []; - } -} diff --git a/src/App/Table/ProjectTable.php b/src/App/Table/ProjectTable.php deleted file mode 100644 index f6ecdc73..00000000 --- a/src/App/Table/ProjectTable.php +++ /dev/null @@ -1,16 +0,0 @@ -query->from($this->table) - ->where('participantId', $id) - ->fetch(); - } -} diff --git a/src/App/Table/TopicPoolTable.php b/src/App/Table/TopicPoolTable.php deleted file mode 100644 index 4189adb1..00000000 --- a/src/App/Table/TopicPoolTable.php +++ /dev/null @@ -1,89 +0,0 @@ - $topic->uuid->getHex()->toString(), - 'topic' => $topic->topic, - 'description' => $topic->description, - ]; - - $this->query->insertInto($this->table, $values)->execute(); - - return $this; - } - - public function findByUuId(string $uuid): bool|array - { - return $this->query->from($this->table) - ->where('uuid', $uuid) - ->fetch(); - } - - public function assignAnEvent(int $topicId, int $eventId): self - { - $values = [ - 'eventId' => $eventId, - ]; - $this->query->update($this->table, $values, $topicId)->execute(); - - return $this; - } - - public function findByEventId(int $eventId): bool|array - { - return $this->query->from($this->table) - ->where('eventId', $eventId) - ->fetch(); - } - - public function findAvailable(): bool|array - { - return $this->query->from($this->table) - ->where('eventId', null) - ->where('accepted', 1) - ->fetchAll(); - } - - public function findByTopic(string $topic): bool|array - { - return $this->query->from($this->table) - ->where('topic', $topic) - ->fetch(); - } - - public function getCountTopic(): int - { - $data = $this->query->from($this->table) - ->select('COUNT(id) AS countTopic') - ->fetch(); - return $data['countTopic']; - } - - public function getCountTopicAccepted(): int - { - $data = $this->query->from($this->table) - ->select('COUNT(id) AS countTopic') - ->where('accepted', 1) - ->fetch(); - return $data['countTopic']; - } - - public function getCountTopicSelectionAvailable(): int - { - $data = $this->query->from($this->table) - ->select('COUNT(id) AS countTopic') - ->where('accepted', 1) - ->where('eventId', null) - ->fetch(); - return $data['countTopic']; - } -} diff --git a/src/App/Validator/EventCreateValidator.php b/src/App/Validator/EventCreateValidator.php deleted file mode 100644 index e375eb59..00000000 --- a/src/App/Validator/EventCreateValidator.php +++ /dev/null @@ -1,27 +0,0 @@ -add($this->eventTitleInput); - $this->add($this->descriptionInput); - $this->add($this->eventTextInput); - $this->add($this->startTimeInput); - $this->add($this->durationInput); - } -} diff --git a/src/App/Validator/Input/Event/EventDescriptionInput.php b/src/App/Validator/Input/Event/EventDescriptionInput.php deleted file mode 100644 index 1fa4114c..00000000 --- a/src/App/Validator/Input/Event/EventDescriptionInput.php +++ /dev/null @@ -1,27 +0,0 @@ -setRequired(false); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 10, - 'max' => 255, - 'inclusive' => true, - ] - ); - } -} diff --git a/src/App/Validator/Input/Event/EventDurationInput.php b/src/App/Validator/Input/Event/EventDurationInput.php deleted file mode 100644 index 689f0fad..00000000 --- a/src/App/Validator/Input/Event/EventDurationInput.php +++ /dev/null @@ -1,26 +0,0 @@ -setRequired(true); - - $this->getValidatorChain()->attachByName( - 'GreaterThan', - [ - 'min' => 1, - 'max' => 356, - 'inclusive' => true, - ], - ); - - $this->getFilterChain()->attachByName('ToInt'); - } -} diff --git a/src/App/Validator/Input/Event/EventStartTimeInput.php b/src/App/Validator/Input/Event/EventStartTimeInput.php deleted file mode 100644 index 5d7f8b52..00000000 --- a/src/App/Validator/Input/Event/EventStartTimeInput.php +++ /dev/null @@ -1,27 +0,0 @@ -setRequired(true); - $this->setBreakOnFailure(true); - - $this->getValidatorChain()->attach( - new Date([ - 'format' => 'Y-m-d H:i:s', - 'strict' => true, - ]), - ); - - $this->getValidatorChain()->attach(new DateLessNow()); - } -} diff --git a/src/App/Validator/Input/Event/EventTextInput.php b/src/App/Validator/Input/Event/EventTextInput.php deleted file mode 100644 index d8f70f34..00000000 --- a/src/App/Validator/Input/Event/EventTextInput.php +++ /dev/null @@ -1,27 +0,0 @@ -setRequired(false); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 50, - 'max' => 8192, - 'inclusive' => true, - ] - ); - } -} diff --git a/src/App/Validator/Input/Event/EventTitleInput.php b/src/App/Validator/Input/Event/EventTitleInput.php deleted file mode 100644 index 5dbdeded..00000000 --- a/src/App/Validator/Input/Event/EventTitleInput.php +++ /dev/null @@ -1,27 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 3, - 'max' => 50, - 'inclusive' => true, - ] - ); - } -} diff --git a/src/App/Validator/Input/Topic/TopicDescriptionInput.php b/src/App/Validator/Input/Topic/TopicDescriptionInput.php deleted file mode 100644 index d7a16a79..00000000 --- a/src/App/Validator/Input/Topic/TopicDescriptionInput.php +++ /dev/null @@ -1,26 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 20, - 'max' => 8096, - ] - ); - } -} diff --git a/src/App/Validator/Input/Topic/TopicInput.php b/src/App/Validator/Input/Topic/TopicInput.php deleted file mode 100644 index e2591493..00000000 --- a/src/App/Validator/Input/Topic/TopicInput.php +++ /dev/null @@ -1,26 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 3, - 'max' => 50, - ] - ); - } -} diff --git a/src/App/Validator/TopicCreateValidator.php b/src/App/Validator/TopicCreateValidator.php deleted file mode 100644 index 1d8516fb..00000000 --- a/src/App/Validator/TopicCreateValidator.php +++ /dev/null @@ -1,18 +0,0 @@ -add($this->topicInput); - $this->add($this->topicDescriptionInput); - } -} diff --git a/src/Core/ConfigProvider.php b/src/Core/ConfigProvider.php deleted file mode 100644 index 264b8db6..00000000 --- a/src/Core/ConfigProvider.php +++ /dev/null @@ -1,156 +0,0 @@ - $this->getDependencies(), - ConfigAbstractFactory::class => $this->getAbstractFactoryConfig(), - ]; - } - - public function getDependencies(): array - { - return [ - 'invokables' => [ - ReflectionHydrator::class, - - Validator\Input\EmailInput::class, - Validator\Input\PasswordInput::class, - Validator\Input\UsernameInput::class, - ], - 'aliases' => [ - UserRepository::class => UserTable::class, - ], - 'factories' => [ - ClassMethodsHydrator::class => ClassMethodsHydratorFactory::class, - DateTimeFormatterStrategy::class => DateTimeFormatterStrategyFactory::class, - DateTimeImmutableFormatterStrategy::class => DateTimeImmutableFormatterStrategyFactory::class, - - Handler\LoginHandler::class => LoginHandlerFactory::class, - Handler\UserHandler::class => ConfigAbstractFactory::class, - Handler\UserPasswordForgottonHandler::class => UserPasswordForgottonHandlerFactory::class, - - LoggingErrorListener::class => LoggingErrorListenerFactory::class, - - Middleware\ApiAccessMiddleware::class => ConfigAbstractFactory::class, - Middleware\JwtAuthenticationMiddleware::class => JwtAuthenticationMiddlewareFactory::class, - Middleware\LoginAuthenticationMiddleware::class => ConfigAbstractFactory::class, - Middleware\LoginValidationMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserPasswordChangeMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserPasswordChangeValidatorMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserPasswordForgottenMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserPasswordForgottenValidator::class => ConfigAbstractFactory::class, - Middleware\UserPasswordVerifyTokenMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserRegisterMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserRegisterValidationMiddleware::class => ConfigAbstractFactory::class, - Middleware\UpdateLastUserActionTimeMiddleware::class => ConfigAbstractFactory::class, - Middleware\UserMiddleware::class => ConfigAbstractFactory::class, - - NullableStrategy::class => NullableStrategyFactory::class, - - Service\ApiAccessService::class => ApiAccessServiceFactory::class, - - Table\UserTable::class => ConfigAbstractFactory::class, - - Validator\LoginValidator::class => ConfigAbstractFactory::class, - Validator\PasswordForgottenEmailValidator::class => ConfigAbstractFactory::class, - Validator\RegisterValidator::class => ConfigAbstractFactory::class, - Validator\UserPasswordChangeValidator::class => ConfigAbstractFactory::class, - ], - ]; - } - - public function getAbstractFactoryConfig(): array - { - return [ - Handler\UserHandler::class => [ - ClassMethodsHydrator::class, - ], - Middleware\UserRegisterMiddleware::class => [ - UserService::class, - ReflectionHydrator::class, - ], - Middleware\ApiAccessMiddleware::class => [ - ApiAccessService::class, - ], - Middleware\UserPasswordForgottenMiddleware::class => [ - UserService::class, - TokenService::class, - ], - Middleware\UserPasswordChangeMiddleware::class => [ - UserService::class, - ], - Middleware\UserPasswordChangeValidatorMiddleware::class => [ - Validator\UserPasswordChangeValidator::class, - ], - Middleware\UserPasswordForgottenValidator::class => [ - Validator\PasswordForgottenEmailValidator::class, - ], - Middleware\UserPasswordVerifyTokenMiddleware::class => [ - UserService::class, - ], - Middleware\UserRegisterValidationMiddleware::class => [ - Validator\RegisterValidator::class, - ], - Middleware\LoginAuthenticationMiddleware::class => [ - UserService::class, - LoginAuthenticationService::class, - ], - Middleware\LoginValidationMiddleware::class => [ - Validator\LoginValidator::class, - ], - Middleware\UpdateLastUserActionTimeMiddleware::class => [ - UserService::class, - ], - Middleware\UserMiddleware::class => [ - UserService::class, - ], - - Table\UserTable::class => [ - Query::class, - ], - - Validator\LoginValidator::class => [ - Validator\Input\UsernameInput::class, - Validator\Input\PasswordInput::class, - ], - Validator\PasswordForgottenEmailValidator::class => [ - Validator\Input\EmailInput::class, - ], - Validator\RegisterValidator::class => [ - Validator\Input\EmailInput::class, - ], - Validator\UserPasswordChangeValidator::class => [ - Validator\Input\PasswordInput::class, - ], - ]; - } -} diff --git a/src/Core/Dto/ApiMeDto.php b/src/Core/Dto/ApiMeDto.php deleted file mode 100644 index 21e1747f..00000000 --- a/src/Core/Dto/ApiMeDto.php +++ /dev/null @@ -1,38 +0,0 @@ -uuid = $user->uuid->getHex()->toString(); - $this->name = $user->name; - $this->role = $user->role->getRoleName(); - } -} diff --git a/src/Core/Dto/HttpStatusCodeMessage.php b/src/Core/Dto/HttpStatusCodeMessage.php deleted file mode 100644 index 781c960f..00000000 --- a/src/Core/Dto/HttpStatusCodeMessage.php +++ /dev/null @@ -1,35 +0,0 @@ -status = $status; - $this->message = $message; - $this->data = $data; - } -} diff --git a/src/Core/Dto/SimpleMessageDto.php b/src/Core/Dto/SimpleMessageDto.php deleted file mode 100644 index 0ff6ba79..00000000 --- a/src/Core/Dto/SimpleMessageDto.php +++ /dev/null @@ -1,20 +0,0 @@ -message = $message; - } -} diff --git a/src/Core/Dto/User/LoginTokenDto.php b/src/Core/Dto/User/LoginTokenDto.php deleted file mode 100644 index 76034da5..00000000 --- a/src/Core/Dto/User/LoginTokenDto.php +++ /dev/null @@ -1,20 +0,0 @@ -token = $token; - } -} diff --git a/src/Core/Dto/User/LoginValidationFailureMessageDto.php b/src/Core/Dto/User/LoginValidationFailureMessageDto.php deleted file mode 100644 index 5e2868c6..00000000 --- a/src/Core/Dto/User/LoginValidationFailureMessageDto.php +++ /dev/null @@ -1,36 +0,0 @@ -message = $message; - $this->username = $data['username'] ?? null; - $this->password = $data['password'] ?? null; - } -} diff --git a/src/Core/Dto/User/UserLogInDataDto.php b/src/Core/Dto/User/UserLogInDataDto.php deleted file mode 100644 index e5c8b902..00000000 --- a/src/Core/Dto/User/UserLogInDataDto.php +++ /dev/null @@ -1,27 +0,0 @@ -username = $username; - $this->password = $password; - } -} diff --git a/src/Core/Entity/User.php b/src/Core/Entity/User.php deleted file mode 100644 index ff23052a..00000000 --- a/src/Core/Entity/User.php +++ /dev/null @@ -1,29 +0,0 @@ -jsonMessage = $jsonMessage; - parent::__construct('', $code, $previous); - } - - public function getJSonMessage(): array - { - return $this->jsonMessage; - } -} diff --git a/src/Core/Exception/HttpExceptionMiddleware.php b/src/Core/Exception/HttpExceptionMiddleware.php deleted file mode 100644 index 33f814df..00000000 --- a/src/Core/Exception/HttpExceptionMiddleware.php +++ /dev/null @@ -1,21 +0,0 @@ -handle($request); - } catch (HttpException $e) { - return new JsonResponse($e->getJSonMessage(), $e->getCode()); - } - } -} diff --git a/src/Core/Exception/InvalidArgumentHttpException.php b/src/Core/Exception/InvalidArgumentHttpException.php deleted file mode 100644 index 73c6d8b6..00000000 --- a/src/Core/Exception/InvalidArgumentHttpException.php +++ /dev/null @@ -1,19 +0,0 @@ -get('config'); - $settings = $settings['database']; - - $dsn = $settings['driver'] === 'mysql' - ? 'mysql:dbname=' . $settings['dbname'] . ';host=' . $settings['host'] . ';port=' . $settings['port'] - . ';charset=utf8mb4' - : 'sqlite:' . $settings['host']; - $user = $settings['user']; - $password = $settings['password']; - $options = [ - PDO::ATTR_ERRMODE => $settings['error'], - PDO::ATTR_EMULATE_PREPARES => false, - ]; - - return new PDO($dsn, $user, $password, $options); - } -} diff --git a/src/Core/Factory/LoggerFactory.php b/src/Core/Factory/LoggerFactory.php deleted file mode 100644 index 35978e94..00000000 --- a/src/Core/Factory/LoggerFactory.php +++ /dev/null @@ -1,53 +0,0 @@ -get('config')['logger']['path']; - - $date = (new DateTime())->format('Y-m-d'); - $path = rtrim($path, '/') . '/' . $date . '/'; - - if (!is_dir($path)) { - mkdir($path, 0775); - } - - $formatter = new Simple(Simple::DEFAULT_FORMAT, 'Y-m-d H:i:s'); - - $defaultWriter = new Stream($path . 'default.log'); - $defaultWriter->setFormatter($formatter); - - $errorWriter = new Stream($path . 'error.log'); - $errorFilter = new Priority(Logger::ERR); - $errorWriter->addFilter($errorFilter); - $errorWriter->setFormatter($formatter); - - $logger = new Logger(); - - $logger->addWriter($defaultWriter); - $logger->addWriter($errorWriter); - - $logger->addProcessor(new BaseInformationProcessor()); - $logger->addProcessor(new PsrPlaceholder()); - - return new PsrLoggerAdapter($logger); - } -} diff --git a/src/Core/Factory/MailFactory.php b/src/Core/Factory/MailFactory.php deleted file mode 100644 index ce2fde8a..00000000 --- a/src/Core/Factory/MailFactory.php +++ /dev/null @@ -1,18 +0,0 @@ -get('config'); - - $settings = $settings['mailer']; - return new Mailer(Transport::fromDsn($settings['dsn'])); - } -} diff --git a/src/Core/Factory/QueryFactory.php b/src/Core/Factory/QueryFactory.php deleted file mode 100644 index 4b88cd3b..00000000 --- a/src/Core/Factory/QueryFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get(PDO::class)); - } -} diff --git a/src/Core/Factory/UuidFactory.php b/src/Core/Factory/UuidFactory.php deleted file mode 100644 index 6d926697..00000000 --- a/src/Core/Factory/UuidFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - - $token = $this->generateToken( - $user->uuid->getHex()->toString(), - $this->tokenSecret, - $this->tokenDuration, - ); - - return new JsonResponse(new LoginTokenDto($token), HTTP::STATUS_OK); - } -} diff --git a/src/Core/Handler/LoginHandlerFactory.php b/src/Core/Handler/LoginHandlerFactory.php deleted file mode 100644 index 05b90f7f..00000000 --- a/src/Core/Handler/LoginHandlerFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get('config')['token']['auth']; - - return new LoginHandler($token['secret'], (int)$token['duration']); - } -} diff --git a/src/Core/Handler/LogoutHandler.php b/src/Core/Handler/LogoutHandler.php deleted file mode 100644 index c2e37e24..00000000 --- a/src/Core/Handler/LogoutHandler.php +++ /dev/null @@ -1,32 +0,0 @@ -getAttribute(User::class); - - $data = $this->hydrator->extract($user); - unset($data['id'], $data['password'], $data['email']); - - return new JsonResponse($data, HTTP::STATUS_OK); - } -} diff --git a/src/Core/Handler/UserPasswordChangeHandler.php b/src/Core/Handler/UserPasswordChangeHandler.php deleted file mode 100644 index 47a8cf03..00000000 --- a/src/Core/Handler/UserPasswordChangeHandler.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Password was changed'], HTTP::STATUS_OK); - } -} diff --git a/src/Core/Handler/UserPasswordForgottonHandler.php b/src/Core/Handler/UserPasswordForgottonHandler.php deleted file mode 100644 index 0b2d2e5d..00000000 --- a/src/Core/Handler/UserPasswordForgottonHandler.php +++ /dev/null @@ -1,48 +0,0 @@ -getAttribute(User::class); - - $email = (new Email()) - ->from($this->mailSender) - ->to($user->email) - ->subject('Password forgotton') - ->text( - sprintf( - 'Follow the link to change your password: %s/user/password/%s', - $this->projectUri, - $user->name, /** ToDo implements Token support */ - ) - ); - - $this->mailer->send($email); - - return new JsonResponse(['message' => 'Email was created and sent'], HTTP::STATUS_OK); - } -} diff --git a/src/Core/Handler/UserPasswordForgottonHandlerFactory.php b/src/Core/Handler/UserPasswordForgottonHandlerFactory.php deleted file mode 100644 index b19bb54f..00000000 --- a/src/Core/Handler/UserPasswordForgottonHandlerFactory.php +++ /dev/null @@ -1,18 +0,0 @@ -get(Mailer::class); - $mailSender = $container->get('config')['mailer']['from']; - $projectUri = $container->get('config')['project']['uri']; - - return new UserPasswordForgottonHandler($mailer, $mailSender, $projectUri); - } -} diff --git a/src/Core/Handler/UserPasswordVerifyTokenHandler.php b/src/Core/Handler/UserPasswordVerifyTokenHandler.php deleted file mode 100644 index a9c0b05f..00000000 --- a/src/Core/Handler/UserPasswordVerifyTokenHandler.php +++ /dev/null @@ -1,17 +0,0 @@ - 'Token verification successful'], HTTP::STATUS_OK); - } -} diff --git a/src/Core/Handler/UserRegisterSubmitHandler.php b/src/Core/Handler/UserRegisterSubmitHandler.php deleted file mode 100644 index 148ad2ea..00000000 --- a/src/Core/Handler/UserRegisterSubmitHandler.php +++ /dev/null @@ -1,33 +0,0 @@ - 'Account was created'], HTTP::STATUS_OK); - } -} diff --git a/src/Core/Hydrator/ClassMethodsHydratorFactory.php b/src/Core/Hydrator/ClassMethodsHydratorFactory.php deleted file mode 100644 index b19b4cd7..00000000 --- a/src/Core/Hydrator/ClassMethodsHydratorFactory.php +++ /dev/null @@ -1,14 +0,0 @@ -get(DateTimeFormatterStrategy::class); - - return new NullableStrategy($dateTimeFormatterStrategy); - } -} diff --git a/src/Core/Hydrator/ReflectionHydrator.php b/src/Core/Hydrator/ReflectionHydrator.php deleted file mode 100644 index db839053..00000000 --- a/src/Core/Hydrator/ReflectionHydrator.php +++ /dev/null @@ -1,49 +0,0 @@ -hydrate($data, $className); - } - } - - return $hydratedList; - } - - public function hydrate(bool|array $data, string|object $object): ?object - { - if (!$data) { - return null; - } - - if (!is_object($object)) { - $object = new ReflectionClass($object); - $object = $object->newInstanceWithoutConstructor(); - } - - return parent::hydrate($data, $object); - } - - public function extractList(array $data): array - { - $extractedList = []; - - foreach ($data as $value) { - if (is_object($value)) { - $extractedList[] = $this->extract($value); - } - } - return $extractedList; - } -} diff --git a/src/Core/Hydrator/Strategy/UuidStrategy.php b/src/Core/Hydrator/Strategy/UuidStrategy.php deleted file mode 100644 index 0bd5a9a9..00000000 --- a/src/Core/Hydrator/Strategy/UuidStrategy.php +++ /dev/null @@ -1,47 +0,0 @@ -getHex()->toString(); - } - - public function hydrate($value, ?array $data) - { - if ($value instanceof UuidInterface) { - return $value; - } - - if (!is_string($value)) { - throw new InvalidArgumentException( - sprintf( - 'Value must be string; %s provided', - get_debug_type($value) - ) - ); - } - - return Uuid::fromString($value); - } -} diff --git a/src/Core/Listener/LoggingErrorListener.php b/src/Core/Listener/LoggingErrorListener.php deleted file mode 100644 index 2c4d3148..00000000 --- a/src/Core/Listener/LoggingErrorListener.php +++ /dev/null @@ -1,32 +0,0 @@ -getServerParams(); - - $this->logger->error( - '{Host} Code: {Code} - Message: {Message}', - [ - 'user-agent' => $serverParams['HTTP_USER_AGENT'], - 'Code' => $error->getCode(), - 'Message' => $error->getMessage(), - ], - ); - } -} diff --git a/src/Core/Listener/LoggingErrorListenerDelegatorFactory.php b/src/Core/Listener/LoggingErrorListenerDelegatorFactory.php deleted file mode 100644 index 3fc7da4b..00000000 --- a/src/Core/Listener/LoggingErrorListenerDelegatorFactory.php +++ /dev/null @@ -1,17 +0,0 @@ -get(LoggingErrorListener::class); - $errorHandler = $callback(); - $errorHandler->attachListener($listener); - return $errorHandler; - } -} diff --git a/src/Core/Listener/LoggingErrorListenerFactory.php b/src/Core/Listener/LoggingErrorListenerFactory.php deleted file mode 100644 index 2e56cf95..00000000 --- a/src/Core/Listener/LoggingErrorListenerFactory.php +++ /dev/null @@ -1,16 +0,0 @@ -get(LoggerInterface::class); - - return new LoggingErrorListener($logger); - } -} diff --git a/src/Core/Logger/BaseInformationProcessor.php b/src/Core/Logger/BaseInformationProcessor.php deleted file mode 100644 index 470baa38..00000000 --- a/src/Core/Logger/BaseInformationProcessor.php +++ /dev/null @@ -1,29 +0,0 @@ -getHeader('Host')[0])[0]; - - if (!$this->apiAccessService->hasAccessRights($domain)) { - return new JsonResponse(['message' => 'No access authorization'], HTTP::STATUS_UNAUTHORIZED); - } - - return $handler->handle($request); - } -} diff --git a/src/Core/Middleware/IsLoggedInAuthenticationMiddleware.php b/src/Core/Middleware/IsLoggedInAuthenticationMiddleware.php deleted file mode 100644 index 96feafb5..00000000 --- a/src/Core/Middleware/IsLoggedInAuthenticationMiddleware.php +++ /dev/null @@ -1,29 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - - if (!$user) { - return new JsonResponse(new SimpleMessageDto('Authentication is required'), HTTP::STATUS_UNAUTHORIZED); - } - - return $handler->handle($request); - } -} diff --git a/src/Core/Middleware/JwtAuthenticationMiddleware.php b/src/Core/Middleware/JwtAuthenticationMiddleware.php deleted file mode 100644 index 2cae4b3d..00000000 --- a/src/Core/Middleware/JwtAuthenticationMiddleware.php +++ /dev/null @@ -1,60 +0,0 @@ -getHeaderLine('Authorization'); - $token = substr($token, 7); - - $user = null; - - if ($token) { - try { - $tokenData = JWT::decode($token, new Key($this->tokenSecret, $this->tokenAlgorithmus)); - } catch (ExpiredException $e) { - $this->logger->notice( - '{Host} has call {URI} with expired Token', - [ - 'Host' => $request->getServerParams()['HTTP_HOST'], - 'URI' => $request->getServerParams()['REQUEST_URI'], - ] - ); - return new JsonResponse(['message' => 'invalid Token'], HTTP::STATUS_UNAUTHORIZED); - } - - $user = $this->userService->findByUuid($tokenData->uuid); - } - - $this->logger->info('{Host} as {User} call -> {URI}', [ - 'User' => $user ? $user->name : 'Guest', - ]); - - return $handler->handle($request->withAttribute(User::AUTHENTICATED_USER, $user)); - } -} diff --git a/src/Core/Middleware/JwtAuthenticationMiddlewareFactory.php b/src/Core/Middleware/JwtAuthenticationMiddlewareFactory.php deleted file mode 100644 index 1d916e19..00000000 --- a/src/Core/Middleware/JwtAuthenticationMiddlewareFactory.php +++ /dev/null @@ -1,24 +0,0 @@ -get(UserService::class); - $token = $container->get('config')['token']['auth']; - $logger = $container->get(LoggerInterface::class); - - return new JwtAuthenticationMiddleware( - $userService, - $token['secret'], - $token['algorithmus'], - $logger, - ); - } -} diff --git a/src/Core/Middleware/LoginAuthenticationMiddleware.php b/src/Core/Middleware/LoginAuthenticationMiddleware.php deleted file mode 100644 index ab4efbda..00000000 --- a/src/Core/Middleware/LoginAuthenticationMiddleware.php +++ /dev/null @@ -1,41 +0,0 @@ -getParsedBody(); - - $name = $data['username']; - $password = $data['password']; - - $user = $this->userService->findByName($name); - - if (!($user instanceof User) || !$this->authService->isUserDataCorrect($user, $password)) { - return new JsonResponse(new SimpleMessageDto('Login failed'), HTTP::STATUS_UNAUTHORIZED); - } - - return $handler->handle( - $request->withAttribute(User::AUTHENTICATED_USER, $user) - ); - } -} diff --git a/src/Core/Middleware/LoginValidationMiddleware.php b/src/Core/Middleware/LoginValidationMiddleware.php deleted file mode 100644 index 5acb8896..00000000 --- a/src/Core/Middleware/LoginValidationMiddleware.php +++ /dev/null @@ -1,37 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - // ToDo $this->validator->getMessage() - return new JsonResponse( - new LoginValidationFailureMessageDto('Login failed', $data), - HTTP::STATUS_BAD_REQUEST - ); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/Core/Middleware/UpdateLastUserActionTimeMiddleware.php b/src/Core/Middleware/UpdateLastUserActionTimeMiddleware.php deleted file mode 100644 index 368b5e9b..00000000 --- a/src/Core/Middleware/UpdateLastUserActionTimeMiddleware.php +++ /dev/null @@ -1,29 +0,0 @@ -getAttribute(User::AUTHENTICATED_USER); - - if ($user instanceof User) { - $user = $this->userService->updateLastUserActionTime($user); - } - - return $handler->handle($request->withAttribute(User::AUTHENTICATED_USER, $user)); - } -} diff --git a/src/Core/Middleware/UserMiddleware.php b/src/Core/Middleware/UserMiddleware.php deleted file mode 100644 index ef4aa663..00000000 --- a/src/Core/Middleware/UserMiddleware.php +++ /dev/null @@ -1,33 +0,0 @@ -getAttribute('userUuid'); - - $user = $this->userService->findByUuid($userUuid); - - if (!$user) { - return new JsonResponse(['message' => 'User could not be found'], HTTP::STATUS_NOT_FOUND); - } - - return $handler->handle($request->withAttribute(User::class, $user)); - } -} diff --git a/src/Core/Middleware/UserPasswordChangeMiddleware.php b/src/Core/Middleware/UserPasswordChangeMiddleware.php deleted file mode 100644 index 41e7e0b6..00000000 --- a/src/Core/Middleware/UserPasswordChangeMiddleware.php +++ /dev/null @@ -1,43 +0,0 @@ -getAttribute(User::class); - - $data = $request->getParsedBody(); - - /** ToDo implements Token support */ - $user = $user->with(['password' => password_hash($data['password'], PASSWORD_BCRYPT)]); - - if (!$this->userService->update($user)) { - return new JsonResponse(['Password could not be changed'], Http::STATUS_BAD_REQUEST); - } - - return $handler->handle($request); - } -} diff --git a/src/Core/Middleware/UserPasswordChangeValidatorMiddleware.php b/src/Core/Middleware/UserPasswordChangeValidatorMiddleware.php deleted file mode 100644 index f0e7e4df..00000000 --- a/src/Core/Middleware/UserPasswordChangeValidatorMiddleware.php +++ /dev/null @@ -1,35 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - return new JsonResponse([ - 'message' => 'Validation fault', - 'data' => $this->validator->getMessages(), - ], HTTP::STATUS_NOT_FOUND); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/Core/Middleware/UserPasswordForgottenMiddleware.php b/src/Core/Middleware/UserPasswordForgottenMiddleware.php deleted file mode 100644 index 93e7e94f..00000000 --- a/src/Core/Middleware/UserPasswordForgottenMiddleware.php +++ /dev/null @@ -1,40 +0,0 @@ -getParsedBody(); - - $user = $this->userService->findByEMail($data['email']); - - if (!$user) { - return new JsonResponse(['message' => 'invalid E-Mai'], HTTP::STATUS_BAD_REQUEST); - } - - /** ToDo implements Token support */ - $this->tokenService->generateToken(); - - $this->userService->update($user); - - return $handler->handle($request->withAttribute(User::class, $user)); - } -} diff --git a/src/Core/Middleware/UserPasswordForgottenValidator.php b/src/Core/Middleware/UserPasswordForgottenValidator.php deleted file mode 100644 index 73a07a27..00000000 --- a/src/Core/Middleware/UserPasswordForgottenValidator.php +++ /dev/null @@ -1,35 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - return new JsonResponse([ - 'message' => 'Validation fault', - 'data' => $this->validator->getMessages(), - ], HTTP::STATUS_NOT_FOUND); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/Core/Middleware/UserPasswordVerifyTokenMiddleware.php b/src/Core/Middleware/UserPasswordVerifyTokenMiddleware.php deleted file mode 100644 index e28ece53..00000000 --- a/src/Core/Middleware/UserPasswordVerifyTokenMiddleware.php +++ /dev/null @@ -1,37 +0,0 @@ -getAttribute('token'); - - /** ToDo implements Token */ - $user = $this->userService->findById($token); - - if (!$user instanceof User) { - return new JsonResponse( - ['message' => 'Password cannot be changed due to invalid token'], - HTTP::STATUS_BAD_REQUEST - ); - } - - return $handler->handle($request->withAttribute(User::class, $user)); - } -} diff --git a/src/Core/Middleware/UserRegisterMiddleware.php b/src/Core/Middleware/UserRegisterMiddleware.php deleted file mode 100644 index a70aa2ba..00000000 --- a/src/Core/Middleware/UserRegisterMiddleware.php +++ /dev/null @@ -1,64 +0,0 @@ -getParsedBody(); - $newUser = [ - 'id' => 1, - 'uuid' => $this->uuid, - 'role' => UserRole::GUEST, - 'name' => '', - 'password' => '', - 'email' => $data['e-mail'], - 'registrationAt' => new DateTime(), - 'lastActionAt' => new DateTime(), - ]; - - $user = $this->hydrator->hydrate($newUser, User::class); - - try { - !$this->userService->create($user); - } catch (DuplicateEntryException $exception) { - $validationMessages = [ - 'email' => [ - 'message' => 'Invalid registration data', - ], - ]; - - return new JsonResponse( - new HttpStatusCodeMessage( - $exception->getCode(), - 'Registration failed', - $validationMessages - ), - $exception->getCode() - ); - } - return $handler->handle($request); - } -} diff --git a/src/Core/Middleware/UserRegisterValidationMiddleware.php b/src/Core/Middleware/UserRegisterValidationMiddleware.php deleted file mode 100644 index ba4e1510..00000000 --- a/src/Core/Middleware/UserRegisterValidationMiddleware.php +++ /dev/null @@ -1,39 +0,0 @@ -getParsedBody(); - - $this->validator->setData($data); - - if (!$this->validator->isValid()) { - return new JsonResponse([ - new HttpStatusCodeMessage( - HTTP::STATUS_BAD_REQUEST, - 'Registration failed', - $this->validator->getMessages() - ), - ], HTTP::STATUS_BAD_REQUEST); - } - - return $handler->handle($request->withParsedBody($this->validator->getValues())); - } -} diff --git a/src/Core/Repository/Repository.php b/src/Core/Repository/Repository.php deleted file mode 100644 index 4000f726..00000000 --- a/src/Core/Repository/Repository.php +++ /dev/null @@ -1,12 +0,0 @@ -apiAccessConfig['domain']['whitelist'], true); - } -} diff --git a/src/Core/Service/ApiAccessServiceFactory.php b/src/Core/Service/ApiAccessServiceFactory.php deleted file mode 100644 index 32f7ecb9..00000000 --- a/src/Core/Service/ApiAccessServiceFactory.php +++ /dev/null @@ -1,15 +0,0 @@ -get('config')['api']['access']; - - return new ApiAccessService($apiAccessConfig); - } -} diff --git a/src/Core/Service/LoginAuthenticationService.php b/src/Core/Service/LoginAuthenticationService.php deleted file mode 100644 index 6c006da3..00000000 --- a/src/Core/Service/LoginAuthenticationService.php +++ /dev/null @@ -1,19 +0,0 @@ -password); - } -} diff --git a/src/Core/Table/AbstractTable.php b/src/Core/Table/AbstractTable.php deleted file mode 100644 index bbf03a2e..00000000 --- a/src/Core/Table/AbstractTable.php +++ /dev/null @@ -1,41 +0,0 @@ -table = substr((new ReflectionClass($this))->getShortName(), 0, -5); - } - - public function getTableName(): string - { - return $this->table; - } - - public function findById(int $id): array - { - $result = $this->query->from($this->table) - ->where('id', $id) - ->fetch(); - - return $result ?: []; - } - - public function findAll(): array - { - $result = $this->query->from($this->table)->fetchAll(); - - return $result ?: []; - } -} diff --git a/src/Core/Table/UserTable.php b/src/Core/Table/UserTable.php deleted file mode 100644 index fca4e705..00000000 --- a/src/Core/Table/UserTable.php +++ /dev/null @@ -1,93 +0,0 @@ - $user->uuid->getHex()->toString(), - 'roleId' => $user->role->value, - 'name' => $user->name, - 'password' => $user->password, - 'email' => $user->email, - ]; - - $lastInsertId = $this->query->insertInto($this->table, $values)->execute(); - - if (!$lastInsertId) { - return throw new DuplicateEntryException('User', $user->uuid->getHex()->toString()); - } - - return (int)$lastInsertId; - } - - public function update(User $user): int - { - $values = [ - 'uuid' => $user->uuid, - 'roleId' => $user->role->value, - 'name' => $user->name, - 'password' => $user->password, - 'email' => $user->email, - 'registrationAt' => $user->registrationAt->format('Y-m-d H:i:s'), - 'lastActionAt' => $user->lastActionAt->format('Y-m-d H:i:s'), - ]; - - $affectedRowCount = $this->query->update($this->table, $values, $user->id)->execute(); - - if (!$affectedRowCount) { - throw new InvalidArgumentException('User data could not be modified'); - } - - return (int)$affectedRowCount; - } - - public function updateLastUserActionTime(int $id, DateTime $actionTime): self - { - $result = $this->query->update($this->table) - ->set(['lastActionAt' => $actionTime->format('Y-m-d H:i:s')]) - ->where('id', $id) - ->execute(); - - if (!$result) { - throw new InvalidArgumentException('User data could not be modified'); - } - - return $this; - } - - public function findByUuid(string $uuid): array - { - $result = $this->query->from($this->table) - ->where('uuid', $uuid) - ->fetch(); - - return $result ?: []; - } - - public function findByName(string $name): array - { - $result = $this->query->from($this->table) - ->where('name', $name) - ->fetch(); - - return $result ?: []; - } - - public function findByEMail(string $email): array - { - $result = $this->query->from($this->table) - ->where('email', $email) - ->fetch(); - - return $result ?: []; - } -} diff --git a/src/Core/Token/JwtTokenGeneratorTrait.php b/src/Core/Token/JwtTokenGeneratorTrait.php deleted file mode 100644 index fca83751..00000000 --- a/src/Core/Token/JwtTokenGeneratorTrait.php +++ /dev/null @@ -1,26 +0,0 @@ - $now, - 'exp' => $now + $timeout, - - 'uuid' => $uuid, - ], - $tokenSecret, - $alg - ); - } -} diff --git a/src/Core/Token/TokenService.php b/src/Core/Token/TokenService.php deleted file mode 100644 index 0d55c8cf..00000000 --- a/src/Core/Token/TokenService.php +++ /dev/null @@ -1,14 +0,0 @@ - 'Date is in the past', - ]; - - public function isValid($value): bool - { - $dateNow = new DateTime(); - - try { - $dateValue = new DateTime($value); - } catch (Exception $exception) { - return false; - } - - if ($dateValue <= $dateNow) { - $this->error(self::VALID_DATE); - return false; - } - - $this->setValue($value); - - return true; - } -} diff --git a/src/Core/Validator/Input/EmailInput.php b/src/Core/Validator/Input/EmailInput.php deleted file mode 100644 index 36175a4e..00000000 --- a/src/Core/Validator/Input/EmailInput.php +++ /dev/null @@ -1,26 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'EmailAddress', - [ - 'hostnameValidator' => new Hostname(), - 'useMxCheck' => true, - ] - ); - } -} diff --git a/src/Core/Validator/Input/PasswordInput.php b/src/Core/Validator/Input/PasswordInput.php deleted file mode 100644 index 0327d695..00000000 --- a/src/Core/Validator/Input/PasswordInput.php +++ /dev/null @@ -1,25 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 6, - ] - ); - } -} diff --git a/src/Core/Validator/Input/UsernameInput.php b/src/Core/Validator/Input/UsernameInput.php deleted file mode 100644 index fe2bff05..00000000 --- a/src/Core/Validator/Input/UsernameInput.php +++ /dev/null @@ -1,26 +0,0 @@ -setRequired(true); - - $this->getFilterChain()->attachByName('StringTrim'); - - $this->getValidatorChain()->attachByName( - 'StringLength', - [ - 'encoding' => 'UTF-8', - 'min' => 3, - 'max' => 50, - ] - ); - } -} diff --git a/src/Core/Validator/LoginValidator.php b/src/Core/Validator/LoginValidator.php deleted file mode 100644 index f8584b4a..00000000 --- a/src/Core/Validator/LoginValidator.php +++ /dev/null @@ -1,18 +0,0 @@ -add($this->usernameInput); - $this->add($this->passwordInput); - } -} diff --git a/src/Core/Validator/PasswordForgottenEmailValidator.php b/src/Core/Validator/PasswordForgottenEmailValidator.php deleted file mode 100644 index d032a063..00000000 --- a/src/Core/Validator/PasswordForgottenEmailValidator.php +++ /dev/null @@ -1,15 +0,0 @@ -add($this->emailInput); - } -} diff --git a/src/Core/Validator/RegisterValidator.php b/src/Core/Validator/RegisterValidator.php deleted file mode 100644 index 203ec41a..00000000 --- a/src/Core/Validator/RegisterValidator.php +++ /dev/null @@ -1,15 +0,0 @@ -add($this->emailInput); - } -} diff --git a/src/Core/Validator/UserPasswordChangeValidator.php b/src/Core/Validator/UserPasswordChangeValidator.php deleted file mode 100644 index c7fa1380..00000000 --- a/src/Core/Validator/UserPasswordChangeValidator.php +++ /dev/null @@ -1,15 +0,0 @@ -add($this->passwordInput); - } -} diff --git a/tests/Data/Entity/EventTestEntity.php b/tests/Data/Entity/EventTestEntity.php deleted file mode 100644 index d2f9c83a..00000000 --- a/tests/Data/Entity/EventTestEntity.php +++ /dev/null @@ -1,28 +0,0 @@ - TestConstants::EVENT_ID, - 'uuid' => UuidV7::fromString(TestConstants::EVENT_UUID), - 'userId' => TestConstants::USER_ID, - 'title' => TestConstants::EVENT_TITLE, - 'description' => TestConstants::EVENT_DESCRIPTION, - 'eventText' => TestConstants::EVENT_TEXT, - 'createdAt' => new DateTimeImmutable(TestConstants::TIME), - 'startedAt' => new DateTimeImmutable(TestConstants::TIME), - 'duration' => TestConstants::EVENT_DURATION, - 'status' => EventStatus::SOON, - 'ratingCompleted' => false, - ]; - } -} diff --git a/tests/Data/Entity/ParticipantTestEntity.php b/tests/Data/Entity/ParticipantTestEntity.php deleted file mode 100644 index f0bf7e23..00000000 --- a/tests/Data/Entity/ParticipantTestEntity.php +++ /dev/null @@ -1,21 +0,0 @@ - TestConstants::PARTICIPANT_ID, - 'userId' => TestConstants::USER_ID, - 'eventId' => TestConstants::EVENT_ID, - 'requestedAt' => new DateTimeImmutable(TestConstants::TIME), - 'subscribed' => true, - 'disqualified' => false, - ]; - } -} diff --git a/tests/Data/Entity/ProjectTestEntity.php b/tests/Data/Entity/ProjectTestEntity.php deleted file mode 100644 index 3490b844..00000000 --- a/tests/Data/Entity/ProjectTestEntity.php +++ /dev/null @@ -1,24 +0,0 @@ - TestConstants::PROJECT_ID, - 'uuid' => UuidV7::fromString(TestConstants::PROJECT_UUID), - 'participantId' => TestConstants::PARTICIPANT_ID, - 'title' => TestConstants::PROJECT_TITLE, - 'description' => TestConstants::PROJECT_DESCRIPTION, - 'createdAt' => new DateTimeImmutable(TestConstants::TIME), - 'gitRepoUri' => TestConstants::PROJECT_GIT_URL, - 'demoPageUri' => TestConstants::PROJECT_DEMO_URI, - ]; - } -} diff --git a/tests/Data/Entity/RoleTestEntity.php b/tests/Data/Entity/RoleTestEntity.php deleted file mode 100644 index 21f57716..00000000 --- a/tests/Data/Entity/RoleTestEntity.php +++ /dev/null @@ -1,19 +0,0 @@ - TestConstants::ROLE_ID, - 'uuid' => UuidV7::fromString(TestConstants::ROLE_UUID), - 'name' => TestConstants::ROLE_NAME, - 'description' => TestConstants::ROLE_DESCRIPTION, - ]; - } -} diff --git a/tests/Data/Entity/TopicTestEntity.php b/tests/Data/Entity/TopicTestEntity.php deleted file mode 100644 index 9ea733a0..00000000 --- a/tests/Data/Entity/TopicTestEntity.php +++ /dev/null @@ -1,21 +0,0 @@ - TestConstants::TOPIC_ID, - 'uuid' => UuidV7::fromString(TestConstants::TOPIC_UUID), - 'eventId' => TestConstants::EVENT_ID, - 'topic' => TestConstants::TOPIC_TITLE, - 'description' => TestConstants::TOPIC_DESCRIPTION, - 'accepted' => true, - ]; - } -} diff --git a/tests/Data/Entity/UserTestEntity.php b/tests/Data/Entity/UserTestEntity.php deleted file mode 100644 index d5e79eda..00000000 --- a/tests/Data/Entity/UserTestEntity.php +++ /dev/null @@ -1,25 +0,0 @@ - TestConstants::USER_ID, - 'uuid' => UuidV7::fromString(TestConstants::USER_UUID), - 'role' => UserRole::USER, - 'name' => TestConstants::USER_NAME, - 'password' => TestConstants::USER_PASSWORD, - 'email' => TestConstants::USER_EMAIL, - 'registrationAt' => new DateTimeImmutable(TestConstants::TIME), - 'lastActionAt' => new DateTimeImmutable(TestConstants::TIME), - ]; - } -} diff --git a/tests/Data/TestConstants.php b/tests/Data/TestConstants.php deleted file mode 100644 index d2513be7..00000000 --- a/tests/Data/TestConstants.php +++ /dev/null @@ -1,110 +0,0 @@ -app = new MezzioTestEnvironment($basePath); - } -} diff --git a/tests/Functional/JsonRequestHelper.php b/tests/Functional/JsonRequestHelper.php deleted file mode 100644 index 0661e7c9..00000000 --- a/tests/Functional/JsonRequestHelper.php +++ /dev/null @@ -1,15 +0,0 @@ -getBody()->getContents(), true); - } -} diff --git a/tests/Functional/Mock/NullLogger.php b/tests/Functional/Mock/NullLogger.php deleted file mode 100644 index 59f0d6f1..00000000 --- a/tests/Functional/Mock/NullLogger.php +++ /dev/null @@ -1,73 +0,0 @@ -app->dispatchRequest($request); - - self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); - self::assertJsonValueMatches( - self::getContentAsJson($response), - '$.ack', - self::greaterThanOrEqual(time()) - ); - } -} diff --git a/tests/Functional/UserControl/UserMeTest.php b/tests/Functional/UserControl/UserMeTest.php deleted file mode 100644 index ea361784..00000000 --- a/tests/Functional/UserControl/UserMeTest.php +++ /dev/null @@ -1,54 +0,0 @@ -app->dispatchRequest($request); - - self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); - self::assertEmpty(self::getContentAsJson($response)); - } - - /** - * ToDo - The Auth Token for verification is still missing here - */ - public function testMeReturnValidUserByAuthenticatedUser(): void - { - $token = $this->app->container()->get('config')['token']['auth']; - - $user = new User( - 1, - Uuid::uuid7(), - UserRole::USER, - 'TestingUser', - 'myworld', - 'testing@example.com', - new DateTimeImmutable(), - new DateTimeImmutable() - ); - - /** @var UserService $userService */ - $userService = $this->app->container()->get(UserService::class); - $userService->create($user); - - $request = new ServerRequest(uri: '/api/user/me', method: 'GET'); - - $response = $this->app->dispatchRequest($request); - - self::assertSame(StatusCodeInterface::STATUS_OK, $response->getStatusCode()); - } -} diff --git a/tests/Unit/App/Handler/Topic/TopicCreateHandlerTest.php b/tests/Unit/App/Handler/Topic/TopicCreateHandlerTest.php deleted file mode 100644 index 7b7e1305..00000000 --- a/tests/Unit/App/Handler/Topic/TopicCreateHandlerTest.php +++ /dev/null @@ -1,32 +0,0 @@ -handle( - $this->request->withAttribute(Topic::class, new Topic(...TopicTestEntity::getDefaultTopicValue())) - ); - - $responseData = $response->getBody()->getContents(); - - $responseDataAsArray = json_decode($responseData, true); - - self::assertInstanceOf(JsonResponse::class, $response); - self::assertIsString($responseData); - self::assertJson($responseData); - self::assertIsArray($responseDataAsArray); - self::assertArrayHasKey('topic', $responseDataAsArray); - } -} diff --git a/tests/Unit/App/Handler/Topic/TopicListAvailableHandlerTest.php b/tests/Unit/App/Handler/Topic/TopicListAvailableHandlerTest.php deleted file mode 100644 index f6c950de..00000000 --- a/tests/Unit/App/Handler/Topic/TopicListAvailableHandlerTest.php +++ /dev/null @@ -1,34 +0,0 @@ -handle($this->request->withAttribute('availableTopics', $topicList)); - - self::assertInstanceOf(JsonResponse::class, $response); - } - - public function testReturnJsonResponseWithoutItems(): void - { - $handler = new TopicListAvailableHandler(); - - $topicList = []; - - $response = $handler->handle($this->request->withAttribute('availableTopics', $topicList)); - - self::assertInstanceOf(JsonResponse::class, $response); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventCreateMiddlewareFactoryTest.php b/tests/Unit/App/Middleware/Event/EventCreateMiddlewareFactoryTest.php deleted file mode 100644 index 14cb11dd..00000000 --- a/tests/Unit/App/Middleware/Event/EventCreateMiddlewareFactoryTest.php +++ /dev/null @@ -1,35 +0,0 @@ - new MockEventService(), - ReflectionHydrator::class => new ReflectionHydrator(), - DateTimeFormatterStrategy::class => new DateTimeFormatterStrategy(), - ] - ); - - $middleware = (new EventCreateMiddlewareFactory())($container); - - self::assertInstanceOf(EventCreateMiddleware::class, $middleware); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventCreateMiddlewareTest.php b/tests/Unit/App/Middleware/Event/EventCreateMiddlewareTest.php deleted file mode 100644 index 0c8a7652..00000000 --- a/tests/Unit/App/Middleware/Event/EventCreateMiddlewareTest.php +++ /dev/null @@ -1,53 +0,0 @@ -hydrator); - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(id: TestConstants::USER_ID); - - $response = $middleware->process( - $this->request->withAttribute(User::AUTHENTICATED_USER, $user) - ->withParsedBody(['id' => 2]), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - self::assertNotInstanceOf(JsonResponse::class, $response); - } - - public function testEventIsPresentAndCanNotCreated(): void - { - $middleware = new EventCreateMiddleware(new MockEventService(), $this->hydrator); - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(id: TestConstants::USER_ID); - - $response = $middleware->process( - $this->request->withAttribute(User::AUTHENTICATED_USER, $user) - ->withParsedBody(['id' => TestConstants::USER_ID]), - $this->handler - ); - - self::assertInstanceOf(JsonResponse::class, $response); - self::assertSame(HTTP::STATUS_NOT_FOUND, $response->getStatusCode()); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventCreateValidationMiddlewareTest.php b/tests/Unit/App/Middleware/Event/EventCreateValidationMiddlewareTest.php deleted file mode 100644 index 11698a75..00000000 --- a/tests/Unit/App/Middleware/Event/EventCreateValidationMiddlewareTest.php +++ /dev/null @@ -1,42 +0,0 @@ -process( - $this->request->withParsedBody([true]), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - self::assertNotInstanceOf(JsonResponse::class, $response); - } - - public function testValidationIsNotValide(): void - { - $middleware = new EventCreateValidationMiddleware(new MockEventCreateValidator()); - - $response = $middleware->process( - $this->request->withParsedBody([false]), - $this->handler - ); - - self::assertInstanceOf(JsonResponse::class, $response); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventListMiddlewareTest.php b/tests/Unit/App/Middleware/Event/EventListMiddlewareTest.php deleted file mode 100644 index 1350136e..00000000 --- a/tests/Unit/App/Middleware/Event/EventListMiddlewareTest.php +++ /dev/null @@ -1,60 +0,0 @@ -process($this->request, $this->handler); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testCanFindAllEventSortedASC(): void - { - $middleware = new EventListMiddleware(new MockEventService(), new MockUserService()); - - $response = $middleware->process( - $this->request->withQueryParams( - [ - 'order' => 'startedAt', - 'sort' => 'ASC', - ] - ), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testCanFindAllEventSortedDESC(): void - { - $middleware = new EventListMiddleware(new MockEventService(), new MockUserService()); - - $response = $middleware->process( - $this->request->withQueryParams( - [ - 'order' => 'startedAt', - 'sort' => 'DESC', - ] - ), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventMiddlewareTest.php b/tests/Unit/App/Middleware/Event/EventMiddlewareTest.php deleted file mode 100644 index 16cc4e92..00000000 --- a/tests/Unit/App/Middleware/Event/EventMiddlewareTest.php +++ /dev/null @@ -1,41 +0,0 @@ -process($this->request->withAttribute('eventId', 1), $this->handler); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testThrowInvalidArgumentException(): void - { - $middleware = new EventMiddleware(new MockEventService()); - - self::expectException(InvalidArgumentException::class); - self::expectExceptionCode(HTTP::STATUS_BAD_REQUEST); - - $middleware->process( - $this->request->withAttribute('eventId', TestConstants::EVENT_ID_THROW_EXCEPTION), - $this->handler - ); - } -} diff --git a/tests/Unit/App/Middleware/Event/EventNameMiddlewareTest.php b/tests/Unit/App/Middleware/Event/EventNameMiddlewareTest.php deleted file mode 100644 index 48046c92..00000000 --- a/tests/Unit/App/Middleware/Event/EventNameMiddlewareTest.php +++ /dev/null @@ -1,44 +0,0 @@ -process( - $this->request->withAttribute('eventName', TestConstants::EVENT_TITLE), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testThrowInvalidArgumentException(): void - { - $middleware = new EventNameMiddleware(new MockEventService()); - - self::expectException(InvalidArgumentException::class); - self::expectExceptionCode(HTTP::STATUS_BAD_REQUEST); - - $middleware->process( - $this->request->withAttribute('eventName', TestConstants::EVENT_TITLE_THROW_EXCEPTION), - $this->handler - ); - } -} diff --git a/tests/Unit/App/Middleware/Topic/TopicCreateSubmitMiddlewareTest.php b/tests/Unit/App/Middleware/Topic/TopicCreateSubmitMiddlewareTest.php deleted file mode 100644 index d62fe159..00000000 --- a/tests/Unit/App/Middleware/Topic/TopicCreateSubmitMiddlewareTest.php +++ /dev/null @@ -1,45 +0,0 @@ -middleware = new TopicCreateSubmitMiddleware( - new MockTopicPoolService(), - $this->hydrator, - Uuid::uuid7() - ); - } - - public function testHasCreateNewTopicAndReturnResponse(): void - { - $response = $this->middleware->process( - $this->request->withParsedBody(['topic' => TestConstants::TOPIC_TITLE_CREATE] + TopicTestEntity::getDefaultTopicValue()), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testTopicIsDuplicatedAndThrowException(): void - { - $data = ['topic' => TestConstants::TOPIC_TITLE] + TopicTestEntity::getDefaultTopicValue(); - self::expectException(DuplicateNameHttpException::class); - - $this->middleware->process($this->request->withParsedBody($data), $this->handler); - } -} diff --git a/tests/Unit/App/Middleware/Topic/TopicCreateValidationMiddlewareTest.php b/tests/Unit/App/Middleware/Topic/TopicCreateValidationMiddlewareTest.php deleted file mode 100644 index e45e2ffc..00000000 --- a/tests/Unit/App/Middleware/Topic/TopicCreateValidationMiddlewareTest.php +++ /dev/null @@ -1,43 +0,0 @@ - 'topic', - 'description' => 'This is the one and only Description', - ]; - - private TopicCreateValidationMiddleware $middleware; - - public function setUp(): void - { - $this->middleware = new TopicCreateValidationMiddleware(new MockTopicCreateValidator()); - parent::setUp(); - } - - public function testValidateTopicData(): void - { - $response = $this->middleware->process( - $this->request->withParsedBody($this->topicData), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testValidateTopicDataThrowException(): void - { - self::expectException(InvalidArgumentHttpException::class); - - $this->middleware->process($this->request->withParsedBody([]), $this->handler); - } -} diff --git a/tests/Unit/App/Middleware/Topic/TopicListMiddlewareTest.php b/tests/Unit/App/Middleware/Topic/TopicListMiddlewareTest.php deleted file mode 100644 index ec67e4f8..00000000 --- a/tests/Unit/App/Middleware/Topic/TopicListMiddlewareTest.php +++ /dev/null @@ -1,20 +0,0 @@ -process($this->request, $this->handler); - - self::assertInstanceOf(ResponseInterface::class, $response); - } -} diff --git a/tests/Unit/App/Service/EventServiceFactoryTest.php b/tests/Unit/App/Service/EventServiceFactoryTest.php deleted file mode 100644 index a3e91a2f..00000000 --- a/tests/Unit/App/Service/EventServiceFactoryTest.php +++ /dev/null @@ -1,30 +0,0 @@ - new MockEventTable(), - ReflectionHydrator::class => $this->hydrator, - DateTimeFormatterStrategy::class => $this->dateTimeFormatterStrategy, - ]); - - $factory = new EventServiceFactory(); - - $service = $factory($container); - - self::assertInstanceOf(EventService::class, $service); - } -} diff --git a/tests/Unit/App/Service/EventServiceTest.php b/tests/Unit/App/Service/EventServiceTest.php deleted file mode 100644 index e2978828..00000000 --- a/tests/Unit/App/Service/EventServiceTest.php +++ /dev/null @@ -1,98 +0,0 @@ -service = new EventService(new MockEventTable(), $this->hydrator); - } - - public function testCanNotCreate(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - $event = $event->with(title: TestConstants::EVENT_TITLE); - - $event = $this->service->create($event); - - self::assertSame(false, $event); - } - - public function testCanCreate(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - $event = $event->with(title: TestConstants::EVENT_CREATE_TITLE); - - $event = $this->service->create($event); - - self::assertSame(true, $event); - } - - public function testFindByIdThrowException(): void - { - self::expectException(InvalidArgumentException::class); - - $this->service->findById(TestConstants::EVENT_ID_THROW_EXCEPTION); - } - - public function testFindById(): void - { - $event = $this->service->findById(TestConstants::EVENT_ID); - - self::assertInstanceOf(Event::class, $event); - } - - public function testCanFindAll(): void - { - $event = $this->service->findAll(); - - self::assertIsArray($event); - self::assertArrayHasKey(0, $event); - self::assertInstanceOf(Event::class, $event[0]); - } - - public function testCanFindAllActive(): void - { - $event = $this->service->findAllActive(); - - self::assertIsArray($event); - self::assertArrayHasKey(0, $event); - self::assertInstanceOf(Event::class, $event[0]); - } - - public function testCanFindAllNotActive(): void - { - $event = $this->service->findAllNotActive(); - - self::assertIsArray($event); - self::assertArrayHasKey(0, $event); - self::assertInstanceOf(Event::class, $event[0]); - } - - public function testCheckIsRatingCompleted(): void - { - $event = $this->service->isRatingCompleted(TestConstants::EVENT_ID); - - self::assertSame(true, $event); - } - - public function testCheckIsRatingNotCompleted(): void - { - $event = $this->service->isRatingCompleted(TestConstants::EVENT_ID_RATING_NOT_COMPLETED); - - self::assertSame(false, $event); - } -} diff --git a/tests/Unit/App/Service/ParticipantServiceFactoryTest.php b/tests/Unit/App/Service/ParticipantServiceFactoryTest.php deleted file mode 100644 index 6a0cb91d..00000000 --- a/tests/Unit/App/Service/ParticipantServiceFactoryTest.php +++ /dev/null @@ -1,30 +0,0 @@ - new MockParticipantTable(), - ReflectionHydrator::class => $this->hydrator, - DateTimeFormatterStrategy::class => $this->dateTimeFormatterStrategy, - ]); - - $factory = new ParticipantServiceFactory(); - - $service = $factory($container); - - self::assertInstanceOf(ParticipantService::class, $service); - } -} diff --git a/tests/Unit/App/Service/ParticipantServiceTest.php b/tests/Unit/App/Service/ParticipantServiceTest.php deleted file mode 100644 index d949b914..00000000 --- a/tests/Unit/App/Service/ParticipantServiceTest.php +++ /dev/null @@ -1,109 +0,0 @@ -service = new ParticipantService($table, $this->hydrator); - } - - public function testCanNotCreateParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with( - id: TestConstants::PARTICIPANT_ID, - userId: TestConstants::USER_ID, - eventId: TestConstants::EVENT_ID, - ); - - $participant = $this->service->create($participant); - - self::assertSame(false, $participant); - } - - public function testCanCreateParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with( - id: TestConstants::PARTICIPANT_ID_UNUSED, - userId: TestConstants::USER_ID_UNUSED, - eventId: TestConstants::EVENT_ID_UNUSED, - ); - - $participant = $this->service->create($participant); - - self::assertSame(true, $participant); - } - - public function testCanRemoveParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with(id: TestConstants::PARTICIPANT_ID); - - $response = $this->service->remove($participant); - - self::assertSame(true, $response); - } - - public function testCanNotRemoveParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with(id: TestConstants::PARTICIPANT_ID_UNUSED); - - $response = $this->service->remove($participant); - - self::assertSame(false, $response); - } - - public function testFindByIdThrowException(): void - { - self::expectException(InvalidArgumentException::class); - - $this->service->findById(TestConstants::PARTICIPANT_ID_THROW_EXCEPTION); - } - - public function testCanFindById(): void - { - $participant = $this->service->findById(TestConstants::PARTICIPANT_ID); - - self::assertInstanceOf(Participant::class, $participant); - } - - public function testCanFindByUserId(): void - { - $participant = $this->service->findByUserId(TestConstants::USER_ID); - - self::assertInstanceOf(Participant::class, $participant); - } - - public function testCanNotFindByUserId(): void - { - $participant = $this->service->findByUserId(TestConstants::USER_ID_UNUSED); - - self::assertNull($participant); - } - - public function testCanFindActiveParticipantByEvent(): void - { - $participant = $this->service->findActiveParticipantByEvent(TestConstants::EVENT_ID); - - self::assertIsArray($participant); - self::assertArrayHasKey(0, $participant); - self::assertInstanceOf(Participant::class, $participant[0]); - } -} diff --git a/tests/Unit/App/Service/ProjectServiceFactoryTest.php b/tests/Unit/App/Service/ProjectServiceFactoryTest.php deleted file mode 100644 index 177101b4..00000000 --- a/tests/Unit/App/Service/ProjectServiceFactoryTest.php +++ /dev/null @@ -1,30 +0,0 @@ - new MockProjectTable(), - ReflectionHydrator::class => $this->hydrator, - DateTimeFormatterStrategy::class => $this->dateTimeFormatterStrategy, - ]); - - $factory = new ProjectServiceFactory(); - - $service = $factory($container); - - self::assertInstanceOf(ProjectService::class, $service); - } -} diff --git a/tests/Unit/App/Service/ProjectServiceTest.php b/tests/Unit/App/Service/ProjectServiceTest.php deleted file mode 100644 index 62608ee9..00000000 --- a/tests/Unit/App/Service/ProjectServiceTest.php +++ /dev/null @@ -1,51 +0,0 @@ -service = new ProjectService($table, $this->hydrator); - } - - public function testCanFindById(): void - { - $project = $this->service->findById(1); - - self::assertInstanceOf(Project::class, $project); - } - - public function testCanNotFindById(): void - { - self::expectException(InvalidArgumentException::class); - - $this->service->findById(TestConstants::PROJECT_ID_UNUSED); - } - - public function testCanFindByParticipantId(): void - { - $project = $this->service->findByParticipantId(1); - - self::assertInstanceOf(Project::class, $project); - } - - public function testCanNotFindByParticipantId(): void - { - $project = $this->service->findByParticipantId(2); - - self::assertNull($project); - } -} diff --git a/tests/Unit/App/Service/TopicPoolServiceTest.php b/tests/Unit/App/Service/TopicPoolServiceTest.php deleted file mode 100644 index eacd6470..00000000 --- a/tests/Unit/App/Service/TopicPoolServiceTest.php +++ /dev/null @@ -1,113 +0,0 @@ -table = new MockTopicPoolTable(); - $this->service = new TopicPoolService($this->table, $this->hydrator); - } - - public function testCanInsertTopic(): void - { - $insertTopic = $this->service->insert(new Topic(...TopicTestEntity::getDefaultTopicValue())); - - self::assertInstanceOf(TopicPoolService::class, $insertTopic); - } - - public function testCanUpdateEventId(): void - { - $updateTopic = $this->service->updateEventId(new Topic(...TopicTestEntity::getDefaultTopicValue())); - - self::assertInstanceOf(TopicPoolService::class, $updateTopic); - } - - public function testFindByIdThrowException(): void - { - self::expectException(InvalidArgumentException::class); - - $this->service->findById(TestConstants::TOPIC_ID_THROW_EXCEPTION); - } - - public function testCanFindById(): void - { - $topic = $this->service->findById(TestConstants::TOPIC_ID); - - self::assertInstanceOf(Topic::class, $topic); - } - - public function testCanNotFindByEventId(): void - { - $topic = $this->service->findByEventId(TestConstants::EVENT_ID_UNUSED); - - $this->assertNull($topic); - } - - public function testCanFindByEventId(): void - { - $topic = $this->service->findByEventId(TestConstants::EVENT_ID); - - self::assertInstanceOf(Topic::class, $topic); - } - - public function testCanFindAvailable(): void - { - $topic = $this->service->findAvailable(); - - self::assertIsArray($topic); - self::assertArrayHasKey(0, $topic); - self::assertInstanceOf(Topic::class, $topic[0]); - } - - public function testCanFindAll(): void - { - $topic = $this->service->findAll(); - - self::assertIsArray($topic); - self::assertArrayHasKey(0, $topic); - self::assertInstanceOf(Topic::class, $topic[0]); - } - - public function testIsNotTopic(): void - { - $topic = $this->service->isTopic('fakeIsNotTopic'); - - self::assertSame(false, $topic); - } - - public function testIsTopic(): void - { - $topic = $this->service->isTopic(TestConstants::TOPIC_TITLE); - - self::assertSame(true, $topic); - } - - public function testCanGetEntriesStatistic(): void - { - $values = [ - 'allTopic' => $this->table->getCountTopic(), - 'allAcceptedTopic' => $this->table->getCountTopicAccepted(), - 'allSelectionAvailableTopic' => $this->table->getCountTopicSelectionAvailable(), - ]; - - $statistic = $this->service->getEntriesStatistic(); - - self::assertSame($values, $statistic); - } -} diff --git a/tests/Unit/App/Table/EventTableTest.php b/tests/Unit/App/Table/EventTableTest.php deleted file mode 100644 index e121aee6..00000000 --- a/tests/Unit/App/Table/EventTableTest.php +++ /dev/null @@ -1,137 +0,0 @@ -table->getTableName()); - } - - public function testCanInsertEvent(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - $event = $event->with(title: TestConstants::EVENT_CREATE_TITLE); - - $insertLastId = $this->table->insert($event); - - self::assertSame(1, $insertLastId); - } - - public function testInsertEventThrowsException(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - - self::expectException(DuplicateEntryException::class); - - $this->table->insert($event); - } - - public function testCanFindById(): void - { - $event = $this->table->findById(TestConstants::EVENT_ID); - - self::assertEquals(EventTestEntity::getDefaultEventValue(), $event); - } - - public function testFindByIdHasEmptyResult(): void - { - $event = $this->table->findById(TestConstants::EVENT_ID_UNUSED); - - self::assertSame([], $event); - } - - public function testCanFindAll(): void - { - $event = $this->table->findAll(); - - self::assertEquals([0 => EventTestEntity::getDefaultEventValue()], $event); - } - - public function testFindAllHasEmptyResult(): void - { - $table = new EventTable(new MockQueryForCanNot()); - - $event = $table->findAll(); - - self::assertSame([], $event); - } - - public function testCanFindByName(): void - { - $event = $this->table->findByTitle(TestConstants::EVENT_TITLE); - - self::assertEquals(EventTestEntity::getDefaultEventValue(), $event); - } - - public function testFindByNameHasEmptyResult(): void - { - $event = $this->table->findByTitle(TestConstants::EVENT_TITLE_UNUSED); - - self::assertSame([], $event); - } - - public function testCanFindAllActive(): void - { - $event = $this->table->findAllActive(); - - self::assertEquals([0 => EventTestEntity::getDefaultEventValue()], $event); - } - - public function testFindAllActiveHasEmptyResult(): void - { - $table = new EventTable(new MockQueryForCanNot()); - - $event = $table->findAllActive(); - - self::assertSame([], $event); - } - - public function testCanFindAllNotActive(): void - { - $event = $this->table->findAllInactive(); - - self::assertEquals([0 => EventTestEntity::getDefaultEventValue()], $event); - } - - public function testFindAllNotActiveHasEmptyResult(): void - { - $table = new EventTable(new MockQueryForCanNot()); - - $event = $table->findAllInactive(); - - self::assertSame([], $event); - } - - public function testCanRemoveEvent(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - $event = $event->with(id: TestConstants::EVENT_ID); - - $removeStatus = $this->table->remove($event); - - self::assertSame(true, $removeStatus); - } - - public function testCanNotRemoveEvent(): void - { - $event = new Event(...EventTestEntity::getDefaultEventValue()); - $event = $event->with(id: TestConstants::EVENT_ID_NOT_REMOVED); - - $removeStatus = $this->table->remove($event); - - self::assertSame(false, $removeStatus); - } -} diff --git a/tests/Unit/App/Table/ParticipantTableTest.php b/tests/Unit/App/Table/ParticipantTableTest.php deleted file mode 100644 index 2f708567..00000000 --- a/tests/Unit/App/Table/ParticipantTableTest.php +++ /dev/null @@ -1,125 +0,0 @@ -table->getTableName()); - } - - public function testCanInsertParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with(userId: TestConstants::USER_CREATE_ID); - - $insertParticipant = $this->table->insert($participant); - - self::assertSame(1, $insertParticipant); - } - - public function testInsertParticipantThrowsException(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - $participant = $participant->with(userId: TestConstants::USER_ID); - - self::expectException(DuplicateEntryException::class); - - $this->table->insert($participant); - } - - public function testCanRemoveParticipant(): void - { - $participant = new Participant(...ParticipantTestEntity::getDefaultParticipantValue()); - - $removeParticipant = $this->table->remove($participant); - - self::assertSame(true, $removeParticipant); - } - - public function testCanFindById(): void - { - $project = $this->table->findById(TestConstants::PARTICIPANT_ID); - - self::assertEquals(ParticipantTestEntity::getDefaultParticipantValue(), $project); - } - - public function testFindByIdHaveEmptyResult(): void - { - $project = $this->table->findById(TestConstants::PARTICIPANT_ID_UNUSED); - - self::assertSame([], $project); - } - - public function testCanFindAll(): void - { - $project = $this->table->findAll(); - - self::assertEquals([0 => ParticipantTestEntity::getDefaultParticipantValue()], $project); - } - - public function testFindAllHasEmptyResult(): void - { - $table = new ParticipantTable(new MockQueryForCanNot()); - - $project = $table->findAll(); - - self::assertSame([], $project); - } - - public function testCanFindByUserId(): void - { - $participant = $this->table->findByUserId(TestConstants::USER_ID); - - self::assertEquals(ParticipantTestEntity::getDefaultParticipantValue(), $participant); - } - - public function testFindByUserIdHasEmptyResult(): void - { - $participant = $this->table->findByUserId(TestConstants::USER_ID_UNUSED); - - self::assertSame([], $participant); - } - - public function testCanFindByUserIdAndEventId(): void - { - $participant = $this->table->findUserForAnEvent(TestConstants::USER_ID, TestConstants::EVENT_ID); - - self::assertEquals(ParticipantTestEntity::getDefaultParticipantValue(), $participant); - } - - public function testFindByUserIdAndEventIdHasEmptyResult(): void - { - $participant = $this->table->findUserForAnEvent(TestConstants::USER_ID_UNUSED, TestConstants::EVENT_ID_UNUSED); - - self::assertSame([], $participant); - } - - public function testCanFindActiveParticipantByEvent(): void - { - $participant = $this->table->findActiveParticipantsByEvent(TestConstants::EVENT_ID); - - self::assertEquals([0 => ParticipantTestEntity::getDefaultParticipantValue()], $participant); - } - - public function testFindActiveParticipantByEventHasEmptyResult(): void - { - $table = new ParticipantTable(new MockQueryForCanNot()); - - $participant = $table->findActiveParticipantsByEvent(TestConstants::EVENT_ID_UNUSED); - - self::assertSame([], $participant); - } -} diff --git a/tests/Unit/App/Table/ProjectTableTest.php b/tests/Unit/App/Table/ProjectTableTest.php deleted file mode 100644 index 25cd3981..00000000 --- a/tests/Unit/App/Table/ProjectTableTest.php +++ /dev/null @@ -1,47 +0,0 @@ -table->getTableName()); - } - - public function testCanFindById(): void - { - $project = $this->table->findById(TestConstants::PROJECT_ID); - - self::assertEquals(ProjectTestEntity::getDefaultProjectValue(), $project); - } - - public function testFindByIdHaveEmptyResult(): void - { - $project = $this->table->findById(TestConstants::PROJECT_ID_UNUSED); - - self::assertSame([], $project); - } - - public function testCanFindAll(): void - { - $project = $this->table->findAll(); - - self::assertEquals([0 => ProjectTestEntity::getDefaultProjectValue()], $project); - } - - public function testCanFindByParticipantId(): void - { - $project = $this->table->findByParticipantId(TestConstants::PARTICIPANT_ID); - - self::assertEquals(ProjectTestEntity::getDefaultProjectValue(), $project); - } -} diff --git a/tests/Unit/App/Table/TopicPoolTableTest.php b/tests/Unit/App/Table/TopicPoolTableTest.php deleted file mode 100644 index 800af161..00000000 --- a/tests/Unit/App/Table/TopicPoolTableTest.php +++ /dev/null @@ -1,108 +0,0 @@ -table->getTableName()); - } - - public function testCanInsertTopic(): void - { - $topic = new Topic(...TopicTestEntity::getDefaultTopicValue()); - - $insertTopic = $this->table->insert($topic); - - self::assertInstanceOf(TopicPoolTable::class, $insertTopic); - } - - public function testCanUpdateEventId(): void - { - $topic = new Topic(...TopicTestEntity::getDefaultTopicValue()); - - $updateTopic = $this->table->assignAnEvent($topic->id, $topic->eventId); - - self::assertInstanceOf(TopicPoolTable::class, $updateTopic); - } - - public function testCanFindById(): void - { - $topic = $this->table->findById(TestConstants::TOPIC_POOL_ID); - - self::assertEquals(TopicTestEntity::getDefaultTopicValue(), $topic); - } - - public function testFindByIdHaveEmptyResult(): void - { - $topic = $this->table->findById(TestConstants::TOPIC_POOL_ID_UNUSED); - - self::assertSame([], $topic); - } - - public function testCanFindByUuId(): void - { - $topic = $this->table->findByUuId(TestConstants::TOPIC_UUID); - - self::assertEquals(TopicTestEntity::getDefaultTopicValue(), $topic); - } - - public function testCanFindAll(): void - { - $users = $this->table->findAll(); - - self::assertEquals([0 => TopicTestEntity::getDefaultTopicValue()], $users); - } - - public function testCanFindByEventId(): void - { - $topic = $this->table->findByEventId(TestConstants::EVENT_ID); - - self::assertEquals(TopicTestEntity::getDefaultTopicValue(), $topic); - } - - public function testCanFindAvailable(): void - { - $topic = $this->table->findAvailable(); - - self::assertEquals([0 => TopicTestEntity::getDefaultTopicValue()], $topic); - } - - public function testCanFindByTopic(): void - { - $topic = $this->table->findByTopic(TestConstants::TOPIC_TITLE); - - self::assertEquals(TopicTestEntity::getDefaultTopicValue(), $topic); - } - - public function testCanGetCountTopic(): void - { - $topicCount = $this->table->getCountTopic(); - - self::assertSame(1, $topicCount); - } - - public function testCanGetCountTopicAccepted(): void - { - $topicCount = $this->table->getCountTopicAccepted(); - - self::assertSame(1, $topicCount); - } - - public function testCanGetCountTopicSelectionAvailable(): void - { - $topicCount = $this->table->getCountTopicSelectionAvailable(); - - self::assertSame(1, $topicCount); - } -} diff --git a/tests/Unit/Core/Factory/DatabaseFactoryTest.php b/tests/Unit/Core/Factory/DatabaseFactoryTest.php deleted file mode 100644 index 54c9a3f5..00000000 --- a/tests/Unit/Core/Factory/DatabaseFactoryTest.php +++ /dev/null @@ -1,55 +0,0 @@ -expectException(PDOException::class); - - $config = [ - 'database' => [ - 'driver' => 'mysql', - 'user' => 'testUser', - 'password' => 'testPassword', - 'host' => 'https//example.com', - 'port' => 3306, - 'dbname' => 'example_db', - 'error' => PDO::ERRMODE_EXCEPTION, - - ], - ]; - - $container = new MockContainer(); - $container->add('config', $config); - - (new DatabaseFactory())($container); - } - - public function testCanInitiatePdoConnection(): void - { - system('touch ' . dirname(__FILE__) . '/../../../../database/database.sqlite'); - $config = require dirname(__FILE__) . '/../../../config/autoload/database.testing.local.php'; - - $container = new MockContainer(); - $container->add('config', $config); - - $pdo = (new DatabaseFactory())($container); - - self::assertInstanceOf(PDO::class, $pdo); - } - - public function tearDown(): void - { - system('rm ' . dirname(__FILE__) . '/../../../../database/database.sqlite'); - } -} diff --git a/tests/Unit/Core/Factory/MailFactoryTest.php b/tests/Unit/Core/Factory/MailFactoryTest.php deleted file mode 100644 index d90bb92e..00000000 --- a/tests/Unit/Core/Factory/MailFactoryTest.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - 'dsn' => 'smtp://example.com:1025', - 'from' => 'example@example.com', - ], - ]; - - $container = new MockContainer(); - $container->add('config', $config); - - $mailer = (new MailFactory())($container); - - self::assertInstanceOf(Mailer::class, $mailer); - } -} diff --git a/tests/Unit/Core/Factory/QueryFactoryTest.php b/tests/Unit/Core/Factory/QueryFactoryTest.php deleted file mode 100644 index 6e6971d0..00000000 --- a/tests/Unit/Core/Factory/QueryFactoryTest.php +++ /dev/null @@ -1,23 +0,0 @@ -add(PDO::class, new MockPDO()); - - $query = (new QueryFactory())($container); - - self::assertInstanceOf(Query::class, $query); - } -} diff --git a/tests/Unit/Core/Factory/UuidFactoryTest.php b/tests/Unit/Core/Factory/UuidFactoryTest.php deleted file mode 100644 index 6075280f..00000000 --- a/tests/Unit/Core/Factory/UuidFactoryTest.php +++ /dev/null @@ -1,20 +0,0 @@ -request = new MockServerRequest(); - $this->hydrator = new ReflectionHydrator(); - parent::setUp(); - } -} diff --git a/tests/Unit/Core/Handler/LoginHandlerTest.php b/tests/Unit/Core/Handler/LoginHandlerTest.php deleted file mode 100644 index f2b91f8c..00000000 --- a/tests/Unit/Core/Handler/LoginHandlerTest.php +++ /dev/null @@ -1,32 +0,0 @@ -handle( - $this->request->withAttribute(User::AUTHENTICATED_USER, new User(...UserTestEntity::getDefaultUserValue())) - ); - - $responseData = $response->getBody()->getContents(); - - $responseDataAsArray = json_decode($responseData, true); - - self::assertInstanceOf(JsonResponse::class, $response); - self::assertIsString($responseData); - self::assertJson($responseData); - self::assertIsArray($responseDataAsArray); - self::assertArrayHasKey('token', $responseDataAsArray); - } -} diff --git a/tests/Unit/Core/Hydrator/ClassMethodsHydratorFactoryTest.php b/tests/Unit/Core/Hydrator/ClassMethodsHydratorFactoryTest.php deleted file mode 100644 index e3e2a999..00000000 --- a/tests/Unit/Core/Hydrator/ClassMethodsHydratorFactoryTest.php +++ /dev/null @@ -1,18 +0,0 @@ -add(DateTimeFormatterStrategy::class, (new DateTimeFormatterStrategyFactory())($container)); - - $nullableStragegy = (new NullableStrategyFactory())($container); - - self::assertInstanceOf(NullableStrategy::class, $nullableStragegy); - } -} diff --git a/tests/Unit/Core/Hydrator/ReflectionHydratorTest.php b/tests/Unit/Core/Hydrator/ReflectionHydratorTest.php deleted file mode 100644 index a6ea4b66..00000000 --- a/tests/Unit/Core/Hydrator/ReflectionHydratorTest.php +++ /dev/null @@ -1,49 +0,0 @@ -hydrator = new ReflectionHydrator(); - } - - public function testCanNotHydrate(): void - { - $hydrate = $this->hydrator->hydrate(false, User::class); - - self::assertNull($hydrate); - } - - public function testCanHydrate(): void - { - $hydrate = $this->hydrator->hydrate(UserTestEntity::getDefaultUserValue(), User::class); - - self::assertInstanceOf(User::class, $hydrate); - } - - public function testCanHydrateListWithoutData(): void - { - $hydrate = $this->hydrator->hydrateList([], User::class); - - self::assertIsArray($hydrate); - self::assertSame(0, count($hydrate)); - } - - public function testCanHydrateListWithData(): void - { - $hydrate = $this->hydrator->hydrateList([0 => UserTestEntity::getDefaultUserValue()], User::class); - - self::assertIsArray($hydrate); - self::assertArrayHasKey(0, $hydrate); - self::assertInstanceOf(User::class, $hydrate[0]); - } -} diff --git a/tests/Unit/Core/Middleware/AbstractMiddleware.php b/tests/Unit/Core/Middleware/AbstractMiddleware.php deleted file mode 100644 index 91735e95..00000000 --- a/tests/Unit/Core/Middleware/AbstractMiddleware.php +++ /dev/null @@ -1,26 +0,0 @@ -request = new MockServerRequest(); - $this->handler = new MockRequestHandler(); - $this->hydrator = new ReflectionHydrator(); - - parent::setUp(); - } -} diff --git a/tests/Unit/Core/Middleware/ApiAccessMiddlewareTest.php b/tests/Unit/Core/Middleware/ApiAccessMiddlewareTest.php deleted file mode 100644 index 2a01e12f..00000000 --- a/tests/Unit/Core/Middleware/ApiAccessMiddlewareTest.php +++ /dev/null @@ -1,57 +0,0 @@ -apiAccessService = new MockApiAccessService(); - } - - public function testReturnResponseInterfaceWithoutPort(): void - { - $middleware = new ApiAccessMiddleware($this->apiAccessService); - - $response = $middleware->process( - $this->request->withHeader('Host', 'localhost'), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testReturnResponseInterfaceWithPort(): void - { - $middleware = new ApiAccessMiddleware($this->apiAccessService); - - $response = $middleware->process( - $this->request->withHeader('Host', 'localhost:80'), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testReturnJSonResponse(): void - { - $middleware = new ApiAccessMiddleware($this->apiAccessService); - - $response = $middleware->process( - $this->request->withHeader('Host', 'example.com'), - $this->handler - ); - - self::assertInstanceOf(JsonResponse::class, $response); - self::assertSame(HTTP::STATUS_UNAUTHORIZED, $response->getStatusCode()); - } -} diff --git a/tests/Unit/Core/Middleware/UpdateLastUserActionTimeMiddlewareTest.php b/tests/Unit/Core/Middleware/UpdateLastUserActionTimeMiddlewareTest.php deleted file mode 100644 index 62b5d97f..00000000 --- a/tests/Unit/Core/Middleware/UpdateLastUserActionTimeMiddlewareTest.php +++ /dev/null @@ -1,36 +0,0 @@ -userService = new MockUserService(); - } - - public function testReturnResponseInterface(): void - { - $middleware = new UpdateLastUserActionTimeMiddleware($this->userService); - - $user = new User(...UserTestEntity::getDefaultUserValue()); - - $response = $middleware->process( - $this->request->withAttribute(User::AUTHENTICATED_USER, $user), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } -} diff --git a/tests/Unit/Core/Middleware/UserMiddlewareTest.php b/tests/Unit/Core/Middleware/UserMiddlewareTest.php deleted file mode 100644 index 04379e44..00000000 --- a/tests/Unit/Core/Middleware/UserMiddlewareTest.php +++ /dev/null @@ -1,48 +0,0 @@ -userService = new MockUserService(); - } - - public function testReturnResponseInterface(): void - { - $middleware = new UserMiddleware($this->userService); - - $response = $middleware->process( - $this->request->withAttribute('userUuid', TestConstants::USER_UUID), - $this->handler - ); - - self::assertInstanceOf(ResponseInterface::class, $response); - } - - public function testReturnStatusNotFound(): void - { - $middleware = new UserMiddleware($this->userService); - - $response = $middleware->process( - $this->request->withAttribute('userUuid', '-'), - $this->handler - ); - - self::assertInstanceOf(JsonResponse::class, $response); - self::assertSame($response->getStatusCode(), HTTP::STATUS_NOT_FOUND); - } -} diff --git a/tests/Unit/Core/Service/AbstractService.php b/tests/Unit/Core/Service/AbstractService.php deleted file mode 100644 index 0f725b8d..00000000 --- a/tests/Unit/Core/Service/AbstractService.php +++ /dev/null @@ -1,33 +0,0 @@ -hydrator = new ReflectionHydrator(); - $this->dateTimeFormatterStrategy = new DateTimeFormatterStrategy(); - $this->dateTimeImmutableFormatterStrategy = new DateTimeImmutableFormatterStrategy(new DateTimeFormatterStrategy('Y-m-d H:i:s')); - $this->nullableStrategy = new NullableStrategy($this->dateTimeFormatterStrategy); - $this->uuidStrategy = new UuidStrategy(); - $this->uuid = Uuid::uuid4(); - parent::setUp(); - } -} diff --git a/tests/Unit/Core/Service/ApiAccessServiceFactoryTest.php b/tests/Unit/Core/Service/ApiAccessServiceFactoryTest.php deleted file mode 100644 index 578c66be..00000000 --- a/tests/Unit/Core/Service/ApiAccessServiceFactoryTest.php +++ /dev/null @@ -1,37 +0,0 @@ - [ - 'access' => [ - 'domain' => [ - 'whitelist' => [ - 'localhost', - ], - ], - ], - ], - ]; - - $container = new MockContainer(['config' => $config]); - - $apiAccessService = (new ApiAccessServiceFactory())($container); - - self::assertInstanceOf(ApiAccessService::class, $apiAccessService); - } -} diff --git a/tests/Unit/Core/Service/ApiAccessServiceTest.php b/tests/Unit/Core/Service/ApiAccessServiceTest.php deleted file mode 100644 index a92ed312..00000000 --- a/tests/Unit/Core/Service/ApiAccessServiceTest.php +++ /dev/null @@ -1,38 +0,0 @@ -config = [ - 'domain' => [ - 'whitelist' => [ - 'localhost', - ], - ], - ]; - - $this->apiAccessService = new ApiAccessService($this->config); - } - - public function testHasAccessRights(): void - { - $hasRights = $this->apiAccessService->hasAccessRights('localhost'); - self::assertSame(true, $hasRights); - } - - public function testHasAccessNotRights(): void - { - $hasRights = $this->apiAccessService->hasAccessRights('example.com'); - self::assertSame(false, $hasRights); - } -} diff --git a/tests/Unit/Core/Service/TokenServiceTest.php b/tests/Unit/Core/Service/TokenServiceTest.php deleted file mode 100644 index b2603e1a..00000000 --- a/tests/Unit/Core/Service/TokenServiceTest.php +++ /dev/null @@ -1,18 +0,0 @@ -generateToken(); - - self::assertIsString($token); - self::assertSame(32, strlen($token)); - } -} diff --git a/tests/Unit/Core/Service/UserServiceFactoryTest.php b/tests/Unit/Core/Service/UserServiceFactoryTest.php deleted file mode 100644 index 70381c4f..00000000 --- a/tests/Unit/Core/Service/UserServiceFactoryTest.php +++ /dev/null @@ -1,33 +0,0 @@ - new MockUserTable(), - ReflectionHydrator::class => $this->hydrator, - NullableStrategy::class => $this->nullableStrategy, - DateTimeImmutableFormatterStrategy::class => $this->dateTimeImmutableFormatterStrategy, - Uuid::class => Uuid::uuid4(), - ]); - - $factory = new UserServiceFactory(); - - $service = $factory($container); - - self::assertInstanceOf(UserService::class, $service); - } -} diff --git a/tests/Unit/Core/Service/UserServiceTest.php b/tests/Unit/Core/Service/UserServiceTest.php deleted file mode 100644 index f564953c..00000000 --- a/tests/Unit/Core/Service/UserServiceTest.php +++ /dev/null @@ -1,134 +0,0 @@ -hydrator->addStrategy(UuidStrategy::class, $this->uuidStrategy); - $this->userService = new UserService($table, $this->hydrator, $this->uuid); - } - - public function testCanNotCreateUserWithExistUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(name: TestConstants::USER_NAME); - - self::expectException(DuplicateEntryException::class); - - $this->userService->create($user); - } - - public function testCanNotCreateUserWithExistEmail(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(email: TestConstants::USER_EMAIL); - - self::expectException(DuplicateEntryException::class); - - $this->userService->create($user); - } - - public function testCanCreateUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with( - name: TestConstants::USER_CREATE_NAME, - email: TestConstants::USER_CREATE_EMAIL, - ); - - $insert = $this->userService->create($user); - - self::assertSame(1, $insert); - } - - public function testCanNotCreateUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with( - name: TestConstants::USER_NAME, - email: TestConstants::USER_EMAIL, - ); - - self::expectException(DuplicateEntryException::class); - - $this->userService->create($user); - } - - public function testCanUpdateLastUserActionTime(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with( - id: TestConstants::USER_ID, - lastActionAt: new DateTimeImmutable(), - ); - - $update = $this->userService->updateLastUserActionTime($user); - - self::assertInstanceOf(User::class, $update); - } - - public function testCanNotUpdateUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(id: TestConstants::USER_ID_UNUSED); - - self::expectException(InvalidArgumentException::class); - - $this->userService->update($user); - } - - public function testCanUpdateUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(id: TestConstants::USER_ID); - - $update = $this->userService->update($user); - - self::assertSame(true, $update); - } - - public function testFindByIdResultIsNull(): void - { - $result = $this->userService->findById(TestConstants::USER_ID_UNUSED); - - self::assertNull($result); - } - - public function testCanFindById(): void - { - $user = $this->userService->findById(TestConstants::USER_ID); - - self::assertInstanceOf(User::class, $user); - } - - public function testCanFindByUuid(): void - { - $user = $this->userService->findByUuid(TestConstants::USER_UUID); - - self::assertInstanceOf(User::class, $user); - } - - public function testCanNotFindByUuid(): void - { - $user = $this->userService->findByUuid(TestConstants::USER_UUID_UNUSED); - - self::assertNull($user); - } -} diff --git a/tests/Unit/Core/Table/AbstractTable.php b/tests/Unit/Core/Table/AbstractTable.php deleted file mode 100644 index 1cf05318..00000000 --- a/tests/Unit/Core/Table/AbstractTable.php +++ /dev/null @@ -1,39 +0,0 @@ - 1]; - protected array $fetchAllResult - = [ - 0 => ['id' => 1], - ]; - - protected function setUp(): void - { - $this->query = new MockQuery(); - - preg_match('@(Core.*|App.*)@i', get_class($this), $table); - - $this->table = new ( - substr($table[0], self::TABLE_NAME_OFFSET, self::TABLE_SUB_LENGTH) - )( - $this->query - ); - } -} diff --git a/tests/Unit/Core/Table/UserTableTest.php b/tests/Unit/Core/Table/UserTableTest.php deleted file mode 100644 index 6a6d5fd7..00000000 --- a/tests/Unit/Core/Table/UserTableTest.php +++ /dev/null @@ -1,158 +0,0 @@ -table->getTableName()); - } - - public function testCanInsertUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(name: TestConstants::USER_CREATE_NAME); - - $affectedRowCount = $this->table->insert($user); - - self::assertSame(1, $affectedRowCount); - } - - public function testCanNotInsertUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with(name: TestConstants::USER_NAME); - - self::expectException(DuplicateEntryException::class); - - $this->table->insert($user); - } - - public function testCanUpdateUser(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with( - id: TestConstants::USER_ID, - registrationAt: new DateTimeImmutable(), - lastActionAt: new DateTimeImmutable(), - ); - - $updateUser = $this->table->update($user); - - self::assertSame(1, $updateUser); - } - - public function testUpdateUserThrowException(): void - { - $user = new User(...UserTestEntity::getDefaultUserValue()); - $user = $user->with( - id: TestConstants::USER_ID_THROW_EXCEPTION, - lastActionAt: new DateTimeImmutable(), - ); - - $table = new UserTable(new MockQueryForCanNot()); - - self::expectException(InvalidArgumentException::class); - - $table->update($user); - } - - public function testCanUpdateLastUserActionTime(): void - { - $updateUser = $this->table->updateLastUserActionTime(TestConstants::USER_ID, new DateTime()); - - self::assertInstanceOf(UserTable::class, $updateUser); - } - - public function testUpdateLastUserActionTimeThrowException(): void - { - self::expectException(InvalidArgumentException::class); - - $this->table->updateLastUserActionTime(TestConstants::USER_ID_THROW_EXCEPTION, new DateTime()); - } - - public function testCanFindById(): void - { - $user = $this->table->findById(TestConstants::USER_ID); - - self::assertEquals(UserTestEntity::getDefaultUserValue(), $user); - } - - public function testFindByIdHasEmptyResult(): void - { - $user = $this->table->findById(TestConstants::USER_ID_UNUSED); - - self::assertSame([], $user); - } - - public function testCanFindByUuid(): void - { - $user = $this->table->findByUuid(TestConstants::USER_UUID); - - self::assertEquals(UserTestEntity::getDefaultUserValue(), $user); - } - - public function testFindByUuidHasEmptyResult(): void - { - $user = $this->table->findByUuid(TestConstants::USER_UUID_UNUSED); - - self::assertSame([], $user); - } - - public function testCanFindAll(): void - { - $users = $this->table->findAll(); - - self::assertEquals([0 => UserTestEntity::getDefaultUserValue()], $users); - } - - public function testFindAllReturnedEmpty(): void - { - $table = new UserTable(new MockQueryForCanNot()); - $users = $table->findAll(); - - self::assertSame([], $users); - } - - public function testCanFindByName(): void - { - $user = $this->table->findByName(TestConstants::USER_NAME); - - self::assertEquals(UserTestEntity::getDefaultUserValue(), $user); - } - - public function testFindByNameHasEmptyResult(): void - { - $user = $this->table->findByName(TestConstants::USER_NAME_UNUSED); - - self::assertSame([], $user); - } - - public function testCanFindByEmail(): void - { - $user = $this->table->findByEMail(TestConstants::USER_EMAIL); - - self::assertEquals(UserTestEntity::getDefaultUserValue(), $user); - } - - public function testFindByEmailHasEmptyResult(): void - { - $user = $this->table->findByEMail(TestConstants::USER_EMAIL_UNUSED); - - self::assertSame([], $user); - } -} diff --git a/tests/Unit/Mock/Database/MockDelete.php b/tests/Unit/Mock/Database/MockDelete.php deleted file mode 100644 index b903e5cb..00000000 --- a/tests/Unit/Mock/Database/MockDelete.php +++ /dev/null @@ -1,37 +0,0 @@ -handle($this->statements['DELETE FROM'], $this->statements['WHERE'], $this->parameters['WHERE']); - } - - private function handle(string $table, array $where, array $value): bool - { - return match ($table) { - 'Event', 'MockEvent' => $this->handleEvent($where, $value), - default => false, - }; - } - - private function handleEvent(array $where, array $value): bool - { - if ($where[0][1] === 'id = ?' && $value[0] === TestConstants::EVENT_ID) { - return true; - } - - return false; - } -} diff --git a/tests/Unit/Mock/Database/MockInsert.php b/tests/Unit/Mock/Database/MockInsert.php deleted file mode 100644 index c7409a2b..00000000 --- a/tests/Unit/Mock/Database/MockInsert.php +++ /dev/null @@ -1,58 +0,0 @@ -handle($this->statements['INSERT INTO'], $this->statements['VALUES']); - } - - private function handle(string $table, array $values): int|bool - { - return match($table) { - 'Event', 'MockEvent' => $this->handleEvent($values), - 'User', 'MockUser' => $this->handleUser($values), - 'Participant', 'MockParticipant' => $this->handleParticipant($values), - default => false, - }; - } - - private function handleEvent(array $values): int|bool - { - if ($values[0]['title'] === TestConstants::EVENT_CREATE_TITLE) { - return 1; - } - - return false; - } - - private function handleParticipant(array $values): int|bool - { - if ($values[0]['userId'] === TestConstants::USER_CREATE_ID) { - return 1; - } - - return false; - } - - private function handleUser(array $values): int|bool - { - - if ($values[0]['name'] === TestConstants::USER_CREATE_NAME) { - return 1; - } - - return false; - } -} diff --git a/tests/Unit/Mock/Database/MockPDO.php b/tests/Unit/Mock/Database/MockPDO.php deleted file mode 100644 index 80a828fc..00000000 --- a/tests/Unit/Mock/Database/MockPDO.php +++ /dev/null @@ -1,18 +0,0 @@ -statements['SELECT']) - && $this->statements['SELECT'][1] === 'COUNT(id) AS countTopic' - ) { - return [ - 'countTopic' => 1, - ]; - } - - if (array_key_exists('WHERE', $this->statements)) { - return $this->handle($this->statements['FROM'], $this->statements['WHERE'], $this->parameters['WHERE']); - } - - return false; - } - - public function fetchAll($index = '', $selectOnly = ''): array - { - return match ($this->getFromTable()) { - 'MockEvent', 'Event' => [0 => EventTestEntity::getDefaultEventValue()], - 'MockParticipant', 'Participant' => [0 => ParticipantTestEntity::getDefaultParticipantValue()], - 'MockProject', 'Project' => [0 => ProjectTestEntity::getDefaultProjectValue()], - 'MockRole', 'Role' => [0 => RoleTestEntity::getDefaultRoleValue()], - 'MockTopicPool', 'TopicPool' => [0 => TopicTestEntity::getDefaultTopicValue()], - 'MockUser', 'User' => [0 => UserTestEntity::getDefaultUserValue()], - default => [], - }; - } - - private function handle(string $from, array $where, array $params): bool|array - { - return match ($from) { - 'Event' => $this->handleEvent($where, $params), - 'Participant' => $this->handleParticipant($where, $params), - 'Project' => $this->handleProject($where, $params), - 'TopicPool' => $this->handleTopic($where, $params), - 'User' => $this->handleUser($where, $params), - default => false - }; - } - - private function handleEvent(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::EVENT_ID - ? ['id' => TestConstants::EVENT_ID] + EventTestEntity::getDefaultEventValue() - : [], - 'title = ?' => $params[0] === TestConstants::EVENT_TITLE - ? ['id' => TestConstants::EVENT_ID] + EventTestEntity::getDefaultEventValue() - : [], - default => [] - }; - } - - private function handleParticipant(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::PARTICIPANT_ID - ? ['id' => TestConstants::PARTICIPANT_ID] + ParticipantTestEntity::getDefaultParticipantValue() - : [], - 'userId = ?' => $params[0] === TestConstants::USER_ID - ? ['id' => TestConstants::PARTICIPANT_ID] + ParticipantTestEntity::getDefaultParticipantValue() - : [], - default => [] - }; - } - - private function handleProject(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::PROJECT_ID - ? ['id' => TestConstants::PROJECT_ID] + ProjectTestEntity::getDefaultProjectValue() - : [], - 'participantId = ?' => - $params[0] === TestConstants::PARTICIPANT_ID - ? ['id' => TestConstants::PROJECT_ID] + ProjectTestEntity::getDefaultProjectValue() - : [], - default => [] - }; - } - - private function handleTopic(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::TOPIC_ID - ? ['id' => TestConstants::TOPIC_ID] + TopicTestEntity::getDefaultTopicValue() - : [], - 'uuid = ?' => $params[0] === TestConstants::TOPIC_UUID - ? ['id' => TestConstants::TOPIC_ID] + TopicTestEntity::getDefaultTopicValue() - : [], - 'eventId = ?' => $params[0] === TestConstants::EVENT_ID - ? ['id' => TestConstants::TOPIC_ID] + TopicTestEntity::getDefaultTopicValue() - : [], - 'topic = ?' => $params[0] === TestConstants::TOPIC_TITLE - ? ['id' => TestConstants::TOPIC_ID] + TopicTestEntity::getDefaultTopicValue() - : [], - default => [] - }; - } - - private function handleUser(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::USER_ID - ? ['id' => TestConstants::USER_ID] + UserTestEntity::getDefaultUserValue() - : [], - 'uuid = ?' => $params[0] === TestConstants::USER_UUID - ? ['id' => TestConstants::USER_ID] + UserTestEntity::getDefaultUserValue() - : [], - 'name = ?' => $params[0] === TestConstants::USER_NAME - ? ['id' => TestConstants::USER_ID] + UserTestEntity::getDefaultUserValue() - : [], - 'email = ?' => $params[0] === TestConstants::USER_EMAIL - ? ['id' => TestConstants::USER_ID] + UserTestEntity::getDefaultUserValue() - : [], - default => [], - }; - } -} diff --git a/tests/Unit/Mock/Database/MockSelectForFetchAll.php b/tests/Unit/Mock/Database/MockSelectForFetchAll.php deleted file mode 100644 index 7936b6c9..00000000 --- a/tests/Unit/Mock/Database/MockSelectForFetchAll.php +++ /dev/null @@ -1,109 +0,0 @@ -statements['SELECT']) - && $this->statements['SELECT'][1] === 'COUNT(id) AS countTopic' - ) { - return [ - 'countTopic' => 1, - ]; - } - - if (array_key_exists('WHERE', $this->statements)) { - return $this->handle($this->statements['FROM'], $this->statements['WHERE'], $this->parameters['WHERE']); - } - - return false; - } - - public function fetchAll($index = '', $selectOnly = ''): array - { - return []; - } - - private function handle(string $from, array $where, array $params): bool|array - { - return match ($from) { - 'Event' => $this->handleEvent($where, $params), - 'Participant' => $this->handleParticipant($where, $params), - 'Project' => $this->handleProject($where, $params), - 'TopicPool' => $this->handleTopic($where, $params), - 'User' => $this->handleUser($where, $params), - default => false - }; - } - - private function handleEvent(array $where, array $params): array - { - return match ($where[0][1]) { - 'title = ?' => $params[0] === TestConstants::EVENT_TITLE ? EventTestEntity::getDefaultEventValue() : [], - 'id = ?' => $params[0] === TestConstants::EVENT_ID ? EventTestEntity::getDefaultEventValue() : [], - default => [] - }; - } - - private function handleParticipant(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::PARTICIPANT_ID - ? ParticipantTestEntity::getDefaultParticipantValue() : [], - 'userId = ?' => $params[0] === TestConstants::USER_ID ? ParticipantTestEntity::getDefaultParticipantValue() - : [], - default => [] - }; - } - - private function handleProject(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::PROJECT_ID ? ProjectTestEntity::getDefaultProjectValue() : [], - 'participantId = ?' => $params[0] === TestConstants::PARTICIPANT_ID - ? ProjectTestEntity::getDefaultProjectValue() : [], - default => [] - }; - } - - private function handleTopic(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::TOPIC_ID ? TopicTestEntity::getDefaultTopicValue() : [], - 'uuid = ?' => $params[0] === TestConstants::TOPIC_UUID ? TopicTestEntity::getDefaultTopicValue() : [], - 'eventId = ?' => $params[0] === TestConstants::EVENT_ID ? TopicTestEntity::getDefaultTopicValue() : [], - 'topic = ?' => $params[0] === TestConstants::TOPIC_TITLE ? TopicTestEntity::getDefaultTopicValue() : [], - default => [] - }; - } - - private function handleUser(array $where, array $params): array - { - return match ($where[0][1]) { - 'id = ?' => $params[0] === TestConstants::USER_ID ? UserTestEntity::getDefaultUserValue() : [], - 'uuid = ?' => $params[0] === TestConstants::USER_UUID ? UserTestEntity::getDefaultUserValue() : [], - 'name = ?' => $params[0] === TestConstants::USER_NAME ? UserTestEntity::getDefaultUserValue() : [], - 'email = ?' => $params[0] === TestConstants::USER_EMAIL ? UserTestEntity::getDefaultUserValue() : [], - default => [] - }; - } -} diff --git a/tests/Unit/Mock/Database/MockUpdate.php b/tests/Unit/Mock/Database/MockUpdate.php deleted file mode 100644 index 5824db9f..00000000 --- a/tests/Unit/Mock/Database/MockUpdate.php +++ /dev/null @@ -1,46 +0,0 @@ -statements['UPDATE']) { - 'User', 'MockUser' => $this->handleUser(), - default => true - }; - } - - private function handleUser(): bool|int - { - if (array_key_exists('SET', $this->statements)) { - if ($this->statements['SET'] === []) { - return 1; - } - - if ($this->statements['SET']['lastActionAt']) { - return match ($this->statements['WHERE'][0][1]) { - 'id = ?' => $this->parameters['WHERE'][0] === TestConstants::USER_ID ? 1 : false, - default => 1 - }; - } - } - - return false; - } -} diff --git a/tests/Unit/Mock/Database/MockUpdateForNotUpdate.php b/tests/Unit/Mock/Database/MockUpdateForNotUpdate.php deleted file mode 100644 index 0826c8ec..00000000 --- a/tests/Unit/Mock/Database/MockUpdateForNotUpdate.php +++ /dev/null @@ -1,46 +0,0 @@ -statements['UPDATE']) { - 'User', 'MockUser' => $this->handleUser(), - default => true - }; - } - - private function handleUser(): bool|int - { - if (array_key_exists('SET', $this->statements)) { - if ($this->statements['SET'] === []) { - return false; - } - - if ($this->statements['SET']['lastAction']) { - return match ($this->statements['WHERE'][0][1]) { - 'id = ?' => $this->parameters['WHERE'][0] === TestConstants::USER_ID ? 1 : false, - default => 1 - }; - } - } - - return false; - } -} diff --git a/tests/Unit/Mock/Mailer/MockMailer.php b/tests/Unit/Mock/Mailer/MockMailer.php deleted file mode 100644 index e069d46c..00000000 --- a/tests/Unit/Mock/Mailer/MockMailer.php +++ /dev/null @@ -1,15 +0,0 @@ -has($id)) { - return $this->container[$id]; - } - - return null; - } - - public function has(string $id): bool - { - return array_key_exists($id, $this->container); - } - - public function add(string $id, mixed $value): void - { - $this->container[$id] = $value; - } -} diff --git a/tests/Unit/Mock/MockRequestHandler.php b/tests/Unit/Mock/MockRequestHandler.php deleted file mode 100644 index 04681a31..00000000 --- a/tests/Unit/Mock/MockRequestHandler.php +++ /dev/null @@ -1,15 +0,0 @@ -headers; - } - - public function hasHeader($name) - { - // TODO: Implement hasHeader() method. - } - - public function getHeader($name) - { - return array_key_exists($name, $this->headers) ? $this->headers[$name] : null; - } - - public function getHeaderLine($name) - { - // TODO: Implement getHeaderLine() method. - } - - public function withHeader($name, $value) - { - $this->headers[$name] = $value; - - return clone $this; - } - - public function withAddedHeader($name, $value) - { - // TODO: Implement withAddedHeader() method. - } - - public function withoutHeader($name) - { - // TODO: Implement withoutHeader() method. - } - - public function getBody() - { - return $this->body; - } - - public function withBody(StreamInterface $body) - { - // TODO: Implement withBody() method. - } - - public function getRequestTarget() - { - // TODO: Implement getRequestTarget() method. - } - - public function withRequestTarget($requestTarget) - { - // TODO: Implement withRequestTarget() method. - } - - public function getMethod() - { - // TODO: Implement getMethod() method. - } - - public function withMethod($method) - { - // TODO: Implement withMethod() method. - } - - public function getUri() - { - // TODO: Implement getUri() method. - } - - public function withUri(UriInterface $uri, $preserveHost = false) - { - // TODO: Implement withUri() method. - } - - public function getServerParams() - { - // TODO: Implement getServerParams() method. - } - - public function getCookieParams() - { - // TODO: Implement getCookieParams() method. - } - - public function withCookieParams(array $cookies) - { - // TODO: Implement withCookieParams() method. - } - - public function getQueryParams() - { - return $this->queryParams; - } - - public function withQueryParams(array $query): self - { - $this->queryParams = $query; - - return clone $this; - } - - public function getUploadedFiles() - { - // TODO: Implement getUploadedFiles() method. - } - - public function withUploadedFiles(array $uploadedFiles) - { - // TODO: Implement withUploadedFiles() method. - } - - public function getParsedBody() - { - return $this->body; - } - - public function withParsedBody($data) - { - $this->body = $data; - - return clone $this; - } - - public function getAttributes() - { - // TODO: Implement getAttributes() method. - } - - public function getAttribute($name, $default = null) - { - if (array_key_exists($name, $this->attributes)) { - return $this->attributes[$name]; - } - - return $default; - } - - public function withAttribute($name, $value): MockServerRequest - { - $this->attributes[$name] = $value; - - return clone $this; - } - - public function withoutAttribute($name) - { - // TODO: Implement withoutAttribute() method. - } -} diff --git a/tests/Unit/Mock/Service/MockApiAccessService.php b/tests/Unit/Mock/Service/MockApiAccessService.php deleted file mode 100644 index f599f871..00000000 --- a/tests/Unit/Mock/Service/MockApiAccessService.php +++ /dev/null @@ -1,18 +0,0 @@ -id === TestConstants::EVENT_ID_NOT_REMOVED; - } - - public function findById(int $id): Event - { - if ($id === TestConstants::EVENT_ID) { - return new Event(...EventTestEntity::getDefaultEventValue()); - } - - throw new InvalidArgumentException('Could not find Event', HTTP::STATUS_BAD_REQUEST); - } - - public function findByTitle(string $topic): ?Event - { - if ($topic === TestConstants::EVENT_TITLE_THROW_EXCEPTION) { - throw new InvalidArgumentException(code: HTTP::STATUS_BAD_REQUEST); - } - if ($topic === TestConstants::EVENT_TITLE) { - return new Event(...EventTestEntity::getDefaultEventValue()); - } - - return null; - } -} diff --git a/tests/Unit/Mock/Service/MockTopicCreateEMailService.php b/tests/Unit/Mock/Service/MockTopicCreateEMailService.php deleted file mode 100644 index c1026981..00000000 --- a/tests/Unit/Mock/Service/MockTopicCreateEMailService.php +++ /dev/null @@ -1,14 +0,0 @@ -with(lastActionAt: new DateTimeImmutable(TestConstants::TIME)); - } -} diff --git a/tests/Unit/Mock/Table/MockEventTable.php b/tests/Unit/Mock/Table/MockEventTable.php deleted file mode 100644 index 9e5c739e..00000000 --- a/tests/Unit/Mock/Table/MockEventTable.php +++ /dev/null @@ -1,44 +0,0 @@ - [ - 'id' => $id, - 'ratingCompleted' => true, - ] + EventTestEntity::getDefaultEventValue(), - - TestConstants::EVENT_ID_RATING_NOT_COMPLETED => [ - 'id' => $id, - 'ratingCompleted' => false, - ] + EventTestEntity::getDefaultEventValue(), - - default => [] - }; - } - - public function findByTitle(string $title): array - { - return match ($title) { - TestConstants::EVENT_TITLE => [ - 'title' => $title, - ] + EventTestEntity::getDefaultEventValue(), - - default => [] - }; - } -} diff --git a/tests/Unit/Mock/Table/MockParticipantTable.php b/tests/Unit/Mock/Table/MockParticipantTable.php deleted file mode 100644 index fefab7f8..00000000 --- a/tests/Unit/Mock/Table/MockParticipantTable.php +++ /dev/null @@ -1,45 +0,0 @@ -id === TestConstants::PARTICIPANT_ID; - } - - public function findById(int $id): array - { - return $id === TestConstants::PARTICIPANT_ID ? ['id' => $id] - + ParticipantTestEntity::getDefaultParticipantValue() : []; - } - - public function findByUserId(int $userId): array - { - return $userId === TestConstants::USER_ID - ? ['userId' => $userId] + ParticipantTestEntity::getDefaultParticipantValue() - : []; - } - - public function findUserForAnEvent(int $userId, int $eventId): array - { - return $userId === TestConstants::USER_ID && $eventId === TestConstants::EVENT_ID - ? [ - 'userId' => $userId, - 'eventId' => $eventId, - ] + ParticipantTestEntity::getDefaultParticipantValue() - : []; - } -} diff --git a/tests/Unit/Mock/Table/MockProjectTable.php b/tests/Unit/Mock/Table/MockProjectTable.php deleted file mode 100644 index 8bde0afd..00000000 --- a/tests/Unit/Mock/Table/MockProjectTable.php +++ /dev/null @@ -1,28 +0,0 @@ - $id] + ProjectTestEntity::getDefaultProjectValue() : []; - } - - public function findByParticipantId(int $id): array - { - return $id === TestConstants::PARTICIPANT_ID - ? ['participantId' => $id] + ProjectTestEntity::getDefaultProjectValue() - : []; - } -} diff --git a/tests/Unit/Mock/Table/MockTopicPoolTable.php b/tests/Unit/Mock/Table/MockTopicPoolTable.php deleted file mode 100644 index 4f567907..00000000 --- a/tests/Unit/Mock/Table/MockTopicPoolTable.php +++ /dev/null @@ -1,46 +0,0 @@ - $id] + TopicTestEntity::getDefaultTopicValue() : []; - } - - public function findByEventId(int $eventId): array - { - return $eventId === TestConstants::EVENT_ID - ? ['eventId' => $eventId] + TopicTestEntity::getDefaultTopicValue() - : []; - } - - public function findByTopic(string $topic): array - { - return $topic === TestConstants::TOPIC_TITLE - ? ['topic' => $topic] + TopicTestEntity::getDefaultTopicValue() - : []; - } -} diff --git a/tests/Unit/Mock/Table/MockUserTable.php b/tests/Unit/Mock/Table/MockUserTable.php deleted file mode 100644 index 15f26e44..00000000 --- a/tests/Unit/Mock/Table/MockUserTable.php +++ /dev/null @@ -1,50 +0,0 @@ -id !== TestConstants::USER_ID) { - throw new InvalidArgumentException(); - } - - return 1; - } - - public function findById(int $id): array - { - return $id === TestConstants::USER_ID ? ['id' => $id] + UserTestEntity::getDefaultUserValue() : []; - } - - public function findByUuid(string $uuid): array - { - return $uuid === TestConstants::USER_UUID - ? ['uuid' => UuidV7::fromString($uuid)] + UserTestEntity::getDefaultUserValue() - : []; - } - - public function findByName(string $name): array - { - return $name === TestConstants::USER_NAME ? ['name' => $name] + UserTestEntity::getDefaultUserValue() : []; - } - - public function findByEMail(string $email): array - { - return $email === TestConstants::USER_EMAIL ? ['email' => $email] + UserTestEntity::getDefaultUserValue() : []; - } -} diff --git a/tests/Unit/Mock/Validator/MockEventCreateValidator.php b/tests/Unit/Mock/Validator/MockEventCreateValidator.php deleted file mode 100644 index 6599f0d0..00000000 --- a/tests/Unit/Mock/Validator/MockEventCreateValidator.php +++ /dev/null @@ -1,43 +0,0 @@ -data = $data; - - return $this; - } - - public function isValid($context = null): bool - { - return $this->data[0]; - } - - public function getValues(): mixed - { - return $this->data; - } -} diff --git a/tests/Unit/Mock/Validator/MockTopicCreateValidator.php b/tests/Unit/Mock/Validator/MockTopicCreateValidator.php deleted file mode 100644 index 9a2c70d4..00000000 --- a/tests/Unit/Mock/Validator/MockTopicCreateValidator.php +++ /dev/null @@ -1,20 +0,0 @@ - [ - 'driver' => 'sqlite', - 'host' => __DIR__ . '/../../../database/database.sqlite', - 'port' => '3306', - 'user' => 'dev', - 'password' => 'dev', - 'dbname' => 'db', - 'charset' => 'utf8mb4', - 'error' => PDO::ERRMODE_EXCEPTION, - ] -]; diff --git a/tests/config/autoload/dependencies.testing.local.php b/tests/config/autoload/dependencies.testing.local.php deleted file mode 100644 index e407b412..00000000 --- a/tests/config/autoload/dependencies.testing.local.php +++ /dev/null @@ -1,22 +0,0 @@ - [ - 'aliases' => [ - PDO::class => 'database', - Envms\FluentPDO\Query::class => 'query', - Ramsey\Uuid\Uuid::class => 'uuid', - Symfony\Component\Mailer\Mailer::class => 'mailer', - Psr\Log\LoggerInterface::class => 'logger', - ], - 'invokables' => [ - ], - 'factories' => [ - 'database' => Core\Factory\DatabaseFactory::class, - 'query' => Core\Factory\QueryFactory::class, - 'uuid' => Core\Factory\UuidFactory::class, - 'mailer' => Core\Factory\MailFactory::class, - 'logger' => Test\Functional\Mock\NullLoggerFactory::class, - ], - ], -]; diff --git a/tests/config/autoload/token.testing.local.php b/tests/config/autoload/token.testing.local.php deleted file mode 100644 index 4e474e4e..00000000 --- a/tests/config/autoload/token.testing.local.php +++ /dev/null @@ -1,18 +0,0 @@ - [ - 'auth' => [ - 'secret' => 'Oqaf673OLS380moI', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - 'csrf' => [ - 'secret' => '09asd7fuIhfoUiashfo', - 'algorithmus' => 'HS512', - 'duration' => 60 * 60, - 'refresh' => 24 * 60 * 60, - ], - ], -]; diff --git a/tests/config/config.php b/tests/config/config.php deleted file mode 100644 index 59e06248..00000000 --- a/tests/config/config.php +++ /dev/null @@ -1,24 +0,0 @@ -getMergedConfig(); diff --git a/tests/config/container.php b/tests/config/container.php deleted file mode 100644 index 3bae2980..00000000 --- a/tests/config/container.php +++ /dev/null @@ -1,14 +0,0 @@ -pipe(ErrorHandler::class); - $app->pipe(RouteMiddleware::class); - $app->pipe(JwtAuthenticationMiddleware::class); - $app->pipe(DispatchMiddleware::class); - $app->pipe(NotFoundHandler::class); -}; diff --git a/tests/config/routes.php b/tests/config/routes.php deleted file mode 100644 index 09a31d37..00000000 --- a/tests/config/routes.php +++ /dev/null @@ -1,19 +0,0 @@ -get('/api/ping[/]', PingHandler::class, PingHandler::class); - - $app->get( - '/api/user/me[/]', - [ - ApiMeHandler::class, - ], - ApiMeHandler::class - ); -}; From 3d4a484da552e635d4de37ac9e3afb8e0e0f6a1e Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 15:35:05 +0200 Subject: [PATCH 07/62] initial with Auth --- .env.dist | 14 + .github/workflows/codestyle-and-unittest.yml | 106 +- .../{deployment_build.yml => deploy_dev.yml} | 92 +- .github/workflows/deployment_production.yml | 51 - .gitignore | 10 +- .laminas-ci/pre-run.sh | 5 + .phplint.yml | 9 + .rsync-exclude | 33 + CHANGELOG.md | 35 - bin/hackathon | 26 +- bin/migrations.php | 71 + composer.json | 120 + composer.lock | 8516 +++++++++++++++++ config/.gitignore | 1 - config/autoload/.gitignore | 4 +- config/autoload/cors.develope.php | 13 + config/autoload/cors.global.php | 13 + config/autoload/database.action.php | 20 + config/autoload/database.develope.php | 20 + config/autoload/database.global.php.dist | 20 + config/autoload/database.testing.php | 20 + config/autoload/dependencies.action.php | 25 + config/autoload/dependencies.global.php | 46 + config/autoload/dependencies.testing.php | 24 + config/autoload/development.local.php.dist | 35 + config/autoload/local.php.dist | 13 + config/autoload/logger.global.php | 7 + config/autoload/mail.develope.php | 8 + config/autoload/mail.testing.php | 8 + config/autoload/mezzio.global.php | 24 + config/autoload/migrations.action.php | 23 + config/autoload/migrations.develope.php | 22 + config/autoload/migrations.global.php | 22 + config/autoload/migrations.testing.php | 23 + config/autoload/routes.global.php | 29 + config/autoload/token.action.php | 20 + config/autoload/token.develope.php | 20 + config/autoload/token.global.php.dist | 20 + config/autoload/token.testing.php | 20 + config/config.php | 54 + config/container.php | 14 + config/development.config.php.dist | 31 + config/migrations.template.tpl | 19 + config/pipeline.php | 50 + config/routes.php | 82 + database/.gitignore | 1 + ...rsion20231103223745_CreateAccountTable.php | 33 + ...103224045_CreateAccountAccessAuthTable.php | 32 + ...103224046_CreateAccountActivationTable.php | 28 + ...Version20231103224047_CreateTokenTable.php | 29 + docker-compose.yml | 1 + docker/php/php-ini-overrides.ini | 1 + phpcs.xml | 160 + phpstan.neon | 17 + phpunit_functionaltest.xml | 21 + phpunit_unittest.xml | 38 + public/api/{doc => docs}/index.html | 8 +- public/api/docs/swagger.json | 434 + src/App/ConfigProvider.php | 266 + src/App/DTO/AccessToken.php | 24 + src/App/DTO/AccountAuthenticationData.php | 28 + src/App/DTO/AccountPasswordDTO.php | 24 + src/App/DTO/AccountPasswordTokenDTO.php | 24 + src/App/DTO/AccountRegistrationDTO.php | 29 + src/App/DTO/AuthenticationResponse.php | 29 + src/App/DTO/ClientIdentification.php | 17 + src/App/DTO/ClientIdentificationData.php | 20 + src/App/DTO/EMailDTO.php | 24 + src/App/DTO/HttpFailureMessage.php | 29 + src/App/DTO/JwtTokenConfig.php | 26 + src/App/DTO/RefreshToken.php | 24 + src/App/DTO/Token.php | 24 + src/App/Entity/Account.php | 61 + src/App/Entity/AccountAccessAuth.php | 59 + .../Entity/AccountAccessAuthCollection.php | 31 + src/App/Entity/AccountActivation.php | 43 + .../Entity/AccountActivationCollection.php | 31 + src/App/Entity/AccountCollection.php | 31 + src/App/Entity/Token.php | 49 + src/App/Entity/TokenCollection.php | 31 + src/App/Enum/TokenType.php | 9 + .../Handler/Account/AccessTokenHandler.php | 38 + .../Account/AccountActivationHandler.php | 49 + .../AccountPasswordForgottenHandler.php | 34 + .../Account/AccountPasswordHandler.php | 50 + .../Account/AccountRegisterHandler.php | 41 + .../Handler/Account/AuthenticationHandler.php | 54 + src/App/Handler/PingHandler.php | 44 + src/App/Handler/SwaggerUIHandler.php | 57 + .../Hydrator/AccountAccessAuthHydrator.php | 68 + .../AccountAccessAuthHydratorInterface.php | 14 + .../Hydrator/AccountActivationHydrator.php | 62 + .../AccountActivationHydratorInterface.php | 14 + src/App/Hydrator/AccountHydrator.php | 75 + src/App/Hydrator/AccountHydratorInterface.php | 14 + src/App/Hydrator/TokenHydrator.php | 64 + src/App/Hydrator/TokenHydratorInterface.php | 14 + .../Account/ActivationMiddleware.php | 94 + .../AuthenticationConditionsMiddleware.php | 42 + .../AuthenticationMiddleware.php | 58 + .../AuthenticationValidationMiddleware.php | 43 + .../PersistAuthenticationMiddleware.php | 81 + .../Account/PasswordChangeMiddleware.php | 71 + .../Account/PasswordForgottenMiddleware.php | 31 + .../Middleware/Account/RegisterMiddleware.php | 50 + .../RequestAuthenticationMiddleware.php | 73 + .../ActivationInputValidatorMiddleware.php | 48 + .../EmailInputValidatorMiddleware.php | 56 + .../PasswordInputValidatorMiddleware.php | 40 + .../ClientIdentificationMiddleware.php | 31 + .../Token/GenerateAccessTokenMiddleware.php | 31 + .../Token/GenerateRefreshTokenMiddleware.php | 30 + .../Token/RefreshTokenAccountMiddleware.php | 40 + ...efreshTokenDatabaseExistenceMiddleware.php | 40 + ...kenMatchClientIdentificationMiddleware.php | 35 + .../RefreshTokenValidationMiddleware.php | 38 + .../AccountAccessAuthRepository.php | 66 + .../AccountActivationRepository.php | 57 + src/App/Repository/AccountRepository.php | 58 + src/App/Repository/TokenRepository.php | 56 + src/App/Service/Account/AccountService.php | 55 + .../Authentication/AuthenticationService.php | 11 + .../ClientIdentificationService.php | 21 + src/App/Service/Token/AccessTokenService.php | 34 + .../Token/AccessTokenServiceFactory.php | 17 + .../Service/Token/ActivationTokenService.php | 30 + src/App/Service/Token/JwtTokenTrait.php | 42 + .../Service/Token/PasswordTokenService.php | 31 + src/App/Service/Token/RefreshTokenService.php | 34 + .../Token/RefreshTokenServiceFactory.php | 17 + src/App/Table/AbstractTable.php | 44 + src/App/Table/AccountAccessAuthTable.php | 133 + src/App/Table/AccountActivationTable.php | 105 + src/App/Table/AccountTable.php | 105 + src/App/Table/TokenTable.php | 104 + .../Validator/AccountActivationValidator.php | 18 + src/App/Validator/AuthenticationValidator.php | 18 + src/App/Validator/DateLessNow.php | 37 + src/App/Validator/EMailValidator.php | 15 + src/App/Validator/Input/AccountNameInput.php | 26 + src/App/Validator/Input/EmailInput.php | 26 + src/App/Validator/Input/PasswordInput.php | 26 + src/App/Validator/PasswordValidator.php | 15 + src/Core/ConfigProvider.php | 46 + .../AccountAccessAuthCollectionInterface.php | 16 + .../Account/AccountAccessAuthInterface.php | 22 + .../AccountActivationCollectionInterface.php | 16 + .../Account/AccountActivationInterface.php | 18 + .../Account/AccountCollectionInterface.php | 16 + src/Core/Entity/Account/AccountInterface.php | 26 + src/Core/Entity/TokenCollectionInterface.php | 16 + src/Core/Entity/TokenInterface.php | 20 + src/Core/Enum/App/AccountVisibleStatus.php | 23 + src/Core/Enum/App/DateTimeFormat.php | 8 + .../Exception/DuplicateEntryException.php | 18 + src/Core/Exception/EmptyResultException.php | 9 + .../Exception/UndefinedOffsetException.php | 9 + src/Core/Factory/DatabaseFactory.php | 33 + src/Core/Factory/MailFactory.php | 19 + src/Core/Factory/QueryFactory.php | 21 + src/Core/Factory/UuidFactory.php | 13 + src/Core/Hydrator/HydratorInterface.php | 10 + src/Core/Listener/LoggingErrorListener.php | 37 + .../LoggingErrorListenerDelegatorFactory.php | 17 + .../Listener/LoggingErrorListenerFactory.php | 16 + src/Core/Logger/LoggerFactory.php | 68 + src/Core/Logger/MetaDataProcessor.php | 29 + src/Core/Message/DataType.php | 24 + src/Core/Message/OADataType.php | 18 + src/Core/Message/OAMessage.php | 14 + src/Core/Message/ResponseMessage.php | 24 + src/Core/Message/RouteName.php | 22 + .../Middleware/RouteNotFoundMiddleware.php | 24 + .../AccountAccessAuthRepositoryInterface.php | 27 + .../AccountActivationRepositoryInterface.php | 24 + .../Repository/AccountRepositoryInterface.php | 25 + src/Core/Repository/RepositoryInterface.php | 8 + .../Repository/TokenRepositoryInterface.php | 23 + .../Store/AccountAccessAuthStoreInterface.php | 27 + .../Store/AccountActivationStoreInterface.php | 24 + src/Core/Store/AccountStoreInterface.php | 25 + src/Core/Store/StoreInterface.php | 10 + src/Core/Store/TokenStoreInterface.php | 23 + src/Core/Trait/CloneReadonlyClassWith.php | 44 + src/Core/Type/Email.php | 70 + src/Core/Type/TypeInterface.php | 13 + src/Core/Utils/Collectible.php | 7 + src/Core/Utils/Collection.php | 113 + src/Core/Utils/CollectionInterface.php | 12 + src/Core/Utils/UuidFactory.php | 7 + src/Core/Utils/UuidFactoryInterface.php | 12 + tests/FunctionalTest/AbstractFunctional.php | 83 + tests/FunctionalTest/Mock/NullLogger.php | 73 + .../FunctionalTest/Mock/NullLoggerFactory.php | 14 + tests/FunctionalTest/Mock/NullMailer.php | 15 + .../FunctionalTest/Mock/NullMailerFactory.php | 14 + .../Root/Account/AccessTokenHandlerTest.php | 267 + .../Account/AccountActivationHandlerTest.php | 119 + .../AccountPasswordForgottenHandlerTest.php | 61 + .../Account/AccountPasswordHandlerTest.php | 134 + .../Account/AccountRegisterHandlerTest.php | 104 + .../Account/AuthenticationHandlerTest.php | 180 + .../InvalidEMailAddressProviderTrait.php | 54 + tests/FunctionalTest/Root/PingHandlerTest.php | 29 + tests/FunctionalTest/bootstrap.php | 10 + ...on20990921210156_InsertAccountTestData.php | 32 + .../AppTest/Handler/AbstractTestHandler.php | 24 + .../Handler/AuthenticationHandlerTest.php | 35 + .../AppTest/Handler/PingHandlerTest.php | 29 + .../AccountAccessAuthHydratorTest.php | 55 + .../AppTest/Hydrator/AccountHydratorTest.php | 65 + .../Middleware/AbstractTestMiddleware.php | 28 + ...AccountAccessAuthPersistMiddlewareTest.php | 141 + .../AccountAuthenticationMiddlewareTest.php | 124 + ...AuthenticationConditionsMiddlewareTest.php | 58 + .../AuthenticationMiddlewareTest.php | 81 + ...AuthenticationValidationMiddlewareTest.php | 45 + .../ClientIdentificationMiddlewareTest.php | 36 + .../GenerateAccessTokenMiddlewareTest.php | 34 + .../GenerateRefreshTokenMiddlewareTest.php | 39 + .../AccountAccessAuthRepositoryTest.php | 194 + .../Repository/AccountRepositoryTest.php | 161 + .../Service/AccessTokenServiceTest.php | 48 + .../Service/AuthenticationServiceTest.php | 31 + .../Service/RefreshTokenServiceTest.php | 51 + .../Table/AccountAccessAuthTableTest.php | 220 + .../AppTest/Table/AccountTableTest.php | 189 + .../CoreTest/Factory/DatabaseFactoryTest.php | 43 + .../CoreTest/Factory/QueryFactoryTest.php | 29 + tests/UnitTest/GameTest/.gitkeep | 0 tests/UnitTest/JsonRequestHelper.php | 15 + tests/UnitTest/Mock/Constants/Account.php | 60 + .../Mock/Constants/AccountAccessAuth.php | 54 + tests/UnitTest/Mock/Constants/Token.php | 21 + tests/UnitTest/Mock/Database/MockDelete.php | 27 + .../Mock/Database/MockDeleteFailed.php | 24 + tests/UnitTest/Mock/Database/MockInsert.php | 27 + .../Mock/Database/MockInsertFailed.php | 25 + tests/UnitTest/Mock/Database/MockPDO.php | 18 + tests/UnitTest/Mock/Database/MockQuery.php | 37 + .../Mock/Database/MockQueryFailed.php | 37 + tests/UnitTest/Mock/Database/MockSelect.php | 96 + .../Mock/Database/MockSelectFailed.php | 36 + tests/UnitTest/Mock/Database/MockUpdate.php | 22 + .../Mock/Database/MockUpdateFailed.php | 19 + tests/UnitTest/Mock/Entity/MockAccount.php | 48 + ...AuthenticationMiddlewareRequestHandler.php | 24 + tests/UnitTest/Mock/MockContainer.php | 32 + tests/UnitTest/Mock/MockRequestHandler.php | 15 + tests/UnitTest/Mock/MockResponse.php | 83 + tests/UnitTest/Mock/MockServerRequest.php | 187 + .../MockAccountAccessAuthRepository.php | 14 + .../Mock/Repository/MockAccountRepository.php | 14 + ...ntAuthenticationMiddlewareInvalidToken.php | 14 + .../Mock/Service/MockAccessTokenService.php | 35 + .../MockAccessTokenServiceWithoutDuration.php | 35 + .../Service/MockAuthenticationService.php | 14 + .../MockClientIdentificationService.php | 9 + .../Mock/Service/MockRefreshTokenService.php | 22 + .../Mock/Table/MockAccountAccessAuthTable.php | 108 + .../MockAccountAccessAuthTableFailed.php | 25 + .../UnitTest/Mock/Table/MockAccountTable.php | 84 + ...ntAuthenticationMiddlewareInvalidToken.php | 84 + .../Mock/Table/MockAccountTableFailed.php | 26 + .../Validator/MockAuthenticationValidator.php | 20 + .../MockAuthenticationValidatorFailed.php | 20 + 266 files changed, 19769 insertions(+), 156 deletions(-) create mode 100644 .env.dist rename .github/workflows/{deployment_build.yml => deploy_dev.yml} (71%) delete mode 100644 .github/workflows/deployment_production.yml create mode 100755 .laminas-ci/pre-run.sh create mode 100644 .phplint.yml create mode 100644 .rsync-exclude delete mode 100644 CHANGELOG.md create mode 100755 bin/migrations.php create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/autoload/cors.develope.php create mode 100644 config/autoload/cors.global.php create mode 100644 config/autoload/database.action.php create mode 100644 config/autoload/database.develope.php create mode 100644 config/autoload/database.global.php.dist create mode 100644 config/autoload/database.testing.php create mode 100644 config/autoload/dependencies.action.php create mode 100644 config/autoload/dependencies.global.php create mode 100644 config/autoload/dependencies.testing.php create mode 100644 config/autoload/development.local.php.dist create mode 100644 config/autoload/local.php.dist create mode 100644 config/autoload/logger.global.php create mode 100644 config/autoload/mail.develope.php create mode 100644 config/autoload/mail.testing.php create mode 100644 config/autoload/mezzio.global.php create mode 100644 config/autoload/migrations.action.php create mode 100644 config/autoload/migrations.develope.php create mode 100644 config/autoload/migrations.global.php create mode 100644 config/autoload/migrations.testing.php create mode 100644 config/autoload/routes.global.php create mode 100644 config/autoload/token.action.php create mode 100644 config/autoload/token.develope.php create mode 100644 config/autoload/token.global.php.dist create mode 100644 config/autoload/token.testing.php create mode 100644 config/config.php create mode 100644 config/container.php create mode 100644 config/development.config.php.dist create mode 100644 config/migrations.template.tpl create mode 100644 config/pipeline.php create mode 100644 config/routes.php create mode 100644 database/migrations/Version20231103223745_CreateAccountTable.php create mode 100644 database/migrations/Version20231103224045_CreateAccountAccessAuthTable.php create mode 100644 database/migrations/Version20231103224046_CreateAccountActivationTable.php create mode 100644 database/migrations/Version20231103224047_CreateTokenTable.php create mode 100644 phpcs.xml create mode 100644 phpstan.neon create mode 100644 phpunit_functionaltest.xml create mode 100644 phpunit_unittest.xml rename public/api/{doc => docs}/index.html (78%) create mode 100644 public/api/docs/swagger.json create mode 100644 src/App/ConfigProvider.php create mode 100644 src/App/DTO/AccessToken.php create mode 100644 src/App/DTO/AccountAuthenticationData.php create mode 100644 src/App/DTO/AccountPasswordDTO.php create mode 100644 src/App/DTO/AccountPasswordTokenDTO.php create mode 100644 src/App/DTO/AccountRegistrationDTO.php create mode 100644 src/App/DTO/AuthenticationResponse.php create mode 100644 src/App/DTO/ClientIdentification.php create mode 100644 src/App/DTO/ClientIdentificationData.php create mode 100644 src/App/DTO/EMailDTO.php create mode 100644 src/App/DTO/HttpFailureMessage.php create mode 100644 src/App/DTO/JwtTokenConfig.php create mode 100644 src/App/DTO/RefreshToken.php create mode 100644 src/App/DTO/Token.php create mode 100644 src/App/Entity/Account.php create mode 100644 src/App/Entity/AccountAccessAuth.php create mode 100644 src/App/Entity/AccountAccessAuthCollection.php create mode 100644 src/App/Entity/AccountActivation.php create mode 100644 src/App/Entity/AccountActivationCollection.php create mode 100644 src/App/Entity/AccountCollection.php create mode 100644 src/App/Entity/Token.php create mode 100644 src/App/Entity/TokenCollection.php create mode 100644 src/App/Enum/TokenType.php create mode 100644 src/App/Handler/Account/AccessTokenHandler.php create mode 100644 src/App/Handler/Account/AccountActivationHandler.php create mode 100644 src/App/Handler/Account/AccountPasswordForgottenHandler.php create mode 100644 src/App/Handler/Account/AccountPasswordHandler.php create mode 100644 src/App/Handler/Account/AccountRegisterHandler.php create mode 100644 src/App/Handler/Account/AuthenticationHandler.php create mode 100644 src/App/Handler/PingHandler.php create mode 100644 src/App/Handler/SwaggerUIHandler.php create mode 100644 src/App/Hydrator/AccountAccessAuthHydrator.php create mode 100644 src/App/Hydrator/AccountAccessAuthHydratorInterface.php create mode 100644 src/App/Hydrator/AccountActivationHydrator.php create mode 100644 src/App/Hydrator/AccountActivationHydratorInterface.php create mode 100644 src/App/Hydrator/AccountHydrator.php create mode 100644 src/App/Hydrator/AccountHydratorInterface.php create mode 100644 src/App/Hydrator/TokenHydrator.php create mode 100644 src/App/Hydrator/TokenHydratorInterface.php create mode 100644 src/App/Middleware/Account/ActivationMiddleware.php create mode 100644 src/App/Middleware/Account/LoginAuthentication/AuthenticationConditionsMiddleware.php create mode 100644 src/App/Middleware/Account/LoginAuthentication/AuthenticationMiddleware.php create mode 100644 src/App/Middleware/Account/LoginAuthentication/AuthenticationValidationMiddleware.php create mode 100644 src/App/Middleware/Account/LoginAuthentication/PersistAuthenticationMiddleware.php create mode 100644 src/App/Middleware/Account/PasswordChangeMiddleware.php create mode 100644 src/App/Middleware/Account/PasswordForgottenMiddleware.php create mode 100644 src/App/Middleware/Account/RegisterMiddleware.php create mode 100644 src/App/Middleware/Account/RequestAuthenticationMiddleware.php create mode 100644 src/App/Middleware/Account/Validation/ActivationInputValidatorMiddleware.php create mode 100644 src/App/Middleware/Account/Validation/EmailInputValidatorMiddleware.php create mode 100644 src/App/Middleware/Account/Validation/PasswordInputValidatorMiddleware.php create mode 100644 src/App/Middleware/ClientIdentification/ClientIdentificationMiddleware.php create mode 100644 src/App/Middleware/Token/GenerateAccessTokenMiddleware.php create mode 100644 src/App/Middleware/Token/GenerateRefreshTokenMiddleware.php create mode 100644 src/App/Middleware/Token/RefreshTokenAccountMiddleware.php create mode 100644 src/App/Middleware/Token/RefreshTokenDatabaseExistenceMiddleware.php create mode 100644 src/App/Middleware/Token/RefreshTokenMatchClientIdentificationMiddleware.php create mode 100644 src/App/Middleware/Token/RefreshTokenValidationMiddleware.php create mode 100644 src/App/Repository/AccountAccessAuthRepository.php create mode 100644 src/App/Repository/AccountActivationRepository.php create mode 100644 src/App/Repository/AccountRepository.php create mode 100644 src/App/Repository/TokenRepository.php create mode 100644 src/App/Service/Account/AccountService.php create mode 100644 src/App/Service/Authentication/AuthenticationService.php create mode 100644 src/App/Service/ClientIdentification/ClientIdentificationService.php create mode 100644 src/App/Service/Token/AccessTokenService.php create mode 100644 src/App/Service/Token/AccessTokenServiceFactory.php create mode 100644 src/App/Service/Token/ActivationTokenService.php create mode 100644 src/App/Service/Token/JwtTokenTrait.php create mode 100644 src/App/Service/Token/PasswordTokenService.php create mode 100644 src/App/Service/Token/RefreshTokenService.php create mode 100644 src/App/Service/Token/RefreshTokenServiceFactory.php create mode 100644 src/App/Table/AbstractTable.php create mode 100644 src/App/Table/AccountAccessAuthTable.php create mode 100644 src/App/Table/AccountActivationTable.php create mode 100644 src/App/Table/AccountTable.php create mode 100644 src/App/Table/TokenTable.php create mode 100644 src/App/Validator/AccountActivationValidator.php create mode 100644 src/App/Validator/AuthenticationValidator.php create mode 100644 src/App/Validator/DateLessNow.php create mode 100644 src/App/Validator/EMailValidator.php create mode 100644 src/App/Validator/Input/AccountNameInput.php create mode 100644 src/App/Validator/Input/EmailInput.php create mode 100644 src/App/Validator/Input/PasswordInput.php create mode 100644 src/App/Validator/PasswordValidator.php create mode 100644 src/Core/ConfigProvider.php create mode 100644 src/Core/Entity/Account/AccountAccessAuthCollectionInterface.php create mode 100644 src/Core/Entity/Account/AccountAccessAuthInterface.php create mode 100644 src/Core/Entity/Account/AccountActivationCollectionInterface.php create mode 100644 src/Core/Entity/Account/AccountActivationInterface.php create mode 100644 src/Core/Entity/Account/AccountCollectionInterface.php create mode 100644 src/Core/Entity/Account/AccountInterface.php create mode 100644 src/Core/Entity/TokenCollectionInterface.php create mode 100644 src/Core/Entity/TokenInterface.php create mode 100644 src/Core/Enum/App/AccountVisibleStatus.php create mode 100644 src/Core/Enum/App/DateTimeFormat.php create mode 100644 src/Core/Exception/DuplicateEntryException.php create mode 100644 src/Core/Exception/EmptyResultException.php create mode 100644 src/Core/Exception/UndefinedOffsetException.php create mode 100644 src/Core/Factory/DatabaseFactory.php create mode 100644 src/Core/Factory/MailFactory.php create mode 100644 src/Core/Factory/QueryFactory.php create mode 100644 src/Core/Factory/UuidFactory.php create mode 100644 src/Core/Hydrator/HydratorInterface.php create mode 100644 src/Core/Listener/LoggingErrorListener.php create mode 100644 src/Core/Listener/LoggingErrorListenerDelegatorFactory.php create mode 100644 src/Core/Listener/LoggingErrorListenerFactory.php create mode 100644 src/Core/Logger/LoggerFactory.php create mode 100644 src/Core/Logger/MetaDataProcessor.php create mode 100644 src/Core/Message/DataType.php create mode 100644 src/Core/Message/OADataType.php create mode 100644 src/Core/Message/OAMessage.php create mode 100644 src/Core/Message/ResponseMessage.php create mode 100644 src/Core/Message/RouteName.php create mode 100644 src/Core/Middleware/RouteNotFoundMiddleware.php create mode 100644 src/Core/Repository/AccountAccessAuthRepositoryInterface.php create mode 100644 src/Core/Repository/AccountActivationRepositoryInterface.php create mode 100644 src/Core/Repository/AccountRepositoryInterface.php create mode 100644 src/Core/Repository/RepositoryInterface.php create mode 100644 src/Core/Repository/TokenRepositoryInterface.php create mode 100644 src/Core/Store/AccountAccessAuthStoreInterface.php create mode 100644 src/Core/Store/AccountActivationStoreInterface.php create mode 100644 src/Core/Store/AccountStoreInterface.php create mode 100644 src/Core/Store/StoreInterface.php create mode 100644 src/Core/Store/TokenStoreInterface.php create mode 100644 src/Core/Trait/CloneReadonlyClassWith.php create mode 100644 src/Core/Type/Email.php create mode 100644 src/Core/Type/TypeInterface.php create mode 100644 src/Core/Utils/Collectible.php create mode 100644 src/Core/Utils/Collection.php create mode 100644 src/Core/Utils/CollectionInterface.php create mode 100644 src/Core/Utils/UuidFactory.php create mode 100644 src/Core/Utils/UuidFactoryInterface.php create mode 100644 tests/FunctionalTest/AbstractFunctional.php create mode 100644 tests/FunctionalTest/Mock/NullLogger.php create mode 100644 tests/FunctionalTest/Mock/NullLoggerFactory.php create mode 100644 tests/FunctionalTest/Mock/NullMailer.php create mode 100644 tests/FunctionalTest/Mock/NullMailerFactory.php create mode 100644 tests/FunctionalTest/Root/Account/AccessTokenHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/AccountActivationHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/AccountPasswordForgottenHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/AccountPasswordHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/AccountRegisterHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/AuthenticationHandlerTest.php create mode 100644 tests/FunctionalTest/Root/Account/InvalidEMailAddressProviderTrait.php create mode 100644 tests/FunctionalTest/Root/PingHandlerTest.php create mode 100644 tests/FunctionalTest/bootstrap.php create mode 100644 tests/FunctionalTest/database/migrations/Version20990921210156_InsertAccountTestData.php create mode 100644 tests/UnitTest/AppTest/Handler/AbstractTestHandler.php create mode 100644 tests/UnitTest/AppTest/Handler/AuthenticationHandlerTest.php create mode 100644 tests/UnitTest/AppTest/Handler/PingHandlerTest.php create mode 100644 tests/UnitTest/AppTest/Hydrator/AccountAccessAuthHydratorTest.php create mode 100644 tests/UnitTest/AppTest/Hydrator/AccountHydratorTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/AbstractTestMiddleware.php create mode 100644 tests/UnitTest/AppTest/Middleware/AccountAccessAuthPersistMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/AccountAuthenticationMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/AuthenticationConditionsMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/AuthenticationMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/AuthenticationValidationMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/ClientIdentificationMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/GenerateAccessTokenMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Middleware/GenerateRefreshTokenMiddlewareTest.php create mode 100644 tests/UnitTest/AppTest/Repository/AccountAccessAuthRepositoryTest.php create mode 100644 tests/UnitTest/AppTest/Repository/AccountRepositoryTest.php create mode 100644 tests/UnitTest/AppTest/Service/AccessTokenServiceTest.php create mode 100644 tests/UnitTest/AppTest/Service/AuthenticationServiceTest.php create mode 100644 tests/UnitTest/AppTest/Service/RefreshTokenServiceTest.php create mode 100644 tests/UnitTest/AppTest/Table/AccountAccessAuthTableTest.php create mode 100644 tests/UnitTest/AppTest/Table/AccountTableTest.php create mode 100644 tests/UnitTest/CoreTest/Factory/DatabaseFactoryTest.php create mode 100644 tests/UnitTest/CoreTest/Factory/QueryFactoryTest.php create mode 100644 tests/UnitTest/GameTest/.gitkeep create mode 100644 tests/UnitTest/JsonRequestHelper.php create mode 100644 tests/UnitTest/Mock/Constants/Account.php create mode 100644 tests/UnitTest/Mock/Constants/AccountAccessAuth.php create mode 100644 tests/UnitTest/Mock/Constants/Token.php create mode 100644 tests/UnitTest/Mock/Database/MockDelete.php create mode 100644 tests/UnitTest/Mock/Database/MockDeleteFailed.php create mode 100644 tests/UnitTest/Mock/Database/MockInsert.php create mode 100644 tests/UnitTest/Mock/Database/MockInsertFailed.php create mode 100644 tests/UnitTest/Mock/Database/MockPDO.php create mode 100644 tests/UnitTest/Mock/Database/MockQuery.php create mode 100644 tests/UnitTest/Mock/Database/MockQueryFailed.php create mode 100644 tests/UnitTest/Mock/Database/MockSelect.php create mode 100644 tests/UnitTest/Mock/Database/MockSelectFailed.php create mode 100644 tests/UnitTest/Mock/Database/MockUpdate.php create mode 100644 tests/UnitTest/Mock/Database/MockUpdateFailed.php create mode 100644 tests/UnitTest/Mock/Entity/MockAccount.php create mode 100644 tests/UnitTest/Mock/MockAccountAuthenticationMiddlewareRequestHandler.php create mode 100644 tests/UnitTest/Mock/MockContainer.php create mode 100644 tests/UnitTest/Mock/MockRequestHandler.php create mode 100644 tests/UnitTest/Mock/MockResponse.php create mode 100644 tests/UnitTest/Mock/MockServerRequest.php create mode 100644 tests/UnitTest/Mock/Repository/MockAccountAccessAuthRepository.php create mode 100644 tests/UnitTest/Mock/Repository/MockAccountRepository.php create mode 100644 tests/UnitTest/Mock/Repository/MockAccountRepositoryAccountAuthenticationMiddlewareInvalidToken.php create mode 100644 tests/UnitTest/Mock/Service/MockAccessTokenService.php create mode 100644 tests/UnitTest/Mock/Service/MockAccessTokenServiceWithoutDuration.php create mode 100644 tests/UnitTest/Mock/Service/MockAuthenticationService.php create mode 100644 tests/UnitTest/Mock/Service/MockClientIdentificationService.php create mode 100644 tests/UnitTest/Mock/Service/MockRefreshTokenService.php create mode 100644 tests/UnitTest/Mock/Table/MockAccountAccessAuthTable.php create mode 100644 tests/UnitTest/Mock/Table/MockAccountAccessAuthTableFailed.php create mode 100644 tests/UnitTest/Mock/Table/MockAccountTable.php create mode 100644 tests/UnitTest/Mock/Table/MockAccountTableAccountAuthenticationMiddlewareInvalidToken.php create mode 100644 tests/UnitTest/Mock/Table/MockAccountTableFailed.php create mode 100644 tests/UnitTest/Mock/Validator/MockAuthenticationValidator.php create mode 100644 tests/UnitTest/Mock/Validator/MockAuthenticationValidatorFailed.php diff --git a/.env.dist b/.env.dist new file mode 100644 index 00000000..e80ae27f --- /dev/null +++ b/.env.dist @@ -0,0 +1,14 @@ +APP_ENV=develope +USERMAP_UID=1000 +USERMAP_GID=984 +MYSQL_USER=dev +MYSQL_PASSWORD=dev +MYSQL_ROOT_PASSWORD=root +MYSQL_DATABASE=db +MYSQL_PUBLIC_PORT=3306 +MYSQL_TESTING_PORT=3307 +PHP_VERSION=8.3 +MARIADB_VERSION=latest +APACHE_VERSION=2.4-alpine +HTTP_PORT=80 +SHTTP_PORT=443 diff --git a/.github/workflows/codestyle-and-unittest.yml b/.github/workflows/codestyle-and-unittest.yml index c6be1757..ae528968 100644 --- a/.github/workflows/codestyle-and-unittest.yml +++ b/.github/workflows/codestyle-and-unittest.yml @@ -4,9 +4,9 @@ on: branches: - '*' - '!master' + - '!develope' paths: - "**.php" - pull_request: jobs: phplint: @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -34,12 +34,20 @@ jobs: - name: Run PHP Linter run: composer run-script phplint + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: PHP Lint failed. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() + phpstan: name: PHP Stan runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -59,12 +67,20 @@ jobs: - name: Run PHP Stan run: composer run-script phpstan + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: PHP Stan failed. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() + phpcs: name: PHP CodeSniffer runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -84,6 +100,14 @@ jobs: - name: Run PHP Codesniffer run: composer run-script phpcs + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: CodeSniffer failed. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() + phpunit: name: PHP Unit Test needs: @@ -93,7 +117,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -113,6 +137,14 @@ jobs: - name: Run PHP Unit Test run: composer run-script unittest + - name: Test Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: PHP Unit Test failed. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() + phpfunctional: name: PHP Functional Test needs: @@ -120,17 +152,36 @@ jobs: - phpstan - phpcs runs-on: ubuntu-latest - + env: + DB_DATABASE: db + DB_USERNAME: dev + DB_PASSWORD: dev + DB_HOST: 127.0.0.1 + DB_PORT: 3306 + MYSQL_ALLOW_EMPTY_PASSWORD: false + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: db + APP_ENV: action + services: + database-testing: + image: mariadb:latest + env: + MYSQL_ALLOW_EMPTY_PASSWORD: false + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: db + MYSQL_USER: dev + MYSQL_PASSWORD: dev + ports: + - 3306:3306 + options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - - uses: actions/checkout@v4.1.1 - + - uses: actions/checkout@v4.2.2 - name: Install PHP with extensions. uses: shivammathur/setup-php@v2 with: php-version: 8.3 - extensions: pdo, pdo_sqlite + extensions: pdo ini-values: date.timezone='UTC' - - name: Validate composer.json and composer.lock run: composer validate --strict @@ -146,5 +197,38 @@ jobs: - name: Install dependencies run: composer install --prefer-dist --no-progress - - name: Run PHP Unit Test + - name: Run PHP Functional Test run: composer run-script functionaltest + + - name: Test Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: Functional Test failed. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() + + message: + needs: + - phpcs + - phplint + - phpstan + - phpunit + - phpfunctional + runs-on: ubuntu-latest + steps: + - name: Check Info Success + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: info + details: Checks successfully executed on API. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: success() + + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 + with: + severity: error + details: Incorrect checks during the API check. + webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} + if: failure() diff --git a/.github/workflows/deployment_build.yml b/.github/workflows/deploy_dev.yml similarity index 71% rename from .github/workflows/deployment_build.yml rename to .github/workflows/deploy_dev.yml index e6f1be5f..e49ed94c 100644 --- a/.github/workflows/deployment_build.yml +++ b/.github/workflows/deploy_dev.yml @@ -1,17 +1,16 @@ -name: Development Deployment +name: Deployment on Developement on: push: - branches: [ "master" ] + branches: [ "develope" ] workflow_dispatch: jobs: - phplint: name: PHP Lint runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -31,11 +30,11 @@ jobs: - name: Run PHP Linter run: composer run-script phplint - - name: Test Info - uses: rjstone/discord-webhook-notify@v1 + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Code-Style error. + details: PHP Lint failed. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() @@ -44,7 +43,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -64,11 +63,11 @@ jobs: - name: Run PHP Stan run: composer run-script phpstan - - name: Test Info - uses: rjstone/discord-webhook-notify@v1 + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Code-Style error. + details: PHP Stan failed. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() @@ -77,7 +76,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -97,11 +96,11 @@ jobs: - name: Run PHP Codesniffer run: composer run-script phpcs - - name: Test Info - uses: rjstone/discord-webhook-notify@v1 + - name: Check Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Code-Style error. + details: CodeSniffer failed. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() @@ -114,7 +113,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4.1.1 + - uses: actions/checkout@v4.2.2 - name: Validate composer.json and composer.lock run: composer validate --strict @@ -134,11 +133,11 @@ jobs: - name: Run PHP Unit Test run: composer run-script unittest - - name: Test Info - uses: rjstone/discord-webhook-notify@v1 + - name: Test Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Test error. + details: PHP Unit Test failed. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() @@ -149,17 +148,36 @@ jobs: - phpstan - phpcs runs-on: ubuntu-latest - + env: + DB_DATABASE: db + DB_USERNAME: dev + DB_PASSWORD: dev + DB_HOST: 127.0.0.1 + DB_PORT: 3306 + MYSQL_ALLOW_EMPTY_PASSWORD: false + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: db + APP_ENV: action + services: + database-testing: + image: mariadb:latest + env: + MYSQL_ALLOW_EMPTY_PASSWORD: false + MYSQL_ROOT_PASSWORD: root + MYSQL_DATABASE: db + MYSQL_USER: dev + MYSQL_PASSWORD: dev + ports: + - 3306:3306 + options: --health-cmd="healthcheck.sh --connect --innodb_initialized" --health-interval=10s --health-timeout=5s --health-retries=3 steps: - - uses: actions/checkout@v4.1.1 - + - uses: actions/checkout@v4.2.2 - name: Install PHP with extensions. uses: shivammathur/setup-php@v2 with: php-version: 8.3 - extensions: pdo, pdo_sqlite + extensions: pdo ini-values: date.timezone='UTC' - - name: Validate composer.json and composer.lock run: composer validate --strict @@ -175,18 +193,18 @@ jobs: - name: Install dependencies run: composer install --prefer-dist --no-progress - - name: Run PHP Unit Test + - name: Run PHP Functional Test run: composer run-script functionaltest - - name: Test Info - uses: rjstone/discord-webhook-notify@v1 + - name: Test Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Test error. + details: Functional Test failed. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() - deployment_of_hackathon_to_build: + deployment_of_stormannsgal_to_develope: name: Deploy Build needs: - phpcs @@ -208,27 +226,27 @@ jobs: - name: rsync deployments uses: burnett01/rsync-deployments@7.0.1 with: - switches: -avz --no-o --no-g --no-perms --no-t --omit-dir-times --delete --exclude '*' --include-from='.rsync-include' + switches: -avz --no-o --no-g --no-perms --no-t --omit-dir-times --delete --exclude-from='.rsync-exclude' path: / - remote_path: ${{ secrets.DEPLOY_PATH_API_BUILD }} + remote_path: ${{ secrets.DEPLOY_PATH_API_DEV }} remote_host: ${{ secrets.DEPLOY_HOST }} remote_port: ${{ secrets.DEPLOY_PORT }} remote_user: ${{ secrets.DEPLOY_USER }} remote_key: ${{ secrets.DEPLOY_KEY }} remote_key_pass: ${{ secrets.DEPLOY_KEY_PASS }} - - name: Test Info Success - uses: rjstone/discord-webhook-notify@v1 + - name: Deploay Info Success + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: info - details: Successful deployment on build https://build.hackathon.exdrals.de + details: Successful deployment on build https://dev.stormannsgal.de webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: success() - - name: Test Info Failure - uses: rjstone/discord-webhook-notify@v1 + - name: Deplay Info Failure + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error - details: Failure deployment on build. + details: Failure deployment on develope. webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: failure() diff --git a/.github/workflows/deployment_production.yml b/.github/workflows/deployment_production.yml deleted file mode 100644 index 49208751..00000000 --- a/.github/workflows/deployment_production.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Production Deployment - -on: - release: - types: [ published ] - -jobs: - deployment_of_hackathon_to_production: - env: - VUE_APP_API_BASE_URL: 'https://hackathon.exdrals.de' - runs-on: ubuntu-latest - steps: - - name: Get latest code - uses: actions/checkout@v4.1.1 - - - name: Install Composer Dependencies - run: composer install --prefer-dist --no-progress --no-dev - - - name: Run create openapi Data - run: composer run-script openapi - - - name: FTP Deploy to Production Server (Staging) - uses: SamKirkland/FTP-Deploy-Action@4.3.2 - with: - server: ${{ secrets.PROD_HOST }} - username: ${{ secrets.PROD_USER }} - password: ${{ secrets.PROD_PASSWORD }} - exclude: | - **/.git* - **/*.dist - **/*.dist/** - **/.git*/** - **/bin/** - **/tests/** - **/config/autoload/** - **/config/migrations/** - **/node_modules/** - **/client/** - **/database/** - **/scripts/** - **/tests/** - **/docker/** - **/public/assets/** - **/public/index.html - **/*.md - **/*.xml - **/*.neon - **/*.json - **/*.yml - **/*.lock - **/LICENSE diff --git a/.gitignore b/.gitignore index e3dcfbf5..e3d8f26f 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /tests/behat.yml /tests/.phpunit.result.cache /vendor/ +/public/assets/* *.cache *.phar .ddev @@ -9,4 +10,11 @@ /database/structure/update*.sql /public/api/doc/swagger.json coverage.xml -/.env +/.phpcs-cache +/.phpunit.result.cache +/clover.xml +/coveralls-upload.json +/phpunit.xml +/public/test.php +/tmp +.env diff --git a/.laminas-ci/pre-run.sh b/.laminas-ci/pre-run.sh new file mode 100755 index 00000000..8b8528d8 --- /dev/null +++ b/.laminas-ci/pre-run.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# Due to the fact that we are disabling plugins when installing/updating/downgrading composer dependencies +# we have to manually enable the coding standard here. +composer enable-codestandard diff --git a/.phplint.yml b/.phplint.yml new file mode 100644 index 00000000..2264a4f4 --- /dev/null +++ b/.phplint.yml @@ -0,0 +1,9 @@ +path: ./ +jobs: 10 +cache: .phplint.cache +extensions: + - php +exclude: + - vendor +warning: true +memory_limit: -1 diff --git a/.rsync-exclude b/.rsync-exclude new file mode 100644 index 00000000..97e349aa --- /dev/null +++ b/.rsync-exclude @@ -0,0 +1,33 @@ +/.github +/.laminas-ci +/bin/ +/config/.gitignore +/config/*.dist +/config/*.tpl +/config/autoload/.gitignore +/config/autoload/*.dist +/config/autoload/*.local.* +/config/autoload/*.testing.* +/config/autoload/*.develope.* +/config/autoload/*.action.* +/config/autoload/migrations.* +/database/ +/data/.gitignore +/data/log/** +/docker/ +/docs/ +/public/.* +/public/*.php +/public/*.html +/public/assets/ +/tests/ +/.* +/*.json +/*.lock +/*.yml +/*.yaml +/*.xml +/*.neon +/*.md +/LICENSE +/README diff --git a/CHANGELOG.md b/CHANGELOG.md deleted file mode 100644 index ec2148df..00000000 --- a/CHANGELOG.md +++ /dev/null @@ -1,35 +0,0 @@ - - -# Changelog for the Hackathon evaluation Project - - - - - - - - - - - - - - - -## Unreleased - - - - - - - - - - - - diff --git a/bin/hackathon b/bin/hackathon index 93c6f4cc..ff1f25c8 100755 --- a/bin/hackathon +++ b/bin/hackathon @@ -1,13 +1,12 @@ #!/usr/bin/bash -export APP_ENV=${APP_ENV:-develope} function composer_install() { docker-compose exec php composer install } function setup_database() { - docker-compose exec --env APP_ENV php composer run doctrine migrations:sync-metadata-storage - docker-compose exec --env APP_ENV php composer run doctrine migrations:migrate --no-interaction + docker-compose exec php composer run doctrine migrations:sync-metadata-storage + docker-compose exec php composer run doctrine migrations:migrate --no-interaction } function docker_start() { @@ -20,6 +19,7 @@ function docker_down() { function docker_database_cleanup() { docker volume rm hackathon-api_db + docker volume rm hackathon-api_db-testing } function docker_vendor_cleanup() { @@ -27,7 +27,7 @@ function docker_vendor_cleanup() { } function docker_cleanup() { - docker image rm -f ghcr.io/ownhackathon/hackathon-api-php:latest mariadb:latest mailhog/mailhog httpd:alpine + docker image rm ghcr.io/ownhackathon/hackathon-api-php:latest mariadb:latest mailhog/mailhog httpd:alpine docker_database_cleanup docker_vendor_cleanup } @@ -51,10 +51,6 @@ case $1 in setup_database ;; - "clean") - docker_vendor_cleanup - ;; - "reset") echo "turning down docker container" docker_down @@ -65,7 +61,7 @@ case $1 in docker_cleanup ;; "vendor") - echo "cleanup vendor folder" + echo "cleanup database with vendor" docker_vendor_cleanup ;; *) @@ -81,7 +77,7 @@ case $1 in composer_install echo "wait for services" - sleep 5 + sleep 10 echo "create database storage information an run migrations" setup_database @@ -90,10 +86,14 @@ case $1 in ;; "composer") - docker-compose run --rm --env APP_ENV php composer "${@:2}" + docker-compose run --rm php composer "${@:2}" ;; - "php") - docker-compose run --rm --env APP_ENV php "${@:2}" + "indocker") + docker-compose run --rm php "${@:2}" + ;; + + *) + ;; esac diff --git a/bin/migrations.php b/bin/migrations.php new file mode 100755 index 00000000..cef980d9 --- /dev/null +++ b/bin/migrations.php @@ -0,0 +1,71 @@ +#!/usr/bin/env php +setCustomTemplate(__DIR__ . '/../config/migrations.template.tpl'); + +$configuration->addMigrationsDirectory('Migrations', $config['migrations_paths']['Migrations']); +if (array_key_exists('TestDataMigrations', $config['migrations_paths'])) { + $configuration->addMigrationsDirectory('TestDataMigrations', $config['migrations_paths']['TestDataMigrations']); +} +$configuration->setAllOrNothing($config['all_or_nothing']); +$configuration->setCheckDatabasePlatform($config['check_database_platform']); +$configuration->setTransactional($config['transactional']); +$configuration->setMigrationOrganization($config['organize_migrations']); + +$storageConfiguration = new TableMetadataStorageConfiguration(); +$storageConfiguration->setTableName($config['table_storage']['table_name']); +$storageConfiguration->setVersionColumnName($config['table_storage']['version_column_name']); +$storageConfiguration->setVersionColumnLength($config['table_storage']['version_column_length']); +$storageConfiguration->setExecutedAtColumnName($config['table_storage']['executed_at_column_name']); +$storageConfiguration->setExecutionTimeColumnName($config['table_storage']['execution_time_column_name']); + +$configuration->setMetadataStorageConfiguration($storageConfiguration); + +$container = require_once __DIR__ . '/../config/container.php'; + +$dependencyFactory = DependencyFactory::fromConnection( + new ExistingConfiguration($configuration), + new ExistingConnection($connection) +); + +$dependencyFactory->setService(Psr\Container\ContainerInterface::class, $container); + +$cli = new Application('Doctrine Migrations'); +$cli->setCatchExceptions(true); + +$cli->addCommands([ + new Command\DumpSchemaCommand($dependencyFactory), + new Command\ExecuteCommand($dependencyFactory), + new Command\GenerateCommand($dependencyFactory), + new Command\LatestCommand($dependencyFactory), + new Command\ListCommand($dependencyFactory), + new Command\MigrateCommand($dependencyFactory), + new Command\RollupCommand($dependencyFactory), + new Command\StatusCommand($dependencyFactory), + new Command\SyncMetadataCommand($dependencyFactory), + new Command\VersionCommand($dependencyFactory), +]); + +$cli->run(); diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..1c8410e7 --- /dev/null +++ b/composer.json @@ -0,0 +1,120 @@ +{ + "name": "ownhackathon/hackathon-api", + "description": "Evaluation project for self-created hackathon", + "type": "project", + "license": "BSD-3-Clause", + "keywords": [ + "Hackathon", + "OpenSource" + ], + "homepage": "https://github.com/ownHackathon", + "support": { + "docs": "https://github.com/ownHackathon", + "issues": "https://github.com/ownHackathon/hackathon-api/issues", + "source": "https://github.com/ownHackathon/hackathon-api" + }, + "config": { + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true, + "composer/package-versions-deprecated": true, + "laminas/laminas-component-installer": true + }, + "platform": { + "php": "8.3.0" + } + }, + "extra": { + "laminas": { + "component-auto-installs": [ + "mezzio/mezzio", + "mezzio/mezzio-helpers", + "mezzio/mezzio-router", + "laminas/laminas-httphandlerrunner", + "mezzio/mezzio-fastroute" + ] + } + }, + "require": { + "php": "~8.3.0", + "ext-json": "*", + "ext-openssl": "*", + "ext-pdo": "*", + "composer/package-versions-deprecated": "^1.10.99", + "doctrine/migrations": "^3.6", + "envms/fluentpdo": "^2.2", + "firebase/php-jwt": "^6.0", + "jetbrains/phpstorm-attributes": "^1.0", + "laminas/laminas-component-installer": "^2.6 || ^3.0", + "laminas/laminas-config-aggregator": "^1.6", + "laminas/laminas-diactoros": "^2.24.2", + "laminas/laminas-inputfilter": "^2.30", + "laminas/laminas-servicemanager": "^3.4", + "laminas/laminas-stdlib": "^3.6", + "laminas/laminas-validator": "^2.64", + "mezzio/mezzio": "^3.7", + "mezzio/mezzio-cors": "^1.13", + "mezzio/mezzio-fastroute": "^3.0.3", + "mezzio/mezzio-helpers": "^5.7", + "mezzio/mezzio-tooling": "^2.8", + "monolog/monolog": "^3.9.0", + "ramsey/uuid": "^4.7", + "symfony/mailer": "^7.3", + "zircote/swagger-php": "^4.7" + }, + "require-dev": { + "filp/whoops": "^2.7.1", + "helmich/phpunit-json-assert": "^3.5", + "helmich/phpunit-psr7-assert": "^4.4", + "laminas/laminas-development-mode": "^3.3.0", + "overtrue/phplint": "^9.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.2", + "phpunit/php-code-coverage": "^10.0", + "phpunit/phpunit": "^10.0", + "roave/security-advisories": "dev-master", + "slevomat/coding-standard": "^8.14", + "squizlabs/php_codesniffer": "^3.7" + }, + "autoload": { + "psr-4": { + "ownHackathon\\App\\": "src/App/", + "ownHackathon\\Core\\": "src/Core/" + } + }, + "autoload-dev": { + "psr-4": { + "ownHackathon\\UnitTest\\": "tests/UnitTest/", + "ownHackathon\\FunctionalTest\\": "tests/FunctionalTest/" + } + }, + "scripts": { + "post-create-project-cmd": [ + "@development-enable" + ], + "development-disable": "laminas-development-mode disable", + "development-enable": "laminas-development-mode enable", + "development-status": "laminas-development-mode status", + "mezzio": "laminas --ansi", + "clear-config-cache": "php bin/clear-config-cache.php", + "enable-codestandard": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin::run", + "doctrine": "php ./bin/migrations.php", + "openapi": "php ./vendor/bin/openapi ./src -f json -o ./public/api/docs/swagger.json", + "phplint": "vendor/bin/phplint", + "phpcs": "phpcs --standard=phpcs.xml -s -p", + "phpcbf": "phpcbf --standard=phpcs.xml -p", + "phpstan": "vendor/bin/phpstan analyse -c phpstan.neon", + "unittest": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --colors=always --configuration phpunit_unittest.xml", + "functionaltest": "XDEBUG_MODE=coverage ./vendor/bin/phpunit --colors=always --configuration phpunit_functionaltest.xml", + "test": [ + "@unittest", + "@functionaltest" + ], + "check": [ + "@phplint", + "@phpcs", + "@phpstan", + "@test" + ] + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..9ec6b24a --- /dev/null +++ b/composer.lock @@ -0,0 +1,8516 @@ +{ + "_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": "3df468d49dc6191a49240b6e113267bd", + "packages": [ + { + "name": "brick/math", + "version": "0.13.1", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04", + "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.1", + "vimeo/psalm": "6.8.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "bignumber", + "brick", + "decimal", + "integer", + "math", + "mathematics", + "rational" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.13.1" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-03-29T13:50:30+00:00" + }, + { + "name": "brick/varexporter", + "version": "0.6.0", + "source": { + "type": "git", + "url": "https://github.com/brick/varexporter.git", + "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/varexporter/zipball/af98bfc2b702a312abbcaff37656dbe419cec5bc", + "reference": "af98bfc2b702a312abbcaff37656dbe419cec5bc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": "^8.1" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "6.8.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\VarExporter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A powerful alternative to var_export(), which can export closures and objects without __set_state()", + "keywords": [ + "var_export" + ], + "support": { + "issues": "https://github.com/brick/varexporter/issues", + "source": "https://github.com/brick/varexporter/tree/0.6.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2025-02-20T17:42:39+00:00" + }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.5", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" + }, + "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-01-17T14:14:24+00:00" + }, + { + "name": "doctrine/dbal", + "version": "4.3.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "7669f131d43b880de168b2d2df9687d152d6c762" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/7669f131d43b880de168b2d2df9687d152d6c762", + "reference": "7669f131d43b880de168b2d2df9687d152d6c762", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "13.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.2", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "11.5.23", + "slevomat/coding-standard": "8.16.2", + "squizlabs/php_codesniffer": "3.13.1", + "symfony/cache": "^6.3.8|^7.0", + "symfony/console": "^5.4|^6.3|^7.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/4.3.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2025-08-05T13:30:38+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2024-05-22T20:47:39+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "doctrine/migrations", + "version": "3.9.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "fa94c6f06b1bc6d4759481ec20b8b81d13e861be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/fa94c6f06b1bc6d4759481ec20b8b81d13e861be", + "reference": "fa94c6f06b1bc6d4759481ec20b8b81d13e861be", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.6 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", + "psr/log": "^1.1.3 || ^2 || ^3", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" + }, + "require-dev": { + "doctrine/coding-standard": "^13", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", + "doctrine/sql-formatter": "^1.0", + "ext-pdo_sqlite": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Migrations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", + "keywords": [ + "database", + "dbal", + "migrations" + ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.9.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2025-07-29T11:36:14+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "envms/fluentpdo", + "version": "v2.2.4", + "source": { + "type": "git", + "url": "https://github.com/envms/fluentpdo.git", + "reference": "1985e0e8406a56140f387bc9bec786b419cbeccc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/envms/fluentpdo/zipball/1985e0e8406a56140f387bc9bec786b419cbeccc", + "reference": "1985e0e8406a56140f387bc9bec786b419cbeccc", + "shasum": "" + }, + "require": { + "ext-pdo": "*", + "php": ">=7.1" + }, + "require-dev": { + "envms/fluent-test": "^1.0", + "phpunit/phpunit": "^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Envms\\FluentPDO\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0", + "GPL-2.0+" + ], + "authors": [ + { + "name": "envms", + "homepage": "https://env.ms" + } + ], + "description": "FluentPDO is a quick and light PHP library for rapid query building. It features a smart join builder, which automatically creates table joins.", + "homepage": "https://github.com/envms/fluentpdo", + "keywords": [ + "builder", + "database", + "db", + "dbal", + "fluent", + "mysql", + "oracle", + "pdo", + "query" + ], + "support": { + "issues": "https://github.com/envms/fluentpdo/issues", + "source": "https://github.com/envms/fluentpdo/tree/v2.2.4" + }, + "time": "2022-01-27T21:49:44+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" + }, + "time": "2020-11-24T22:02:12+00:00" + }, + { + "name": "firebase/php-jwt", + "version": "v6.11.1", + "source": { + "type": "git", + "url": "https://github.com/firebase/php-jwt.git", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "reference": "d1e91ecf8c598d073d0995afa8cd5c75c6e19e66", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.4", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psr/cache": "^2.0||^3.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-sodium": "Support EdDSA (Ed25519) signatures", + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + }, + "type": "library", + "autoload": { + "psr-4": { + "Firebase\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Neuman Vong", + "email": "neuman+pear@twilio.com", + "role": "Developer" + }, + { + "name": "Anant Narayanan", + "email": "anant@php.net", + "role": "Developer" + } + ], + "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", + "homepage": "https://github.com/firebase/php-jwt", + "keywords": [ + "jwt", + "php" + ], + "support": { + "issues": "https://github.com/firebase/php-jwt/issues", + "source": "https://github.com/firebase/php-jwt/tree/v6.11.1" + }, + "time": "2025-04-09T20:32:01+00:00" + }, + { + "name": "jetbrains/phpstorm-attributes", + "version": "1.2", + "source": { + "type": "git", + "url": "https://github.com/JetBrains/phpstorm-attributes.git", + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JetBrains/phpstorm-attributes/zipball/64de815a4509c29e00d5e3474087fd24c171afc2", + "reference": "64de815a4509c29e00d5e3474087fd24c171afc2", + "shasum": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "JetBrains\\PhpStorm\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "JetBrains", + "homepage": "https://www.jetbrains.com" + } + ], + "description": "PhpStorm specific attributes", + "keywords": [ + "attributes", + "jetbrains", + "phpstorm" + ], + "support": { + "issues": "https://youtrack.jetbrains.com/newIssue?project=WI", + "source": "https://github.com/JetBrains/phpstorm-attributes/tree/1.2" + }, + "time": "2024-10-11T10:46:19+00:00" + }, + { + "name": "laminas/laminas-cli", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cli.git", + "reference": "159b48f896fb2502cb6618a95307b56a0f23e592" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cli/zipball/159b48f896fb2502cb6618a95307b56a0f23e592", + "reference": "159b48f896fb2502cb6618a95307b56a0f23e592", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0 || ^2.0", + "symfony/console": "^6.0 || ^7.0", + "symfony/event-dispatcher": "^6.0 || ^7.0", + "webmozart/assert": "^1.10" + }, + "conflict": { + "amphp/amp": "<2.6.4" + }, + "require-dev": { + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-mvc": "^3.8.0", + "laminas/laminas-servicemanager": "^3.23.0", + "mikey179/vfsstream": "2.0.x-dev", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" + }, + "bin": [ + "bin/laminas" + ], + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cli\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Command-line interface for Laminas projects", + "keywords": [ + "cli", + "command", + "console", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-cli/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/laminas-cli/issues", + "rss": "https://github.com/mezzio/laminas-cli/releases.atom", + "source": "https://github.com/mezzio/laminas-cli" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-11-22T12:39:15+00:00" + }, + { + "name": "laminas/laminas-code", + "version": "4.16.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "1793e78dad4108b594084d05d1fb818b85b110af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1793e78dad4108b594084d05d1fb818b85b110af", + "reference": "1793e78dad4108b594084d05d1fb818b85b110af", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0.1", + "ext-phar": "*", + "laminas/laminas-coding-standard": "^3.0.0", + "laminas/laminas-stdlib": "^3.18.0", + "phpunit/phpunit": "^10.5.37", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.15.0" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "laminas/laminas-stdlib": "Laminas\\Stdlib component" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Code\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "homepage": "https://laminas.dev", + "keywords": [ + "code", + "laminas", + "laminasframework" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-11-20T13:15:13+00:00" + }, + { + "name": "laminas/laminas-component-installer", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-component-installer.git", + "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-component-installer/zipball/8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", + "reference": "8752d73b5df8c368ec0bf2aff2b32e00e0ac8b1b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "zendframework/zend-component-installer": "*" + }, + "require-dev": { + "composer/composer": "^2.7.7", + "laminas/laminas-coding-standard": "~3.0.0", + "mikey179/vfsstream": "^1.6.11", + "phpunit/phpunit": "^10.5.35", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.24.0", + "webmozart/assert": "^1.11.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Laminas\\ComponentInstaller\\ComponentInstaller" + }, + "autoload": { + "psr-4": { + "Laminas\\ComponentInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Composer plugin for injecting modules and configuration providers into application configuration", + "homepage": "https://laminas.dev", + "keywords": [ + "component installer", + "composer", + "laminas", + "plugin" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-component-installer/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-component-installer/issues", + "rss": "https://github.com/laminas/laminas-component-installer/releases.atom", + "source": "https://github.com/laminas/laminas-component-installer" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-11-26T14:11:43+00:00" + }, + { + "name": "laminas/laminas-config-aggregator", + "version": "1.18.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-config-aggregator.git", + "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/a5cc009f58daa4e1b968abd65972fa3a481c22c5", + "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5", + "shasum": "" + }, + "require": { + "brick/varexporter": "^0.5.0 || ^0.4.0 || ^0.6.0", + "laminas/laminas-stdlib": "^3.18.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "webimpress/safe-writer": "^2.2.0" + }, + "conflict": { + "nikic/php-parser": "<4.12", + "zendframework/zend-config-aggregator": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-config": "^3.10.1", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.8.6" + }, + "suggest": { + "laminas/laminas-config": "Allows loading configuration from XML, INI, YAML, and JSON files", + "laminas/laminas-config-aggregator-modulemanager": "Allows loading configuration from laminas-mvc Module classes", + "laminas/laminas-config-aggregator-parameters": "Allows usage of templated parameters within your configuration" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\ConfigAggregator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Lightweight library for collecting and merging configuration from different sources", + "homepage": "https://laminas.dev", + "keywords": [ + "config-aggregator", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-config-aggregator/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-config-aggregator/issues", + "rss": "https://github.com/laminas/laminas-config-aggregator/releases.atom", + "source": "https://github.com/laminas/laminas-config-aggregator" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-02-21T18:18:40+00:00" + }, + { + "name": "laminas/laminas-diactoros", + "version": "2.26.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-diactoros.git", + "reference": "6584d44eb8e477e89d453313b858daac6183cddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", + "reference": "6584d44eb8e477e89d453313b858daac6183cddc", + "shasum": "" + }, + "require": { + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1" + }, + "conflict": { + "zendframework/zend-diactoros": "*" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "ext-dom": "*", + "ext-gd": "*", + "ext-libxml": "*", + "http-interop/http-factory-tests": "^0.9.0", + "laminas/laminas-coding-standard": "^2.5", + "php-http/psr7-integration-tests": "^1.2", + "phpunit/phpunit": "^9.5.28", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.6" + }, + "type": "library", + "extra": { + "laminas": { + "module": "Laminas\\Diactoros", + "config-provider": "Laminas\\Diactoros\\ConfigProvider" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php", + "src/functions/create_uploaded_file.legacy.php", + "src/functions/marshal_headers_from_sapi.legacy.php", + "src/functions/marshal_method_from_sapi.legacy.php", + "src/functions/marshal_protocol_version_from_sapi.legacy.php", + "src/functions/marshal_uri_from_sapi.legacy.php", + "src/functions/normalize_server.legacy.php", + "src/functions/normalize_uploaded_files.legacy.php", + "src/functions/parse_cookie_header.legacy.php" + ], + "psr-4": { + "Laminas\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "psr", + "psr-17", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-diactoros/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-diactoros/issues", + "rss": "https://github.com/laminas/laminas-diactoros/releases.atom", + "source": "https://github.com/laminas/laminas-diactoros" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2023-10-29T16:17:44+00:00" + }, + { + "name": "laminas/laminas-escaper", + "version": "2.17.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/df1ef9503299a8e3920079a16263b578eaf7c3ba", + "reference": "df1ef9503299a8e3920079a16263b578eaf7c3ba", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "zendframework/zend-escaper": "*" + }, + "require-dev": { + "infection/infection": "^0.29.8", + "laminas/laminas-coding-standard": "~3.0.1", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.2", + "vimeo/psalm": "^6.6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Escaper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", + "homepage": "https://laminas.dev", + "keywords": [ + "escaper", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-escaper/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-escaper/issues", + "rss": "https://github.com/laminas/laminas-escaper/releases.atom", + "source": "https://github.com/laminas/laminas-escaper" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-05-06T19:29:36+00:00" + }, + { + "name": "laminas/laminas-filter", + "version": "2.41.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-filter.git", + "reference": "eaa00111231bf6669826ae84d3abe85b94477585" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/eaa00111231bf6669826ae84d3abe85b94477585", + "reference": "eaa00111231bf6669826ae84d3abe85b94477585", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-stdlib": "^3.19.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "laminas/laminas-validator": "<2.10.1", + "zendframework/zend-filter": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.0", + "laminas/laminas-crypt": "^3.12", + "laminas/laminas-i18n": "^2.28.1", + "laminas/laminas-uri": "^2.12", + "pear/archive_tar": "^1.5.0", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "psr/http-factory": "^1.1.0", + "vimeo/psalm": "^5.26.1" + }, + "suggest": { + "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", + "laminas/laminas-i18n": "Laminas\\I18n component for filters depending on i18n functionality", + "laminas/laminas-uri": "Laminas\\Uri component, for the UriNormalize filter", + "psr/http-factory-implementation": "psr/http-factory-implementation, for creating file upload instances when consuming PSR-7 in file upload filters" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\Filter", + "config-provider": "Laminas\\Filter\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Laminas\\Filter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Programmatically filter and normalize data and files", + "homepage": "https://laminas.dev", + "keywords": [ + "filter", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-filter/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-filter/issues", + "rss": "https://github.com/laminas/laminas-filter/releases.atom", + "source": "https://github.com/laminas/laminas-filter" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-05-05T02:02:31+00:00" + }, + { + "name": "laminas/laminas-httphandlerrunner", + "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-httphandlerrunner.git", + "reference": "b14da3519c650e9436e410cfedee6f860312eff9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/b14da3519c650e9436e410cfedee6f860312eff9", + "reference": "b14da3519c650e9436e410cfedee6f860312eff9", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-message-implementation": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.3" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Laminas\\HttpHandlerRunner\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Execute PSR-15 RequestHandlerInterface instances and emit responses they generate.", + "homepage": "https://laminas.dev", + "keywords": [ + "components", + "laminas", + "mezzio", + "psr-15", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-httphandlerrunner/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-httphandlerrunner/issues", + "rss": "https://github.com/laminas/laminas-httphandlerrunner/releases.atom", + "source": "https://github.com/laminas/laminas-httphandlerrunner" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-05-13T21:21:16+00:00" + }, + { + "name": "laminas/laminas-inputfilter", + "version": "2.33.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-inputfilter.git", + "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-inputfilter/zipball/928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", + "reference": "928afe6f5e7c7a17f9c02c40d4feca92944d8e2f", + "shasum": "" + }, + "require": { + "laminas/laminas-filter": "^2.19", + "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-stdlib": "^3.19", + "laminas/laminas-validator": "^2.60.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.1 || ^2.0" + }, + "conflict": { + "zendframework/zend-inputfilter": "*" + }, + "require-dev": { + "ext-json": "*", + "laminas/laminas-coding-standard": "^3.1.0", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "psr/http-message": "^2.0", + "vimeo/psalm": "^6.11.0", + "webmozart/assert": "^1.11" + }, + "suggest": { + "psr/http-message-implementation": "PSR-7 is required if you wish to validate PSR-7 UploadedFileInterface payloads" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\InputFilter", + "config-provider": "Laminas\\InputFilter\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Laminas\\InputFilter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Normalize and validate input sets from the web, APIs, the CLI, and more, including files", + "homepage": "https://laminas.dev", + "keywords": [ + "inputfilter", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-inputfilter/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-inputfilter/issues", + "rss": "https://github.com/laminas/laminas-inputfilter/releases.atom", + "source": "https://github.com/laminas/laminas-inputfilter" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-05-27T09:48:19+00:00" + }, + { + "name": "laminas/laminas-servicemanager", + "version": "3.23.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "06594db3a644447521eace9b5efdb12dc8446a33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/06594db3a644447521eace9b5efdb12dc8446a33", + "reference": "06594db3a644447521eace9b5efdb12dc8446a33", + "shasum": "" + }, + "require": { + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0" + }, + "conflict": { + "ext-psr": "*", + "laminas/laminas-code": "<4.10.0", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "container-interop/container-interop": "^1.2.0" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11.99.5", + "friendsofphp/proxy-manager-lts": "^1.0.18", + "laminas/laminas-code": "^4.16.0", + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-container-config-test": "^0.8", + "mikey179/vfsstream": "^1.6.12", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.51", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.26.1" + }, + "suggest": { + "friendsofphp/proxy-manager-lts": "ProxyManager ^2.1.1 to handle lazy initialization of services" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "autoload": { + "files": [ + "src/autoload.php" + ], + "psr-4": { + "Laminas\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "homepage": "https://laminas.dev", + "keywords": [ + "PSR-11", + "dependency-injection", + "di", + "dic", + "laminas", + "service-manager", + "servicemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-08-12T08:44:02+00:00" + }, + { + "name": "laminas/laminas-stdlib", + "version": "3.20.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "zendframework/zend-stdlib": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "^3.0", + "phpbench/phpbench": "^1.3.1", + "phpunit/phpunit": "^10.5.38", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Stdlib\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "SPL extensions, array utilities, error handlers, and more", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "stdlib" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stdlib/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stdlib/issues", + "rss": "https://github.com/laminas/laminas-stdlib/releases.atom", + "source": "https://github.com/laminas/laminas-stdlib" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-10-29T13:46:07+00:00" + }, + { + "name": "laminas/laminas-stratigility", + "version": "3.13.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stratigility.git", + "reference": "3df57528b5c8e9d958515c51006825a83f76d62b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/3df57528b5c8e9d958515c51006825a83f76d62b", + "reference": "3df57528b5c8e9d958515c51006825a83f76d62b", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1", + "laminas/laminas-escaper": "^2.10.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-middleware": "^1.0.2" + }, + "conflict": { + "zendframework/zend-stratigility": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-diactoros": "^2.25 || ^3.5.0", + "phpunit/phpunit": "^10.5.37", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" + }, + "suggest": { + "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., laminas/laminas-diactoros" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions/double-pass-middleware.php", + "src/functions/host.php", + "src/functions/middleware.php", + "src/functions/path.php", + "src/functions/double-pass-middleware.legacy.php", + "src/functions/host.legacy.php", + "src/functions/middleware.legacy.php", + "src/functions/path.legacy.php" + ], + "psr-4": { + "Laminas\\Stratigility\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR-7 middleware foundation for building and dispatching middleware pipelines", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "laminas", + "middleware", + "psr-15", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-stratigility/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-stratigility/issues", + "rss": "https://github.com/laminas/laminas-stratigility/releases.atom", + "source": "https://github.com/laminas/laminas-stratigility" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-10-28T11:28:41+00:00" + }, + { + "name": "laminas/laminas-validator", + "version": "2.64.4", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-validator.git", + "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e2e6631f599a9b0db1e23adb633c09a2f0c68bed", + "reference": "e2e6631f599a9b0db1e23adb633c09a2f0c68bed", + "shasum": "" + }, + "require": { + "laminas/laminas-servicemanager": "^3.21.0", + "laminas/laminas-stdlib": "^3.19", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/http-message": "^1.0.1 || ^2.0.0" + }, + "conflict": { + "zendframework/zend-validator": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "^2.5", + "laminas/laminas-db": "^2.20", + "laminas/laminas-filter": "^2.35.2", + "laminas/laminas-i18n": "^2.26.0", + "laminas/laminas-session": "^2.20", + "laminas/laminas-uri": "^2.11.0", + "phpunit/phpunit": "^10.5.20", + "psalm/plugin-phpunit": "^0.19.0", + "psr/http-client": "^1.0.3", + "psr/http-factory": "^1.1.0", + "vimeo/psalm": "^5.24.0" + }, + "suggest": { + "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", + "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", + "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", + "laminas/laminas-i18n-resources": "Translations of validator messages", + "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", + "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", + "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", + "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\Validator", + "config-provider": "Laminas\\Validator\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Laminas\\Validator\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Validation classes for a wide range of domains, and the ability to chain validators to create complex validation criteria", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "validator" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-validator/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-validator/issues", + "rss": "https://github.com/laminas/laminas-validator/releases.atom", + "source": "https://github.com/laminas/laminas-validator" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-06-16T14:38:00+00:00" + }, + { + "name": "mezzio/mezzio", + "version": "3.21.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio.git", + "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio/zipball/1ec7e77a0532984c30d18e7278d9bbc596c6293a", + "reference": "1ec7e77a0532984c30d18e7278d9bbc596c6293a", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.5", + "laminas/laminas-httphandlerrunner": "^2.1", + "laminas/laminas-stratigility": "^3.5", + "mezzio/mezzio-router": "^3.7", + "mezzio/mezzio-template": "^2.2", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0||^2.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0.1 || ^2.0.0", + "psr/http-server-middleware": "^1.0", + "webmozart/assert": "^1.11.0" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0", + "filp/whoops": "<2.14.4", + "laminas/laminas-diactoros": "<1.7.1", + "laminas/laminas-http": "<2.15.0", + "laminas/laminas-router": "<3.5.0", + "laminas/laminas-stdlib": "<3.6.0", + "zendframework/zend-expressive": "*" + }, + "require-dev": { + "filp/whoops": "^2.18.0", + "laminas/laminas-coding-standard": "^3.0.1", + "laminas/laminas-diactoros": "^3.5.0", + "laminas/laminas-servicemanager": "^3.23.0", + "mezzio/mezzio-fastroute": "^3.13", + "mezzio/mezzio-laminasrouter": "^3.11", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" + }, + "suggest": { + "filp/whoops": "^2.1 to use the Whoops error handler", + "laminas/laminas-auradi-config": "^2.0 to use Aura.Di dependency injection container", + "laminas/laminas-pimple-config": "^1.0 to use Pimple for dependency injection container", + "laminas/laminas-servicemanager": "^3.3 to use laminas-servicemanager for dependency injection", + "mezzio/mezzio-helpers": "^3.0 for its UrlHelper, ServerUrlHelper, and BodyParseMiddleware", + "mezzio/mezzio-tooling": "^1.0 for migration and development tools; require it with the --dev flag", + "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Mezzio; e.g., laminas/laminas-diactoros" + }, + "bin": [ + "bin/mezzio-tooling" + ], + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\ConfigProvider" + } + }, + "autoload": { + "files": [ + "src/constants.php", + "src/constants.legacy.php" + ], + "psr-4": { + "Mezzio\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "PSR-15 Middleware Microframework", + "homepage": "https://mezzio.dev", + "keywords": [ + "PSR-11", + "http", + "laminas", + "mezzio", + "middleware", + "psr", + "psr-15", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio/issues", + "rss": "https://github.com/mezzio/mezzio/releases.atom", + "source": "https://github.com/mezzio/mezzio" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-04-27T12:45:58+00:00" + }, + { + "name": "mezzio/mezzio-cors", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-cors.git", + "reference": "84c5c783c1c005576f18411aef1dd724f0ffebc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-cors/zipball/84c5c783c1c005576f18411aef1dd724f0ffebc0", + "reference": "84c5c783c1c005576f18411aef1dd724f0ffebc0", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1", + "mezzio/mezzio-router": "^3.5 || ^4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0 || ^2.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0", + "psr/http-server-middleware": "^1.0", + "webmozart/assert": "^1.11.0" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-diactoros": "^3.5.0", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\Cors\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Cors\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "CORS component for Mezzio and other PSR-15 middleware runners.", + "keywords": [ + "cors", + "mezzio", + "psr-15", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/mezzio-cors/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-cors/issues", + "rss": "https://github.com/mezzio/mezzio-cli/releases.atom", + "source": "https://github.com/mezzio/mezzio-cors" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-04-27T09:44:46+00:00" + }, + { + "name": "mezzio/mezzio-fastroute", + "version": "3.13.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-fastroute.git", + "reference": "513a636c1ca539e7e687e994f92856cc99358e4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/513a636c1ca539e7e687e994f92856cc99358e4a", + "reference": "513a636c1ca539e7e687e994f92856cc99358e4a", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.2", + "laminas/laminas-stdlib": "^3.19.0", + "mezzio/mezzio-router": "^3.14 || ^4.0.1", + "nikic/fast-route": "^1.2", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0 || ^2.0", + "psr/http-message": "^1.0.1 || ^2.0.0" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0", + "zendframework/zend-expressive-fastroute": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-diactoros": "^3.5.0", + "laminas/laminas-stratigility": "^4.1.0", + "mikey179/vfsstream": "^1.6.12", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\Router\\FastRouteRouter\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "FastRoute integration for Mezzio", + "homepage": "https://mezzio.dev", + "keywords": [ + "FastRoute", + "http", + "laminas", + "mezzio", + "middleware", + "psr", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/features/router/fast-route/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-fastroute/issues", + "rss": "https://github.com/mezzio/mezzio-fastroute/releases.atom", + "source": "https://github.com/mezzio/mezzio-fastroute" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-04-27T12:05:55+00:00" + }, + { + "name": "mezzio/mezzio-helpers", + "version": "5.18.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-helpers.git", + "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/8d76502e4d71aff178f2084eadd71d12fe737d3c", + "reference": "8d76502e4d71aff178f2084eadd71d12fe737d3c", + "shasum": "" + }, + "require": { + "mezzio/mezzio-router": "^3.0 || ^4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.0 || ^2.0", + "psr/http-message": "^1.0.1 || ^2.0.0", + "psr/http-server-middleware": "^1.0" + }, + "conflict": { + "amphp/amp": "<2.6.4", + "amphp/dns": "<2.1.2", + "amphp/socket": "<2.3.1", + "zendframework/zend-expressive-helpers": "*" + }, + "require-dev": { + "ext-json": "*", + "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-diactoros": "^3.5", + "phpunit/phpunit": "^10.5.45", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.1" + }, + "suggest": { + "ext-json": "If you wish to use the JsonStrategy with BodyParamsMiddleware" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\Helper\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Helper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Helper/Utility classes for Mezzio", + "homepage": "https://mezzio.dev", + "keywords": [ + "http", + "laminas", + "mezzio", + "middleware", + "psr", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/features/helpers/intro/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-helpers/issues", + "rss": "https://github.com/mezzio/mezzio-helpers/releases.atom", + "source": "https://github.com/mezzio/mezzio-helpers" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-04-27T08:59:18+00:00" + }, + { + "name": "mezzio/mezzio-router", + "version": "3.18.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-router.git", + "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/75e9a3e636ee69f3a51006772cf29c00cb5da675", + "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675", + "shasum": "" + }, + "require": { + "fig/http-message-util": "^1.1.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "psr/container": "^1.1.2 || ^2.0", + "psr/http-factory": "^1.0.2", + "psr/http-message": "^1.0.1 || ^2.0.0", + "psr/http-server-middleware": "^1.0.2", + "webmozart/assert": "^1.11" + }, + "conflict": { + "mezzio/mezzio": "<3.5", + "zendframework/zend-expressive-router": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-diactoros": "^3.4.0", + "laminas/laminas-servicemanager": "^4.2.0", + "laminas/laminas-stratigility": "^4.0.2", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" + }, + "suggest": { + "mezzio/mezzio-aurarouter": "^3.0 to use the Aura.Router routing adapter", + "mezzio/mezzio-fastroute": "^3.0 to use the FastRoute routing adapter", + "mezzio/mezzio-laminasrouter": "^3.0 to use the laminas-router routing adapter" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\Router\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Router subcomponent for Mezzio", + "homepage": "https://mezzio.dev", + "keywords": [ + "http", + "laminas", + "mezzio", + "middleware", + "psr", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/features/router/intro/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-router/issues", + "rss": "https://github.com/mezzio/mezzio-router/releases.atom", + "source": "https://github.com/mezzio/mezzio-router" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-10-16T21:18:01+00:00" + }, + { + "name": "mezzio/mezzio-template", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-template.git", + "reference": "836b7e55f92277d5c557f96895d13a547c4abf14" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/836b7e55f92277d5c557f96895d13a547c4abf14", + "reference": "836b7e55f92277d5c557f96895d13a547c4abf14", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "zendframework/zend-expressive-template": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.5.0", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" + }, + "suggest": { + "mezzio/mezzio-laminasviewrenderer": "^2.0 to use the laminas-view PhpRenderer template renderer", + "mezzio/mezzio-platesrenderer": "^2.0 to use the Plates template renderer", + "mezzio/mezzio-twigrenderer": "^2.0 to use the Twig template renderer" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mezzio\\Template\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Template subcomponent for Mezzio", + "homepage": "https://mezzio.dev", + "keywords": [ + "laminas", + "mezzio", + "template" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/features/template/intro/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-template/issues", + "rss": "https://github.com/mezzio/mezzio-template/releases.atom", + "source": "https://github.com/mezzio/mezzio-template" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2024-10-16T20:54:53+00:00" + }, + { + "name": "mezzio/mezzio-tooling", + "version": "2.11.0", + "source": { + "type": "git", + "url": "https://github.com/mezzio/mezzio-tooling.git", + "reference": "fc7f93fb7ad9dd9fb710be22dc892fd8a34d655d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mezzio/mezzio-tooling/zipball/fc7f93fb7ad9dd9fb710be22dc892fd8a34d655d", + "reference": "fc7f93fb7ad9dd9fb710be22dc892fd8a34d655d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laminas/laminas-cli": "^1.7.0", + "laminas/laminas-code": "^4.7.1", + "laminas/laminas-stdlib": "^3.15.0", + "laminas/laminas-stratigility": "^3.9.0", + "mezzio/mezzio": "^3.13.0", + "mezzio/mezzio-router": "^3.9.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.1", + "symfony/process": "^6.0.11" + }, + "conflict": { + "amphp/amp": "<2.6.4", + "symfony/console": "<5.4.45", + "symfony/string": "<5.4.45" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-diactoros": "^3.3", + "mikey179/vfsstream": "^1.6.12", + "mockery/mockery": "^1.6.10", + "php-mock/php-mock-phpunit": "^2.9.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.35", + "psalm/plugin-mockery": "^0.11.0", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.17.0" + }, + "type": "library", + "extra": { + "laminas": { + "config-provider": "Mezzio\\Tooling\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Mezzio\\Tooling\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Migration and development tooling for Mezzio", + "homepage": "https://mezzio.dev", + "keywords": [ + "http", + "laminas", + "mezzio", + "middleware", + "psr", + "psr-7" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.mezzio.dev/mezzio/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/mezzio/mezzio-tooling/issues", + "rss": "https://github.com/mezzio/mezzio-tooling/releases.atom", + "source": "https://github.com/mezzio/mezzio-tooling" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-08-07T10:03:45+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.9.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", + "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2025-03-24T10:02:05+00:00" + }, + { + "name": "nikic/fast-route", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/181d480e08d9476e61381e04a71b34dc0432e812", + "reference": "181d480e08d9476e61381e04a71b34dc0432e812", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35|~5.7" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "FastRoute\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "support": { + "issues": "https://github.com/nikic/FastRoute/issues", + "source": "https://github.com/nikic/FastRoute/tree/master" + }, + "time": "2018-02-13T20:26:39+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/221b0d0fdf1369c71047ad1d18bb5880017bbc56", + "reference": "221b0d0fdf1369c71047ad1d18bb5880017bbc56", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^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.6.0" + }, + "time": "2025-07-27T20:03:57+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/container", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "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/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/1.1" + }, + "time": "2023-04-04T09:50:52+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/84c4fb66179be4caaf8e97bd239203245302e7d4", + "reference": "84c4fb66179be4caaf8e97bd239203245302e7d4", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "support": { + "source": "https://github.com/php-fig/http-server-handler/tree/1.0.2" + }, + "time": "2023-04-10T20:06:20+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "reference": "c1481f747daaa6a0782775cd6a8c26a1bf4a3829", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0 || ^2.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/1.0.2" + }, + "time": "2023-04-11T06:14:47+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "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.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.45", + "fakerphp/faker": "^1.24", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^2.1", + "mockery/mockery": "^1.6", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpspec/prophecy-phpunit": "^2.3", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5", + "ramsey/coding-standard": "^2.3", + "ramsey/conventional-commits": "^1.6", + "roave/security-advisories": "dev-latest" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.1.1" + }, + "time": "2025-03-22T05:38:12+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.9.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.25", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.9.0" + }, + "time": "2025-06-25T14:20:11+00:00" + }, + { + "name": "symfony/console", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/5f360ebc65c55265a74d23d7fe27f957870158a1", + "reference": "5f360ebc65c55265a74d23d7fe27f957870158a1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^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/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-30T17:13:41+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-22T09:11:45+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe", + "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe", + "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.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "reference": "d43e84d9522345f96ad6283d5dfccc8c1cfc299b", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^7.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/twig-bridge": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "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 sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:36:08+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0", + "symfony/serializer": "^6.4.3|^7.0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.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-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.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-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.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-09-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.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-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "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.32.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-12-23T08:48:59+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.24", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "8eb6dc555bfb49b2703438d5de65cc9f138ff50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/8eb6dc555bfb49b2703438d5de65cc9f138ff50b", + "reference": "8eb6dc555bfb49b2703438d5de65cc9f138ff50b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.4.24" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:14:14+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "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.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-25T09:37:31+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-02-24T10:49:57+00:00" + }, + { + "name": "symfony/string", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/42f505aff654e62ac7ac2ce21033818297ca89ca", + "reference": "42f505aff654e62ac7ac2ce21033818297ca89ca", + "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/emoji": "^7.1", + "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.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "05b3e90654c097817325d6abd284f7938b05f467" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/05b3e90654c097817325d6abd284f7938b05f467", + "reference": "05b3e90654c097817325d6abd284f7938b05f467", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "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.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b8d7d868da9eb0919e99c8830431ea087d6aae30", + "reference": "b8d7d868da9eb0919e99c8830431ea087d6aae30", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "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.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-10T08:47:49+00:00" + }, + { + "name": "webimpress/safe-writer", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/webimpress/safe-writer.git", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6", + "shasum": "" + }, + "require": { + "php": "^7.3 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.4", + "vimeo/psalm": "^4.7", + "webimpress/coding-standard": "^1.2.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev", + "dev-develop": "2.3.x-dev", + "dev-release-1.0": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Webimpress\\SafeWriter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "Tool to write files safely, to avoid race conditions", + "keywords": [ + "concurrent write", + "file writer", + "race condition", + "safe writer", + "webimpress" + ], + "support": { + "issues": "https://github.com/webimpress/safe-writer/issues", + "source": "https://github.com/webimpress/safe-writer/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/michalbundyra", + "type": "github" + } + ], + "time": "2021-04-19T16:34:45+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + }, + { + "name": "zircote/swagger-php", + "version": "4.11.1", + "source": { + "type": "git", + "url": "https://github.com/zircote/swagger-php.git", + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/7df10e8ec47db07c031db317a25bef962b4e5de1", + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=7.2", + "psr/log": "^1.1 || ^2.0 || ^3.0", + "symfony/deprecation-contracts": "^2 || ^3", + "symfony/finder": ">=2.2", + "symfony/yaml": ">=3.3" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11", + "doctrine/annotations": "^1.7 || ^2.0", + "friendsofphp/php-cs-fixer": "^2.17 || 3.62.0", + "phpstan/phpstan": "^1.6", + "phpunit/phpunit": ">=8", + "vimeo/psalm": "^4.23" + }, + "suggest": { + "doctrine/annotations": "^1.7 || ^2.0" + }, + "bin": [ + "bin/openapi" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenApi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Robert Allen", + "email": "zircote@gmail.com" + }, + { + "name": "Bob Fanger", + "email": "bfanger@gmail.com", + "homepage": "https://bfanger.nl" + }, + { + "name": "Martin Rademacher", + "email": "mano@radebatz.net", + "homepage": "https://radebatz.net" + } + ], + "description": "swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations", + "homepage": "https://github.com/zircote/swagger-php/", + "keywords": [ + "api", + "json", + "rest", + "service discovery" + ], + "support": { + "issues": "https://github.com/zircote/swagger-php/issues", + "source": "https://github.com/zircote/swagger-php/tree/4.11.1" + }, + "time": "2024-10-15T19:20:02+00:00" + } + ], + "packages-dev": [ + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1", + "reference": "e9cf5e4bbf7eeaf9ef5db34938942602838fc2b1", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.2", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "^2.2", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "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": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "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", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-07-17T20:45:56+00:00" + }, + { + "name": "filp/whoops", + "version": "2.18.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.18.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2025-08-08T12:00:00+00:00" + }, + { + "name": "helmich/phpunit-json-assert", + "version": "v3.5.3", + "source": { + "type": "git", + "url": "https://github.com/martin-helmich/phpunit-json-assert.git", + "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/martin-helmich/phpunit-json-assert/zipball/82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", + "reference": "82cedf4ee0a7a2e6a619fbbdab9db77c53fe3793", + "shasum": "" + }, + "require": { + "justinrainbow/json-schema": "^5.0", + "php": "^8.1", + "softcreatr/jsonpath": "^0.8" + }, + "conflict": { + "phpunit/phpunit": "<8.0 || >= 13.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.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.3" + }, + "funding": [ + { + "url": "https://donate.helmich.me", + "type": "custom" + }, + { + "url": "https://github.com/martin-helmich", + "type": "github" + } + ], + "time": "2025-05-19T22:04:17+00:00" + }, + { + "name": "helmich/phpunit-psr7-assert", + "version": "v4.4.1", + "source": { + "type": "git", + "url": "https://github.com/martin-helmich/phpunit-psr7-assert.git", + "reference": "f35fa69e07cc16977b52805d3abd873cc16747fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/martin-helmich/phpunit-psr7-assert/zipball/f35fa69e07cc16977b52805d3abd873cc16747fd", + "reference": "f35fa69e07cc16977b52805d3abd873cc16747fd", + "shasum": "" + }, + "require": { + "helmich/phpunit-json-assert": "^3.4", + "php": "^8.0", + "psr/http-message": "^1.1 || ^2.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0 || >= 11.0" + }, + "require-dev": { + "guzzlehttp/psr7": "^2.4", + "mockery/mockery": "^1.4.1", + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Helmich\\Psr7Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Martin Helmich", + "email": "m.helmich@mittwald.de" + } + ], + "description": "PHPUnit assertions for testing PSR7-compliant applications", + "support": { + "issues": "https://github.com/martin-helmich/phpunit-psr7-assert/issues", + "source": "https://github.com/martin-helmich/phpunit-psr7-assert/tree/v4.4.1" + }, + "funding": [ + { + "url": "https://donate.helmich.me", + "type": "custom" + }, + { + "url": "https://github.com/martin-helmich", + "type": "github" + } + ], + "time": "2023-07-26T19:04:29+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/jsonrainbow/json-schema.git", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "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", + "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/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" + }, + "time": "2024-07-06T21:00:26+00:00" + }, + { + "name": "laminas/laminas-development-mode", + "version": "3.14.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-development-mode.git", + "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/21e4e5fd40c5b22b710306f72060c15ec6091279", + "reference": "21e4e5fd40c5b22b710306f72060c15ec6091279", + "shasum": "" + }, + "require": { + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + }, + "conflict": { + "zfcampus/zf-development-mode": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~3.1.0", + "mikey179/vfsstream": "^1.6.12", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.12.0" + }, + "bin": [ + "bin/laminas-development-mode" + ], + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\DevelopmentMode\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas development mode script", + "homepage": "https://laminas.dev", + "keywords": [ + "framework", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-development-mode/issues", + "rss": "https://github.com/laminas/laminas-development-mode/releases.atom", + "source": "https://github.com/laminas/laminas-development-mode" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2025-06-16T09:56:05+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "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", + "phpspec/prophecy": "^1.10", + "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.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "overtrue/phplint", + "version": "9.6.2", + "source": { + "type": "git", + "url": "https://github.com/overtrue/phplint.git", + "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/overtrue/phplint/zipball/e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", + "reference": "e2ebdbac93fa6ffe45d724e350f77df34c1f8fb4", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "ext-dom": "*", + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.1", + "symfony/cache": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/event-dispatcher": "^6.4 || ^7.0", + "symfony/finder": "^6.4 || ^7.0", + "symfony/options-resolver": "^6.4 || ^7.0", + "symfony/process": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4", + "brainmaestro/composer-git-hooks": "^3.0.0", + "jetbrains/phpstorm-stubs": "^2024.1", + "php-parallel-lint/php-console-highlighter": "^1.0" + }, + "bin": [ + "bin/phplint" + ], + "type": "library", + "extra": { + "hooks": { + "pre-commit": [ + "composer style:fix", + "composer code:check" + ] + }, + "bamarni-bin": { + "bin-links": true, + "forward-command": true, + "target-directory": "vendor-bin" + }, + "branch-alias": { + "dev-main": "9.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Overtrue\\PHPLint\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "overtrue", + "email": "anzhengchao@gmail.com" + }, + { + "name": "Laurent Laville", + "homepage": "https://github.com/llaville" + } + ], + "description": "`phplint` is a tool that can speed up linting of php files by running several lint processes at once.", + "keywords": [ + "check", + "lint", + "phplint", + "static analysis", + "syntax" + ], + "support": { + "issues": "https://github.com/overtrue/phplint/issues", + "source": "https://github.com/overtrue/phplint/tree/9.6.2" + }, + "funding": [ + { + "url": "https://github.com/overtrue", + "type": "github" + } + ], + "time": "2025-04-10T13:12:51+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "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.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+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": "phpstan/phpdoc-parser", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8", + "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "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/2.2.0" + }, + "time": "2025-07-13T07:04:09+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.12.28", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "fcf8b71aeab4e1a1131d1783cef97b23a51b87a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/fcf8b71aeab4e1a1131d1783cef97b23a51b87a9", + "reference": "fcf8b71aeab4e1a1131d1783cef97b23a51b87a9", + "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" + } + ], + "time": "2025-07-17T17:15:39+00:00" + }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82", + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.12" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1" + }, + "time": "2024-09-11T15:52:35+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.16", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-text-template": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^3.0.0", + "sebastian/complexity": "^3.2.0", + "sebastian/environment": "^6.1.0", + "sebastian/lines-of-code": "^2.0.2", + "sebastian/version": "^4.0.1", + "theseer/tokenizer": "^1.2.3" + }, + "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.x-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.16" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:31:57+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.51", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ace160e31aaa317a99c411410c40c502b4be42a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ace160e31aaa317a99c411410c40c502b4be42a4", + "reference": "ace160e31aaa317a99c411410c40c502b4be42a4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-invoker": "^4.0.0", + "phpunit/php-text-template": "^3.0.1", + "phpunit/php-timer": "^6.0.0", + "sebastian/cli-parser": "^2.0.1", + "sebastian/code-unit": "^2.0.0", + "sebastian/comparator": "^5.0.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.1", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" + }, + "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.51" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-08-12T07:31:25+00:00" + }, + { + "name": "roave/security-advisories", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "0479005335290f5c772337cf359599dad65bb63f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/0479005335290f5c772337cf359599dad65bb63f", + "reference": "0479005335290f5c772337cf359599dad65bb63f", + "shasum": "" + }, + "conflict": { + "3f/pygmentize": "<1.2", + "adaptcms/adaptcms": "<=1.3", + "admidio/admidio": "<4.3.12", + "adodb/adodb-php": "<=5.22.9", + "aheinze/cockpit": "<2.2", + "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.07.2", + "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1", + "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7", + "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9|==2024.04.1", + "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7", + "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "airesvsg/acf-to-rest-api": "<=3.1", + "akaunting/akaunting": "<2.1.13", + "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", + "alextselegidis/easyappointments": "<=1.5.1", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amazing/media2click": ">=1,<1.3.3", + "ameos/ameos_tarteaucitron": "<1.2.23", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<=1.7.2|>=2,<=2.1", + "amphp/http-client": ">=4,<4.4", + "anchorcms/anchor-cms": "<=0.12.7", + "andreapollastri/cipi": "<=3.1.15", + "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "aoe/restler": "<1.7.1", + "apache-solr-for-typo3/solr": "<2.8.3", + "apereo/phpcas": "<1.6", + "api-platform/core": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", + "api-platform/graphql": "<3.4.17|>=4.0.0.0-alpha1,<4.0.22", + "appwrite/server-ce": "<=1.2.1", + "arc/web": "<3", + "area17/twill": "<1.2.5|>=2,<2.5.3", + "artesaos/seotools": "<0.17.2", + "asymmetricrypt/asymmetricrypt": "<9.9.99", + "athlon1600/php-proxy": "<=5.1", + "athlon1600/php-proxy-app": "<=3", + "athlon1600/youtube-downloader": "<=4", + "austintoddj/canvas": "<=3.4.2", + "auth0/auth0-php": ">=8.0.0.0-beta1,<8.14", + "auth0/login": "<7.17", + "auth0/symfony": "<5.4", + "auth0/wordpress": "<5.3", + "automad/automad": "<2.0.0.0-alpha5", + "automattic/jetpack": "<9.8", + "awesome-support/awesome-support": "<=6.0.7", + "aws/aws-sdk-php": "<3.288.1", + "azuracast/azuracast": "<0.18.3", + "b13/seo_basics": "<0.8.2", + "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2", + "backpack/crud": "<3.4.9", + "backpack/filemanager": "<2.0.2|>=3,<3.0.9", + "bacula-web/bacula-web": "<9.7.1", + "badaso/core": "<2.7", + "bagisto/bagisto": "<2.1", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "barryvdh/laravel-translation-manager": "<0.6.8", + "barzahlen/barzahlen-php": "<2.0.1", + "baserproject/basercms": "<=5.1.1", + "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bbpress/bbpress": "<2.6.5", + "bcit-ci/codeigniter": "<3.1.3", + "bcosca/fatfree": "<3.7.2", + "bedita/bedita": "<4", + "bednee/cooluri": "<1.0.30", + "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billz/raspap-webgui": "<3.3.6", + "binarytorch/larecipe": "<2.8.1", + "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", + "blueimp/jquery-file-upload": "==6.4.4", + "bmarshall511/wordpress_zero_spam": "<5.2.13", + "bolt/bolt": "<3.7.2", + "bolt/core": "<=4.2", + "born05/craft-twofactorauthentication": "<3.3.4", + "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.17", + "brightlocal/phpwhois": "<=4.2.5", + "brotkrueml/codehighlight": "<2.7", + "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", + "brotkrueml/typo3-matomo-integration": "<1.3.2", + "buddypress/buddypress": "<7.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bvbmedia/multishop": "<2.0.39", + "bytefury/crater": "<6.0.2", + "cachethq/cachet": "<2.5.1", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cardgate/magento2": "<2.0.33", + "cardgate/woocommerce": "<=3.1.15", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "catfan/medoo": "<1.7.5", + "causal/oidc": "<4", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.15", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "chrome-php/chrome": "<1.14", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.25", + "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", + "co-stack/fal_sftp": "<0.2.6", + "cockpit-hq/cockpit": "<2.11.4", + "codeception/codeception": "<3.1.3|>=4,<4.1.22", + "codeigniter/framework": "<3.1.10", + "codeigniter4/framework": "<4.6.2", + "codeigniter4/shield": "<1.0.0.0-beta8", + "codiad/codiad": "<=2.8.4", + "codingms/additional-tca": ">=1.7,<1.15.17|>=1.16,<1.16.9", + "commerceteam/commerce": ">=0.9.6,<0.9.9", + "components/jquery": ">=1.0.3,<3.5", + "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7", + "concrete5/concrete5": "<9.4.3", + "concrete5/core": "<8.5.8|>=9,<9.1", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4", + "contao/contao": ">=3,<3.5.37|>=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", + "contao/core": "<3.5.39", + "contao/core-bundle": "<4.13.54|>=5,<5.3.30|>=5.4,<5.5.6", + "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8", + "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", + "cosenary/instagram": "<=2.3", + "couleurcitron/tarteaucitron-wp": "<0.3", + "craftcms/cms": "<4.16.3|>=5,<5.8.4", + "croogo/croogo": "<4", + "cuyz/valinor": "<0.12", + "czim/file-handling": "<1.5|>=2,<2.3", + "czproject/git-php": "<4.0.3", + "damienharper/auditor-bundle": "<5.2.6", + "dapphp/securimage": "<3.6.6", + "darylldoyle/safe-svg": "<1.9.10", + "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", + "david-garcia/phpwhois": "<=4.3.1", + "dbrisinajumi/d2files": "<1", + "dcat/laravel-admin": "<=2.1.3|==2.2.0.0-beta|==2.2.2.0-beta", + "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", + "desperado/xml-bundle": "<=0.1.7", + "dev-lancer/minecraft-motd-parser": "<=1.0.5", + "devgroup/dotplant": "<2020.09.14-dev", + "digimix/wp-svg-upload": "<=1", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "dl/yag": "<3.0.1", + "dmk/webkitpdf": "<1.1.4", + "dnadesign/silverstripe-elemental": "<5.3.12", + "doctrine/annotations": "<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<0.7.2", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", + "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<=21.0.2", + "dompdf/dompdf": "<2.0.4", + "doublethreedigital/guest-entries": "<3.1.2", + "drupal/admin_audit_trail": "<1.0.5", + "drupal/ai": "<1.0.5", + "drupal/alogin": "<2.0.6", + "drupal/cache_utility": "<1.2.1", + "drupal/commerce_alphabank_redirect": "<1.0.3", + "drupal/commerce_eurobank_redirect": "<2.1.1", + "drupal/config_split": "<1.10|>=2,<2.0.2", + "drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.3.14|>=10.4,<10.4.5|>=11,<11.0.13|>=11.1,<11.1.5", + "drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8", + "drupal/formatter_suite": "<2.1", + "drupal/gdpr": "<3.0.1|>=3.1,<3.1.2", + "drupal/google_tag": "<1.8|>=2,<2.0.8", + "drupal/ignition": "<1.0.4", + "drupal/lightgallery": "<1.6", + "drupal/link_field_display_mode_formatter": "<1.6", + "drupal/matomo": "<1.24", + "drupal/oauth2_client": "<4.1.3", + "drupal/oauth2_server": "<2.1", + "drupal/obfuscate": "<2.0.1", + "drupal/quick_node_block": "<2", + "drupal/rapidoc_elements_field_formatter": "<1.0.1", + "drupal/spamspan": "<3.2.1", + "drupal/tfa": "<1.10", + "duncanmcclean/guest-entries": "<3.1.2", + "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", + "ecodev/newsletter": "<=4", + "ectouch/ectouch": "<=2.7.2", + "egroupware/egroupware": "<23.1.20240624", + "elefant/cms": "<2.0.7", + "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "elijaa/phpmemcacheadmin": "<=1.3", + "elmsln/haxcms": "<11.0.14", + "encore/laravel-admin": "<=1.8.19", + "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", + "enshrined/svg-sanitize": "<0.22", + "erusev/parsedown": "<1.7.2", + "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", + "exceedone/exment": "<4.4.3|>=5,<5.0.3", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", + "ezsystems/ez-support-tools": ">=2.2,<2.2.3", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", + "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.38|>=3.3,<3.3.39", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-http-cache": "<2.3.16", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", + "ezyang/htmlpurifier": "<=4.2", + "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", + "facturascripts/facturascripts": "<=2022.08", + "fastly/magento2": "<1.2.26", + "feehi/cms": "<=2.1.1", + "feehi/feehicms": "<=2.1.1", + "fenom/fenom": "<=2.12.1", + "filament/actions": ">=3.2,<3.2.123", + "filament/infolists": ">=3,<3.2.115", + "filament/tables": ">=3,<3.2.115", + "filegator/filegator": "<7.8", + "filp/whoops": "<2.1.13", + "fineuploader/php-traditional-server": "<=1.2.2", + "firebase/php-jwt": "<6", + "fisharebest/webtrees": "<=2.1.18", + "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", + "fixpunkt/fp-newsletter": "<1.1.1|>=1.2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8.10", + "flarum/flarum": "<0.1.0.0-beta8", + "flarum/framework": "<1.8.10", + "flarum/mentions": "<1.6.3", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", + "floriangaerber/magnesium": "<0.3.1", + "fluidtypo3/vhs": "<5.1.1", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", + "fooman/tcpdf": "<6.2.22", + "forkcms/forkcms": "<5.11.1", + "fossar/tcpdf-parser": "<6.2.22", + "francoisjacquet/rosariosis": "<=11.5.1", + "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1,<1.3.5", + "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5", + "friendsofsymfony1/symfony1": ">=1.1,<1.5.19", + "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<=4.3", + "froxlor/froxlor": "<=2.2.5", + "frozennode/administrator": "<=5.0.12", + "fuel/core": "<1.8.1", + "funadmin/funadmin": "<=5.0.2", + "gaoming13/wechat-php-sdk": "<=1.10.2", + "genix/cms": "<=1.1.11", + "georgringer/news": "<1.3.3", + "geshi/geshi": "<=1.0.9.1", + "getformwork/formwork": "<1.13.1|>=2.0.0.0-beta1,<2.0.0.0-beta4", + "getgrav/grav": "<1.7.46", + "getkirby/cms": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", + "getkirby/kirby": "<3.9.8.3-dev|>=3.10,<3.10.1.2-dev|>=4,<4.7.1", + "getkirby/panel": "<2.5.14", + "getkirby/starterkit": "<=3.7.0.2", + "gilacms/gila": "<=1.15.4", + "gleez/cms": "<=1.3|==2", + "globalpayments/php-sdk": "<2", + "goalgorilla/open_social": "<12.3.11|>=12.4,<12.4.10|>=13.0.0.0-alpha1,<13.0.0.0-alpha11", + "gogentooss/samlbase": "<1.2.7", + "google/protobuf": "<3.15", + "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gree/jose": "<2.2.1", + "gregwar/rst": "<1.0.3", + "grumpydictator/firefly-iii": "<6.1.17", + "gugoan/economizzer": "<=0.9.0.0-beta1", + "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/oauth-subscriber": "<0.8.1", + "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "handcraftedinthealps/goodby-csv": "<1.4.3", + "harvesthq/chosen": "<1.8.7", + "helloxz/imgurl": "<=2.31", + "hhxsv5/laravel-s": "<3.7.36", + "hillelcoren/invoice-ninja": "<5.3.35", + "himiklab/yii2-jqgrid-widget": "<1.0.8", + "hjue/justwriting": "<=1", + "hov/jobfair": "<1.0.13|>=2,<2.0.2", + "httpsoft/http-message": "<1.0.12", + "hyn/multi-tenant": ">=5.6,<5.7.2", + "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6,<4.6.21", + "ibexa/admin-ui-assets": ">=4.6.0.0-alpha1,<4.6.21", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2", + "ibexa/fieldtype-richtext": ">=4.6,<4.6.21", + "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", + "ibexa/http-cache": ">=4.6,<4.6.14", + "ibexa/post-install": "<1.0.16|>=4.6,<4.6.14", + "ibexa/solr": ">=4.5,<4.5.4", + "ibexa/user": ">=4,<4.4.3", + "icecoder/icecoder": "<=8.1", + "idno/known": "<=1.3.1", + "ilicmiljan/secure-props": ">=1.2,<1.2.2", + "illuminate/auth": "<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<6.18.31|>=7,<7.22.4", + "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "imdbphp/imdbphp": "<=5.1.1", + "impresscms/impresscms": "<=1.4.5", + "impresspages/impresspages": "<1.0.13", + "in2code/femanager": "<6.4.2|>=7,<7.5.3|>=8,<8.3.1", + "in2code/ipandlanguageredirect": "<5.1.2", + "in2code/lux": "<17.6.1|>=18,<24.0.2", + "in2code/powermail": "<7.5.1|>=8,<8.5.1|>=9,<10.9.1|>=11,<12.5.3|==13", + "innologi/typo3-appointments": "<2.0.6", + "intelliants/subrion": "<4.2.2", + "inter-mediator/inter-mediator": "==5.5", + "ipl/web": "<0.10.1", + "islandora/crayfish": "<4.1", + "islandora/islandora": ">=2,<2.4.1", + "ivankristianto/phpwhois": "<=4.3", + "jackalope/jackalope-doctrine-dbal": "<1.7.4", + "jambagecom/div2007": "<0.10.2", + "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<=1.7.23", + "jasig/phpcas": "<1.3.3", + "jbartels/wec-map": "<3.0.3", + "jcbrand/converse.js": "<3.3.3", + "joelbutcher/socialstream": "<5.6|>=6,<6.2", + "johnbillion/wp-crontrol": "<1.16.2", + "joomla/application": "<1.0.13", + "joomla/archive": "<1.1.12|>=2,<2.0.1", + "joomla/database": ">=1,<2.2|>=3,<3.4", + "joomla/filesystem": "<1.6.2|>=2,<2.0.1", + "joomla/filter": "<1.4.4|>=2,<2.0.1", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", + "joomla/input": ">=2,<2.0.2", + "joomla/joomla-cms": "<3.9.12|>=4,<4.4.13|>=5,<5.2.6", + "joomla/joomla-platform": "<1.5.4", + "joomla/session": "<1.3.1", + "joyqi/hyper-down": "<=2.4.27", + "jsdecena/laracom": "<2.0.9", + "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4.2", + "jweiland/events2": "<8.3.8|>=9,<9.0.6", + "jweiland/kk-downloader": "<1.2.2", + "kazist/phpwhois": "<=4.2.6", + "kelvinmo/simplexrd": "<3.1.1", + "kevinpapst/kimai2": "<1.16.7", + "khodakhah/nodcms": "<=3", + "kimai/kimai": "<=2.20.1", + "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", + "klaviyo/magento2-extension": ">=1,<3", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", + "koillection/koillection": "<1.6.12", + "krayin/laravel-crm": "<=1.3", + "kreait/firebase-php": ">=3.2,<3.8.1", + "kumbiaphp/kumbiapp": "<=1.1.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", + "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", + "laminas/laminas-http": "<2.14.2", + "lara-zeus/artemis": ">=1,<=1.0.6", + "lara-zeus/dynamic-dashboard": ">=3,<=3.0.1", + "laravel/fortify": "<1.11.1", + "laravel/framework": "<10.48.29|>=11,<11.44.1|>=12,<12.1.1", + "laravel/laravel": ">=5.4,<5.4.22", + "laravel/pulse": "<1.3.1", + "laravel/reverb": "<1.4", + "laravel/socialite": ">=1,<2.0.10", + "latte/latte": "<2.10.8", + "lavalite/cms": "<=9|==10.1", + "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", + "league/commonmark": "<2.7", + "league/flysystem": "<1.1.4|>=2,<2.1.1", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", + "leantime/leantime": "<3.3", + "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", + "libreform/libreform": ">=2,<=2.0.8", + "librenms/librenms": "<2017.08.18", + "liftkit/database": "<2.13.2", + "lightsaml/lightsaml": "<1.3.5", + "limesurvey/limesurvey": "<6.5.12", + "livehelperchat/livehelperchat": "<=3.91", + "livewire/livewire": "<2.12.7|>=3.0.0.0-beta1,<3.6.4", + "livewire/volt": "<1.7", + "lms/routes": "<2.1.1", + "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "lomkit/laravel-rest-api": "<2.13", + "luracast/restler": "<3.1", + "luyadev/yii-helpers": "<1.2.1", + "macropay-solutions/laravel-crud-wizard-free": "<3.4.17", + "maestroerror/php-heic-to-jpg": "<1.0.5", + "magento/community-edition": "<2.4.5.0-patch13|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch11|>=2.4.7.0-beta1,<2.4.7.0-patch6|>=2.4.8.0-beta1,<2.4.8.0-patch1", + "magento/core": "<=1.9.4.5", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1", + "magento/project-community-edition": "<=2.0.2", + "magneto/core": "<1.9.4.4-dev", + "maikuolan/phpmussel": ">=1,<1.6", + "mainwp/mainwp": "<=4.4.3.3", + "manogi/nova-tiptap": "<=3.2.6", + "mantisbt/mantisbt": "<=2.26.3", + "marcwillmann/turn": "<0.3.3", + "marshmallow/nova-tiptap": "<5.7", + "matomo/matomo": "<1.11", + "matyhtf/framework": "<3.0.6", + "mautic/core": "<5.2.6|>=6.0.0.0-alpha,<6.0.2", + "mautic/core-lib": ">=1.0.0.0-beta,<4.4.13|>=5.0.0.0-alpha,<5.1.1", + "maximebf/debugbar": "<1.19", + "mdanter/ecc": "<2", + "mediawiki/abuse-filter": "<1.39.9|>=1.40,<1.41.3|>=1.42,<1.42.2", + "mediawiki/cargo": "<3.6.1", + "mediawiki/core": "<1.39.5|==1.40", + "mediawiki/data-transfer": ">=1.39,<1.39.11|>=1.41,<1.41.3|>=1.42,<1.42.2", + "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", + "mehrwert/phpmyadmin": "<3.2", + "melisplatform/melis-asset-manager": "<5.0.1", + "melisplatform/melis-cms": "<5.0.1", + "melisplatform/melis-front": "<5.0.1", + "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", + "mgallegos/laravel-jqgrid": "<=1.3", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", + "microsoft/microsoft-graph-beta": "<2.0.1", + "microsoft/microsoft-graph-core": "<2.0.2", + "microweber/microweber": "<=2.0.19", + "mikehaertl/php-shellcommand": "<1.6.1", + "miniorange/miniorange-saml": "<1.4.3", + "mittwald/typo3_forum": "<1.2.1", + "mobiledetect/mobiledetectlib": "<2.8.32", + "modx/revolution": "<=3.1", + "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", + "monolog/monolog": ">=1.8,<1.12", + "moodle/moodle": "<4.3.12|>=4.4,<4.4.8|>=4.5.0.0-beta,<4.5.4", + "mos/cimage": "<0.7.19", + "movim/moxl": ">=0.8,<=0.10", + "movingbytes/social-network": "<=1.2.1", + "mpdf/mpdf": "<=7.1.7", + "munkireport/comment": "<4.1", + "munkireport/managedinstalls": "<2.6", + "munkireport/munki_facts": "<1.5", + "munkireport/munkireport": ">=2.5.3,<5.6.3", + "munkireport/reportdata": "<3.5", + "munkireport/softwareupdate": "<1.6", + "mustache/mustache": ">=2,<2.14.1", + "mwdelaney/wp-enable-svg": "<=0.2", + "namshi/jose": "<2.2", + "nasirkhan/laravel-starter": "<11.11", + "nategood/httpful": "<1", + "neoan3-apps/template": "<1.1.1", + "neorazorx/facturascripts": "<2022.04", + "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": "<5.4.5", + "nesbot/carbon": "<2.72.6|>=3,<3.8.4", + "netcarver/textile": "<=4.1.2", + "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", + "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", + "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "nilsteampassnet/teampass": "<3.1.3.1-dev", + "nitsan/ns-backup": "<13.0.1", + "nonfiction/nterchange": "<4.1.1", + "notrinos/notrinos-erp": "<=0.7", + "noumo/easyii": "<=0.9", + "novaksolutions/infusionsoft-php-sdk": "<1", + "nukeviet/nukeviet": "<4.5.02", + "nyholm/psr7": "<1.6.1", + "nystudio107/craft-seomatic": "<3.4.12", + "nzedb/nzedb": "<0.8", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "october/backend": "<1.1.2", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<3.7.5", + "october/rain": "<1.0.472|>=1.1,<1.1.2", + "october/system": "<3.7.5", + "oliverklee/phpunit": "<3.5.15", + "omeka/omeka-s": "<4.0.3", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", + "open-web-analytics/open-web-analytics": "<1.7.4", + "opencart/opencart": ">=0", + "openid/php-openid": "<2.3", + "openmage/magento-lts": "<20.12.3", + "opensolutions/vimbadmin": "<=3.0.15", + "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", + "orchid/platform": ">=8,<14.43", + "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", + "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", + "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", + "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", + "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3", + "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3", + "oxid-esales/oxideshop-ce": "<=7.0.5", + "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1", + "packbackbooks/lti-1-3-php-library": "<5", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": "<3", + "pagekit/pagekit": "<=1.0.18", + "paragonie/ecc": "<2.0.1", + "paragonie/random_compat": "<2", + "passbolt/passbolt_api": "<4.6.2", + "paypal/adaptivepayments-sdk-php": "<=3.9.2", + "paypal/invoice-sdk-php": "<=3.9", + "paypal/merchant-sdk-php": "<3.12", + "paypal/permissions-sdk-php": "<=3.9.1", + "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", + "pear/crypt_gpg": "<1.6.7", + "pear/http_request2": "<2.7", + "pear/pear": "<=1.10.1", + "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", + "personnummer/personnummer": "<3.0.2", + "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.2", + "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5", + "php-mod/curl": "<2.3.2", + "phpbb/phpbb": "<3.3.11", + "phpems/phpems": ">=6,<=6.1.3", + "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", + "phpmailer/phpmailer": "<6.5", + "phpmussel/phpmussel": ">=1,<1.6", + "phpmyadmin/phpmyadmin": "<5.2.2", + "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5|>=3.2.10,<=4.0.1", + "phpoffice/common": "<0.2.9", + "phpoffice/math": "<=0.2", + "phpoffice/phpexcel": "<=1.8.2", + "phpoffice/phpspreadsheet": "<1.29.9|>=2,<2.1.8|>=2.2,<2.3.7|>=3,<3.9", + "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36", + "phpservermon/phpservermon": "<3.6", + "phpsysinfo/phpsysinfo": "<3.4.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pi/pi": "<=2.5", + "pimcore/admin-ui-classic-bundle": "<1.7.6", + "pimcore/customer-management-framework-bundle": "<4.2.1", + "pimcore/data-hub": "<1.2.4", + "pimcore/data-importer": "<1.8.9|>=1.9,<1.9.3", + "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", + "pimcore/perspective-editor": "<1.5.1", + "pimcore/pimcore": "<11.5.4", + "piwik/piwik": "<1.11", + "pixelfed/pixelfed": "<0.12.5", + "plotly/plotly.js": "<2.25.2", + "pocketmine/bedrock-protocol": "<8.0.2", + "pocketmine/pocketmine-mp": "<5.25.2", + "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pressbooks/pressbooks": "<5.18", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/blockreassurance": "<=5.1.3", + "prestashop/blockwishlist": ">=2,<2.1.1", + "prestashop/contactform": ">=1.0.1,<4.3", + "prestashop/gamification": "<2.3.2", + "prestashop/prestashop": "<8.1.6", + "prestashop/productcomments": "<5.0.2", + "prestashop/ps_contactinfo": "<=3.3.2", + "prestashop/ps_emailsubscription": "<2.6.1", + "prestashop/ps_facetedsearch": "<3.4.1", + "prestashop/ps_linklist": "<3.1", + "privatebin/privatebin": "<1.4|>=1.5,<1.7.4", + "processwire/processwire": "<=3.0.229", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pterodactyl/panel": "<=1.11.10", + "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", + "ptrofimov/beanstalk_console": "<1.7.14", + "pubnub/pubnub": "<6.1", + "punktde/pt_extbase": "<1.5.1", + "pusher/pusher-php-server": "<2.2.1", + "pwweb/laravel-core": "<=0.3.6.0-beta", + "pxlrbt/filament-excel": "<1.1.14|>=2.0.0.0-alpha,<2.3.3", + "pyrocms/pyrocms": "<=3.9.1", + "qcubed/qcubed": "<=3.1.1", + "quickapps/cms": "<=2.0.0.0-beta2", + "rainlab/blog-plugin": "<1.4.1", + "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", + "rankmath/seo-by-rank-math": "<=1.0.95", + "rap2hpoutre/laravel-log-viewer": "<0.13", + "react/http": ">=0.7,<1.9", + "really-simple-plugins/complianz-gdpr": "<6.4.2", + "redaxo/source": "<5.18.3", + "remdex/livehelperchat": "<4.29", + "renolit/reint-downloadmanager": "<4.0.2|>=5,<5.0.1", + "reportico-web/reportico": "<=8.1", + "rhukster/dom-sanitizer": "<1.0.7", + "rmccue/requests": ">=1.6,<1.8", + "robrichards/xmlseclibs": ">=1,<3.0.4", + "roots/soil": "<4.1", + "roundcube/roundcubemail": "<1.5.10|>=1.6,<1.6.11", + "rudloff/alltube": "<3.0.3", + "rudloff/rtmpdump-bin": "<=2.3.1", + "s-cart/core": "<6.9", + "s-cart/s-cart": "<6.9", + "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "samwilson/unlinked-wikibase": "<1.42", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "setasign/fpdi": "<2.6.4", + "sfroemken/url_redirect": "<=1.2.1", + "sheng/yiicms": "<1.2.1", + "shopware/core": "<6.5.8.18-dev|>=6.6,<6.6.10.3-dev|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", + "shopware/platform": "<=6.6.10.4|>=6.7.0.0-RC1-dev,<6.7.0.0-RC2-dev", + "shopware/production": "<=6.3.5.2", + "shopware/shopware": "<=5.7.17", + "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev", + "shopxo/shopxo": "<=6.4", + "showdoc/showdoc": "<2.10.4", + "shuchkin/simplexlsx": ">=1.0.12,<1.1.13", + "silverstripe-australia/advancedreports": ">=1,<=2", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", + "silverstripe/assets": ">=1,<1.11.1", + "silverstripe/cms": "<4.11.3", + "silverstripe/comments": ">=1.3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<5.3.23", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", + "silverstripe/recipe-cms": ">=4.5,<4.5.3", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/reports": "<5.2.3", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2", + "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", + "silverstripe/subsites": ">=2,<2.6.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3|>=5,<5.4.2", + "silverstripe/versioned-admin": ">=1,<1.11.1", + "simogeo/filemanager": "<=2.5", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<=4.16.15|>=5.0.0.0-alpha1,<=5.0.0.0-alpha19", + "simplesamlphp/saml2-legacy": "<=4.16.15", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplesamlphp/simplesamlphp-module-openid": "<1", + "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-common": "<1.20", + "simplesamlphp/xml-security": "==1.6.11", + "simplito/elliptic-php": "<1.0.6", + "sitegeist/fluid-components": "<3.5", + "sjbr/sr-feuser-register": "<2.6.2|>=5.1,<12.5", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "sjbr/static-info-tables": "<2.3.1", + "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", + "slim/slim": "<2.6", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<4.5.3|>=5,<5.1.1", + "snipe/snipe-it": "<8.1", + "socalnick/scn-social-auth": "<1.15.2", + "socialiteproviders/steam": "<1.1", + "spatie/browsershot": "<5.0.5", + "spatie/image-optimizer": "<1.7.3", + "spencer14420/sp-php-email-handler": "<1", + "spipu/html2pdf": "<5.2.8", + "spoon/library": "<1.4.1", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<24.05.1", + "starcitizentools/citizen-skin": ">=1.9.4,<3.4", + "starcitizentools/short-description": ">=4,<4.0.1", + "starcitizentools/tabber-neue": ">=1.9.1,<2.7.2|>=3,<3.1.1", + "statamic/cms": "<=5.16", + "stormpath/sdk": "<9.9.99", + "studio-42/elfinder": "<=2.1.64", + "studiomitte/friendlycaptcha": "<0.1.4", + "subhh/libconnect": "<7.0.8|>=8,<8.1", + "sukohi/surpass": "<1", + "sulu/form-bundle": ">=2,<2.5.3", + "sulu/sulu": "<1.6.44|>=2,<2.5.25|>=2.6,<2.6.9|>=3.0.0.0-alpha1,<3.0.0.0-alpha3", + "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", + "svewap/a21glossary": "<=0.4.10", + "swag/paypal": "<5.4.4", + "swiftmailer/swiftmailer": "<6.2.5", + "swiftyedit/swiftyedit": "<1.2", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": "<1.10.1", + "sylius/paypal-plugin": "<1.6.2|>=1.7,<1.7.2|>=2,<2.0.2", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4", + "symbiote/silverstripe-multivaluefield": ">=3,<3.1", + "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", + "symbiote/silverstripe-seed": "<6.0.3", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfont/process": ">=0", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<5.3.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4", + "symfony/http-client": ">=4.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/http-foundation": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.4.10|>=7,<7.0.10|>=7.1,<7.1.3", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", + "symfony/symfony": "<5.4.47|>=6,<6.4.15|>=7,<7.1.8", + "symfony/translation": ">=2,<2.0.17", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/ux-autocomplete": "<2.11.2", + "symfony/ux-live-component": "<2.25.1", + "symfony/ux-twig-component": "<2.25.1", + "symfony/validator": "<5.4.43|>=6,<6.4.11|>=7,<7.1.4", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/webhook": ">=6.3,<6.3.8", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symphonycms/symphony-2": "<2.6.4", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", + "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", + "tastyigniter/tastyigniter": "<4", + "tcg/voyager": "<=1.8", + "tecnickcom/tc-lib-pdf-font": "<2.6.4", + "tecnickcom/tcpdf": "<6.8", + "terminal42/contao-tablelookupwizard": "<3.3.5", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "thinkcmf/thinkcmf": "<6.0.8", + "thorsten/phpmyfaq": "<=4.0.1", + "tikiwiki/tiki-manager": "<=17.1", + "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1", + "tinymce/tinymce": "<7.2", + "tinymighty/wiki-seo": "<1.2.2", + "titon/framework": "<9.9.99", + "tltneon/lgsl": "<7", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.17|>=6.1,<=8.0.4", + "topthink/think": "<=6.1.1", + "topthink/thinkphp": "<=3.2.3|>=6.1.3,<=8.0.4", + "torrentpier/torrentpier": "<=2.4.3", + "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tribalsystems/zenario": "<=9.7.61188", + "truckersmp/phpwhois": "<=4.3.1", + "ttskch/pagination-service-provider": "<1", + "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2", + "twig/twig": "<3.11.2|>=3.12,<3.14.1|>=3.16,<3.19", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<10.4.46|>=11,<11.5.40|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-belog": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-beuser": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-dashboard": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-extensionmanager": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-felogin": ">=4.2,<4.2.3", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", + "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-indexed-search": ">=10,<=10.4.47|>=11,<=11.5.41|>=12,<=12.4.24|>=13,<=13.4.2", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8|==13.4.2", + "typo3/cms-lowlevel": ">=11,<=11.5.41", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/cms-scheduler": ">=11,<=11.5.41", + "typo3/cms-setup": ">=9,<=9.5.50|>=10,<=10.4.49|>=11,<=11.5.43|>=12,<=12.4.30|>=13,<=13.4.11", + "typo3/cms-webhooks": ">=12,<=12.4.30|>=13,<=13.4.11", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", + "ua-parser/uap-php": "<3.8", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<2.9.1", + "universal-omega/dynamic-page-list3": "<3.6.4", + "unopim/unopim": "<0.1.5", + "userfrosting/userfrosting": ">=0.3.1,<4.6.3", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "uvdesk/community-skeleton": "<=1.1.1", + "uvdesk/core-framework": "<=1.1.1", + "vanilla/safecurl": "<0.9.2", + "verbb/comments": "<1.5.5", + "verbb/formie": "<=2.1.43", + "verbb/image-resizer": "<2.0.9", + "verbb/knock-knock": "<1.2.8", + "verot/class.upload.php": "<=2.1.6", + "vertexvaar/falsftp": "<0.2.6", + "villagedefrance/opencart-overclocked": "<=1.11.1", + "vova07/yii2-fileapi-widget": "<0.1.9", + "vrana/adminer": "<4.8.1", + "vufind/vufind": ">=2,<9.1.1", + "waldhacker/hcaptcha": "<2.1.2", + "wallabag/tcpdf": "<6.2.22", + "wallabag/wallabag": "<2.6.11", + "wanglelecc/laracms": "<=1.0.3", + "wapplersystems/a21glossary": "<=0.4.10", + "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9", + "web-auth/webauthn-lib": ">=4.5,<4.9", + "web-feet/coastercms": "==5.5", + "web-tp3/wec_map": "<3.0.3", + "webbuilders-group/silverstripe-kapost-bridge": "<0.4", + "webcoast/deferred-image-processing": "<1.0.2", + "webklex/laravel-imap": "<5.3", + "webklex/php-imap": "<5.3", + "webpa/webpa": "<3.1.2", + "wikibase/wikibase": "<=1.39.3", + "wikimedia/parsoid": "<0.12.2", + "willdurand/js-translation-bundle": "<2.1.1", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", + "winter/wn-dusk-plugin": "<2.1", + "winter/wn-system-module": "<1.2.4", + "wintercms/winter": "<=1.2.3", + "wireui/wireui": "<1.19.3|>=2,<2.1.3", + "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3", + "wp-cli/wp-cli": ">=0.12,<2.5", + "wp-graphql/wp-graphql": "<=1.14.5", + "wp-premium/gravityforms": "<2.4.21", + "wpanel/wpanel4-cms": "<=4.3.1", + "wpcloud/wp-stateless": "<3.2", + "wpglobus/wpglobus": "<=1.9.6", + "wwbn/avideo": "<14.3", + "xataface/xataface": "<3", + "xpressengine/xpressengine": "<3.0.15", + "yab/quarx": "<2.4.5", + "yeswiki/yeswiki": "<4.5.4", + "yetiforce/yetiforce-crm": "<6.5", + "yidashi/yii2cmf": "<=2", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": "<1.1.31", + "yiisoft/yii2": "<2.0.52", + "yiisoft/yii2-authclient": "<2.2.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<=2.0.45", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<=2.2.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.20", + "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", + "yoast-seo-for-typo3/yoast_seo": "<7.2.3", + "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", + "z-push/z-push-dev": "<2.7.6", + "zencart/zencart": "<=1.5.7.0-beta", + "zendesk/zendesk_api_client_php": "<2.2.11", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": "<1.8.4", + "zendframework/zend-feed": "<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": "<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<=3", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zenstruck/collection": "<0.2.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2", + "zoujingli/thinkadmin": "<=6.1.53" + }, + "type": "metapackage", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" + } + ], + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "keywords": [ + "dev" + ], + "support": { + "issues": "https://github.com/Roave/SecurityAdvisories/issues", + "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2025-08-12T21:05:30+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "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", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:12:49+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.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "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.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-10-18T14:56:07+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.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^6.4" + }, + "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.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:15:17+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.1-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.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-23T08:47:14+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:17:12+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "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": "https://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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:19:19+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.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a", + "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.5" + }, + "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", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-10T07:50:56+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": "slevomat/coding-standard", + "version": "8.20.0", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "b4f9f02edd4e6a586777f0cabe8d05574323f3eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b4f9f02edd4e6a586777f0cabe8d05574323f3eb", + "reference": "b4f9f02edd4e6a586777f0cabe8d05574323f3eb", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.1.2", + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^2.2.0", + "squizlabs/php_codesniffer": "^3.13.2" + }, + "require-dev": { + "phing/phing": "3.0.1|3.1.0", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/phpstan": "2.1.19", + "phpstan/phpstan-deprecation-rules": "2.0.3", + "phpstan/phpstan-phpunit": "2.0.7", + "phpstan/phpstan-strict-rules": "2.0.6", + "phpunit/phpunit": "9.6.8|10.5.48|11.4.4|11.5.27|12.2.7" + }, + "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.20.0" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2025-07-26T15:35:10+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.13.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c", + "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" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-17T22:17:01+00:00" + }, + { + "name": "symfony/cache", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "6621a2bee5373e3e972b2ae5dbedd5ac899d8cb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/6621a2bee5373e3e972b2ae5dbedd5ac899d8cb6", + "reference": "6621a2bee5373e3e972b2ae5dbedd5ac899d8cb6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^3.6", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.4|^7.0" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "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 extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-30T17:13:41+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "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 caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T15:25:07+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/119bcf13e67dbd188e5dbc74228b1686f66acd37", + "reference": "119bcf13e67dbd188e5dbc74228b1686f66acd37", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "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 an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-07-15T11:36:08+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "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.3" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:36:25+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "roave/security-advisories": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "~8.3.0", + "ext-json": "*", + "ext-openssl": "*", + "ext-pdo": "*" + }, + "platform-dev": [], + "platform-overrides": { + "php": "8.3.0" + }, + "plugin-api-version": "2.6.0" +} diff --git a/config/.gitignore b/config/.gitignore index d5ce9da0..96043010 100644 --- a/config/.gitignore +++ b/config/.gitignore @@ -1,2 +1 @@ development.config.php -database.php diff --git a/config/autoload/.gitignore b/config/autoload/.gitignore index 65f817e9..1a83fda6 100644 --- a/config/autoload/.gitignore +++ b/config/autoload/.gitignore @@ -1,4 +1,2 @@ -*.production.php local.php -development.config.global.php -development.local.php +*.local.php diff --git a/config/autoload/cors.develope.php b/config/autoload/cors.develope.php new file mode 100644 index 00000000..19c8b962 --- /dev/null +++ b/config/autoload/cors.develope.php @@ -0,0 +1,13 @@ + [ + 'allowed_origins' => ['http://localhost:5173','http://localhost'], + 'allowed_headers' => ['x-ident', 'Authorization', 'Authentication', 'Content-Type'], // No custom headers allowed + 'allowed_max_age' => '3600', // 60 minutes + 'credentials_allowed' => true, // Disallow cookies + 'exposed_headers' => [], // No headers are exposed + ], +]; diff --git a/config/autoload/cors.global.php b/config/autoload/cors.global.php new file mode 100644 index 00000000..2c9c2000 --- /dev/null +++ b/config/autoload/cors.global.php @@ -0,0 +1,13 @@ + [ + 'allowed_origins' => [ConfigurationInterface::ANY_ORIGIN], + 'allowed_headers' => ['x-ident', 'Authorization', 'Authentication', 'Content-Type'], // No custom headers allowed + 'allowed_max_age' => '3600', // 60 minutes + 'credentials_allowed' => true, // Disallow cookies + 'exposed_headers' => [], // No headers are exposed + ], +]; diff --git a/config/autoload/database.action.php b/config/autoload/database.action.php new file mode 100644 index 00000000..13ee96f3 --- /dev/null +++ b/config/autoload/database.action.php @@ -0,0 +1,20 @@ + [ + 'driver' => 'mysql', + 'host' => '127.0.0.1', + 'port' => '3306', + 'user' => 'dev', + 'password' => 'dev', + 'dbname' => 'db', + 'charset' => 'utf8mb4', + 'defaultTableOptions' => [ + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'engine' => 'InnoDB', + ], + 'error' => PDO::ERRMODE_EXCEPTION, + 'emulate_prepares' => false, + ] +]; diff --git a/config/autoload/database.develope.php b/config/autoload/database.develope.php new file mode 100644 index 00000000..08271b9e --- /dev/null +++ b/config/autoload/database.develope.php @@ -0,0 +1,20 @@ + [ + 'driver' => 'mysql', + 'host' => 'database', + 'port' => '3306', + 'user' => 'dev', + 'password' => 'dev', + 'dbname' => 'db', + 'charset' => 'utf8mb4', + 'defaultTableOptions' => [ + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'engine' => 'InnoDB', + ], + 'error' => PDO::ERRMODE_EXCEPTION, + 'emulate_prepares' => false, + ] +]; diff --git a/config/autoload/database.global.php.dist b/config/autoload/database.global.php.dist new file mode 100644 index 00000000..1152a4f8 --- /dev/null +++ b/config/autoload/database.global.php.dist @@ -0,0 +1,20 @@ + [ + 'driver' => 'driver', + 'host' => 'host', + 'port' => 'port', + 'user' => 'user', + 'password' => 'password', + 'dbname' => 'dbname', + 'charset' => 'utf8mb4', + 'defaultTableOptions' => [ + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'engine' => 'InnoDB', + ], + 'error' => PDO::ERRMODE_EXCEPTION, + 'emulate_prepares' => false, + ] +]; diff --git a/config/autoload/database.testing.php b/config/autoload/database.testing.php new file mode 100644 index 00000000..73522bc0 --- /dev/null +++ b/config/autoload/database.testing.php @@ -0,0 +1,20 @@ + [ + 'driver' => 'mysql', + 'host' => 'database-testing', + 'port' => '3306', + 'user' => 'dev', + 'password' => 'dev', + 'dbname' => 'db', + 'charset' => 'utf8mb4', + 'defaultTableOptions' => [ + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_general_ci', + 'engine' => 'InnoDB', + ], + 'error' => PDO::ERRMODE_EXCEPTION, + 'emulate_prepares' => false, + ] +]; diff --git a/config/autoload/dependencies.action.php b/config/autoload/dependencies.action.php new file mode 100644 index 00000000..9ab17fbb --- /dev/null +++ b/config/autoload/dependencies.action.php @@ -0,0 +1,25 @@ + [ + 'aliases' => [ + PDO::class => 'database', + Envms\FluentPDO\Query::class => 'query', + ownHackathon\Core\Utils\UuidFactoryInterface::class => 'uuid', + Psr\Log\LoggerInterface::class => 'logger', + Symfony\Component\Mailer\MailerInterface::class => 'mailer', + ], + 'invokables' => [ + ], + 'factories' => [ + 'database' => ownHackathon\Core\Factory\DatabaseFactory::class, + 'query' => ownHackathon\Core\Factory\QueryFactory::class, + 'logger' => LoggerFactory::class, + 'uuid' => ownHackathon\Core\Factory\UuidFactory::class, + 'mailer' => NullMailerFactory::class, + ], + ], +]; diff --git a/config/autoload/dependencies.global.php b/config/autoload/dependencies.global.php new file mode 100644 index 00000000..c2d581e5 --- /dev/null +++ b/config/autoload/dependencies.global.php @@ -0,0 +1,46 @@ + [ + // Use 'aliases' to alias a service name to another service. The + // key is the alias name, the value is the service to which it points. + 'aliases' => [ + PDO::class => 'database', + Envms\FluentPDO\Query::class => 'query', + Psr\Log\LoggerInterface::class => 'logger', + ownHackathon\Core\Utils\UuidFactoryInterface::class => 'uuid', + Symfony\Component\Mailer\MailerInterface::class => 'mailer', + ], + // Use 'invokables' for constructor-less services, or services that do + // not require arguments to the constructor. Map a service name to the + // class name. + 'invokables' => [ + ], + // Use 'factories' for services provided by callbacks/factory classes. + 'factories' => [ + 'database' => DatabaseFactory::class, + 'query' => QueryFactory::class, + 'logger' => LoggerFactory::class, + 'uuid' => UuidFactory::class, + 'mailer' => MailFactory::class, + ], + 'delegators' => [ + ErrorHandler::class => [ + LoggingErrorListenerDelegatorFactory::class, + ], + ], + ], +]; diff --git a/config/autoload/dependencies.testing.php b/config/autoload/dependencies.testing.php new file mode 100644 index 00000000..cd7486b8 --- /dev/null +++ b/config/autoload/dependencies.testing.php @@ -0,0 +1,24 @@ + [ + 'aliases' => [ + PDO::class => 'database', + Envms\FluentPDO\Query::class => 'query', + ownHackathon\Core\Utils\UuidFactoryInterface::class => 'uuid', + Psr\Log\LoggerInterface::class => 'logger', + Symfony\Component\Mailer\MailerInterface::class => 'mailer', + ], + 'invokables' => [ + ], + 'factories' => [ + 'database' => ownHackathon\Core\Factory\DatabaseFactory::class, + 'query' => ownHackathon\Core\Factory\QueryFactory::class, + 'logger' => LoggerFactory::class, + 'uuid' => ownHackathon\Core\Factory\UuidFactory::class, + 'mailer' => ownHackathon\FunctionalTest\Mock\NullMailerFactory::class, + ], + ], +]; diff --git a/config/autoload/development.local.php.dist b/config/autoload/development.local.php.dist new file mode 100644 index 00000000..4aca5a7c --- /dev/null +++ b/config/autoload/development.local.php.dist @@ -0,0 +1,35 @@ + [ + 'factories' => [ + ErrorResponseGenerator::class => Container\WhoopsErrorResponseGeneratorFactory::class, + 'Mezzio\Whoops' => Container\WhoopsFactory::class, + 'Mezzio\WhoopsPageHandler' => Container\WhoopsPageHandlerFactory::class, + ], + ], + 'whoops' => [ + 'json_exceptions' => [ + 'display' => true, + 'show_trace' => true, + 'ajax_only' => true, + ], + ], +]; diff --git a/config/autoload/local.php.dist b/config/autoload/local.php.dist new file mode 100644 index 00000000..db858d77 --- /dev/null +++ b/config/autoload/local.php.dist @@ -0,0 +1,13 @@ + [ + 'path' => __DIR__ . '/../../data/log/', + ] +]; diff --git a/config/autoload/mail.develope.php b/config/autoload/mail.develope.php new file mode 100644 index 00000000..7a17007e --- /dev/null +++ b/config/autoload/mail.develope.php @@ -0,0 +1,8 @@ + [ + 'dsn' => 'smtp://mailhog:1025', + 'from' => 'hackathon@exdrals.de', + ], +]; diff --git a/config/autoload/mail.testing.php b/config/autoload/mail.testing.php new file mode 100644 index 00000000..7a17007e --- /dev/null +++ b/config/autoload/mail.testing.php @@ -0,0 +1,8 @@ + [ + 'dsn' => 'smtp://mailhog:1025', + 'from' => 'hackathon@exdrals.de', + ], +]; diff --git a/config/autoload/mezzio.global.php b/config/autoload/mezzio.global.php new file mode 100644 index 00000000..64d701e7 --- /dev/null +++ b/config/autoload/mezzio.global.php @@ -0,0 +1,24 @@ + true, + + // Enable debugging; typically used to provide debugging information within templates. + 'debug' => false, + 'mezzio' => [ + // Provide templates for the error handling middleware to use when + // generating responses. + 'error_handler' => [ + 'template_404' => 'error::404', + 'template_error' => 'error::error', + ], + ], +]; diff --git a/config/autoload/migrations.action.php b/config/autoload/migrations.action.php new file mode 100644 index 00000000..166dbab1 --- /dev/null +++ b/config/autoload/migrations.action.php @@ -0,0 +1,23 @@ + [ + 'table_storage' => [ + 'table_name' => 'MigrationVersions', + 'version_column_name' => 'version', + 'version_column_length' => 192, + 'executed_at_column_name' => 'executedAt', + 'execution_time_column_name' => 'executionTime', + ], + + 'migrations_paths' => [ + 'Migrations' => __DIR__ . '/../../database/migrations', + 'TestDataMigrations' => __DIR__ . '/../../tests/FunctionalTest/database/migrations', + ], + + 'all_or_nothing' => true, + 'transactional' => true, + 'check_database_platform' => true, + 'organize_migrations' => 'none', + ], +]; diff --git a/config/autoload/migrations.develope.php b/config/autoload/migrations.develope.php new file mode 100644 index 00000000..0626d103 --- /dev/null +++ b/config/autoload/migrations.develope.php @@ -0,0 +1,22 @@ + [ + 'table_storage' => [ + 'table_name' => 'MigrationVersions', + 'version_column_name' => 'version', + 'version_column_length' => 192, + 'executed_at_column_name' => 'executedAt', + 'execution_time_column_name' => 'executionTime', + ], + + 'migrations_paths' => [ + 'Migrations' => __DIR__ . '/../../database/migrations', + ], + + 'all_or_nothing' => true, + 'transactional' => true, + 'check_database_platform' => true, + 'organize_migrations' => 'none', + ], +]; diff --git a/config/autoload/migrations.global.php b/config/autoload/migrations.global.php new file mode 100644 index 00000000..0626d103 --- /dev/null +++ b/config/autoload/migrations.global.php @@ -0,0 +1,22 @@ + [ + 'table_storage' => [ + 'table_name' => 'MigrationVersions', + 'version_column_name' => 'version', + 'version_column_length' => 192, + 'executed_at_column_name' => 'executedAt', + 'execution_time_column_name' => 'executionTime', + ], + + 'migrations_paths' => [ + 'Migrations' => __DIR__ . '/../../database/migrations', + ], + + 'all_or_nothing' => true, + 'transactional' => true, + 'check_database_platform' => true, + 'organize_migrations' => 'none', + ], +]; diff --git a/config/autoload/migrations.testing.php b/config/autoload/migrations.testing.php new file mode 100644 index 00000000..166dbab1 --- /dev/null +++ b/config/autoload/migrations.testing.php @@ -0,0 +1,23 @@ + [ + 'table_storage' => [ + 'table_name' => 'MigrationVersions', + 'version_column_name' => 'version', + 'version_column_length' => 192, + 'executed_at_column_name' => 'executedAt', + 'execution_time_column_name' => 'executionTime', + ], + + 'migrations_paths' => [ + 'Migrations' => __DIR__ . '/../../database/migrations', + 'TestDataMigrations' => __DIR__ . '/../../tests/FunctionalTest/database/migrations', + ], + + 'all_or_nothing' => true, + 'transactional' => true, + 'check_database_platform' => true, + 'organize_migrations' => 'none', + ], +]; diff --git a/config/autoload/routes.global.php b/config/autoload/routes.global.php new file mode 100644 index 00000000..30521647 --- /dev/null +++ b/config/autoload/routes.global.php @@ -0,0 +1,29 @@ + [ + //.. + 'invokables' => [ + /* ... */ + // Comment out or remove the following line: + // Mezzio\Router\RouterInterface::class => Mezzio\Router\FastRouteRouter::class, + /* ... */ + ], + 'factories' => [ + /* ... */ + // Add this line; the specified factory now creates the router instance: + /* ... */ + ], + ], + + // Add the following to enable caching support: + 'router' => [ + 'fastroute' => [ + // Enable caching support: + 'cache_enabled' => false, + // Optional (but recommended) cache file path: + 'cache_file' => './../../data/cache/fastroute.php.cache', + ], + ], + + 'routes' => [ /* ... */], +]; diff --git a/config/autoload/token.action.php b/config/autoload/token.action.php new file mode 100644 index 00000000..97d7be24 --- /dev/null +++ b/config/autoload/token.action.php @@ -0,0 +1,20 @@ + [ + 'refresh' => [ + 'key' => 'ixo>+W%!Rf/\@)m2UMok:/A_gL 'HS512', + 'duration' => 60 * 60 * 24 * 7 * 12, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + 'access' => [ + 'key' => 'b:?Y@5JCWF:yi{o>irc(3$HFcR-#b\SA', + 'algorithmus' => 'HS512', + 'duration' => 60 * 15, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + ], +]; diff --git a/config/autoload/token.develope.php b/config/autoload/token.develope.php new file mode 100644 index 00000000..97d7be24 --- /dev/null +++ b/config/autoload/token.develope.php @@ -0,0 +1,20 @@ + [ + 'refresh' => [ + 'key' => 'ixo>+W%!Rf/\@)m2UMok:/A_gL 'HS512', + 'duration' => 60 * 60 * 24 * 7 * 12, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + 'access' => [ + 'key' => 'b:?Y@5JCWF:yi{o>irc(3$HFcR-#b\SA', + 'algorithmus' => 'HS512', + 'duration' => 60 * 15, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + ], +]; diff --git a/config/autoload/token.global.php.dist b/config/autoload/token.global.php.dist new file mode 100644 index 00000000..ac8d71d3 --- /dev/null +++ b/config/autoload/token.global.php.dist @@ -0,0 +1,20 @@ + [ + 'refresh' => [ + 'key' => 'token secret', + 'algorithmus' => 'HS512', + 'duration' => 60 * 60 * 24 * 7 * 12, + 'iss' => 'Issuer of the token', + 'aud' => 'recipients of the token', + ], + 'access' => [ + 'key' =>'token secret', + 'algorithmus' => 'HS512', + 'duration' => 60 * 5, + 'iss' => 'Issuer of the token', + 'aud' => 'recipients of the token', + ], + ], +]; diff --git a/config/autoload/token.testing.php b/config/autoload/token.testing.php new file mode 100644 index 00000000..97d7be24 --- /dev/null +++ b/config/autoload/token.testing.php @@ -0,0 +1,20 @@ + [ + 'refresh' => [ + 'key' => 'ixo>+W%!Rf/\@)m2UMok:/A_gL 'HS512', + 'duration' => 60 * 60 * 24 * 7 * 12, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + 'access' => [ + 'key' => 'b:?Y@5JCWF:yi{o>irc(3$HFcR-#b\SA', + 'algorithmus' => 'HS512', + 'duration' => 60 * 15, + 'iss' => 'localhost', + 'aud' => 'localhost', + ], + ], +]; diff --git a/config/config.php b/config/config.php new file mode 100644 index 00000000..d3c582bc --- /dev/null +++ b/config/config.php @@ -0,0 +1,54 @@ + __DIR__ . '/../data/cache/config-cache.php', +]; + +$aggregator = new ConfigAggregator([ + \Mezzio\Cors\ConfigProvider::class, + \Laminas\InputFilter\ConfigProvider::class, + \Laminas\Filter\ConfigProvider::class, + \Laminas\Validator\ConfigProvider::class, + \Mezzio\Helper\ConfigProvider::class, + \Mezzio\Tooling\ConfigProvider::class, + \Mezzio\Router\FastRouteRouter\ConfigProvider::class, + \Laminas\HttpHandlerRunner\ConfigProvider::class, + // Include cache configuration + new ArrayProvider($cacheConfig), + \Mezzio\ConfigProvider::class, + \Mezzio\Router\ConfigProvider::class, + \Laminas\Diactoros\ConfigProvider::class, + // Swoole config to overwrite some services (if installed) + class_exists(\Mezzio\Swoole\ConfigProvider::class) + ? \Mezzio\Swoole\ConfigProvider::class + : function (): array { + return []; + }, + // Default App module config + ownHackathon\Core\ConfigProvider::class, + ownHackathon\App\ConfigProvider::class, + // Load application config in a pre-defined order in such a way that local settings + // overwrite global settings. (Loaded as first to last): + // - `global.php` + // - `*.global.php` + // - `local.php` + // - `*.local.php` + new PhpFileProvider( + realpath(__DIR__) . sprintf( + '/autoload/{,*.}{global,local,%s}.php', + getenv('APP_ENV') ?: 'production' + ) + ), + // Load development config if it exists + new PhpFileProvider(realpath(__DIR__) . '/development.config.php'), +], $cacheConfig['config_cache_path']); + +return $aggregator->getMergedConfig(); diff --git a/config/container.php b/config/container.php new file mode 100644 index 00000000..b7358d18 --- /dev/null +++ b/config/container.php @@ -0,0 +1,14 @@ + true, + ConfigAggregator::ENABLE_CACHE => false, +]; diff --git a/config/migrations.template.tpl b/config/migrations.template.tpl new file mode 100644 index 00000000..83fc0322 --- /dev/null +++ b/config/migrations.template.tpl @@ -0,0 +1,19 @@ + extends AbstractMigration +{ + public function up(Schema $schema): void + { + + } + + public function down(Schema $schema): void + { + + } +} diff --git a/config/pipeline.php b/config/pipeline.php new file mode 100644 index 00000000..a84efb9f --- /dev/null +++ b/config/pipeline.php @@ -0,0 +1,50 @@ +pipe('/api', [ + ErrorHandler::class, + ServerUrlMiddleware::class, + BodyParamsMiddleware::class, + + CorsMiddleware::class, + RouteMiddleware::class, + + ImplicitHeadMiddleware::class, + ImplicitOptionsMiddleware::class, + MethodNotAllowedMiddleware::class, + + UrlHelperMiddleware::class, + + ClientIdentificationMiddleware::class, + RequestAuthenticationMiddleware::class, + + DispatchMiddleware::class, + + RouteNotFoundMiddleware::class, + NotFoundHandler::class, + ]); +}; diff --git a/config/routes.php b/config/routes.php new file mode 100644 index 00000000..0945bb26 --- /dev/null +++ b/config/routes.php @@ -0,0 +1,82 @@ +get( + path: '/ping[/]', + middleware: [ + App\Handler\PingHandler::class, + ], + name: RouteName::PING + ); + $app->get( + path: '/token/refresh[/]', + middleware: [ + App\Middleware\Token\RefreshTokenValidationMiddleware::class, + App\Middleware\Token\RefreshTokenDatabaseExistenceMiddleware::class, + App\Middleware\Token\RefreshTokenMatchClientIdentificationMiddleware::class, + App\Middleware\Token\RefreshTokenAccountMiddleware::class, + App\Middleware\Token\GenerateAccessTokenMiddleware::class, + App\Handler\Account\AccessTokenHandler::class, + ], + name: RouteName::ACCESS_TOKEN_REFRESH + ); + $app->post( + path: '/account/authentication[/]', + middleware: [ + App\Middleware\Account\LoginAuthentication\AuthenticationConditionsMiddleware::class, + App\Middleware\Account\LoginAuthentication\AuthenticationValidationMiddleware::class, + App\Middleware\Account\LoginAuthentication\AuthenticationMiddleware::class, + App\Middleware\Token\GenerateRefreshTokenMiddleware::class, + App\Middleware\Token\GenerateAccessTokenMiddleware::class, + App\Middleware\Account\LoginAuthentication\PersistAuthenticationMiddleware::class, + App\Handler\Account\AuthenticationHandler::class, + ], + name: RouteName::ACCOUNT_AUTHENTICATE + ); + + $app->post( + path: '/account', + middleware: [ + App\Middleware\Account\Validation\EmailInputValidatorMiddleware::class, + App\Middleware\Account\RegisterMiddleware::class, + App\Handler\Account\AccountRegisterHandler::class, + ], + name: RouteName::ACCOUNT_CREATE + ); + + $app->post( + path: '/account/activation/[{token}[/]]', + middleware: [ + App\Middleware\Account\Validation\ActivationInputValidatorMiddleware::class, + App\Middleware\Account\ActivationMiddleware::class, + App\Handler\Account\AccountActivationHandler::class, + ], + name: RouteName::ACCOUNT_ACTIVATION + ); + + $app->post( + path: '/account/password/forgotten[/]', + middleware: [ + App\Middleware\Account\Validation\EmailInputValidatorMiddleware::class, + App\Middleware\Account\PasswordForgottenMiddleware::class, + App\Handler\Account\AccountPasswordForgottenHandler::class, + ], + name: RouteName::ACCOUNT_PASSWORD_FORGOTTEN + ); + + $app->patch( + path: '/account/password/[{token}[/]]', + middleware: [ + App\Middleware\Account\Validation\PasswordInputValidatorMiddleware::class, + App\Middleware\Account\PasswordChangeMiddleware::class, + App\Handler\Account\AccountPasswordHandler::class, + ], + name: RouteName::ACCOUNT_PASSWORD_SET + ); +}; diff --git a/database/.gitignore b/database/.gitignore index 44dbbcda..a37b1e37 100644 --- a/database/.gitignore +++ b/database/.gitignore @@ -1 +1,2 @@ database.sqlite +*Ignore.php diff --git a/database/migrations/Version20231103223745_CreateAccountTable.php b/database/migrations/Version20231103223745_CreateAccountTable.php new file mode 100644 index 00000000..8b04c336 --- /dev/null +++ b/database/migrations/Version20231103223745_CreateAccountTable.php @@ -0,0 +1,33 @@ +createTable('Account'); + + $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); + $table->addColumn('uuid', Types::STRING, ['length' => 32,]); + $table->addColumn('name', Types::STRING, ['length' => 64, 'notnull' => false,]); + $table->addColumn('password', Types::STRING, ['length' => 255, 'notnull' => false,]); + $table->addColumn('email', Types::STRING, ['length' => 512,]); + $table->addColumn('registeredAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); + $table->addColumn('lastActionAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); + + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['uuid'], 'account_uuid_UNIQUE'); + $table->addUniqueIndex(['name'], 'account_name_UNIQUE'); + $table->addUniqueIndex(['email'], 'account_email_UNIQUE'); + } + + public function down(Schema $schema): void + { + $schema->dropTable('Account'); + } +} diff --git a/database/migrations/Version20231103224045_CreateAccountAccessAuthTable.php b/database/migrations/Version20231103224045_CreateAccountAccessAuthTable.php new file mode 100644 index 00000000..bd4486d7 --- /dev/null +++ b/database/migrations/Version20231103224045_CreateAccountAccessAuthTable.php @@ -0,0 +1,32 @@ +createTable('AccountAccessAuth'); + + $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); + $table->addColumn('userId', Types::INTEGER, ['unsigned' => true,]); + $table->addColumn('label', Types::STRING, ['length' => 64, 'default' => 'default']); + $table->addColumn('refreshToken', Types::STRING, ['length' => 512,]); + $table->addColumn('userAgent', Types::STRING, ['length' => 255, 'default' => 'unknown']); + $table->addColumn('clientIdentHash', Types::STRING, ['length' => 128,]); + $table->addColumn('createdAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); + + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['refreshToken'], 'account_access_auth_refresh_token_UNIQUE'); + $table->addUniqueIndex(['clientIdentHash'], 'account_access_auth_client_ident_hash_UNIQUE'); + } + + public function down(Schema $schema): void + { + $schema->dropTable('AccountAccessAuth'); + } +} diff --git a/database/migrations/Version20231103224046_CreateAccountActivationTable.php b/database/migrations/Version20231103224046_CreateAccountActivationTable.php new file mode 100644 index 00000000..a2ef6c01 --- /dev/null +++ b/database/migrations/Version20231103224046_CreateAccountActivationTable.php @@ -0,0 +1,28 @@ +createTable('AccountActivation'); + + $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); + $table->addColumn('email', Types::STRING, ['length' => 512,]); + $table->addColumn('token', Types::STRING, ['length' => 32,]); + $table->addColumn('createdAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); + + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['token'], 'account_activation_token_UNIQUE'); + } + + public function down(Schema $schema): void + { + $schema->dropTable('AccountActivation'); + } +} diff --git a/database/migrations/Version20231103224047_CreateTokenTable.php b/database/migrations/Version20231103224047_CreateTokenTable.php new file mode 100644 index 00000000..026030d9 --- /dev/null +++ b/database/migrations/Version20231103224047_CreateTokenTable.php @@ -0,0 +1,29 @@ +createTable('Token'); + + $table->addColumn('id', Types::INTEGER, ['autoincrement' => true, 'unsigned' => true,]); + $table->addColumn('accountId', Types::INTEGER, ['unsigned' => true,]); + $table->addColumn('token', Types::STRING, ['length' => 32,]); + $table->addColumn('tokenType', Types::SMALLINT, ['unsigned' => true, 'length' => 2,]); + $table->addColumn('createdAt', Types::DATETIME_IMMUTABLE, ['default' => 'CURRENT_TIMESTAMP',]); + + $table->setPrimaryKey(['id']); + $table->addUniqueIndex(['token'], 'token_token_UNIQUE'); + } + + public function down(Schema $schema): void + { + $schema->dropTable('Token'); + } +} diff --git a/docker-compose.yml b/docker-compose.yml index d1f8c1a0..af55b61b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,6 +13,7 @@ services: container_name: hackathon-php user: "${USERMAP_UID:-1000}:${USERMAP_GID:-1000}" image: "ghcr.io/ownhackathon/hackathon-api-php:latest" + env_file: ".env" volumes: - ./:/var/www/html - ./docker/php/php-ini-overrides.ini:/usr/local/etc/php/conf.d/extra.ini diff --git a/docker/php/php-ini-overrides.ini b/docker/php/php-ini-overrides.ini index 68c41dad..92aa2697 100644 --- a/docker/php/php-ini-overrides.ini +++ b/docker/php/php-ini-overrides.ini @@ -5,3 +5,4 @@ xdebug.discover_client_host=On error_reporting=E_ALL error_log=/var/log/php.log sendmail_path = /usr/local/bin/mhsendmail +memory_limit = 1024M diff --git a/phpcs.xml b/phpcs.xml new file mode 100644 index 00000000..7df485db --- /dev/null +++ b/phpcs.xml @@ -0,0 +1,160 @@ + + + + + + + + + + + + + + + + src/ + tests/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + src + + */vendor/* + */config/* + */database/* + */ConfigProvider.php + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/phpstan.neon b/phpstan.neon new file mode 100644 index 00000000..cd68152e --- /dev/null +++ b/phpstan.neon @@ -0,0 +1,17 @@ +parameters: + level: 6 + paths: + - src + ignoreErrors: + - identifier: missingType.iterableValue + - identifier: missingType.generics + - '#^Dead catch - PDOException is never thrown in the try block.$#' + bootstrapFiles: + - constants.php + tips: + treatPhpDocTypesAsCertain: false +rules: + - PHPStan\Rules\Functions\ReturnNullsafeByRefRule +includes: + - vendor/phpstan/phpstan-deprecation-rules/rules.neon + - vendor/phpstan/phpstan/conf/bleedingEdge.neon diff --git a/phpunit_functionaltest.xml b/phpunit_functionaltest.xml new file mode 100644 index 00000000..34759303 --- /dev/null +++ b/phpunit_functionaltest.xml @@ -0,0 +1,21 @@ + + + + + tests/FunctionalTest + + + diff --git a/phpunit_unittest.xml b/phpunit_unittest.xml new file mode 100644 index 00000000..20b50c0a --- /dev/null +++ b/phpunit_unittest.xml @@ -0,0 +1,38 @@ + + + + + tests/UnitTest/AppTest + + + tests/UnitTest/CoreTest + + + tests/UnitTest/GameTest + + + + + + + + + + + src + + + diff --git a/public/api/doc/index.html b/public/api/docs/index.html similarity index 78% rename from public/api/doc/index.html rename to public/api/docs/index.html index 39bbd0fb..cad62401 100644 --- a/public/api/doc/index.html +++ b/public/api/docs/index.html @@ -7,13 +7,13 @@ name="description" content="SwaggerUI" /> - Hackathon API Overview - + SwaggerUI +
- - + + diff --git a/src/App/Handler/Account/AccountPasswordHandler.php b/src/App/Handler/Account/AccountPasswordHandler.php index e46ff830..b571c096 100644 --- a/src/App/Handler/Account/AccountPasswordHandler.php +++ b/src/App/Handler/Account/AccountPasswordHandler.php @@ -27,7 +27,6 @@ class AccountPasswordHandler implements RequestHandlerInterface schema: new OA\Schema(type: 'string') ), ], - deprecated: true, )] #[OA\RequestBody( description: 'Set Password for a Account', From 999cf9ead6c38f3e5ff10dae8095bb552b720707 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 21:20:16 +0200 Subject: [PATCH 11/62] - --- .github/workflows/deploy_dev.yml | 2 +- public/api/docs/swagger.json | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index b0642433..1f5df3ee 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -239,7 +239,7 @@ jobs: uses: rjstone/discord-webhook-notify@v2.2.1 with: severity: info - details: Successful deployment on build https://dev.hackathon.exdrals.de + details: Successful deployment on build https://dev.hackathon.exdrals.de/api/docs webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: success() diff --git a/public/api/docs/swagger.json b/public/api/docs/swagger.json index 5fb37234..80d72332 100644 --- a/public/api/docs/swagger.json +++ b/public/api/docs/swagger.json @@ -155,8 +155,7 @@ } } } - }, - "deprecated": true + } } }, "/account": { From aec804a360bd46a82a55dbad05c3950abd7ef894 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 22:53:10 +0200 Subject: [PATCH 12/62] - --- .github/workflows/deploy_dev.yml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 1f5df3ee..4239a906 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -235,6 +235,14 @@ jobs: remote_key: ${{ secrets.DEPLOY_KEY }} remote_key_pass: ${{ secrets.DEPLOY_KEY_PASS }} + - name: Clear remote cache folder + uses: appleboy/ssh-action@v1.2.2 + with: + host: ${{ secrets.DEPLOY_HOST }} + username: ${{ secrets.DEPLOY_USER }} + key: ${{ secrets.DEPLOY_KEY }} + script: rm -rf ${{ secrets.DEPLOY_PATH_API_DEV }}/data/cache/* + - name: Deploay Info Success uses: rjstone/discord-webhook-notify@v2.2.1 with: From dccc3d41986e61ba609139b53e6d8cea7cf30fba Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 22:57:09 +0200 Subject: [PATCH 13/62] - --- .github/workflows/deploy_dev.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 4239a906..89cc4282 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -241,6 +241,7 @@ jobs: host: ${{ secrets.DEPLOY_HOST }} username: ${{ secrets.DEPLOY_USER }} key: ${{ secrets.DEPLOY_KEY }} + passphrase: ${{ secrets.DEPLOY_KEY_PASS }} script: rm -rf ${{ secrets.DEPLOY_PATH_API_DEV }}/data/cache/* - name: Deploay Info Success From 44459538f93f07c0be832e15a230081aec043d7a Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 23:02:39 +0200 Subject: [PATCH 14/62] downgrad notify --- .github/workflows/codestyle-and-unittest.yml | 12 ++++++------ .github/workflows/deploy_dev.yml | 14 +++++++------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/codestyle-and-unittest.yml b/.github/workflows/codestyle-and-unittest.yml index db37bd00..e7810862 100644 --- a/.github/workflows/codestyle-and-unittest.yml +++ b/.github/workflows/codestyle-and-unittest.yml @@ -35,7 +35,7 @@ jobs: run: composer run-script phplint - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: PHP Lint failed. @@ -68,7 +68,7 @@ jobs: run: composer run-script phpstan - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: PHP Stan failed. @@ -101,7 +101,7 @@ jobs: run: composer run-script phpcs - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: CodeSniffer failed. @@ -201,7 +201,7 @@ jobs: run: composer run-script functionaltest - name: Test Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: Functional Test failed. @@ -218,7 +218,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Check Info Success - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: info details: Checks successfully executed on API. @@ -226,7 +226,7 @@ jobs: if: success() - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: Incorrect checks during the API check. diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 89cc4282..4702186f 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -31,7 +31,7 @@ jobs: run: composer run-script phplint - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: PHP Lint failed. @@ -64,7 +64,7 @@ jobs: run: composer run-script phpstan - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: PHP Stan failed. @@ -97,7 +97,7 @@ jobs: run: composer run-script phpcs - name: Check Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: CodeSniffer failed. @@ -134,7 +134,7 @@ jobs: run: composer run-script unittest - name: Test Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: PHP Unit Test failed. @@ -197,7 +197,7 @@ jobs: run: composer run-script functionaltest - name: Test Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: Functional Test failed. @@ -245,7 +245,7 @@ jobs: script: rm -rf ${{ secrets.DEPLOY_PATH_API_DEV }}/data/cache/* - name: Deploay Info Success - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: info details: Successful deployment on build https://dev.hackathon.exdrals.de/api/docs @@ -253,7 +253,7 @@ jobs: if: success() - name: Deplay Info Failure - uses: rjstone/discord-webhook-notify@v2.2.1 + uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: error details: Failure deployment on develope. From 1e7646518b6591d2d269ebc587ecdf3c47e4da21 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Wed, 13 Aug 2025 23:14:41 +0200 Subject: [PATCH 15/62] validate security Schemes --- public/api/docs/index.html | 3 --- public/api/docs/swagger.json | 4 ++-- src/App/Handler/SwaggerUIHandler.php | 4 ++-- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/public/api/docs/index.html b/public/api/docs/index.html index df00ee9f..196f702f 100644 --- a/public/api/docs/index.html +++ b/public/api/docs/index.html @@ -13,9 +13,6 @@ .swagger-ui .topbar .download-url-wrapper { display: none; } - .link { - display: none; - } diff --git a/public/api/docs/swagger.json b/public/api/docs/swagger.json index 80d72332..eac3806e 100644 --- a/public/api/docs/swagger.json +++ b/public/api/docs/swagger.json @@ -402,7 +402,7 @@ "name": "Authentication", "in": "header" }, - "Client Identification Number": { + "Client-Identification-String": { "type": "apiKey", "name": "x-ident", "in": "header" @@ -414,7 +414,7 @@ "accessToken": [] }, { - "Client Identification Number": [] + "Client-Identification-String": [] }, { "refreshToken": [] diff --git a/src/App/Handler/SwaggerUIHandler.php b/src/App/Handler/SwaggerUIHandler.php index 62516f5a..02ef7393 100644 --- a/src/App/Handler/SwaggerUIHandler.php +++ b/src/App/Handler/SwaggerUIHandler.php @@ -29,7 +29,7 @@ ) ] #[OA\SecurityScheme( - securityScheme: 'Client Identification Number', + securityScheme: 'Client-Identification-String', type: 'apiKey', name: 'x-ident', in: 'header', @@ -40,7 +40,7 @@ url: '/api' ), ], - security: [['accessToken' => []], ['Client Identification Number' => []], ['refreshToken' => []]] + security: [['accessToken' => []], ['Client-Identification-String' => []], ['refreshToken' => []]] )] readonly class SwaggerUIHandler implements RequestHandlerInterface { From 8c3b28133a2297663b9c8e6690bd61b68849a001 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Thu, 14 Aug 2025 17:29:02 +0200 Subject: [PATCH 16/62] fix deploy uri --- .github/workflows/deploy_dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_dev.yml b/.github/workflows/deploy_dev.yml index 4702186f..3d49d711 100644 --- a/.github/workflows/deploy_dev.yml +++ b/.github/workflows/deploy_dev.yml @@ -248,7 +248,7 @@ jobs: uses: rjstone/discord-webhook-notify@v1.0.4 with: severity: info - details: Successful deployment on build https://dev.hackathon.exdrals.de/api/docs + details: Successful deployment on build https://dev.ownhackathon.de/api/docs webhookUrl: ${{ secrets.WEBHOOK_DISCORD_URL }} if: success() From db59b8ba7331c03f7238dd3cf0fa9d06de90c683 Mon Sep 17 00:00:00 2001 From: BibaltiK Date: Thu, 14 Aug 2025 17:40:44 +0200 Subject: [PATCH 17/62] change SwaggerUI Title --- public/api/docs/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/api/docs/index.html b/public/api/docs/index.html index 196f702f..a112f17c 100644 --- a/public/api/docs/index.html +++ b/public/api/docs/index.html @@ -7,7 +7,7 @@ name="description" content="SwaggerUI" /> - SwaggerUI + ownHackathon - SwaggerUI