diff --git a/.gitattributes b/.gitattributes index 10d6160..4270be0 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8,3 +8,7 @@ /psalm.baseline.xml export-ignore /test/ export-ignore /autoload-dev/ export-ignore +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto +*.php text eol=lf +*.phtml text eol=lf diff --git a/.github/workflows/build_test.yml b/.github/workflows/build_test.yml deleted file mode 100644 index e7fc075..0000000 --- a/.github/workflows/build_test.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: Build and Test - -on: - push: - pull_request: - -env: - COMPOSER_ARGS: '--no-progress' - -permissions: - contents: read - -jobs: - build: - strategy: - matrix: - php_version: ['8.1', '8.2', '8.3'] - deps: ['--prefer-lowest', '--prefer-dist'] - include: - - code-coverage: 'yes' - php_version: '8.2' - deps: '' - runs-on: ubuntu-latest - - steps: - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{matrix.php_version}} - - - name: Show PHP version - run: php -v - - - name: Checkout Branch - uses: actions/checkout@v4 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Cache Composer packages - id: composer-cache - uses: actions/cache@v4 - with: - path: vendor - key: ${{ runner.os }}-php-${{matrix.php_version}}-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-php--${{matrix.php_version}}- - - - name: Install dependencies - run: composer update ${{matrix.deps}} $COMPOSER_ARGS - - - name: Run PHPUnit test suite - if: ${{ matrix.code-coverage != 'yes' }} - run: composer run-script test - - - name: Run PHPUnit test suite with coverage - if: ${{ matrix.code-coverage == 'yes' }} - run: composer run-script test-coverage - - - name: Upload coverage results to Coverall - if: ${{ matrix.code-coverage == 'yes' }} - uses: coverallsapp/github-action@v2 diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..26c5802 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,11 @@ +name: "Continuous Integration" + +on: + pull_request: + push: + branches: + tags: + +jobs: + ci: + uses: laminas/workflow-continuous-integration/.github/workflows/continuous-integration.yml@1.x diff --git a/.github/workflows/release-on-milestone-closed.yml b/.github/workflows/release-on-milestone-closed.yml new file mode 100644 index 0000000..8fcab85 --- /dev/null +++ b/.github/workflows/release-on-milestone-closed.yml @@ -0,0 +1,17 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Automatic Releases" + +on: + milestone: + types: + - "closed" + +jobs: + release: + uses: laminas/workflow-automatic-releases/.github/workflows/release-on-milestone-closed.yml@1.x + secrets: + GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }} + GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }} + ORGANIZATION_ADMIN_TOKEN: ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} + SIGNING_SECRET_KEY: ${{ secrets.SIGNING_SECRET_KEY }} diff --git a/README.md b/README.md index c8c1369..7a77ce4 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # LmcRbacMvc Developer Tools + [![Build](https://github.com/lm-commons/LmcRbacMvcDeveloperTools/actions/workflows/build_test.yml/badge.svg)](https://github.com/lm-commons/LmcRbacMvcDeveloperTools/actions/workflows/build_test.yml) [![Version](http://poser.pugx.org/lm-commons/lmc-rbac-mvc-devtools/version)](https://packagist.org/packages/lm-commons/lmc-rbac-mvc-devtools)[![Total Downloads](http://poser.pugx.org/lm-commons/lmc-rbac-mvc-devtools/downloads)](https://packagist.org/packages/lm-commons/lmc-rbac-mvc-devtools) [![License](https://poser.pugx.org/lm-commons/lmc-rbac/license)](https://packagist.org/packages/lm-commons/lmc-rbac) @@ -8,7 +9,6 @@ ![Dynamic JSON Badge](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.github.com%2Frepos%2Flm-commons%2Flmcrbacmvcdevelopertools%2Fproperties%2Fvalues&query=%24%5B%3A1%5D.value&label=Maintenance%20Status) - Laminas MVC Developer Tools extension for [LmcRbacMvc](https://github.com/LM-Commons/LmcRbacMvc). ## Requirements @@ -31,4 +31,3 @@ go in `development.config.php`. - File issues at https://github.com/LM-Commons/LmcRbacMvcDeveloperTools/issues - Ask questions in the [LM-Commons Slack](https://join.slack.com/t/lm-commons/shared_invite/zt-2gankt2wj-FTS45hp1W~JEj1tWvDsUHQ) chat. - diff --git a/composer.json b/composer.json index 6b42aef..9c13f28 100644 --- a/composer.json +++ b/composer.json @@ -21,15 +21,15 @@ "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "~8.1.0 | ~8.2.0 | ~8.3.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "laminas/laminas-mvc": "~3.0", "laminas/laminas-developer-tools": "~2.0", "lm-commons/lmc-rbac-mvc": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.5.30 | ^11.3.1", + "phpunit/phpunit": "^10.5.30 || ^11.3.1", "laminas/laminas-permissions-rbac": "~3.0", - "laminas/laminas-coding-standard": "^2.5", + "laminas/laminas-coding-standard": "^3.0", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.25" }, @@ -46,7 +46,13 @@ "extra": { "laminas": { "module": "Lmc\\Rbac\\Mvc\\DevTools" + }, + "config":{ + "platform": { + "php": "8.1.99" + } } + }, "scripts": { "check": [ diff --git a/composer.lock b/composer.lock index 6922883..b79321b 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": "c39c43e9536e4e7c2e89c7f38fec3180", + "content-hash": "f4bc5989a7791f63971a5b2ce13cb4b6", "packages": [ { "name": "brick/varexporter", @@ -394,33 +394,33 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" + "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb" }, "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/0f7cb975f4443cf22f33408925c231225cfba8cb", + "reference": "0f7cb975f4443cf22f33408925c231225cfba8cb", "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", + "infection/infection": "^0.27.9", + "laminas/laminas-coding-standard": "~3.0.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.6.7", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.9" + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.21.1" }, "type": "library", "autoload": { @@ -452,7 +452,7 @@ "type": "community_bridge" } ], - "time": "2023-10-10T08:35:13+00:00" + "time": "2024-10-24T10:12:53+00:00" }, { "name": "laminas/laminas-eventmanager", @@ -524,16 +524,16 @@ }, { "name": "laminas/laminas-http", - "version": "2.19.0", + "version": "2.20.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d" + "reference": "a66bfb65c698aad6ee9f10df42cb5902f2c3dec8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/26dd6d1177e25d970058863c2afed12bb9dbff4d", - "reference": "26dd6d1177e25d970058863c2afed12bb9dbff4d", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/a66bfb65c698aad6ee9f10df42cb5902f2c3dec8", + "reference": "a66bfb65c698aad6ee9f10df42cb5902f2c3dec8", "shasum": "" }, "require": { @@ -541,7 +541,7 @@ "laminas/laminas-stdlib": "^3.6", "laminas/laminas-uri": "^2.11", "laminas/laminas-validator": "^2.15", - "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-http": "*" @@ -549,7 +549,7 @@ "require-dev": { "ext-curl": "*", "laminas/laminas-coding-standard": "~2.4.0", - "phpunit/phpunit": "^9.5.25" + "phpunit/phpunit": "^9.6.21" }, "suggest": { "paragonie/certainty": "For automated management of cacert.pem" @@ -585,31 +585,31 @@ "type": "community_bridge" } ], - "time": "2023-11-02T16:27:41+00:00" + "time": "2024-10-18T07:35:59+00:00" }, { "name": "laminas/laminas-json", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-json.git", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b" + "reference": "1931b26ac677f418f39cd0af6d0740e8f4a67d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-json/zipball/53ff787b20b77197f38680c737e8dfffa846b85b", - "reference": "53ff787b20b77197f38680c737e8dfffa846b85b", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/1931b26ac677f418f39cd0af6d0740e8f4a67d18", + "reference": "1931b26ac677f418f39cd0af6d0740e8f4a67d18", "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-json": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "laminas/laminas-stdlib": "^2.7.7 || ^3.8", + "laminas/laminas-stdlib": "^2.7.7 || ^3.19", "phpunit/phpunit": "^9.5.25" }, "suggest": { @@ -646,24 +646,24 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:54:55+00:00" + "time": "2024-10-25T09:02:25+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.10.0", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" + "reference": "f2eedd3a6e774d965158fd11946bb1eba72e298c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", - "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/f2eedd3a6e774d965158fd11946bb1eba72e298c", + "reference": "f2eedd3a6e774d965158fd11946bb1eba72e298c", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -702,7 +702,7 @@ "type": "community_bridge" } ], - "time": "2023-10-18T09:58:51+00:00" + "time": "2024-10-16T09:06:57+00:00" }, { "name": "laminas/laminas-modulemanager", @@ -919,33 +919,33 @@ }, { "name": "laminas/laminas-router", - "version": "3.13.0", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-router.git", - "reference": "04e14e757303787c83f79298dbd4483eebacfeb9" + "reference": "5e1f5ca7fe95200661b50235c891ed3eee02d3f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-router/zipball/04e14e757303787c83f79298dbd4483eebacfeb9", - "reference": "04e14e757303787c83f79298dbd4483eebacfeb9", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/5e1f5ca7fe95200661b50235c891ed3eee02d3f0", + "reference": "5e1f5ca7fe95200661b50235c891ed3eee02d3f0", "shasum": "" }, "require": { "laminas/laminas-http": "^2.15", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^3.10.1", - "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-router": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-i18n": "^2.26.0", - "phpunit/phpunit": "^10.5.11", - "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.22.2" + "laminas/laminas-i18n": "^2.29.0", + "phpunit/phpunit": "^10.5.36", + "psalm/plugin-phpunit": "^0.19.0", + "vimeo/psalm": "^5.26.1" }, "suggest": { "laminas/laminas-i18n": "^2.15.0 if defining translatable HTTP path segments" @@ -986,25 +986,25 @@ "type": "community_bridge" } ], - "time": "2024-03-05T12:54:05+00:00" + "time": "2024-10-11T11:18:03+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": { @@ -1021,15 +1021,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" @@ -1076,34 +1076,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": { @@ -1135,7 +1135,7 @@ "type": "community_bridge" } ], - "time": "2024-01-19T12:39:49+00:00" + "time": "2024-10-29T13:46:07+00:00" }, { "name": "laminas/laminas-uri", @@ -1473,16 +1473,16 @@ }, { "name": "lm-commons/lmc-rbac-mvc", - "version": "4.0.x-dev", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/LM-Commons/LmcRbacMvc.git", - "reference": "4819786c94bd37e9400c2af82e7caa707c2c0432" + "reference": "b64c0bc1c22fae357627ee8a55d8e7866ebc4924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LM-Commons/LmcRbacMvc/zipball/4819786c94bd37e9400c2af82e7caa707c2c0432", - "reference": "4819786c94bd37e9400c2af82e7caa707c2c0432", + "url": "https://api.github.com/repos/LM-Commons/LmcRbacMvc/zipball/b64c0bc1c22fae357627ee8a55d8e7866ebc4924", + "reference": "b64c0bc1c22fae357627ee8a55d8e7866ebc4924", "shasum": "" }, "require": { @@ -1497,14 +1497,13 @@ "laminas/laminas-authentication": "^2.2", "laminas/laminas-coding-standard": "^2.5.0", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "10.5.30", + "phpunit/phpunit": "10.5.35", "psalm/plugin-phpunit": "^0.19.0", "vimeo/psalm": "^5.25" }, "suggest": { "lm-commons/lmc-rbac-mvc-devtools": "if you want to collect and show information about roles and guards in Laminas Developer Tools" }, - "default-branch": true, "type": "library", "extra": { "laminas": { @@ -1542,7 +1541,7 @@ } ], "description": "Laminas Framework MVC Module that provides a layer of features of Laminas\\Permissions\\Rbac", - "homepage": "http://www.github.com/Laminas-Commons/LmcRbacMvc", + "homepage": "https://www.github.com/Lm-Commons/LmcRbacMvc", "keywords": [ "laminas", "module", @@ -1551,22 +1550,22 @@ ], "support": { "issues": "https://github.com/LM-Commons/LmcRbacMvc/issues", - "source": "https://github.com/LM-Commons/LmcRbacMvc/tree/4.0.x" + "source": "https://github.com/LM-Commons/LmcRbacMvc/tree/4.0.2" }, - "time": "2024-09-10T13:24:07+00:00" + "time": "2024-09-24T13:44:33+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { @@ -1575,7 +1574,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -1607,9 +1606,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "psr/cache", @@ -1910,16 +1909,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.11", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" + "reference": "2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", - "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41", + "reference": "2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41", "shasum": "" }, "require": { @@ -1975,7 +1974,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.13" }, "funding": [ { @@ -1991,7 +1990,7 @@ "type": "tidelift" } ], - "time": "2024-08-30T16:03:21+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "webimpress/safe-writer", @@ -2368,24 +2367,24 @@ }, { "name": "composer/semver", - "version": "3.4.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6", - "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -2429,7 +2428,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -2445,7 +2444,7 @@ "type": "tidelift" } ], - "time": "2024-07-12T11:35:52+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/xdebug-handler", @@ -2515,35 +2514,38 @@ }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", + "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" + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" }, "type": "composer-plugin", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2559,7 +2561,7 @@ }, { "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -2583,10 +2585,10 @@ "tests" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2022-02-04T12:51:07+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -2625,6 +2627,53 @@ }, "time": "2019-12-04T15:06:13+00:00" }, + { + "name": "doctrine/deprecations", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "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" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "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.3" + }, + "time": "2024-01-30T19:34:25+00:00" + }, { "name": "felixfbecker/advanced-json-rpc", "version": "v3.2.1", @@ -2672,16 +2721,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { @@ -2722,9 +2771,9 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" }, - "time": "2022-03-02T22:36:06+00:00" + "time": "2024-04-30T00:40:11+00:00" }, { "name": "fidry/cpu-core-counter", @@ -2789,27 +2838,24 @@ }, { "name": "laminas/laminas-coding-standard", - "version": "2.5.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "c1aaa18a7c860c6932677a3e4ec13161f9fc7d61" + "reference": "ac809f5b27f0b22d0c1ec0cbc78cb67f92bfebcb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/c1aaa18a7c860c6932677a3e4ec13161f9fc7d61", - "reference": "c1aaa18a7c860c6932677a3e4ec13161f9fc7d61", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/ac809f5b27f0b22d0c1ec0cbc78cb67f92bfebcb", + "reference": "ac809f5b27f0b22d0c1ec0cbc78cb67f92bfebcb", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", "php": "^7.4 || ^8.0", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.6", - "webimpress/coding-standard": "^1.2" - }, - "conflict": { - "phpstan/phpdoc-parser": ">=1.6.0" + "slevomat/coding-standard": "^8.15.0", + "squizlabs/php_codesniffer": "^3.10", + "webimpress/coding-standard": "^1.3" }, "type": "phpcodesniffer-standard", "autoload": { @@ -2841,7 +2887,7 @@ "type": "community_bridge" } ], - "time": "2023-01-05T15:53:40+00:00" + "time": "2024-10-16T09:23:09+00:00" }, { "name": "myclabs/deep-copy", @@ -3127,28 +3173,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { @@ -3172,36 +3225,39 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.2", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", - "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", @@ -3233,31 +3289,34 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2022-10-14T12:47:21+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.5.1", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "981cc368a216c988e862a75e526b6076987d1b50" + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", - "reference": "981cc368a216c988e862a75e526b6076987d1b50", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -3277,9 +3336,9 @@ "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.5.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" }, - "time": "2022-05-05T11:32:40+00:00" + "time": "2024-10-13T11:25:22+00:00" }, { "name": "phpunit/php-code-coverage", @@ -3604,16 +3663,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.33", + "version": "10.5.38", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4def7a9cda75af9c2bc179ed53a8e41313e7f7cf" + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4def7a9cda75af9c2bc179ed53a8e41313e7f7cf", - "reference": "4def7a9cda75af9c2bc179ed53a8e41313e7f7cf", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a86773b9e887a67bc53efa9da9ad6e3f2498c132", + "reference": "a86773b9e887a67bc53efa9da9ad6e3f2498c132", "shasum": "" }, "require": { @@ -3634,7 +3693,7 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.2", + "sebastian/comparator": "^5.0.3", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", "sebastian/exporter": "^5.1.2", @@ -3685,7 +3744,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.33" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.38" }, "funding": [ { @@ -3701,7 +3760,7 @@ "type": "tidelift" } ], - "time": "2024-09-09T06:06:56+00:00" + "time": "2024-10-28T13:06:21+00:00" }, { "name": "psalm/plugin-phpunit", @@ -3765,16 +3824,16 @@ }, { "name": "psr/log", - "version": "3.0.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "79dff0b268932c640297f5208d6298f71855c03e" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e", - "reference": "79dff0b268932c640297f5208d6298f71855c03e", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -3809,9 +3868,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.1" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2024-08-21T13:31:24+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "sebastian/cli-parser", @@ -3983,16 +4042,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.2", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", - "reference": "2d3e04c3b4c1e84a5e7382221ad8883c8fbc4f53", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -4003,7 +4062,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.4" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -4048,7 +4107,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.2" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -4056,7 +4115,7 @@ "type": "github" } ], - "time": "2024-08-12T06:03:08+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -4731,42 +4790,42 @@ }, { "name": "slevomat/coding-standard", - "version": "7.2.1", + "version": "8.15.0", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" + "reference": "7d1d957421618a3803b593ec31ace470177d7817" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", - "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", + "reference": "7d1d957421618a3803b593ec31ace470177d7817", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.5.1", - "squizlabs/php_codesniffer": "^3.6.2" + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.9.0" }, "require-dev": { - "phing/phing": "2.17.3", + "phing/phing": "2.17.4", "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.7.1", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.1", - "phpstan/phpstan-strict-rules": "1.2.3", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" + "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" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "8.x-dev" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" } }, "notification-url": "https://packagist.org/downloads/", @@ -4774,9 +4833,13 @@ "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/7.2.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" }, "funding": [ { @@ -4788,7 +4851,7 @@ "type": "tidelift" } ], - "time": "2022-05-25T10:58:12+00:00" + "time": "2024-03-09T15:20:58+00:00" }, { "name": "spatie/array-to-xml", @@ -4860,16 +4923,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.2", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017" + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/86e5f5dd9a840c46810ebe5ff1885581c42a3017", - "reference": "86e5f5dd9a840c46810ebe5ff1885581c42a3017", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/62d32998e820bddc40f99f8251958aed187a5c9c", + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c", "shasum": "" }, "require": { @@ -4936,20 +4999,20 @@ "type": "open_collective" } ], - "time": "2024-07-21T23:26:44+00:00" + "time": "2024-09-18T10:38:58+00:00" }, { "name": "symfony/console", - "version": "v6.4.11", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998" + "reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/42686880adaacdad1835ee8fc2a9ec5b7bd63998", - "reference": "42686880adaacdad1835ee8fc2a9ec5b7bd63998", + "url": "https://api.github.com/repos/symfony/console/zipball/f793dd5a7d9ae9923e35d0503d08ba734cec1d79", + "reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79", "shasum": "" }, "require": { @@ -5014,7 +5077,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.11" + "source": "https://github.com/symfony/console/tree/v6.4.13" }, "funding": [ { @@ -5030,20 +5093,20 @@ "type": "tidelift" } ], - "time": "2024-08-15T22:48:29+00:00" + "time": "2024-10-09T08:40:40+00:00" }, { "name": "symfony/filesystem", - "version": "v6.4.9", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463" + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b51ef8059159330b74a4d52f68e671033c0fe463", - "reference": "b51ef8059159330b74a4d52f68e671033c0fe463", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4856c9cf585d5a0313d8d35afd681a526f038dd3", + "reference": "4856c9cf585d5a0313d8d35afd681a526f038dd3", "shasum": "" }, "require": { @@ -5080,7 +5143,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.9" + "source": "https://github.com/symfony/filesystem/tree/v6.4.13" }, "funding": [ { @@ -5096,7 +5159,7 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:49:33+00:00" + "time": "2024-10-25T15:07:50+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5421,16 +5484,16 @@ }, { "name": "symfony/string", - "version": "v6.4.11", + "version": "v6.4.13", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b" + "reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5bc3eb632cf9c8dbfd6529d89be9950d1518883b", - "reference": "5bc3eb632cf9c8dbfd6529d89be9950d1518883b", + "url": "https://api.github.com/repos/symfony/string/zipball/38371c60c71c72b3d64d8d76f6b1bb81a2cc3627", + "reference": "38371c60c71c72b3d64d8d76f6b1bb81a2cc3627", "shasum": "" }, "require": { @@ -5487,7 +5550,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.11" + "source": "https://github.com/symfony/string/tree/v6.4.13" }, "funding": [ { @@ -5503,7 +5566,7 @@ "type": "tidelift" } ], - "time": "2024-08-12T09:55:28+00:00" + "time": "2024-09-25T14:18:03+00:00" }, { "name": "theseer/tokenizer", @@ -5667,21 +5730,21 @@ }, { "name": "webimpress/coding-standard", - "version": "1.3.2", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webimpress/coding-standard.git", - "reference": "710f71ac95d36d931e76b47132b599c39abfab11" + "reference": "6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/710f71ac95d36d931e76b47132b599c39abfab11", - "reference": "710f71ac95d36d931e76b47132b599c39abfab11", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53", + "reference": "6f6a1a90bd9e18fc8bee0660dd1d1ce68cf9fc53", "shasum": "" }, "require": { "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.7.2" + "squizlabs/php_codesniffer": "^3.10.3" }, "require-dev": { "phpunit/phpunit": "^9.6.15" @@ -5710,7 +5773,7 @@ ], "support": { "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.3.2" + "source": "https://github.com/webimpress/coding-standard/tree/1.4.0" }, "funding": [ { @@ -5718,7 +5781,7 @@ "type": "github" } ], - "time": "2023-12-18T07:25:41+00:00" + "time": "2024-10-16T06:55:17+00:00" }, { "name": "webmozart/assert", @@ -5785,7 +5848,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "~8.1.0 | ~8.2.0 | ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "platform-dev": [], "plugin-api-version": "2.3.0" diff --git a/psalm.baseline.xml b/psalm.baseline.xml index 31edb87..75ae417 100644 --- a/psalm.baseline.xml +++ b/psalm.baseline.xml @@ -1,3 +1,41 @@ - + + + + + + + + + serialize()]]> + serialize()]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/psalm.xml b/psalm.xml index d3092be..1f5842a 100644 --- a/psalm.xml +++ b/psalm.xml @@ -1,13 +1,13 @@ diff --git a/src/Collector/RbacCollector.php b/src/Collector/RbacCollector.php index 5dd3506..c6ead46 100644 --- a/src/Collector/RbacCollector.php +++ b/src/Collector/RbacCollector.php @@ -24,10 +24,10 @@ use InvalidArgumentException; use Laminas\DeveloperTools\Collector\CollectorInterface; use Laminas\Mvc\MvcEvent; +use Laminas\Permissions\Rbac\RoleInterface; use Lmc\Rbac\Mvc\Options\ModuleOptions; use Lmc\Rbac\Mvc\Role\RecursiveRoleIterator; use Lmc\Rbac\Mvc\Service\RoleService; -use Laminas\Permissions\Rbac\RoleInterface; use RecursiveIteratorIterator; use ReflectionException; use ReflectionProperty; @@ -50,7 +50,7 @@ class RbacCollector implements CollectorInterface, Serializable /** * Collector priority */ - const PRIORITY = -100; + public const PRIORITY = -100; protected array $collectedGuards = []; protected array $collectedRoles = []; protected array $collectedPermissions = []; @@ -78,16 +78,16 @@ public function getPriority(): int */ public function collect(MvcEvent $mvcEvent): void { - if (! $application = $mvcEvent->getApplication()) { + $application = $mvcEvent->getApplication(); + if (null === $application) { return; } - $serviceManager = $application->getServiceManager(); -/** @var RoleService $roleService */ + /** @var RoleService $roleService */ $roleService = $serviceManager->get(RoleService::class); -/** @var ModuleOptions $options */ + /** @var ModuleOptions $options */ $options = $serviceManager->get(ModuleOptions::class); - $this->collectOptions($options); + $this->collectOptions($options); $this->collectGuards($options->getGuards()); $this->collectIdentityRolesAndPermissions($roleService); } @@ -105,12 +105,11 @@ private function collectOptions(ModuleOptions $moduleOptions): void /** * Collect guards - * - * @param array $guards */ private function collectGuards(array $guards): void { $this->collectedGuards = []; + /** @var array $rules */ foreach ($guards as $type => $rules) { $this->collectedGuards[$type] = $rules; } @@ -124,12 +123,13 @@ private function collectGuards(array $guards): void private function collectIdentityRolesAndPermissions(RoleService $roleService): void { $identityRoles = $roleService->getIdentityRoles(); - $iterator = new RecursiveIteratorIterator( + $iterator = new RecursiveIteratorIterator( new RecursiveRoleIterator($identityRoles), RecursiveIteratorIterator::SELF_FIRST ); + /** @var RoleInterface $role */ foreach ($iterator as $role) { - $roleName = $role->getName(); + $roleName = $role->getName(); $this->collectedRoles[] = $roleName; $this->collectPermissions($role); /* @@ -159,17 +159,19 @@ private function collectIdentityRolesAndPermissions(RoleService $roleService): v private function collectPermissions(RoleInterface $role): void { if (method_exists($role, 'getPermissions')) { + /** @var array|Traversable $permissions */ $permissions = $role->getPermissions(); } else { $reflectionProperty = new ReflectionProperty($role, 'permissions'); - $permissions = $reflectionProperty->getValue($role); + /** @var array|Traversable $permissions */ + $permissions = $reflectionProperty->getValue($role); } if ($permissions instanceof Traversable) { $permissions = iterator_to_array($permissions); } - array_walk($permissions, function (&$permission) { + array_walk($permissions, function (mixed &$permission) { $permission = (string) $permission; }); $this->collectedPermissions[$role->getName()] = array_values($permissions); @@ -220,9 +222,13 @@ public function __serialize(): array public function __unserialize(array $data): void { - $this->collectedGuards = $data['guards']; - $this->collectedRoles = $data['roles']; + /** @psalm-suppress MixedAssignment*/ + $this->collectedGuards = $data['guards']; + /** @psalm-suppress MixedAssignment*/ + $this->collectedRoles = $data['roles']; + /** @psalm-suppress MixedAssignment*/ $this->collectedPermissions = $data['permissions']; - $this->collectedOptions = $data['options']; + /** @psalm-suppress MixedAssignment*/ + $this->collectedOptions = $data['options']; } } diff --git a/src/ConfigProvider.php b/src/ConfigProvider.php index 5e81ea4..1223971 100644 --- a/src/ConfigProvider.php +++ b/src/ConfigProvider.php @@ -31,7 +31,8 @@ public function getViewManagerConfig(): array { return [ 'template_map' => [ - 'laminas-developer-tools/toolbar/lmc-rbac' => __DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml', + 'laminas-developer-tools/toolbar/lmc-rbac' + => __DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml', ], ]; } diff --git a/test/Asset/MockRoleWithPermissionMethod.php b/test/Asset/MockRoleWithPermissionMethod.php index c29f928..ddcf89f 100644 --- a/test/Asset/MockRoleWithPermissionMethod.php +++ b/test/Asset/MockRoleWithPermissionMethod.php @@ -18,7 +18,7 @@ public function getName(): string return 'role-with-permission-method'; } - public function hasPermission($name): bool + public function hasPermission(string $name): bool { return false; } diff --git a/test/Asset/MockRoleWithPermissionProperty.php b/test/Asset/MockRoleWithPermissionProperty.php index 32a86ad..489ecf4 100644 --- a/test/Asset/MockRoleWithPermissionProperty.php +++ b/test/Asset/MockRoleWithPermissionProperty.php @@ -15,12 +15,12 @@ public function getName(): string return 'role-with-permission-property'; } - public function hasPermission(string $permission): bool + public function hasPermission(string $name): bool { return false; } - public function addPermission(string $permission): void + public function addPermission(string $name): void { } @@ -51,7 +51,6 @@ public function hasChildren(): bool public function addParent(RoleInterface $parent): void { - } public function getParents(): iterable diff --git a/test/Bootstrap.php b/test/Bootstrap.php index b60d186..7bc608a 100644 --- a/test/Bootstrap.php +++ b/test/Bootstrap.php @@ -1,4 +1,7 @@ assertSame('lmc_rbac', $collector->getName()); } + /** + * @throws Exception + */ public function testSerialize(): void { $collector = new RbacCollector(); $serialized = $collector->serialize(); $this->assertIsString($serialized); + /** @var array $unserialized */ $unserialized = unserialize($serialized); $this->assertSame([], $unserialized['guards']); $this->assertSame([], $unserialized['roles']); @@ -89,7 +96,7 @@ public function testUnserialize(): void $serialized = serialize($unserialized); $collector->unserialize($serialized); $collection = $collector->getCollection(); - $this->assertIsArray($collection); +// $this->assertIsArray($collection); $this->assertSame(['foo' => 'bar'], $collection['guards']); $this->assertSame(['foo' => 'bar'], $collection['roles']); $this->assertSame(['foo' => 'bar'], $collection['options']); @@ -98,28 +105,36 @@ public function testUnserialize(): void public function testUnserializeThrowsInvalidArgumentException(): void { - $this->expectException('InvalidArgumentException'); + $this->expectException(InvalidArgumentException::class); $collector = new RbacCollector(); $unserialized = 'not_an_array'; $serialized = serialize($unserialized); $collector->unserialize($serialized); } + /** + * @throws ReflectionException + */ public function testCollectNothingIfNoApplicationIsSet(): void { $mvcEvent = new MvcEvent(); $collector = new RbacCollector(); $collector->collect($mvcEvent); $expectedCollection = [ - 'guards' => [], - 'roles' => [], + 'guards' => [], + 'roles' => [], 'permissions' => [], - 'options' => [], + 'options' => [], ]; - $test = $collector->getCollection(); +// $test = $collector->getCollection(); $this->assertEquals($expectedCollection, $collector->getCollection()); } + /** + * @throws ReflectionException + * @throws \PHPUnit\Framework\MockObject\Exception + * @throws Exception + */ public function testCanCollect(): void { $dataToCollect = [ @@ -151,7 +166,7 @@ public function testCanCollect(): void ]; $serviceManager = new ServiceManager(); - $application = $this->createMock('Laminas\Mvc\ApplicationInterface'); + $application = $this->createMock(ApplicationInterface::class); $application->expects($this->once())->method('getServiceManager')->willReturn($serviceManager); $mvcEvent = new MvcEvent(); @@ -187,7 +202,8 @@ public function testCanCollect(): void ], ], 'roles' => [ - 'member', 'guest', + 'member', + 'guest', // 'member' => ['guest'], ], 'permissions' => [ diff --git a/test/ConfigProviderTest.php b/test/ConfigProviderTest.php index 3d6f446..6f6b085 100644 --- a/test/ConfigProviderTest.php +++ b/test/ConfigProviderTest.php @@ -16,7 +16,7 @@ */ class ConfigProviderTest extends TestCase { - public function testProvidesExpectedConfig() + public function testProvidesExpectedConfig(): void { $provider = new ConfigProvider(); $expectedDependencyConfig = [ @@ -36,22 +36,27 @@ public function testProvidesExpectedConfig() ], ], ]; + /* $expectedViewManagerConfig = [ 'template_map' => [ - 'laminas-developer-tools/toolbar/lmc-rbac' => realpath(__DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml'), + 'laminas-developer-tools/toolbar/lmc-rbac' + => realpath(__DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml'), ], ]; + */ $this->assertEquals($expectedDependencyConfig, $provider->getDependencies()); $this->assertEquals($expectedLaminasDevtoolsConfig, $provider->getLaminasDeveloperToolsConfig()); // View Manager config $expectedViewManagerConfig = [ 'template_map' => [ - 'laminas-developer-tools/toolbar/lmc-rbac' => realpath(__DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml'), + 'laminas-developer-tools/toolbar/lmc-rbac' + => realpath(__DIR__ . '/../view/laminas-developer-tools/toolbar/lmc-rbac.phtml'), ], ]; $result = $provider->getViewManagerConfig(); // substitute path - $result['template_map']['laminas-developer-tools/toolbar/lmc-rbac'] = realpath($result['template_map']['laminas-developer-tools/toolbar/lmc-rbac']); + $result['template_map']['laminas-developer-tools/toolbar/lmc-rbac'] + = realpath($result['template_map']['laminas-developer-tools/toolbar/lmc-rbac']); $this->assertEquals($expectedViewManagerConfig, $result); $expectedConfig = [ @@ -62,7 +67,8 @@ public function testProvidesExpectedConfig() $result = $provider(); // substitute path - $result['view_manager']['template_map']['laminas-developer-tools/toolbar/lmc-rbac'] = realpath($result['view_manager']['template_map']['laminas-developer-tools/toolbar/lmc-rbac']); + $result['view_manager']['template_map']['laminas-developer-tools/toolbar/lmc-rbac'] + = realpath($result['view_manager']['template_map']['laminas-developer-tools/toolbar/lmc-rbac']); $this->assertEquals($expectedConfig, $result); } } diff --git a/test/Util/ServiceManagerFactory.php b/test/Util/ServiceManagerFactory.php index 2e356fc..cb9e65f 100644 --- a/test/Util/ServiceManagerFactory.php +++ b/test/Util/ServiceManagerFactory.php @@ -24,18 +24,18 @@ use Laminas\ModuleManager\ModuleManagerInterface; use Laminas\Mvc\Service\ServiceManagerConfig; use Laminas\ServiceManager\ServiceManager; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\NotFoundExceptionInterface; /** * Base test case to be used when a new service manager instance is required */ -abstract class ServiceManagerFactory +class ServiceManagerFactory { - /** @var array */ private static array $config = []; /** * @static - * @param array $config */ public static function setApplicationConfig(array $config): void { @@ -44,7 +44,6 @@ public static function setApplicationConfig(array $config): void /** * @static - * @return array */ public static function getApplicationConfig(): array { @@ -53,6 +52,8 @@ public static function getApplicationConfig(): array /** * @param array|null $config + * @throws ContainerExceptionInterface + * @throws NotFoundExceptionInterface */ public static function getServiceManager(?array $config = null): ServiceManager { diff --git a/test/testing.config.php b/test/testing.config.php index 39d625d..795439a 100644 --- a/test/testing.config.php +++ b/test/testing.config.php @@ -1,4 +1,7 @@