From e7d14bde65bd6d6c693fcd111c1d34c353763304 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:41:37 +0200 Subject: [PATCH 01/15] Imported CI workflow from other `ocramius/*` repositories --- .github/workflows/continuous-integration.yml | 34 ++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/continuous-integration.yml diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml new file mode 100644 index 0000000..5121764 --- /dev/null +++ b/.github/workflows/continuous-integration.yml @@ -0,0 +1,34 @@ +# See https://github.com/laminas/laminas-continuous-integration-action +# Generates a job matrix based on current dependencies and supported version +# ranges, then runs all those jobs +name: "Continuous Integration" + +on: + pull_request: + push: + +jobs: + matrix: + name: Generate job matrix + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.matrix.outputs.matrix }} + steps: + - name: Gather CI configuration + id: matrix + uses: laminas/laminas-ci-matrix-action@1.10.0 + + qa: + name: QA Checks + needs: [ matrix ] + runs-on: ${{ matrix.operatingSystem }} + strategy: + fail-fast: false + matrix: ${{ fromJSON(needs.matrix.outputs.matrix) }} + steps: + - name: ${{ matrix.name }} + uses: laminas/laminas-continuous-integration-action@1.12.0 + env: + "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} + with: + job: ${{ matrix.job }} From 3e77ec08fdfc1aafd5f41aaae975c1bdc2eeefe0 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:41:48 +0200 Subject: [PATCH 02/15] Added information about project funding --- .github/FUNDING.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..6bad3c6 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1 @@ +github: [Ocramius] From 004f7427b1ad2e1e50fb51999bbe4b289b745783 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:41:59 +0200 Subject: [PATCH 03/15] Enabled dependabot with auto-merge --- .github/dependabot.yml | 25 +++++++++++++++++++ .../workflows/merge-dependabot-upgrades.yml | 23 +++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/merge-dependabot-upgrades.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..4ae74ec --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,25 @@ +{ + "version": 2, + "updates": [ + { + "allow": [ + { + "dependency-type": "all" + } + ], + "directory": "/", + "package-ecosystem": "composer", + "schedule": { + "interval": "daily" + }, + "versioning-strategy": "increase" + }, + { + "directory": "/", + "package-ecosystem": "github-actions", + "schedule": { + "interval": "daily" + } + } + ] +} diff --git a/.github/workflows/merge-dependabot-upgrades.yml b/.github/workflows/merge-dependabot-upgrades.yml new file mode 100644 index 0000000..3baf832 --- /dev/null +++ b/.github/workflows/merge-dependabot-upgrades.yml @@ -0,0 +1,23 @@ +# See https://github.com/ridedott/merge-me-action/ +# This workflow automates merges from patches sent by Dependabot, and +# only by dependabot, once the other CI workflows pass +name: Auto-merge Dependabot PRs + +on: + workflow_run: + types: + - completed + workflows: + - "Continuous Integration" + +jobs: + merge-me: + name: Auto-merge Dependabot PRs + runs-on: ubuntu-latest + steps: + - name: Auto-Merge + if: ${{ github.event.workflow_run.conclusion == 'success' }} + uses: ridedott/merge-me-action@v2.9.35 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + MERGE_METHOD: MERGE From 2a4dbcdfd3bad9d89c3ff1fc80f0b689cd526754 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:42:12 +0200 Subject: [PATCH 04/15] Added (and configured on github) release automation --- .../workflows/release-on-milestone-closed.yml | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 .github/workflows/release-on-milestone-closed.yml diff --git a/.github/workflows/release-on-milestone-closed.yml b/.github/workflows/release-on-milestone-closed.yml new file mode 100644 index 0000000..169fd65 --- /dev/null +++ b/.github/workflows/release-on-milestone-closed.yml @@ -0,0 +1,67 @@ +# https://help.github.com/en/categories/automating-your-workflow-with-github-actions + +name: "Automatic Releases" + +on: + milestone: + types: + - "closed" + +jobs: + release: + name: "GIT tag, release & create merge-up PR" + runs-on: ubuntu-latest + + steps: + - name: "Checkout" + uses: "actions/checkout@v2" + + - name: "Release" + uses: "laminas/automatic-releases@v1" + with: + command-name: "laminas:automatic-releases:release" + env: + "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} + "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} + "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} + "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} + + - name: "Create Merge-Up Pull Request" + uses: "laminas/automatic-releases@v1" + with: + command-name: "laminas:automatic-releases:create-merge-up-pull-request" + env: + "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} + "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} + "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} + "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} + + - name: "Create and/or Switch to new Release Branch" + uses: "laminas/automatic-releases@v1" + with: + command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor" + env: + "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} + "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} + "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} + "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} + + - name: "Bump Changelog Version On Originating Release Branch" + uses: "laminas/automatic-releases@v1" + with: + command-name: "laminas:automatic-releases:bump-changelog" + env: + "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} + "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} + "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} + "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} + + - name: "Create new milestones" + uses: "laminas/automatic-releases@v1" + with: + command-name: "laminas:automatic-releases:create-milestones" + env: + "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }} + "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }} + "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }} + "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }} From b6243cb83a3b40a7418402229cf6c8428cde743f Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:45:41 +0200 Subject: [PATCH 05/15] Removed travis-ci and scrutinizer-ci references --- .scrutinizer.yml | 40 ---------------------------------------- .travis.yml | 32 -------------------------------- README.md | 18 +++++++----------- 3 files changed, 7 insertions(+), 83 deletions(-) delete mode 100644 .scrutinizer.yml delete mode 100644 .travis.yml diff --git a/.scrutinizer.yml b/.scrutinizer.yml deleted file mode 100644 index 8821e2c..0000000 --- a/.scrutinizer.yml +++ /dev/null @@ -1,40 +0,0 @@ -before_commands: - - "composer update --prefer-source" - -tools: - external_code_coverage: - timeout: 1200 - php_code_sniffer: - enabled: true - config: - standard: PSR2 - filter: - paths: ["src/*", "tests/*"] - php_cpd: - enabled: true - excluded_dirs: ["build/*", "tests", "vendor"] - php_cs_fixer: - enabled: true - config: - level: all - filter: - paths: ["src/*", "tests/*"] - php_loc: - enabled: true - excluded_dirs: ["build/*", "tests", "vendor"] - php_mess_detector: - enabled: true - filter: - paths: ["src/*"] - php_pdepend: - enabled: true - excluded_dirs: ["build/*", "tests", "vendor"] - php_analyzer: - enabled: true - filter: - paths: ["src/*", "tests/*"] - php_hhvm: - enabled: true - filter: - paths: ["src/*", "tests/*"] - sensiolabs_security_checker: true diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3ff210d..0000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: php - -sudo: false - -php: - - 7.0 - - 7.1 - - 7.2 - - hhvm - -env: - matrix: - - DEPENDENCIES="" - - DEPENDENCIES="--prefer-lowest --prefer-stable" - -matrix: - allow_failures: - - php: hhvm - -before_script: - - composer self-update - - composer update --prefer-source $DEPENDENCIES - -script: - - ./vendor/bin/phpunit --coverage-clover ./clover.xml - - ./vendor/bin/phpcs --standard=PSR2 ./src/ ./tests/ - -after_script: - - if [ "$TRAVIS_PHP_VERSION" = '7.0' ] ; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover ./clover.xml; fi; - -notifications: - irc: "irc.freenode.org#zftalk.modules" diff --git a/README.md b/README.md index 833e80a..ee481d2 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # OcraCachedViewResolver -OcraCachedViewResolver is performance-oriented Zend Framework 2 Module that increases performance +OcraCachedViewResolver is performance-oriented Laminas MVC 2 Module that increases performance in your application by caching the process of resolving template names to template paths. -In ZF3, the process of resolving template paths causes a lot of stat calls. This module adds -a cache layer to avoid that. +In [`laminas/laminas-mvc-skeleton`](https://github.com/laminas/laminas-mvc-skeleton), the process of resolving template +paths causes a lot of stat calls (disk access). This module adds a cache layer to avoid that. -| Tests | Releases | Downloads | Dependencies | -| ----- | -------- | ------- | ------------- | -|[![Build Status](https://travis-ci.org/Ocramius/OcraCachedViewResolver.png?branch=master)](https://travis-ci.org/Ocramius/OcraCachedViewResolver) [![Code Coverage](https://scrutinizer-ci.com/g/Ocramius/OcraCachedViewResolver/badges/coverage.png?s=2e8b79821b59bfccea8e4fcdec087df12d13be96)](https://scrutinizer-ci.com/g/Ocramius/OcraCachedViewResolver/) [![Scrutinizer Quality Score](https://scrutinizer-ci.com/g/Ocramius/OcraCachedViewResolver/badges/quality-score.png?s=30f146bf14c64a11d4bc304c4e7786e4016786c0)](https://scrutinizer-ci.com/g/Ocramius/OcraCachedViewResolver/) | [![Latest Stable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/stable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) [![Latest Unstable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/unstable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Total Downloads](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/downloads.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Dependency Status](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver/badge.png)](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver) | +| Releases | Downloads | Dependencies | +| -------- | ------- | ------------- | +| [![Latest Stable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/stable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) [![Latest Unstable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/unstable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Total Downloads](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/downloads.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Dependency Status](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver/badge.png)](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver) | ## Installation @@ -16,13 +16,9 @@ The recommended way to install `ocramius/ocra-cached-view-resolver` is through [composer](http://getcomposer.org/): ```sh -php composer.phar require ocramius/ocra-cached-view-resolver:3.0.* +php composer.phar require ocramius/ocra-cached-view-resolver ``` -If you use legacy/outdated PHP versions, such as `5.5.x` and `5.6.x`, you can use any -[`3.x`](https://github.com/Ocramius/OcraCachedViewResolver/tree/3.0.0) version -of `ocramius/ocra-cached-view-resolver`. - You can then enable the module in your `config/application.config.php` by adding `'OcraCachedViewResolver'` to the `'modules'` section. From 3f616ae8c8f1ee67be47fb7f9722c5dac00cff9f Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:59:24 +0200 Subject: [PATCH 06/15] Upgraded test dependencies, committed `composer.lock` for stability --- .gitignore | 1 - composer.json | 22 +- composer.lock | 4797 ++++++++++++++++++++++++++++++++++++++++++++++ phpunit.xml.dist | 19 +- 4 files changed, 4818 insertions(+), 21 deletions(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 88f46f6..b71975e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ vendor .idea composer.phar -composer.lock \ No newline at end of file diff --git a/composer.json b/composer.json index b9acc20..62bfb88 100644 --- a/composer.json +++ b/composer.json @@ -18,16 +18,17 @@ } ], "require": { - "php": "~7.0", - "zendframework/zend-servicemanager": "^3.1.0", - "zendframework/zend-mvc": "^3.0", - "zendframework/zend-view": "^2.7", - "zendframework/zend-cache": "^2.7.1" + "php": "^7.4.7 || ~8.0.0 || ~8.0.1", + "laminas/laminas-servicemanager": "^3.10.0", + "laminas/laminas-mvc": "^3.2.0", + "laminas/laminas-modulemanager": "^2.10.2", + "laminas/laminas-view": "^2.12.0", + "laminas/laminas-cache": "^2.13.0" }, "require-dev": { - "phpunit/phpunit": "^6.4", - "squizlabs/php_codesniffer": "~2.6.1", - "zendframework/zend-config": "^2.6 || ^3.0" + "phpunit/phpunit": "^9.5.9", + "doctrine/coding-standard": "^9.0.0", + "vimeo/psalm": "^4.10.0" }, "autoload": { "psr-0": { @@ -43,5 +44,10 @@ "branch-alias": { "dev-master": "4.1.x-dev" } + }, + "config": { + "platform": { + "php": "7.4.99" + } } } diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..99f6720 --- /dev/null +++ b/composer.lock @@ -0,0 +1,4797 @@ +{ + "_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": "b541404b26661add2210275395e00372", + "packages": [ + { + "name": "brick/varexporter", + "version": "0.3.5", + "source": { + "type": "git", + "url": "https://github.com/brick/varexporter.git", + "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/varexporter/zipball/05241f28dfcba2b51b11e2d750e296316ebbe518", + "reference": "05241f28dfcba2b51b11e2d750e296316ebbe518", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.0", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5 || ^9.0", + "vimeo/psalm": "4.4.1" + }, + "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.3.5" + }, + "time": "2021-02-10T13:53:07+00:00" + }, + { + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "support": { + "issues": "https://github.com/container-interop/container-interop/issues", + "source": "https://github.com/container-interop/container-interop/tree/master" + }, + "abandoned": "psr/container", + "time": "2017-02-14T19:40:03+00:00" + }, + { + "name": "laminas/laminas-cache", + "version": "2.13.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache.git", + "reference": "566948e32f30881cb903ffbd0e3e20dac00cd83e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache/zipball/566948e32f30881cb903ffbd0e3e20dac00cd83e", + "reference": "566948e32f30881cb903ffbd0e3e20dac00cd83e", + "shasum": "" + }, + "require": { + "laminas/laminas-cache-storage-adapter-apc": "^1.0", + "laminas/laminas-cache-storage-adapter-apcu": "^1.0", + "laminas/laminas-cache-storage-adapter-blackhole": "^1.0", + "laminas/laminas-cache-storage-adapter-dba": "^1.0", + "laminas/laminas-cache-storage-adapter-ext-mongodb": "^1.0", + "laminas/laminas-cache-storage-adapter-filesystem": "^1.0", + "laminas/laminas-cache-storage-adapter-memcache": "^1.0", + "laminas/laminas-cache-storage-adapter-memcached": "^1.0", + "laminas/laminas-cache-storage-adapter-memory": "^1.0", + "laminas/laminas-cache-storage-adapter-mongodb": "^1.0", + "laminas/laminas-cache-storage-adapter-redis": "^1.0", + "laminas/laminas-cache-storage-adapter-session": "^1.0", + "laminas/laminas-cache-storage-adapter-wincache": "^1.0", + "laminas/laminas-cache-storage-adapter-xcache": "^1.0", + "laminas/laminas-cache-storage-adapter-zend-server": "^1.0", + "laminas/laminas-eventmanager": "^3.3", + "laminas/laminas-servicemanager": "^3.6", + "laminas/laminas-stdlib": "^3.3", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^7.3 || ~8.0.0", + "psr/cache": "^1.0", + "psr/simple-cache": "^1.0" + }, + "conflict": { + "symfony/console": "<5.1" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "replace": { + "zendframework/zend-cache": "^2.9.0" + }, + "require-dev": { + "laminas/laminas-cli": "^1.0", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-config-aggregator": "^1.5", + "laminas/laminas-feed": "^2.14", + "laminas/laminas-serializer": "^2.6", + "phpbench/phpbench": "^1.0.0-beta2", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5" + }, + "suggest": { + "laminas/laminas-cli": "The laminas-cli binary can be used to consume commands provided by this component", + "laminas/laminas-serializer": "Laminas\\Serializer component" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\Cache", + "config-provider": "Laminas\\Cache\\ConfigProvider" + } + }, + "autoload": { + "files": [ + "autoload/patternPluginManagerPolyfill.php" + ], + "psr-4": { + "Laminas\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Caching implementation with a variety of storage options, as well as codified caching strategies for callbacks, classes, and output", + "homepage": "https://laminas.dev", + "keywords": [ + "cache", + "laminas", + "psr-16", + "psr-6" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-cache/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-cache/issues", + "rss": "https://github.com/laminas/laminas-cache/releases.atom", + "source": "https://github.com/laminas/laminas-cache" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-08-08T10:21:18+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-apc", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-apc.git", + "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apc/zipball/8b375d994f6e67534f6ae6e995249e706faa30c1", + "reference": "8b375d994f6e67534f6ae6e995249e706faa30c1", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + }, + "suggest": { + "ext-apc": "APC or compatible extension, to use the APC storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-apc/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-apc/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-apc/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-apc" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2020-10-12T16:04:12+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-apcu", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-apcu.git", + "reference": "e182aab739d6b03992a9915cc3c7019391a94548" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-apcu/zipball/e182aab739d6b03992a9915cc3c7019391a94548", + "reference": "e182aab739d6b03992a9915cc3c7019391a94548", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "ext-apcu": "*", + "laminas/laminas-cache": "^2.10.1", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-apcu": "APCU >= 5.1.0, to use the APCu storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for apcu", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-apcu/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-apcu/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-apcu/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-apcu" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-05-03T20:41:53+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-blackhole", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole.git", + "reference": "4af1053efd81785a292c2a9442871c075700345a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-blackhole/zipball/4af1053efd81785a292c2a9442871c075700345a", + "reference": "4af1053efd81785a292c2a9442871c075700345a", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10.1", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "^2.1.4", + "squizlabs/php_codesniffer": "^3.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for blackhole", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-blackhole/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-blackhole" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-04-29T21:06:24+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-dba", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-dba.git", + "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-dba/zipball/ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", + "reference": "ad968d3d8a0350af8e6717be58bb96e5a9e77f3b", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-dba": "DBA, to use the DBA storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for dba", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-dba/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-dba/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-dba/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-dba" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2020-10-12T16:08:58+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-ext-mongodb", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb.git", + "reference": "72f68589cc8323fa688167a4720b795dd0907f4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-ext-mongodb/zipball/72f68589cc8323fa688167a4720b795dd0907f4e", + "reference": "72f68589cc8323fa688167a4720b795dd0907f4e", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10", + "mongodb/mongodb": "<1.8" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10.3", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "~2.2.0", + "laminas/laminas-serializer": "^2.10.1", + "mongodb/mongodb": "^1.8.0", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "mongodb/mongodb": "MongoDB, to use the ExtMongoDb storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for ext-mongodb", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-ext-mongodb/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-ext-mongodb" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-08-10T18:17:48+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-filesystem", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem.git", + "reference": "76fc488c3fa0ad442e4e70f807305c940d1bdcbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-filesystem/zipball/76fc488c3fa0ad442e4e70f807305c940d1bdcbc", + "reference": "76fc488c3fa0ad442e4e70f807305c940d1bdcbc", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-serializer": "^2.10", + "phpunit/phpunit": "^9.5", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for filesystem", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-filesystem/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-filesystem" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-04-25T00:27:54+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memcache", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcache.git", + "reference": "1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcache/zipball/1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088", + "reference": "1d2a74e300a0fd0b8d0e0cb4e379a173ccad0088", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10.1", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "^2.1.4", + "laminas/laminas-serializer": "^2.10.1", + "squizlabs/php_codesniffer": "^3.6.0" + }, + "suggest": { + "ext-memcache": "Memcache >= 2.0.0 to use the Memcache storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memcache", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memcache/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memcache/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memcache/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-memcache" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2021-04-29T19:57:43+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memcached", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memcached.git", + "reference": "d05f33e43a352b85c6d0208e9cfbf2a59f02ede3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memcached/zipball/d05f33e43a352b85c6d0208e9cfbf2a59f02ede3", + "reference": "d05f33e43a352b85c6d0208e9cfbf2a59f02ede3", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0.2", + "laminas/laminas-coding-standard": "~2.2.0", + "phpunit/phpunit": "^9.5.8" + }, + "suggest": { + "ext-memcached": "Memcached >= 1.0.0 to use the Memcached storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memcached", + "keywords": [ + "cache", + "laminas", + "memcached" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memcached/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memcached/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memcached/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-memcached" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-08-08T14:51:12+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-memory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-memory.git", + "reference": "02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-memory/zipball/02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd", + "reference": "02c7a4a1118bbd47d1c0f0bfe1e8b140af79d2bd", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10.1", + "laminas/laminas-cache-storage-adapter-test": "^1.1.1", + "laminas/laminas-coding-standard": "^2.1.4", + "squizlabs/php_codesniffer": "^3.5.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for memory", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-memory/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-memory/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-memory/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-memory" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-04-28T17:27:13+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-mongodb", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb.git", + "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-mongodb/zipball/ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", + "reference": "ef4aa396b55533b8eb3e1d4126c39a78a22e49a6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for mongodb", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-mongodb/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-mongodb" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2020-10-12T16:19:10+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-redis", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-redis.git", + "reference": "de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-redis/zipball/de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee", + "reference": "de8a63d4a0ef1ccead401eb7fb6d75b57fa3f9ee", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10", + "phpunit/phpunit": "<6.1.0" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "composer-runtime-api": "^2", + "ext-posix": "*", + "ext-redis": "*", + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.1", + "laminas/laminas-coding-standard": "^2.1", + "laminas/laminas-serializer": "^2.10", + "psalm/plugin-phpunit": "^0.15.1", + "vimeo/psalm": "^4.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for redis", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-redis/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-redis/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-redis/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-redis" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-06-03T16:14:07+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-session", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-session.git", + "reference": "74a275056cfca2300eb9a67cd1d917f7066b4113" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-session/zipball/74a275056cfca2300eb9a67cd1d917f7066b4113", + "reference": "74a275056cfca2300eb9a67cd1d917f7066b4113", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.1", + "laminas/laminas-coding-standard": "^2.1", + "laminas/laminas-session": "^2.7.4" + }, + "suggest": { + "laminas/laminas-session": "Laminas\\Session component" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for session", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-session/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-session/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-session/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-session" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-05-02T13:52:36+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-wincache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-wincache.git", + "reference": "0f54599c5d9aff11b01adadd2742097f923170ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-wincache/zipball/0f54599c5d9aff11b01adadd2742097f923170ba", + "reference": "0f54599c5d9aff11b01adadd2742097f923170ba", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-wincache": "WinCache, to use the WinCache storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for wincache", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-wincache/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-wincache/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-wincache/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-wincache" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2020-10-12T16:22:49+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-xcache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-xcache.git", + "reference": "24049557aa796ec7527bcc8032ed68346232b219" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-xcache/zipball/24049557aa796ec7527bcc8032ed68346232b219", + "reference": "24049557aa796ec7527bcc8032ed68346232b219", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-serializer": "^2.9", + "squizlabs/php_codesniffer": "^2.7" + }, + "suggest": { + "ext-xcache": "XCache, to use the XCache storage adapter" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for xcache", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-xcache/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-xcache/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-xcache/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-xcache" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "abandoned": true, + "time": "2020-10-12T16:23:46+00:00" + }, + { + "name": "laminas/laminas-cache-storage-adapter-zend-server", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server.git", + "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-cache-storage-adapter-zend-server/zipball/8d0b0d219a048a92472d89a5e527990f3ea2decc", + "reference": "8d0b0d219a048a92472d89a5e527990f3ea2decc", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "conflict": { + "laminas/laminas-cache": "<2.10" + }, + "provide": { + "laminas/laminas-cache-storage-implementation": "1.0" + }, + "require-dev": { + "laminas/laminas-cache": "^2.10", + "laminas/laminas-cache-storage-adapter-test": "^1.0@dev", + "laminas/laminas-coding-standard": "~1.0.0", + "squizlabs/php_codesniffer": "^2.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Cache\\Storage\\Adapter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas cache adapter for zend-server", + "keywords": [ + "cache", + "laminas" + ], + "support": { + "docs": "https://docs.laminas.dev/laminas-cache-storage-adapter-zend-server/", + "forum": "https://discourse.laminas.dev/", + "issues": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server/issues", + "rss": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server/releases.atom", + "source": "https://github.com/laminas/laminas-cache-storage-adapter-zend-server" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-10-12T16:24:25+00:00" + }, + { + "name": "laminas/laminas-config", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-config.git", + "reference": "2f2273a6bdf966a9adf6042f8950b6c33199a3b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-config/zipball/2f2273a6bdf966a9adf6042f8950b6c33199a3b7", + "reference": "2f2273a6bdf966a9adf6042f8950b6c33199a3b7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "php": "^7.3 || ~8.0.0", + "psr/container": "^1.0" + }, + "conflict": { + "container-interop/container-interop": "<1.2.0", + "zendframework/zend-config": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-filter": "^2.7.2", + "laminas/laminas-i18n": "^2.10.3", + "laminas/laminas-servicemanager": "^3.4.1", + "malukenho/docheader": "^0.1.6", + "phpunit/phpunit": "^8.5.8" + }, + "suggest": { + "laminas/laminas-filter": "^2.7.2; install if you want to use the Filter processor", + "laminas/laminas-i18n": "^2.7.4; install if you want to use the Translator processor", + "laminas/laminas-servicemanager": "^2.7.8 || ^3.3; if you need an extensible plugin manager for use with the Config Factory" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Config\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides a nested object property based user interface for accessing this configuration data within application code", + "homepage": "https://laminas.dev", + "keywords": [ + "config", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-config/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-config/issues", + "rss": "https://github.com/laminas/laminas-config/releases.atom", + "source": "https://github.com/laminas/laminas-config" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-08T09:58:39+00:00" + }, + { + "name": "laminas/laminas-escaper", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-escaper.git", + "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", + "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-escaper": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.3.0", + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.12.2", + "vimeo/psalm": "^3.16" + }, + "suggest": { + "ext-iconv": "*", + "ext-mbstring": "*" + }, + "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": "2021-09-02T17:10:53+00:00" + }, + { + "name": "laminas/laminas-eventmanager", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-eventmanager.git", + "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/a93fd278c97b2d41ebbce5ba048a24e3e6f580ba", + "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-eventmanager": "*" + }, + "require-dev": { + "container-interop/container-interop": "^1.1", + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-stdlib": "^3.6", + "phpbench/phpbench": "^1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5" + }, + "suggest": { + "container-interop/container-interop": "^1.1, to use the lazy listeners feature", + "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\EventManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Trigger and listen to events within a PHP application", + "homepage": "https://laminas.dev", + "keywords": [ + "event", + "eventmanager", + "events", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-eventmanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-eventmanager/issues", + "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom", + "source": "https://github.com/laminas/laminas-eventmanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-07T22:35:32+00:00" + }, + { + "name": "laminas/laminas-http", + "version": "2.15.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-http.git", + "reference": "e1f3420ab35e21ea135913d213b8d570e5e7b513" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/e1f3420ab35e21ea135913d213b8d570e5e7b513", + "reference": "e1f3420ab35e21ea135913d213b8d570e5e7b513", + "shasum": "" + }, + "require": { + "laminas/laminas-loader": "^2.8", + "laminas/laminas-stdlib": "^3.6", + "laminas/laminas-uri": "^2.9.1", + "laminas/laminas-validator": "^2.15", + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-http": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.2.1", + "phpunit/phpunit": "^9.5.5" + }, + "suggest": { + "paragonie/certainty": "For automated management of cacert.pem" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Http\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", + "homepage": "https://laminas.dev", + "keywords": [ + "http", + "http client", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-http/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-http/issues", + "rss": "https://github.com/laminas/laminas-http/releases.atom", + "source": "https://github.com/laminas/laminas-http" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-10T10:45:31+00:00" + }, + { + "name": "laminas/laminas-json", + "version": "3.3.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-json.git", + "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-json/zipball/9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f", + "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-json": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-stdlib": "^2.7.7 || ^3.1", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "laminas/laminas-json-server": "For implementing JSON-RPC servers", + "laminas/laminas-xml2json": "For converting XML documents to JSON" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", + "homepage": "https://laminas.dev", + "keywords": [ + "json", + "laminas" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-json/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-json/issues", + "rss": "https://github.com/laminas/laminas-json/releases.atom", + "source": "https://github.com/laminas/laminas-json" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T18:02:31+00:00" + }, + { + "name": "laminas/laminas-loader", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-loader.git", + "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-loader": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.2.1", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Loader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Autoloading and plugin loading strategies", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "loader" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-loader/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-loader/issues", + "rss": "https://github.com/laminas/laminas-loader/releases.atom", + "source": "https://github.com/laminas/laminas-loader" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-02T18:30:53+00:00" + }, + { + "name": "laminas/laminas-modulemanager", + "version": "2.10.2", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-modulemanager.git", + "reference": "2068e0b300e87e139112016a6025be341ceaaf33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-modulemanager/zipball/2068e0b300e87e139112016a6025be341ceaaf33", + "reference": "2068e0b300e87e139112016a6025be341ceaaf33", + "shasum": "" + }, + "require": { + "brick/varexporter": "^0.3.2", + "laminas/laminas-config": "^3.4", + "laminas/laminas-eventmanager": "^3.3", + "laminas/laminas-stdlib": "^3.3", + "laminas/laminas-zendframework-bridge": "^1.1", + "php": "^7.3 || ^8.0", + "webimpress/safe-writer": "^1.0.2 || ^2.1" + }, + "replace": { + "zendframework/zend-modulemanager": "^2.8.4" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-console": "^2.8", + "laminas/laminas-di": "^2.6.1", + "laminas/laminas-loader": "^2.6.1", + "laminas/laminas-mvc": "^3.1.1", + "laminas/laminas-servicemanager": "^3.4.1", + "phpunit/phpunit": "^9.3.7" + }, + "suggest": { + "laminas/laminas-console": "Laminas\\Console component", + "laminas/laminas-loader": "Laminas\\Loader component if you are not using Composer autoloading for your modules", + "laminas/laminas-mvc": "Laminas\\Mvc component", + "laminas/laminas-servicemanager": "Laminas\\ServiceManager component" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\ModuleManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Modular application system for laminas-mvc applications", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "modulemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-modulemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-modulemanager/issues", + "rss": "https://github.com/laminas/laminas-modulemanager/releases.atom", + "source": "https://github.com/laminas/laminas-modulemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-04-13T20:11:28+00:00" + }, + { + "name": "laminas/laminas-mvc", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-mvc.git", + "reference": "88da7200cf8f5a970c35d91717a5c4db94981e5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-mvc/zipball/88da7200cf8f5a970c35d91717a5c4db94981e5e", + "reference": "88da7200cf8f5a970c35d91717a5c4db94981e5e", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "laminas/laminas-eventmanager": "^3.2", + "laminas/laminas-http": "^2.7", + "laminas/laminas-modulemanager": "^2.8", + "laminas/laminas-router": "^3.0.2", + "laminas/laminas-servicemanager": "^3.3", + "laminas/laminas-stdlib": "^3.2.1", + "laminas/laminas-view": "^2.11.3", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^7.3 || ~8.0.0" + }, + "replace": { + "zendframework/zend-mvc": "^3.1.1" + }, + "require-dev": { + "http-interop/http-middleware": "^0.4.1", + "laminas/laminas-coding-standard": "^1.0.0", + "laminas/laminas-json": "^2.6.1 || ^3.0", + "laminas/laminas-psr7bridge": "^1.0", + "laminas/laminas-stratigility": ">=2.0.1 <2.2", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.4.2" + }, + "suggest": { + "laminas/laminas-json": "(^2.6.1 || ^3.0) To auto-deserialize JSON body content in AbstractRestfulController extensions, when json_decode is unavailable", + "laminas/laminas-log": "^2.9.1 To provide log functionality via LogFilterManager, LogFormatterManager, and LogProcessorManager", + "laminas/laminas-mvc-console": "laminas-mvc-console provides the ability to expose laminas-mvc as a console application", + "laminas/laminas-mvc-i18n": "laminas-mvc-i18n provides integration with laminas-i18n, including a translation bridge and translatable route segments", + "laminas/laminas-mvc-middleware": "To dispatch middleware in your laminas-mvc application", + "laminas/laminas-mvc-plugin-fileprg": "To provide Post/Redirect/Get functionality around forms that container file uploads", + "laminas/laminas-mvc-plugin-flashmessenger": "To provide flash messaging capabilities between requests", + "laminas/laminas-mvc-plugin-identity": "To access the authenticated identity (per laminas-authentication) in controllers", + "laminas/laminas-mvc-plugin-prg": "To provide Post/Redirect/Get functionality within controllers", + "laminas/laminas-paginator": "^2.7 To provide pagination functionality via PaginatorPluginManager", + "laminas/laminas-servicemanager-di": "laminas-servicemanager-di provides utilities for integrating laminas-di and laminas-servicemanager in your laminas-mvc application" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Mvc\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Laminas's event-driven MVC layer, including MVC Applications, Controllers, and Plugins", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "mvc" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-mvc/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-mvc/issues", + "rss": "https://github.com/laminas/laminas-mvc/releases.atom", + "source": "https://github.com/laminas/laminas-mvc" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-12-14T21:54:40+00:00" + }, + { + "name": "laminas/laminas-router", + "version": "3.4.5", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-router.git", + "reference": "aaf2eb364eedeb5c4d5b9ee14cd2938d0f7e89b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-router/zipball/aaf2eb364eedeb5c4d5b9ee14cd2938d0f7e89b7", + "reference": "aaf2eb364eedeb5c4d5b9ee14cd2938d0f7e89b7", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "laminas/laminas-http": "^2.8.1", + "laminas/laminas-servicemanager": "^2.7.8 || ^3.3", + "laminas/laminas-stdlib": "^3.3", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^7.3 || ~8.0.0" + }, + "replace": { + "zendframework/zend-router": "^3.3.0" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-i18n": "^2.7.4", + "phpunit/phpunit": "^9.4" + }, + "suggest": { + "laminas/laminas-i18n": "^2.7.4, if defining translatable HTTP path segments" + }, + "type": "library", + "extra": { + "laminas": { + "component": "Laminas\\Router", + "config-provider": "Laminas\\Router\\ConfigProvider" + } + }, + "autoload": { + "psr-4": { + "Laminas\\Router\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Flexible routing system for HTTP and console applications", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "routing" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-router/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-router/issues", + "rss": "https://github.com/laminas/laminas-router/releases.atom", + "source": "https://github.com/laminas/laminas-router" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-04-19T16:06:00+00:00" + }, + { + "name": "laminas/laminas-servicemanager", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/e52b985909e0940bf22d34f322eb3f48bbef6bd1", + "reference": "e52b985909e0940bf22d34f322eb3f48bbef6bd1", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "laminas/laminas-stdlib": "^3.2.1", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0", + "psr/container": "^1.0" + }, + "conflict": { + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "container-interop/container-interop-implementation": "^1.2", + "psr/container-implementation": "^1.0" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.0", + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-container-config-test": "^0.3", + "laminas/laminas-dependency-plugin": "^2.1.2", + "mikey179/vfsstream": "^1.6.10@alpha", + "ocramius/proxy-manager": "^2.11", + "phpbench/phpbench": "^1.1", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.8" + }, + "suggest": { + "ocramius/proxy-manager": "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": { + "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": "2021-09-18T20:19:36+00:00" + }, + { + "name": "laminas/laminas-stdlib", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "c53d8537f108fac3fae652677a19735db730ba46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c53d8537f108fac3fae652677a19735db730ba46", + "reference": "c53d8537f108fac3fae652677a19735db730ba46", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-stdlib": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.3.0", + "phpbench/phpbench": "^0.17.1", + "phpunit/phpunit": "~9.3.7", + "psalm/plugin-phpunit": "^0.16.0", + "vimeo/psalm": "^4.7" + }, + "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": "2021-09-02T16:11:32+00:00" + }, + { + "name": "laminas/laminas-uri", + "version": "2.9.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-uri.git", + "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/7e837dc15c8fd3949df7d1213246fd7c8640032b", + "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b", + "shasum": "" + }, + "require": { + "laminas/laminas-escaper": "^2.9", + "laminas/laminas-validator": "^2.15", + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-uri": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "~2.2.1", + "phpunit/phpunit": "^9.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "A component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "uri" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-uri/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-uri/issues", + "rss": "https://github.com/laminas/laminas-uri/releases.atom", + "source": "https://github.com/laminas/laminas-uri" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-09-09T18:37:15+00:00" + }, + { + "name": "laminas/laminas-validator", + "version": "2.15.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-validator.git", + "reference": "270380e87904f5a1a1fba3059989d4ca157e16a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/270380e87904f5a1a1fba3059989d4ca157e16a9", + "reference": "270380e87904f5a1a1fba3059989d4ca157e16a9", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.1", + "laminas/laminas-stdlib": "^3.6", + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "conflict": { + "zendframework/zend-validator": "*" + }, + "require-dev": { + "laminas/laminas-cache": "^2.6.1", + "laminas/laminas-coding-standard": "~2.2.1", + "laminas/laminas-db": "^2.7", + "laminas/laminas-filter": "^2.6", + "laminas/laminas-http": "^2.14.2", + "laminas/laminas-i18n": "^2.6", + "laminas/laminas-math": "^2.6", + "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", + "laminas/laminas-session": "^2.8", + "laminas/laminas-uri": "^2.7", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5.5", + "psalm/plugin-phpunit": "^0.15.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "vimeo/psalm": "^4.3" + }, + "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-math": "Laminas\\Math component, required by the Csrf validator", + "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": "2021-09-08T23:16:56+00:00" + }, + { + "name": "laminas/laminas-view", + "version": "2.12.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-view.git", + "reference": "3ef103da6887809f08ecf52f42c31a76c9bf08b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/3ef103da6887809f08ecf52f42c31a76c9bf08b1", + "reference": "3ef103da6887809f08ecf52f42c31a76c9bf08b1", + "shasum": "" + }, + "require": { + "laminas/laminas-eventmanager": "^3.0", + "laminas/laminas-json": "^2.6.1 || ^3.0", + "laminas/laminas-loader": "^2.5", + "laminas/laminas-stdlib": "^3.2.1", + "laminas/laminas-zendframework-bridge": "^1.0", + "php": "^7.3 || ~8.0.0" + }, + "conflict": { + "laminas/laminas-servicemanager": "<3.3" + }, + "replace": { + "zendframework/zend-view": "^2.11.4" + }, + "require-dev": { + "laminas/laminas-authentication": "^2.5", + "laminas/laminas-cache": "^2.6.1", + "laminas/laminas-coding-standard": "~1.0.0", + "laminas/laminas-config": "^2.6", + "laminas/laminas-console": "^2.6", + "laminas/laminas-escaper": "^2.5", + "laminas/laminas-feed": "^2.7", + "laminas/laminas-filter": "^2.6.1", + "laminas/laminas-http": "^2.5.4", + "laminas/laminas-i18n": "^2.6", + "laminas/laminas-log": "^2.7", + "laminas/laminas-modulemanager": "^2.7.1", + "laminas/laminas-mvc": "^2.7.14 || ^3.0", + "laminas/laminas-navigation": "^2.5", + "laminas/laminas-paginator": "^2.5", + "laminas/laminas-permissions-acl": "^2.6", + "laminas/laminas-router": "^3.0.1", + "laminas/laminas-serializer": "^2.6.1", + "laminas/laminas-servicemanager": "^3.3", + "laminas/laminas-session": "^2.8.1", + "laminas/laminas-uri": "^2.5", + "phpspec/prophecy": "^1.12", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "laminas/laminas-authentication": "Laminas\\Authentication component", + "laminas/laminas-escaper": "Laminas\\Escaper component", + "laminas/laminas-feed": "Laminas\\Feed component", + "laminas/laminas-filter": "Laminas\\Filter component", + "laminas/laminas-http": "Laminas\\Http component", + "laminas/laminas-i18n": "Laminas\\I18n component", + "laminas/laminas-mvc": "Laminas\\Mvc component", + "laminas/laminas-mvc-plugin-flashmessenger": "laminas-mvc-plugin-flashmessenger component, if you want to use the FlashMessenger view helper with laminas-mvc versions 3 and up", + "laminas/laminas-navigation": "Laminas\\Navigation component", + "laminas/laminas-paginator": "Laminas\\Paginator component", + "laminas/laminas-permissions-acl": "Laminas\\Permissions\\Acl component", + "laminas/laminas-servicemanager": "Laminas\\ServiceManager component", + "laminas/laminas-uri": "Laminas\\Uri component" + }, + "bin": [ + "bin/templatemap_generator.php" + ], + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\View\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Flexible view layer supporting and providing multiple view layers, helpers, and more", + "homepage": "https://laminas.dev", + "keywords": [ + "laminas", + "view" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-view/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-view/issues", + "rss": "https://github.com/laminas/laminas-view/releases.atom", + "source": "https://github.com/laminas/laminas-view" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-01-01T14:07:41+00:00" + }, + { + "name": "laminas/laminas-zendframework-bridge", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-zendframework-bridge.git", + "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/bf180a382393e7db5c1e8d0f2ec0c4af9c724baf", + "reference": "bf180a382393e7db5c1e8d0f2ec0c4af9c724baf", + "shasum": "" + }, + "require": { + "php": "^7.3 || ~8.0.0 || ~8.1.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.15.1", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.6" + }, + "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" + } + ], + "time": "2021-09-03T17:53:30+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-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/v4.12.0" + }, + "time": "2021-07-21T10:44:31+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.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": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/master" + }, + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "shasum": "" + }, + "require": { + "php": ">=7.2.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.1" + }, + "time": "2021-03-05T17:36:06+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, + "time": "2017-10-23T01:57:42+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" + } + ], + "packages-dev": [ + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.1", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", + "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "phpcompatibility/php-compatibility": "^9.0", + "sensiolabs/security-checker": "^4.1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2020-12-07T18:04:37+00:00" + }, + { + "name": "doctrine/coding-standard", + "version": "9.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/coding-standard.git", + "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/35a2452c6025cb739c3244b3348bcd1604df07d1", + "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "slevomat/coding-standard": "^7.0.0", + "squizlabs/php_codesniffer": "^3.6.0" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Steve Müller", + "email": "st.mueller@dzh-online.de" + } + ], + "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", + "keywords": [ + "checks", + "code", + "coding", + "cs", + "doctrine", + "rules", + "sniffer", + "sniffs", + "standard", + "style" + ], + "support": { + "issues": "https://github.com/doctrine/coding-standard/issues", + "source": "https://github.com/doctrine/coding-standard/tree/9.0.0" + }, + "time": "2021-04-12T15:11:14+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "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.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "bae7c545bef187884426f042434e561ab1ddb182" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "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.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@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/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30f38bffc6f24293dadd1823936372dfa9e86e2f", + "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "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.5.0" + }, + "time": "2021-09-17T15:28:14+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + }, + "time": "2021-09-10T09:02:12+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.5.6", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fac86158ffc7392e49636f77e63684c026df43b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fac86158ffc7392e49636f77e63684c026df43b8", + "reference": "fac86158ffc7392e49636f77e63684c026df43b8", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.87", + "phpstan/phpstan-strict-rules": "^0.12.5", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5-dev" + } + }, + "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/0.5.6" + }, + "time": "2021-08-31T08:08:22+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.12.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.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 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", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-09-17T05:39:03+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "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/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "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", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-08-31T06:47:40+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:49:45+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.7", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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 calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T15:52:27+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-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", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:10:38+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:52:38+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:24:23+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-11T13:31:12+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:42:11+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:17:30+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:45:17+00:00" + }, + { + "name": "sebastian/type", + "version": "2.3.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-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/2.3.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-06-15T12:49:02+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "7.0.15", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", + "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "phpstan/phpdoc-parser": "0.5.1 - 0.5.6", + "squizlabs/php_codesniffer": "^3.6.0" + }, + "require-dev": { + "phing/phing": "2.17.0", + "php-parallel-lint/php-parallel-lint": "1.3.1", + "phpstan/phpstan": "0.12.98", + "phpstan/phpstan-deprecation-rules": "0.12.6", + "phpstan/phpstan-phpunit": "0.12.22", + "phpstan/phpstan-strict-rules": "0.12.11", + "phpunit/phpunit": "7.5.20|8.5.5|9.5.9" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "7.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.", + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/7.0.15" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2021-09-09T10:29:09+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.6.0", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "lead" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], + "support": { + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + }, + "time": "2021-04-09T00:54:41+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "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.23.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": "2021-02-19T12:13:01+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "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.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "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.10.0" + }, + "time": "2021-03-09T10:59:23+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": { + "php": "^7.4.7 || ~8.0.0 || ~8.0.1" + }, + "platform-dev": [], + "platform-overrides": { + "php": "7.4.99" + }, + "plugin-api-version": "2.1.0" +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist index e5ebb4b..ba44216 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,22 +1,17 @@ ./tests/OcraCachedViewResolverTest - - + + ./src - - + + From 6fe0b0007db08f018732b4169b87650df950e10f Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 06:59:53 +0200 Subject: [PATCH 07/15] Make tests pass under latest PHPUnit, switched to `laminas/` dependencies --- .../Compiler/TemplateMapCompiler.php | 22 ++++---- .../Factory/CacheFactory.php | 8 +-- .../CompiledMapResolverDelegatorFactory.php | 10 ++-- src/OcraCachedViewResolver/Module.php | 8 +-- .../View/Resolver/CachingMapResolver.php | 6 +- .../InvalidResolverInstantiatorException.php | 2 +- .../View/Resolver/LazyResolver.php | 4 +- .../TemplateMapCompilerFunctionalTest.php | 16 +++--- .../Compiler/TemplateMapCompilerTest.php | 56 +++---------------- .../Factory/CacheFactoryTest.php | 5 +- ...ompiledMapResolverDelegatorFactoryTest.php | 24 ++++---- .../ModuleFunctionalTest.php | 33 +++++------ .../OcraCachedViewResolverTest/ModuleTest.php | 2 +- .../View/Resolver/CachingMapResolverTest.php | 24 ++++---- ...validResolverInstantiatorExceptionTest.php | 4 +- .../View/Resolver/LazyResolverTest.php | 39 +++---------- tests/testing.config.php | 2 +- 17 files changed, 100 insertions(+), 165 deletions(-) diff --git a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php index f43ecf0..3d32efb 100644 --- a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php +++ b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php @@ -22,17 +22,17 @@ use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use SplFileInfo; -use Zend\Stdlib\ArrayUtils; -use Zend\View\Resolver\AggregateResolver; -use Zend\View\Resolver\ResolverInterface; -use Zend\View\Resolver\TemplateMapResolver; -use Zend\View\Resolver\TemplatePathStack; +use Laminas\Stdlib\ArrayUtils; +use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\ResolverInterface; +use Laminas\View\Resolver\TemplateMapResolver; +use Laminas\View\Resolver\TemplatePathStack; /** * Template map generator that can build template map arrays from either - * an {@see \Zend\View\Resolver\TemplateMapResolver}, a - * {@see \Zend\View\Resolver\TemplatePathStack} or a - * {@see \Zend\View\Resolver\AggregateResolver} + * an {@see \Laminas\View\Resolver\TemplateMapResolver}, a + * {@see \Laminas\View\Resolver\TemplatePathStack} or a + * {@see \Laminas\View\Resolver\AggregateResolver} * * @author Marco Pivetta * @license MIT @@ -47,7 +47,7 @@ class TemplateMapCompiler * * @return array * - * @throws \Zend\View\Exception\DomainException + * @throws \Laminas\View\Exception\DomainException */ public function compileMap(ResolverInterface $resolver) : array { @@ -83,7 +83,7 @@ protected function compileFromAggregateResolver(AggregateResolver $resolver) : a * * @return array * - * @throws \Zend\View\Exception\DomainException + * @throws \Laminas\View\Exception\DomainException */ protected function compileFromTemplatePathStack(TemplatePathStack $resolver) : array { @@ -119,7 +119,7 @@ protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver) * * @return void * - * @throws \Zend\View\Exception\DomainException + * @throws \Laminas\View\Exception\DomainException */ private function addResolvedPath(SplFileInfo $file, array & $map, $basePath, TemplatePathStack $resolver) { diff --git a/src/OcraCachedViewResolver/Factory/CacheFactory.php b/src/OcraCachedViewResolver/Factory/CacheFactory.php index dcfc0bf..9335c19 100644 --- a/src/OcraCachedViewResolver/Factory/CacheFactory.php +++ b/src/OcraCachedViewResolver/Factory/CacheFactory.php @@ -22,12 +22,12 @@ use Interop\Container\Exception\ContainerException; use Interop\Container\Exception\NotFoundException; use OcraCachedViewResolver\Module; -use Zend\Cache\Exception\InvalidArgumentException; -use Zend\Cache\Storage\StorageInterface; -use Zend\Cache\StorageFactory; +use Laminas\Cache\Exception\InvalidArgumentException; +use Laminas\Cache\Storage\StorageInterface; +use Laminas\Cache\StorageFactory; /** - * Factory responsible of building a {@see \Zend\Cache\Storage\StorageInterface} + * Factory responsible of building a {@see \Laminas\Cache\Storage\StorageInterface} * for the resolver * * @author Marco Pivetta diff --git a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php index be89fa2..dae1ad0 100644 --- a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php +++ b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php @@ -24,12 +24,12 @@ use OcraCachedViewResolver\Module; use OcraCachedViewResolver\View\Resolver\CachingMapResolver; use OcraCachedViewResolver\View\Resolver\LazyResolver; -use Zend\ServiceManager\Factory\DelegatorFactoryInterface; -use Zend\View\Resolver\AggregateResolver; -use Zend\View\Resolver\ResolverInterface; +use Laminas\ServiceManager\Factory\DelegatorFactoryInterface; +use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\ResolverInterface; /** - * Factory responsible of building a {@see \Zend\View\Resolver\TemplateMapResolver} + * Factory responsible of building a {@see \Laminas\View\Resolver\TemplateMapResolver} * from cached template definitions * * @author Marco Pivetta @@ -52,7 +52,7 @@ public function __invoke( array $options = null ) : ResolverInterface { $config = $container->get('Config')[Module::CONFIG]; - /* @var $cache \Zend\Cache\Storage\StorageInterface */ + /* @var $cache \Laminas\Cache\Storage\StorageInterface */ $cache = $container->get($config[Module::CONFIG_CACHE_SERVICE]); $resolver = new AggregateResolver(); diff --git a/src/OcraCachedViewResolver/Module.php b/src/OcraCachedViewResolver/Module.php index ce76324..a89e83a 100644 --- a/src/OcraCachedViewResolver/Module.php +++ b/src/OcraCachedViewResolver/Module.php @@ -20,9 +20,9 @@ use OcraCachedViewResolver\Factory\CacheFactory; use OcraCachedViewResolver\Factory\CompiledMapResolverDelegatorFactory; -use Zend\Cache\Storage\Adapter\Apc; -use Zend\Cache\Storage\Adapter\BlackHole; -use Zend\ModuleManager\Feature\ConfigProviderInterface; +use Laminas\Cache\Storage\Adapter\Apc; +use Laminas\Cache\Storage\Adapter\BlackHole; +use Laminas\ModuleManager\Feature\ConfigProviderInterface; /** * OcraCachedViewResolver module @@ -39,7 +39,7 @@ final class Module implements ConfigProviderInterface /** * Name of the config key referencing the array with cache definitions to be passed to - * the {@see \Zend\Cache\StorageFactory} + * the {@see \Laminas\Cache\StorageFactory} */ const CONFIG_CACHE_DEFINITION = 'cache'; diff --git a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php index f8bbad2..b96b1f1 100644 --- a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php +++ b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php @@ -20,9 +20,9 @@ use OcraCachedViewResolver\Compiler\TemplateMapCompiler; use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; -use Zend\Cache\Storage\StorageInterface; -use Zend\View\Renderer\RendererInterface; -use Zend\View\Resolver\ResolverInterface; +use Laminas\Cache\Storage\StorageInterface; +use Laminas\View\Renderer\RendererInterface; +use Laminas\View\Resolver\ResolverInterface; /** * OcraCachedViewResolver module diff --git a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php b/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php index 0bc49fa..8b566a3 100644 --- a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php +++ b/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php @@ -19,7 +19,7 @@ namespace OcraCachedViewResolver\View\Resolver\Exception; use InvalidArgumentException; -use Zend\View\Resolver\ResolverInterface; +use Laminas\View\Resolver\ResolverInterface; /** * Exception for invalid instantiators diff --git a/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php b/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php index d532323..6fc352a 100644 --- a/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php +++ b/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php @@ -19,8 +19,8 @@ namespace OcraCachedViewResolver\View\Resolver; use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; -use Zend\View\Renderer\RendererInterface; -use Zend\View\Resolver\ResolverInterface; +use Laminas\View\Renderer\RendererInterface; +use Laminas\View\Resolver\ResolverInterface; /** * Lazy resolver, only instantiates the actual resolver if it is needed diff --git a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php index 4fa3bbf..467cb06 100644 --- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php +++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php @@ -20,7 +20,7 @@ use PHPUnit\Framework\TestCase; use OcraCachedViewResolver\Compiler\TemplateMapCompiler; -use Zend\View\Resolver\TemplatePathStack; +use Laminas\View\Resolver\TemplatePathStack; /** * Template map compiler functional tests @@ -41,7 +41,7 @@ class TemplateMapCompilerFunctionalTest extends TestCase /** * {@inheritDoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); @@ -52,7 +52,7 @@ public function setUp() * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack * - * @throws \Zend\View\Exception\InvalidArgumentException + * @throws \Laminas\View\Exception\InvalidArgumentException */ public function testCompileFromTemplatePathStack() { @@ -63,8 +63,8 @@ public function testCompileFromTemplatePathStack() $template2 = realpath(__DIR__ . '/_files/subdir2/template2.phtml'); $template4 = realpath(__DIR__ . '/_files/subdir1/valid/template4.phtml'); - self::assertInternalType('string', $template2); - self::assertInternalType('string', $template4); + self::assertIsString($template2); + self::assertIsString($template4); self::assertSame( [ @@ -79,15 +79,15 @@ public function testCompileFromTemplatePathStack() * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack * - * @throws \Zend\View\Exception\InvalidArgumentException + * @throws \Laminas\View\Exception\InvalidArgumentException */ public function testCompileFromTemplatePathStackWithDifferentPaths() { $template2 = realpath(__DIR__ . '/_files/subdir1/template2.phtml'); $template4 = realpath(__DIR__ . '/_files/subdir1/valid/template4.phtml'); - self::assertInternalType('string', $template2); - self::assertInternalType('string', $template4); + self::assertIsString($template2); + self::assertIsString($template4); // inverse directory order $resolver = new TemplatePathStack(); diff --git a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php index cceb121..9b773dc 100644 --- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php +++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php @@ -21,11 +21,11 @@ use ArrayIterator; use PHPUnit\Framework\TestCase; use OcraCachedViewResolver\Compiler\TemplateMapCompiler; -use Zend\Stdlib\SplStack; -use Zend\View\Resolver\AggregateResolver; -use Zend\View\Resolver\ResolverInterface; -use Zend\View\Resolver\TemplateMapResolver; -use Zend\View\Resolver\TemplatePathStack; +use Laminas\Stdlib\SplStack; +use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\ResolverInterface; +use Laminas\View\Resolver\TemplateMapResolver; +use Laminas\View\Resolver\TemplatePathStack; /** * Template map compiler tests @@ -47,18 +47,13 @@ class TemplateMapCompilerTest extends TestCase /** * {@inheritDoc} */ - public function setUp() + protected function setUp(): void { parent::setUp(); $this->compiler = new TemplateMapCompiler(); } - /** - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * - * @throws \PHPUnit_Framework_Exception - */ public function testCompileFromUnknownResolverProducesEmptyMap() { /* @var $resolver ResolverInterface */ @@ -67,19 +62,10 @@ public function testCompileFromUnknownResolverProducesEmptyMap() self::assertSame([], $this->compiler->compileMap($resolver)); } - /** - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplateMapResolver - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::addResolvedPath - * - * @throws \PHPUnit_Framework_Exception - */ public function testCompileFromMapResolver() { - /* @var $mapResolver TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject */ $mapResolver = $this->createMock(TemplateMapResolver::class); $mapResolver - ->expects(self::any()) ->method('getMap') ->will(self::returnValue(['a' => 'b', 'c' => 'd'])); @@ -90,29 +76,18 @@ public function testCompileFromMapResolver() self::assertSame('d', $map['c']); } - /** - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::addResolvedPath - * - * @throws \PHPUnit_Framework_Exception - */ public function testCompileFromTemplatePathStack() { - /* @var $templatePathStack TemplatePathStack|\PHPUnit_Framework_MockObject_MockObject */ $templatePathStack = $this->createMock(TemplatePathStack::class); $paths = $this->createMock(SplStack::class); $paths - ->expects(self::any()) ->method('toArray') ->will(self::returnValue([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1'])); $templatePathStack - ->expects(self::any()) ->method('getPaths') ->will(self::returnValue($paths)); $templatePathStack - ->expects(self::any()) ->method('resolve') ->willReturnCallback(function ($name) { $keys = [ @@ -130,46 +105,31 @@ public function testCompileFromTemplatePathStack() $template2 = realpath(__DIR__ . '/_files/subdir2/template2.phtml'); $template4 = realpath(__DIR__ . '/_files/subdir1/valid/template4.phtml'); - self::assertInternalType('string', $template2); - self::assertInternalType('string', $template4); + self::assertIsString($template2); + self::assertIsString($template4); self::assertSame($template2, $map['template2']); self::assertSame($template4, $map['valid/template4']); } - /** - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromAggregateResolver - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::addResolvedPath - * - * @throws \PHPUnit_Framework_Exception - */ public function testCompileFromAggregateResolver() { - /* @var $aggregateResolver AggregateResolver|\PHPUnit_Framework_MockObject_MockObject */ $aggregateResolver = $this->createMock(AggregateResolver::class); - /* @var $mapResolver1 TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject */ $mapResolver1 = $this->createMock(TemplateMapResolver::class); $mapResolver1 - ->expects(self::any()) ->method('getMap') ->will(self::returnValue(['a' => 'a-value', 'b' => 'b-value'])); - /* @var $mapResolver2 TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject */ $mapResolver2 = $this->createMock(TemplateMapResolver::class); $mapResolver2 - ->expects(self::any()) ->method('getMap') ->will(self::returnValue(['c' => 'c-value', 'd' => 'd-value'])); - /* @var $mapResolver3 TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject */ $mapResolver3 = $this->createMock(TemplateMapResolver::class); $mapResolver3 - ->expects(self::any()) ->method('getMap') ->will(self::returnValue(['a' => 'override-a-value', 'd' => 'override-d-value', 'e' => 'e-value'])); $iterator = new ArrayIterator([$mapResolver1, $mapResolver2, $mapResolver3]); $aggregateResolver - ->expects(self::any()) ->method('getIterator') ->will(self::returnValue($iterator)); diff --git a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php index 8d00602..8f86574 100644 --- a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php +++ b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php @@ -22,7 +22,7 @@ use OcraCachedViewResolver\Factory\CacheFactory; use OcraCachedViewResolver\Module; use PHPUnit\Framework\TestCase; -use Zend\Cache\Storage\Adapter\Memory; +use Laminas\Cache\Storage\Adapter\Memory; /** * Tests for {@see \OcraCachedViewResolver\Factory\CacheFactory} @@ -38,10 +38,9 @@ class CacheFactoryTest extends TestCase { public function testCreateService() { - /* @var $locator ContainerInterface|\PHPUnit_Framework_MockObject_MockObject */ $locator = $this->createMock(ContainerInterface::class); - $locator->expects(self::any())->method('get')->with('Config')->will(self::returnValue([ + $locator->method('get')->with('Config')->will(self::returnValue([ Module::CONFIG => [ Module::CONFIG_CACHE_DEFINITION => [ 'adapter' => Memory::class, diff --git a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php index 84238fb..0307621 100644 --- a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php +++ b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php @@ -23,11 +23,12 @@ use OcraCachedViewResolver\Module; use OcraCachedViewResolver\View\Resolver\CachingMapResolver; use OcraCachedViewResolver\View\Resolver\LazyResolver; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use stdClass; -use Zend\Cache\Storage\StorageInterface; -use Zend\View\Resolver\AggregateResolver; -use Zend\View\Resolver\TemplateMapResolver; +use Laminas\Cache\Storage\StorageInterface; +use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\TemplateMapResolver; /** * Tests for {@see \OcraCachedViewResolver\Factory\CompiledMapResolverDelegatorFactory} @@ -42,32 +43,29 @@ class CompiledMapResolverDelegatorFactoryTest extends TestCase { /** - * @var ContainerInterface|\PHPUnit_Framework_MockObject_MockObject + * @var ContainerInterface&MockObject */ private $locator; /** - * @var callable|\PHPUnit_Framework_MockObject_MockObject + * @var callable&MockObject */ private $callback; /** - * @var StorageInterface|\PHPUnit_Framework_MockObject_MockObject + * @var StorageInterface&MockObject */ private $cache; - /** - * {@inheritDoc} - * - * @throws \PHPUnit_Framework_Exception - */ - protected function setUp() + protected function setUp(): void { + parent::setUp(); + $this->locator = $this->createMock(ContainerInterface::class); $this->callback = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); $this->cache = $this->createMock(StorageInterface::class); - $this->locator->expects(self::any())->method('get')->will(self::returnValueMap([ + $this->locator->method('get')->will(self::returnValueMap([ [ 'Config', [ diff --git a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php index ef0bf72..af6df32 100644 --- a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php +++ b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php @@ -22,13 +22,14 @@ use Interop\Container\Exception\NotFoundException; use OcraCachedViewResolver\View\Resolver\CachingMapResolver; use OcraCachedViewResolver\View\Resolver\LazyResolver; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; -use Zend\Cache\Storage\StorageInterface; -use Zend\Mvc\Service\ServiceManagerConfig; -use Zend\ServiceManager\ServiceManager; -use Zend\View\Resolver\AggregateResolver; -use Zend\View\Resolver\ResolverInterface; -use Zend\View\Resolver\TemplateMapResolver; +use Laminas\Cache\Storage\StorageInterface; +use Laminas\Mvc\Service\ServiceManagerConfig; +use Laminas\ServiceManager\ServiceManager; +use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\ResolverInterface; +use Laminas\View\Resolver\TemplateMapResolver; /** * Functional test to verify that the module initializes services correctly @@ -48,24 +49,25 @@ class ModuleFunctionalTest extends TestCase protected $serviceManager; /** - * @var AggregateResolver|\Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject; + * @var AggregateResolver&\Laminas\View\Resolver\ResolverInterface&MockObject; */ protected $originalResolver; /** - * @var \Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject; + * @var \Laminas\View\Resolver\ResolverInterface&MockObject; */ protected $fallbackResolver; /** * {@inheritDoc} * - * @throws \PHPUnit_Framework_Exception * @throws ContainerException * @throws NotFoundException */ - public function setUp() + protected function setUp(): void { + parent::setUp(); + $this->serviceManager = new ServiceManager(); (new ServiceManagerConfig())->configureServiceManager($this->serviceManager); @@ -75,7 +77,7 @@ public function setUp() 'ApplicationConfig', [ 'modules' => [ - 'Zend\Router', + 'Laminas\Router', 'OcraCachedViewResolver', ], 'module_listener_options' => [ @@ -86,12 +88,11 @@ public function setUp() ] ); - /* @var $moduleManager \Zend\ModuleManager\ModuleManager */ + /* @var $moduleManager \Laminas\ModuleManager\ModuleManager */ $moduleManager = $this->serviceManager->get('ModuleManager'); $moduleManager->loadModules(); $this->originalResolver = new AggregateResolver(); - /* @var $mapResolver TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject */ $mapResolver = $this->createMock(TemplateMapResolver::class); $this->fallbackResolver = $this->createMock(ResolverInterface::class); @@ -116,7 +117,7 @@ public function testDefinedServices() $this->serviceManager->get('OcraCachedViewResolver\\Cache\\ResolverCache') ); - /* @var $resolver \Zend\View\Resolver\AggregateResolver */ + /* @var $resolver \Laminas\View\Resolver\AggregateResolver */ $resolver = $this->serviceManager->get('ViewResolver'); self::assertInstanceOf(AggregateResolver::class, $resolver); @@ -135,7 +136,7 @@ public function testDefinedServices() public function testCachesResolvedTemplates() { - /* @var $cache \Zend\Cache\Storage\StorageInterface */ + /* @var $cache \Laminas\Cache\Storage\StorageInterface */ $cache = $this->serviceManager->get('OcraCachedViewResolver\\Cache\\ResolverCache'); self::assertFalse($cache->hasItem('testing_cache_key')); @@ -152,7 +153,7 @@ public function testCachesResolvedTemplates() public function testFallbackResolverCall() { - /* @var $resolver \Zend\View\Resolver\TemplateMapResolver */ + /* @var $resolver \Laminas\View\Resolver\TemplateMapResolver */ $resolver = $this->serviceManager->get('ViewResolver'); $this diff --git a/tests/OcraCachedViewResolverTest/ModuleTest.php b/tests/OcraCachedViewResolverTest/ModuleTest.php index dfe4f53..3f5ba6d 100644 --- a/tests/OcraCachedViewResolverTest/ModuleTest.php +++ b/tests/OcraCachedViewResolverTest/ModuleTest.php @@ -33,7 +33,7 @@ class ModuleTest extends TestCase { public function testConfigIsAnArray() { - self::assertInternalType('array', (new Module())->getConfig()); + self::assertIsArray((new Module())->getConfig()); } public function testConfigIsSerializable() diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php index d3cac5f..87a94a3 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php @@ -20,11 +20,12 @@ use OcraCachedViewResolver\View\Resolver\CachingMapResolver; use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use stdClass; -use Zend\Cache\Storage\StorageInterface; -use Zend\View\Renderer\RendererInterface; -use Zend\View\Resolver\TemplateMapResolver; +use Laminas\Cache\Storage\StorageInterface; +use Laminas\View\Renderer\RendererInterface; +use Laminas\View\Resolver\TemplateMapResolver; /** * Tests for {@see \OcraCachedViewResolver\View\Resolver\CachingMapResolver} @@ -39,22 +40,22 @@ class CachingMapResolverTest extends TestCase { /** - * @var callable|\PHPUnit_Framework_MockObject_MockObject + * @var callable&MockObject */ private $resolverInstantiator; /** - * @var TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject + * @var TemplateMapResolver&MockObject */ private $realResolver; /** - * @var RendererInterface|\PHPUnit_Framework_MockObject_MockObject + * @var RendererInterface&MockObject */ private $renderer; /** - * @var StorageInterface|\PHPUnit_Framework_MockObject_MockObject + * @var StorageInterface&MockObject */ private $cache; @@ -68,13 +69,10 @@ class CachingMapResolverTest extends TestCase */ private $cachingMapResolver; - /** - * {@inheritDoc} - * - * @throws \PHPUnit_Framework_Exception - */ - protected function setUp() + protected function setUp(): void { + parent::setUp(); + $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); $this->realResolver = $this->createMock(TemplateMapResolver::class); $this->renderer = $this->createMock(RendererInterface::class); diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php index abb11a1..76183aa 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php @@ -68,7 +68,7 @@ public function testFromInvalidNullResolver() self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); self::assertSame( - 'Invalid resolver found, expected `Zend\View\Resolver\ResolverInterface`, `NULL` given.', + 'Invalid resolver found, expected `Laminas\View\Resolver\ResolverInterface`, `NULL` given.', $exception->getMessage() ); } @@ -79,7 +79,7 @@ public function testFromInvalidObjectResolver() self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); self::assertSame( - 'Invalid resolver found, expected `Zend\View\Resolver\ResolverInterface`, `' . __CLASS__ . '` given.', + 'Invalid resolver found, expected `Laminas\View\Resolver\ResolverInterface`, `' . __CLASS__ . '` given.', $exception->getMessage() ); } diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php index 45bcd03..5b60c48 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php @@ -19,11 +19,12 @@ namespace OcraCachedViewResolverTest\View\Resolver; use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use OcraCachedViewResolver\View\Resolver\LazyResolver; use stdClass; -use Zend\View\Renderer\RendererInterface; -use Zend\View\Resolver\ResolverInterface; +use Laminas\View\Renderer\RendererInterface; +use Laminas\View\Resolver\ResolverInterface; /** * Tests for {@see \OcraCachedViewResolver\View\Resolver\LazyResolver} @@ -38,17 +39,17 @@ class LazyResolverTest extends TestCase { /** - * @var callable|\PHPUnit_Framework_MockObject_MockObject + * @var callable&MockObject */ private $resolverInstantiator; /** - * @var \Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject + * @var \Laminas\View\Resolver\ResolverInterface&MockObject */ private $realResolver; /** - * @var \Zend\View\Renderer\RendererInterface|\PHPUnit_Framework_MockObject_MockObject + * @var \Laminas\View\Renderer\RendererInterface&MockObject */ private $renderer; @@ -57,22 +58,16 @@ class LazyResolverTest extends TestCase */ private $lazyResolver; - /** - * {@inheritDoc} - * - * @throws \PHPUnit_Framework_Exception - */ - protected function setUp() + protected function setUp(): void { + parent::setUp(); + $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); $this->realResolver = $this->createMock(ResolverInterface::class); $this->renderer = $this->createMock(RendererInterface::class); $this->lazyResolver = new LazyResolver($this->resolverInstantiator); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testResolve() { $this @@ -90,9 +85,6 @@ public function testResolve() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testResolveWithoutRenderer() { $this @@ -102,7 +94,6 @@ public function testResolveWithoutRenderer() ->will(self::returnValue($this->realResolver)); $this ->realResolver - ->expects(self::any()) ->method('resolve') ->with('view-name', null) ->will(self::returnValue('path/to/script')); @@ -110,9 +101,6 @@ public function testResolveWithoutRenderer() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name')); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::__construct - */ public function testRealResolverNotCreatedIfNotNeeded() { $this->resolverInstantiator->expects(self::never())->method('__invoke'); @@ -120,9 +108,6 @@ public function testRealResolverNotCreatedIfNotNeeded() new LazyResolver($this->resolverInstantiator); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testResolveCausesRealResolverInstantiationOnlyOnce() { $this @@ -141,9 +126,6 @@ public function testResolveCausesRealResolverInstantiationOnlyOnce() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testLazyResolverRefusesNonCallableInstantiator() { $this->expectException(InvalidResolverInstantiatorException::class); @@ -151,9 +133,6 @@ public function testLazyResolverRefusesNonCallableInstantiator() new LazyResolver($this); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testLazyResolverRefusesInvalidRealResolver() { $this diff --git a/tests/testing.config.php b/tests/testing.config.php index 39131eb..a34c0fa 100644 --- a/tests/testing.config.php +++ b/tests/testing.config.php @@ -17,7 +17,7 @@ */ use OcraCachedViewResolver\Module; -use Zend\Cache\Storage\Adapter\Memory; +use Laminas\Cache\Storage\Adapter\Memory; return [ Module::CONFIG => [ From 1e7e8f4689e9d28cca20e314220eab9bcb349d7c Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:00:15 +0200 Subject: [PATCH 08/15] Added basic PHPCS setup, based on `doctrine/coding-standard` --- phpcs.xml.dist | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 phpcs.xml.dist diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..8db694c --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,26 @@ + + + + + + + + + + + + src + tests + tests/OcraCachedViewResolverTest/Compiler/_files/* + + + + + + + + + From 21607538ce76b6113fb49b2a3b42e98feb09860d Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:18:25 +0200 Subject: [PATCH 09/15] Upgraded sources to latest `doctrine/coding-standard:^9` --- phpcs.xml.dist | 7 +- .../Compiler/TemplateMapCompiler.php | 95 +++++++++---------- .../Factory/CacheFactory.php | 25 +---- .../CompiledMapResolverDelegatorFactory.php | 36 +++---- src/OcraCachedViewResolver/Module.php | 35 ++----- .../View/Resolver/CachingMapResolver.php | 65 ++++--------- .../Resolver/Exception/ExceptionInterface.php | 21 +--- .../InvalidResolverInstantiatorException.php | 47 ++------- .../View/Resolver/LazyResolver.php | 53 ++--------- .../TemplateMapCompilerFunctionalTest.php | 48 +++------- .../Compiler/TemplateMapCompilerTest.php | 55 ++++------- .../Factory/CacheFactoryTest.php | 26 +---- ...ompiledMapResolverDelegatorFactoryTest.php | 44 ++------- .../ModuleFunctionalTest.php | 65 +++++-------- .../OcraCachedViewResolverTest/ModuleTest.php | 28 ++---- .../View/Resolver/CachingMapResolverTest.php | 64 ++++--------- ...validResolverInstantiatorExceptionTest.php | 51 ++-------- .../View/Resolver/LazyResolverTest.php | 76 +++------------ tests/testing.config.php | 20 +--- 19 files changed, 221 insertions(+), 640 deletions(-) diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 8db694c..4750b41 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -17,10 +17,9 @@ tests/OcraCachedViewResolverTest/Compiler/_files/* - - - - + + + diff --git a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php index 3d32efb..038342e 100644 --- a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php +++ b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php @@ -1,41 +1,33 @@ - * @license MIT */ class TemplateMapCompiler { @@ -43,13 +35,11 @@ class TemplateMapCompiler * Generates a list of all existing templates in the given resolver, * with their names being keys, and absolute paths being values * - * @param ResolverInterface $resolver - * - * @return array + * @return array * - * @throws \Laminas\View\Exception\DomainException + * @throws DomainException */ - public function compileMap(ResolverInterface $resolver) : array + public function compileMap(ResolverInterface $resolver): array { if ($resolver instanceof AggregateResolver) { return $this->compileFromAggregateResolver($resolver); @@ -66,12 +56,13 @@ public function compileMap(ResolverInterface $resolver) : array return []; } - protected function compileFromAggregateResolver(AggregateResolver $resolver) : array + /** @psalm-return array */ + protected function compileFromAggregateResolver(AggregateResolver $resolver): array { $map = []; - /* @var $queuedResolver ResolverInterface */ foreach ($resolver->getIterator() as $queuedResolver) { + assert($queuedResolver instanceof ResolverInterface); $map = ArrayUtils::merge($this->compileMap($queuedResolver), $map); } @@ -79,13 +70,11 @@ protected function compileFromAggregateResolver(AggregateResolver $resolver) : a } /** - * @param TemplatePathStack $resolver - * - * @return array + * @return array * - * @throws \Laminas\View\Exception\DomainException + * @throws DomainException */ - protected function compileFromTemplatePathStack(TemplatePathStack $resolver) : array + protected function compileFromTemplatePathStack(TemplatePathStack $resolver): array { $map = []; @@ -97,14 +86,15 @@ protected function compileFromTemplatePathStack(TemplatePathStack $resolver) : a ); foreach ($iterator as $file) { - $this->addResolvedPath($file, $map, $path, $resolver); + $map = $this->addResolvedPath($file, $map, $path, $resolver); } } return $map; } - protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver) : array + /** @psalm-return array */ + protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver): array { return $resolver->getMap(); } @@ -112,24 +102,31 @@ protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver) /** * Add the given file to the map if it corresponds to a resolved view * - * @param SplFileInfo $file - * @param array $map - * @param string $basePath - * @param TemplatePathStack $resolver + * @param array $map * - * @return void + * @return array * - * @throws \Laminas\View\Exception\DomainException + * @throws DomainException */ - private function addResolvedPath(SplFileInfo $file, array & $map, $basePath, TemplatePathStack $resolver) + private function addResolvedPath(SplFileInfo $file, array $map, string $basePath, TemplatePathStack $resolver): array { - $filePath = $file->getRealPath(); - $fileName = pathinfo($filePath, PATHINFO_FILENAME); - $relativePath = trim(str_replace($basePath, '', $file->getPath()), '/\\'); - $templateName = str_replace('\\', '/', trim($relativePath . '/' . $fileName, '/')); + $filePath = $file->getRealPath(); + $fileName = pathinfo($filePath, PATHINFO_FILENAME); + $relativePath = trim(str_replace($basePath, '', $file->getPath()), '/\\'); + $templateName = str_replace('\\', '/', trim($relativePath . '/' . $fileName, '/')); - if ($fileName && ($resolvedPath = $resolver->resolve($templateName))) { - $map[$templateName] = realpath($resolvedPath); + if (! $fileName) { + return $map; } + + $resolvedPath = $resolver->resolve($templateName); + + if (! $resolvedPath) { + return $map; + } + + $map[$templateName] = realpath($resolvedPath); + + return $map; } } diff --git a/src/OcraCachedViewResolver/Factory/CacheFactory.php b/src/OcraCachedViewResolver/Factory/CacheFactory.php index 9335c19..f8dd939 100644 --- a/src/OcraCachedViewResolver/Factory/CacheFactory.php +++ b/src/OcraCachedViewResolver/Factory/CacheFactory.php @@ -1,37 +1,20 @@ - * @license MIT */ final class CacheFactory { @@ -42,7 +25,7 @@ final class CacheFactory * @throws ContainerException * @throws NotFoundException */ - public function __invoke(ContainerInterface $container) : StorageInterface + public function __invoke(ContainerInterface $container): StorageInterface { $config = $container->get('Config'); diff --git a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php index dae1ad0..ffcf90b 100644 --- a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php +++ b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php @@ -1,39 +1,25 @@ - * @license MIT */ final class CompiledMapResolverDelegatorFactory implements DelegatorFactoryInterface { @@ -49,11 +35,11 @@ public function __invoke( ContainerInterface $container, $name, callable $callback, - array $options = null - ) : ResolverInterface { + ?array $options = null + ): ResolverInterface { $config = $container->get('Config')[Module::CONFIG]; - /* @var $cache \Laminas\Cache\Storage\StorageInterface */ $cache = $container->get($config[Module::CONFIG_CACHE_SERVICE]); + assert($cache instanceof StorageInterface); $resolver = new AggregateResolver(); diff --git a/src/OcraCachedViewResolver/Module.php b/src/OcraCachedViewResolver/Module.php index a89e83a..090bafc 100644 --- a/src/OcraCachedViewResolver/Module.php +++ b/src/OcraCachedViewResolver/Module.php @@ -1,62 +1,45 @@ - * @license MIT */ final class Module implements ConfigProviderInterface { /** * Name of the cache namespace where configs for this module are wrapped */ - const CONFIG = 'ocra_cached_view_resolver'; + public const CONFIG = 'ocra_cached_view_resolver'; /** * Name of the config key referencing the array with cache definitions to be passed to * the {@see \Laminas\Cache\StorageFactory} */ - const CONFIG_CACHE_DEFINITION = 'cache'; + public const CONFIG_CACHE_DEFINITION = 'cache'; /** * Name of the config key referencing the cache service to be used when storing the cached map */ - const CONFIG_CACHE_SERVICE = 'cache_service'; + public const CONFIG_CACHE_SERVICE = 'cache_service'; /** * Name of the config key referencing the cache key to be used when storing the cached map */ - const CONFIG_CACHE_KEY = 'cached_template_map_key'; + public const CONFIG_CACHE_KEY = 'cached_template_map_key'; /** * {@inheritDoc} */ - public function getConfig() : array + public function getConfig(): array { return [ self::CONFIG => [ diff --git a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php index b96b1f1..95cf94c 100644 --- a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php +++ b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php @@ -1,79 +1,46 @@ - * @license MIT - */ final class CachingMapResolver implements ResolverInterface { - /** - * @var callable - */ + /** @var callable */ private $realResolverInstantiator; - /** - * @var StorageInterface - */ - private $cache; + private StorageInterface $cache; - /** - * @var string - */ - private $cacheKey; + private string $cacheKey; - /** - * @var null|array - */ - private $map; + /** @var array|null */ + private ?array $map = null; - /** - * @param StorageInterface $cache - * @param string $cacheKey - * @param callable $realResolverInstantiator - */ - public function __construct(StorageInterface $cache, $cacheKey, callable $realResolverInstantiator) + public function __construct(StorageInterface $cache, string $cacheKey, callable $realResolverInstantiator) { $this->cache = $cache; - $this->cacheKey = (string) $cacheKey; + $this->cacheKey = $cacheKey; $this->realResolverInstantiator = $realResolverInstantiator; } /** * {@inheritDoc} */ - public function resolve($name, RendererInterface $renderer = null) + public function resolve($name, ?RendererInterface $renderer = null) { if (isset($this->map[$name])) { return $this->map[$name]; } - if (null !== $this->map) { + if ($this->map !== null) { return false; } @@ -85,7 +52,7 @@ public function resolve($name, RendererInterface $renderer = null) /** * Load the template map into memory */ - private function loadMap() + private function loadMap(): void { $this->map = $this->cache->getItem($this->cacheKey); diff --git a/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php b/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php index 0b36f22..ea1dffe 100644 --- a/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php +++ b/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php @@ -1,28 +1,11 @@ - * @license MIT */ interface ExceptionInterface { diff --git a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php b/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php index 8b566a3..438d009 100644 --- a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php +++ b/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php @@ -1,57 +1,26 @@ - * @license MIT */ final class InvalidResolverInstantiatorException extends InvalidArgumentException implements ExceptionInterface { - /** - * @param mixed $instantiator - * - * @return self - */ - public static function fromInvalidInstantiator($instantiator) : self - { - return new self(sprintf( - 'Invalid instantiator given, expected `callable`, `%s` given.', - is_object($instantiator) ? get_class($instantiator) : gettype($instantiator) - )); - } - - /** - * @param mixed $resolver - * - * @return self - */ - public static function fromInvalidResolver($resolver) : self + public static function fromInvalidResolver(mixed $resolver): self { return new self(sprintf( 'Invalid resolver found, expected `' . ResolverInterface::class . '`, `%s` given.', - is_object($resolver) ? get_class($resolver) : gettype($resolver) + is_object($resolver) ? $resolver::class : gettype($resolver) )); } } diff --git a/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php b/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php index 6fc352a..a9d8048 100644 --- a/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php +++ b/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php @@ -1,68 +1,35 @@ - * @license MIT */ final class LazyResolver implements ResolverInterface { - /** - * @var callable - */ - private $resolverInstantiator; + /** @var callable(): ResolverInterface $makeResolver */ + private $makeResolver; - /** - * @var ResolverInterface|null - */ - private $resolver; + private ?ResolverInterface $resolver = null; - public function __construct($resolverInstantiator) + /** @param callable(): ResolverInterface $makeResolver */ + public function __construct(callable $makeResolver) { - if (! is_callable($resolverInstantiator)) { - throw InvalidResolverInstantiatorException::fromInvalidInstantiator($resolverInstantiator); - } - - $this->resolverInstantiator = $resolverInstantiator; + $this->makeResolver = $makeResolver; } /** * {@inheritDoc} */ - public function resolve($name, RendererInterface $renderer = null) + public function resolve($name, ?RendererInterface $renderer = null) { if (! $this->resolver) { - $resolverInstantiator = $this->resolverInstantiator; - $resolver = $resolverInstantiator(); - - if (! $resolver instanceof ResolverInterface) { - throw InvalidResolverInstantiatorException::fromInvalidResolver($resolver); - } - - $this->resolver = $resolver; + $this->resolver = ($this->makeResolver)(); } return $this->resolver->resolve($name, $renderer); diff --git a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php index 467cb06..c509b27 100644 --- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php +++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php @@ -1,46 +1,26 @@ - * @license MIT - * * @group Functional * @coversNothing */ class TemplateMapCompilerFunctionalTest extends TestCase { - /** - * @var TemplateMapCompiler - */ - protected $compiler; + protected TemplateMapCompiler $compiler; - /** - * {@inheritDoc} - */ protected function setUp(): void { parent::setUp(); @@ -49,12 +29,12 @@ protected function setUp(): void } /** + * @throws InvalidArgumentException + * * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack - * - * @throws \Laminas\View\Exception\InvalidArgumentException */ - public function testCompileFromTemplatePathStack() + public function testCompileFromTemplatePathStack(): void { $resolver = new TemplatePathStack(); $resolver->addPath(__DIR__ . '/_files/subdir1'); @@ -76,12 +56,12 @@ public function testCompileFromTemplatePathStack() } /** + * @throws InvalidArgumentException + * * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack - * - * @throws \Laminas\View\Exception\InvalidArgumentException */ - public function testCompileFromTemplatePathStackWithDifferentPaths() + public function testCompileFromTemplatePathStackWithDifferentPaths(): void { $template2 = realpath(__DIR__ . '/_files/subdir1/template2.phtml'); $template4 = realpath(__DIR__ . '/_files/subdir1/valid/template4.phtml'); diff --git a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php index 9b773dc..6d52de8 100644 --- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php +++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php @@ -1,52 +1,31 @@ - * @license MIT - * * @group Coverage - * * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler */ class TemplateMapCompilerTest extends TestCase { - /** - * @var TemplateMapCompiler - */ - protected $compiler; - - /** - * {@inheritDoc} - */ + protected TemplateMapCompiler $compiler; + protected function setUp(): void { parent::setUp(); @@ -54,15 +33,15 @@ protected function setUp(): void $this->compiler = new TemplateMapCompiler(); } - public function testCompileFromUnknownResolverProducesEmptyMap() + public function testCompileFromUnknownResolverProducesEmptyMap(): void { - /* @var $resolver ResolverInterface */ $resolver = $this->createMock(ResolverInterface::class); + assert($resolver instanceof ResolverInterface); self::assertSame([], $this->compiler->compileMap($resolver)); } - public function testCompileFromMapResolver() + public function testCompileFromMapResolver(): void { $mapResolver = $this->createMock(TemplateMapResolver::class); $mapResolver @@ -76,10 +55,10 @@ public function testCompileFromMapResolver() self::assertSame('d', $map['c']); } - public function testCompileFromTemplatePathStack() + public function testCompileFromTemplatePathStack(): void { $templatePathStack = $this->createMock(TemplatePathStack::class); - $paths = $this->createMock(SplStack::class); + $paths = $this->createMock(SplStack::class); $paths ->method('toArray') ->will(self::returnValue([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1'])); @@ -89,7 +68,7 @@ public function testCompileFromTemplatePathStack() ->will(self::returnValue($paths)); $templatePathStack ->method('resolve') - ->willReturnCallback(function ($name) { + ->willReturnCallback(static function ($name) { $keys = [ 'template2' => __DIR__ . '/_files/subdir2/template2.phtml', 'template3' => false, @@ -112,10 +91,10 @@ public function testCompileFromTemplatePathStack() self::assertSame($template4, $map['valid/template4']); } - public function testCompileFromAggregateResolver() + public function testCompileFromAggregateResolver(): void { $aggregateResolver = $this->createMock(AggregateResolver::class); - $mapResolver1 = $this->createMock(TemplateMapResolver::class); + $mapResolver1 = $this->createMock(TemplateMapResolver::class); $mapResolver1 ->method('getMap') ->will(self::returnValue(['a' => 'a-value', 'b' => 'b-value'])); diff --git a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php index 8f86574..aa98914 100644 --- a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php +++ b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php @@ -1,42 +1,24 @@ - * @license MIT - * * @group Coverage - * * @covers \OcraCachedViewResolver\Factory\CacheFactory */ class CacheFactoryTest extends TestCase { - public function testCreateService() + public function testCreateService(): void { $locator = $this->createMock(ContainerInterface::class); diff --git a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php index 0307621..cb822bb 100644 --- a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php +++ b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php @@ -1,24 +1,13 @@ - * @license MIT - * * @group Coverage - * * @covers \OcraCachedViewResolver\Factory\CompiledMapResolverDelegatorFactory */ class CompiledMapResolverDelegatorFactoryTest extends TestCase { - /** - * @var ContainerInterface&MockObject - */ + /** @var ContainerInterface&MockObject */ private $locator; - /** - * @var callable&MockObject - */ + /** @var callable&MockObject */ private $callback; - /** - * @var StorageInterface&MockObject - */ + /** @var StorageInterface&MockObject */ private $cache; protected function setUp(): void @@ -82,7 +58,7 @@ protected function setUp(): void ])); } - public function testCreateServiceWithExistingCachedTemplateMap() + public function testCreateServiceWithExistingCachedTemplateMap(): void { $this ->cache @@ -106,7 +82,7 @@ public function testCreateServiceWithExistingCachedTemplateMap() self::assertSame('bar', $resolver->resolve('foo')); } - public function testCreateServiceWithEmptyCachedTemplateMap() + public function testCreateServiceWithEmptyCachedTemplateMap(): void { $realResolver = new TemplateMapResolver(['bar' => 'baz']); diff --git a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php index af6df32..57edd35 100644 --- a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php +++ b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php @@ -1,61 +1,39 @@ - * @license MIT - * * @group Functional - * * @coversNothing */ class ModuleFunctionalTest extends TestCase { - /** - * @var ServiceManager - */ - protected $serviceManager; + protected ServiceManager $serviceManager; - /** - * @var AggregateResolver&\Laminas\View\Resolver\ResolverInterface&MockObject; - */ + /** @var AggregateResolver&ResolverInterface&MockObject ; */ protected $originalResolver; - /** - * @var \Laminas\View\Resolver\ResolverInterface&MockObject; - */ + /** @var ResolverInterface&MockObject ; */ protected $fallbackResolver; /** @@ -88,8 +66,8 @@ protected function setUp(): void ] ); - /* @var $moduleManager \Laminas\ModuleManager\ModuleManager */ $moduleManager = $this->serviceManager->get('ModuleManager'); + assert($moduleManager instanceof ModuleManager); $moduleManager->loadModules(); $this->originalResolver = new AggregateResolver(); @@ -104,21 +82,21 @@ protected function setUp(): void $originalResolver = $this->originalResolver; $this->serviceManager->setFactory( 'ViewResolver', - function () use ($originalResolver) { + static function () use ($originalResolver) { return $originalResolver; } ); } - public function testDefinedServices() + public function testDefinedServices(): void { self::assertInstanceOf( StorageInterface::class, $this->serviceManager->get('OcraCachedViewResolver\\Cache\\ResolverCache') ); - /* @var $resolver \Laminas\View\Resolver\AggregateResolver */ $resolver = $this->serviceManager->get('ViewResolver'); + assert($resolver instanceof AggregateResolver); self::assertInstanceOf(AggregateResolver::class, $resolver); self::assertSame($resolver, $this->serviceManager->get('ViewResolver')); @@ -134,15 +112,15 @@ public function testDefinedServices() } } - public function testCachesResolvedTemplates() + public function testCachesResolvedTemplates(): void { - /* @var $cache \Laminas\Cache\Storage\StorageInterface */ $cache = $this->serviceManager->get('OcraCachedViewResolver\\Cache\\ResolverCache'); + assert($cache instanceof StorageInterface); self::assertFalse($cache->hasItem('testing_cache_key')); - /* @var $resolver AggregateResolver */ $resolver = $this->serviceManager->build('ViewResolver'); + assert($resolver instanceof AggregateResolver); self::assertFalse($cache->hasItem('testing_cache_key')); self::assertSame('b', $resolver->resolve('a')); @@ -151,11 +129,12 @@ public function testCachesResolvedTemplates() $this->serviceManager->build('ViewResolver'); } - public function testFallbackResolverCall() + public function testFallbackResolverCall(): void { - /* @var $resolver \Laminas\View\Resolver\TemplateMapResolver */ $resolver = $this->serviceManager->get('ViewResolver'); + self::assertInstanceOf(ResolverInterface::class, $resolver); + $this ->fallbackResolver ->expects(self::once()) diff --git a/tests/OcraCachedViewResolverTest/ModuleTest.php b/tests/OcraCachedViewResolverTest/ModuleTest.php index 3f5ba6d..8e898bc 100644 --- a/tests/OcraCachedViewResolverTest/ModuleTest.php +++ b/tests/OcraCachedViewResolverTest/ModuleTest.php @@ -1,42 +1,28 @@ - * @license MIT - * * @covers \OcraCachedViewResolver\Module */ class ModuleTest extends TestCase { - public function testConfigIsAnArray() + public function testConfigIsAnArray(): void { self::assertIsArray((new Module())->getConfig()); } - public function testConfigIsSerializable() + public function testConfigIsSerializable(): void { $module = new Module(); diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php index 87a94a3..3cacafb 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php @@ -1,73 +1,41 @@ - * @license MIT - * * @group Coverage - * * @covers \OcraCachedViewResolver\View\Resolver\CachingMapResolver */ class CachingMapResolverTest extends TestCase { - /** - * @var callable&MockObject - */ + /** @var callable&MockObject */ private $resolverInstantiator; - /** - * @var TemplateMapResolver&MockObject - */ + /** @var TemplateMapResolver&MockObject */ private $realResolver; - /** - * @var RendererInterface&MockObject - */ + /** @var RendererInterface&MockObject */ private $renderer; - /** - * @var StorageInterface&MockObject - */ + /** @var StorageInterface&MockObject */ private $cache; - /** - * @var string - */ - private $cacheKey = 'cache-key'; + private string $cacheKey = 'cache-key'; - /** - * @var CachingMapResolver - */ - private $cachingMapResolver; + private CachingMapResolver $cachingMapResolver; protected function setUp(): void { @@ -90,7 +58,7 @@ protected function setUp(): void ->will(self::returnValue(['view-name' => 'path/to/script'])); } - public function testResolverCacheIsPopulatedOnResolve() + public function testResolverCacheIsPopulatedOnResolve(): void { $this ->resolverInstantiator @@ -111,7 +79,7 @@ public function testResolverCacheIsPopulatedOnResolve() self::assertSame('path/to/script', $this->cachingMapResolver->resolve('view-name', $this->renderer)); } - public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache() + public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache(): void { $this ->resolverInstantiator @@ -134,7 +102,7 @@ public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache( self::assertFalse($this->cachingMapResolver->resolve('unknown-view-name', $this->renderer)); } - public function testResolvingWithNonEmptyCacheWillNotHitResolverInstantiatorOrWriteToCache() + public function testResolvingWithNonEmptyCacheWillNotHitResolverInstantiatorOrWriteToCache(): void { $this->resolverInstantiator->expects(self::never())->method('__invoke'); $this->cache->expects(self::never())->method('setItem'); @@ -154,7 +122,7 @@ public function testResolvingWithNonEmptyCacheWillNotHitResolverInstantiatorOrWr /** * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve */ - public function testResolveWithoutRenderer() + public function testResolveWithoutRenderer(): void { $this ->resolverInstantiator @@ -174,7 +142,7 @@ public function testResolveWithoutRenderer() /** * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve */ - public function testLazyResolverRefusesInvalidRealResolver() + public function testLazyResolverRefusesInvalidRealResolver(): void { $this ->resolverInstantiator diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php index 76183aa..e5f17fd 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php @@ -1,20 +1,6 @@ - * @license MIT - * * @covers \OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException * @covers \OcraCachedViewResolver\View\Resolver\Exception\ExceptionInterface */ class InvalidResolverInstantiatorExceptionTest extends TestCase { - public function testInstanceOfBaseExceptionInterface() + public function testInstanceOfBaseExceptionInterface(): void { self::assertInstanceOf( InvalidResolverInstantiatorException::class, @@ -40,29 +23,7 @@ public function testInstanceOfBaseExceptionInterface() ); } - public function testFromInvalidNullInstantiator() - { - $exception = InvalidResolverInstantiatorException::fromInvalidInstantiator(null); - - self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); - self::assertSame( - 'Invalid instantiator given, expected `callable`, `NULL` given.', - $exception->getMessage() - ); - } - - public function testFromInvalidObjectInstantiator() - { - $exception = InvalidResolverInstantiatorException::fromInvalidInstantiator($this); - - self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); - self::assertSame( - 'Invalid instantiator given, expected `callable`, `' . __CLASS__ . '` given.', - $exception->getMessage() - ); - } - - public function testFromInvalidNullResolver() + public function testFromInvalidNullResolver(): void { $exception = InvalidResolverInstantiatorException::fromInvalidResolver(null); @@ -73,13 +34,13 @@ public function testFromInvalidNullResolver() ); } - public function testFromInvalidObjectResolver() + public function testFromInvalidObjectResolver(): void { $exception = InvalidResolverInstantiatorException::fromInvalidResolver($this); self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); self::assertSame( - 'Invalid resolver found, expected `Laminas\View\Resolver\ResolverInterface`, `' . __CLASS__ . '` given.', + 'Invalid resolver found, expected `Laminas\View\Resolver\ResolverInterface`, `' . self::class . '` given.', $exception->getMessage() ); } diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php index 5b60c48..16f0571 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php @@ -1,62 +1,34 @@ - * @license MIT - * * @group Coverage - * * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver */ class LazyResolverTest extends TestCase { - /** - * @var callable&MockObject - */ + /** @var callable&MockObject */ private $resolverInstantiator; - /** - * @var \Laminas\View\Resolver\ResolverInterface&MockObject - */ + /** @var ResolverInterface&MockObject */ private $realResolver; - /** - * @var \Laminas\View\Renderer\RendererInterface&MockObject - */ + /** @var RendererInterface&MockObject */ private $renderer; - /** - * @var LazyResolver - */ - private $lazyResolver; + private LazyResolver $lazyResolver; protected function setUp(): void { @@ -68,7 +40,7 @@ protected function setUp(): void $this->lazyResolver = new LazyResolver($this->resolverInstantiator); } - public function testResolve() + public function testResolve(): void { $this ->resolverInstantiator @@ -85,7 +57,7 @@ public function testResolve() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); } - public function testResolveWithoutRenderer() + public function testResolveWithoutRenderer(): void { $this ->resolverInstantiator @@ -101,14 +73,14 @@ public function testResolveWithoutRenderer() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name')); } - public function testRealResolverNotCreatedIfNotNeeded() + public function testRealResolverNotCreatedIfNotNeeded(): void { $this->resolverInstantiator->expects(self::never())->method('__invoke'); new LazyResolver($this->resolverInstantiator); } - public function testResolveCausesRealResolverInstantiationOnlyOnce() + public function testResolveCausesRealResolverInstantiationOnlyOnce(): void { $this ->resolverInstantiator @@ -125,26 +97,4 @@ public function testResolveCausesRealResolverInstantiationOnlyOnce() self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); } - - public function testLazyResolverRefusesNonCallableInstantiator() - { - $this->expectException(InvalidResolverInstantiatorException::class); - - new LazyResolver($this); - } - - public function testLazyResolverRefusesInvalidRealResolver() - { - $this - ->resolverInstantiator - ->expects(self::once()) - ->method('__invoke') - ->will(self::returnValue(null)); - - $lazyResolver = new LazyResolver($this->resolverInstantiator); - - $this->expectException(InvalidResolverInstantiatorException::class); - - $lazyResolver->resolve('foo'); - } } diff --git a/tests/testing.config.php b/tests/testing.config.php index a34c0fa..dcc29a7 100644 --- a/tests/testing.config.php +++ b/tests/testing.config.php @@ -1,23 +1,9 @@ [ From ec13168d70f48805f8e0df76a3bc6f7a031655ee Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:55:01 +0200 Subject: [PATCH 10/15] Compliance with `vimeo/psalm` strict checks Interestingly, this also removes `InvalidResolverInstantiator` completely :D --- composer.lock | 3440 ++++++++++++----- phpcs.xml.dist | 2 + psalm.xml | 30 + .../Compiler/TemplateMapCompiler.php | 12 +- .../Factory/CacheFactory.php | 9 +- .../CompiledMapResolverDelegatorFactory.php | 25 +- src/OcraCachedViewResolver/Module.php | 8 + .../View/Resolver/CachingMapResolver.php | 20 +- .../Resolver/Exception/ExceptionInterface.php | 12 - .../InvalidResolverInstantiatorException.php | 26 - .../TemplateMapCompilerFunctionalTest.php | 13 - .../Compiler/TemplateMapCompilerTest.php | 16 +- ...ompiledMapResolverDelegatorFactoryTest.php | 20 +- .../ModuleFunctionalTest.php | 17 +- .../View/Resolver/CachingMapResolverTest.php | 46 +- ...validResolverInstantiatorExceptionTest.php | 47 - .../View/Resolver/LazyResolverTest.php | 27 +- 17 files changed, 2633 insertions(+), 1137 deletions(-) create mode 100644 psalm.xml delete mode 100644 src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php delete mode 100644 src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php delete mode 100644 tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php diff --git a/composer.lock b/composer.lock index 99f6720..698bc34 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": "b541404b26661add2210275395e00372", + "content-hash": "2b623507b040c004986a0d65f5dac40a", "packages": [ { "name": "brick/varexporter", @@ -2454,37 +2454,45 @@ ], "packages-dev": [ { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.1", + "name": "amphp/amp", + "version": "v2.6.0", "source": { "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + "url": "https://github.com/amphp/amp.git", + "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc", + "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + "php": ">=7.1" }, "require-dev": { - "composer/composer": "*", - "phpcompatibility/php-compatibility": "^9.0", - "sensiolabs/security-checker": "^4.1.0" + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" }, - "type": "composer-plugin", + "type": "library", "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + "branch-alias": { + "dev-master": "2.x-dev" + } }, "autoload": { "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } + "Amp\\": "lib" + }, + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2492,122 +2500,161 @@ ], "authors": [ { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "http://amphp.org/amp", "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" ], "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.0" }, - "time": "2020-12-07T18:04:37+00:00" + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-07-16T20:06:06+00:00" }, { - "name": "doctrine/coding-standard", - "version": "9.0.0", + "name": "amphp/byte-stream", + "version": "v1.8.1", "source": { "type": "git", - "url": "https://github.com/doctrine/coding-standard.git", - "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1" + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/35a2452c6025cb739c3244b3348bcd1604df07d1", - "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "slevomat/coding-standard": "^7.0.0", - "squizlabs/php_codesniffer": "^3.6.0" + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Amp\\ByteStream\\": "lib" + }, + "files": [ + "lib/functions.php" + ] }, - "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" }, { - "name": "Steve Müller", - "email": "st.mueller@dzh-online.de" + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", "keywords": [ - "checks", - "code", - "coding", - "cs", - "doctrine", - "rules", - "sniffer", - "sniffs", - "standard", - "style" + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" ], "support": { - "issues": "https://github.com/doctrine/coding-standard/issues", - "source": "https://github.com/doctrine/coding-standard/tree/9.0.0" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" }, - "time": "2021-04-12T15:11:14+00:00" + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-03-30T17:13:30+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.4", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "b174585d1fe49ceed21928a945138948cb394600" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", + "reference": "b174585d1fe49ceed21928a945138948cb394600", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" }, "require-dev": { - "doctrine/coding-standard": "^8.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "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" + } }, - "type": "library", "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", @@ -2617,157 +2664,736 @@ "authors": [ { "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", + "url": "https://packagist.com", "type": "custom" }, { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" + "url": "https://github.com/composer", + "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2021-09-13T08:41:34+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "composer/semver", + "version": "3.2.5", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/composer/semver.git", + "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", + "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.5" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "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": "2020-11-13T09:40:50+00:00" + "time": "2021-05-24T12:41:47+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.3", + "name": "composer/xdebug-handler", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" }, { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" + "url": "https://github.com/composer", + "type": "github" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" + "time": "2021-07-31T17:03:58+00:00" }, { - "name": "phar-io/version", - "version": "3.1.0", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.1", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", + "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "phpcompatibility/php-compatibility": "^9.0", + "sensiolabs/security-checker": "^4.1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2020-12-07T18:04:37+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/coding-standard", + "version": "9.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/coding-standard.git", + "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/coding-standard/zipball/35a2452c6025cb739c3244b3348bcd1604df07d1", + "reference": "35a2452c6025cb739c3244b3348bcd1604df07d1", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "slevomat/coding-standard": "^7.0.0", + "squizlabs/php_codesniffer": "^3.6.0" + }, + "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Steve Müller", + "email": "st.mueller@dzh-online.de" + } + ], + "description": "The Doctrine Coding Standard is a set of PHPCS rules applied to all Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/coding-standard.html", + "keywords": [ + "checks", + "code", + "coding", + "cs", + "doctrine", + "rules", + "sniffer", + "sniffs", + "standard", + "style" + ], + "support": { + "issues": "https://github.com/doctrine/coding-standard/issues", + "source": "https://github.com/doctrine/coding-standard/tree/9.0.0" + }, + "time": "2021-04-12T15:11:14+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^8.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.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%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" + }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" + }, + "time": "2021-06-11T22:34:44+00:00" + }, + { + "name": "felixfbecker/language-server-protocol", + "version": "1.5.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730", + "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "LanguageServerProtocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "support": { + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1" + }, + "time": "2021-02-22T14:02:09+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.10.2", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "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.10.2" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2020-11-13T09:40:50+00:00" + }, + { + "name": "netresearch/jsonmapper", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + }, + "time": "2020-12-01T19:48:11+00:00" + }, + { + "name": "openlss/lib-array2xml", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/nullivex/lib-array2xml.git", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "type": "library", + "autoload": { + "psr-0": { + "LSS": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Bryan Tong", + "email": "bryan@nullivex.com", + "homepage": "https://www.nullivex.com" + }, + { + "name": "Tony Butler", + "email": "spudz76@gmail.com", + "homepage": "https://www.nullivex.com" + } + ], + "description": "Array2XML conversion library credit to lalit.org", + "homepage": "https://www.nullivex.com", + "keywords": [ + "array", + "array conversion", + "xml", + "xml conversion" + ], + "support": { + "issues": "https://github.com/nullivex/lib-array2xml/issues", + "source": "https://github.com/nullivex/lib-array2xml/tree/master" + }, + "time": "2019-03-29T20:06:56+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", @@ -2775,14 +3401,489 @@ }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "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.1.0" + }, + "time": "2021-02-23T14:00:09+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.2.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@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/master" + }, + "time": "2020-09-03T19:13:55+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30f38bffc6f24293dadd1823936372dfa9e86e2f", + "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "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.5.0" + }, + "time": "2021-09-17T15:28:14+00:00" + }, + { + "name": "phpspec/prophecy", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/phpspec/prophecy.git", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.2", + "php": "^7.2 || ~8.0, <8.2", + "phpdocumentor/reflection-docblock": "^5.2", + "sebastian/comparator": "^3.0 || ^4.0", + "sebastian/recursion-context": "^3.0 || ^4.0" + }, + "require-dev": { + "phpspec/phpspec": "^6.0 || ^7.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Prophecy\\": "src/Prophecy" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" + } + ], + "description": "Highly opinionated mocking framework for PHP 5.3+", + "homepage": "https://github.com/phpspec/prophecy", + "keywords": [ + "Double", + "Dummy", + "fake", + "mock", + "spy", + "stub" + ], + "support": { + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + }, + "time": "2021-09-10T09:02:12+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.5.6", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fac86158ffc7392e49636f77e63684c026df43b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fac86158ffc7392e49636f77e63684c026df43b8", + "reference": "fac86158ffc7392e49636f77e63684c026df43b8", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12.87", + "phpstan/phpstan-strict-rules": "^0.12.5", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5-dev" + } + }, + "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/0.5.6" + }, + "time": "2021-08-31T08:08:22+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", + "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.12.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.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 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", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-09-17T05:39:03+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2794,114 +3895,275 @@ ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, + "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/3.1.1" + }, + "funding": [ { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Developer" + "role": "lead" } ], - "description": "Library for handling version information and constraints", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2021-02-23T14:00:09+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.9", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.3.1", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=7.3", + "phpspec/prophecy": "^1.12.1", + "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.5", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.3", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^2.3.4", + "sebastian/version": "^3.0.2" + }, + "require-dev": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" + "dev-master": "9.5-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" }, - "time": "2020-06-27T09:03:43+00:00" + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-08-31T06:47:40+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2910,227 +4172,215 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.5.0", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/30f38bffc6f24293dadd1823936372dfa9e86e2f", - "reference": "30f38bffc6f24293dadd1823936372dfa9e86e2f", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "php": ">=7.3" }, "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.5.0" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, - "time": "2021-09-17T15:28:14+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.14.0", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", - "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": ">=7.3" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.14.0" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, - "time": "2021-09-10T09:02:12+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" }, { - "name": "phpstan/phpdoc-parser", - "version": "0.5.6", + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fac86158ffc7392e49636f77e63684c026df43b8" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fac86158ffc7392e49636f77e63684c026df43b8", - "reference": "fac86158ffc7392e49636f77e63684c026df43b8", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=7.3" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.87", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.5-dev" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", + "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/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/0.5.6" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, - "time": "2021-08-31T08:08:22+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.7", + "name": "sebastian/comparator", + "version": "4.0.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.12.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3145,20 +4395,31 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "coverage", - "testing", - "xunit" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { @@ -3166,23 +4427,24 @@ "type": "github" } ], - "time": "2021-09-17T05:39:03+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { + "nikic/php-parser": "^4.7", "php": ">=7.3" }, "require-dev": { @@ -3191,7 +4453,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3210,15 +4472,11 @@ "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" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { @@ -3226,36 +4484,33 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "sebastian/diff", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3270,18 +4525,24 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "process" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -3289,20 +4550,20 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "sebastian/environment", + "version": "5.1.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { @@ -3311,10 +4572,13 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, + "suggest": { + "ext-posix": "*" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -3329,18 +4593,19 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "template" + "Xdebug", + "environment", + "hhvm" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" }, "funding": [ { @@ -3348,32 +4613,34 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2020-09-28T05:52:38+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "sebastian/exporter", + "version": "4.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { + "ext-mbstring": "*", "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3388,18 +4655,34 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "timer" + "export", + "exporter" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" }, "funding": [ { @@ -3407,75 +4690,43 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-09-28T05:24:23+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" + "name": "sebastian/global-state", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" + "ext-dom": "*", + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-uopz": "*" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "5.0-dev" } }, "autoload": { "classmap": [ "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3485,48 +4736,42 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "phpunit", - "testing", - "xunit" + "global state" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" }, "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2021-08-31T06:47:40+00:00" + "time": "2021-06-11T13:31:12+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { + "nikic/php-parser": "^4.6", "php": ">=7.3" }, "require-dev": { @@ -3554,11 +4799,11 @@ "role": "lead" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "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/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { @@ -3566,24 +4811,26 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "sebastian/object-enumerator", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -3591,7 +4838,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3606,15 +4853,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "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/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -3622,20 +4868,20 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { @@ -3665,11 +4911,11 @@ "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/", + "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/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -3677,26 +4923,24 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.6", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "php": ">=7.3" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -3726,24 +4970,15 @@ "email": "whatthejeff@gmail.com" }, { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { @@ -3751,33 +4986,32 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { - "name": "sebastian/complexity", - "version": "2.0.2", + "name": "sebastian/resource-operations", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3792,15 +5026,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -3808,33 +5041,32 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.4", + "name": "sebastian/type", + "version": "2.3.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -3849,24 +5081,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], + "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/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" }, "funding": [ { @@ -3874,35 +5097,29 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2021-06-15T12:49:02+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { "php": ">=7.3" }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3917,19 +5134,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "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/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { @@ -3937,698 +5150,894 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.3", + "name": "slevomat/coding-standard", + "version": "7.0.15", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", + "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "phpstan/phpdoc-parser": "0.5.1 - 0.5.6", + "squizlabs/php_codesniffer": "^3.6.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phing/phing": "2.17.0", + "php-parallel-lint/php-parallel-lint": "1.3.1", + "phpstan/phpstan": "0.12.98", + "phpstan/phpstan-deprecation-rules": "0.12.6", + "phpstan/phpstan-phpunit": "0.12.22", + "phpstan/phpstan-strict-rules": "0.12.11", + "phpunit/phpunit": "7.5.20|8.5.5|9.5.9" }, - "type": "library", + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "7.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } }, "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": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" + "MIT" ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/7.0.15" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/kukulich", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2021-09-09T10:29:09+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.3", + "name": "squizlabs/php_codesniffer", + "version": "3.6.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "src/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ - "global state" + "phpcs", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2021-04-09T00:54:41+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "symfony/console", + "version": "v5.3.7", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/symfony/console.git", + "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", + "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/symfony/console/tree/v5.3.7" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-11-28T06:42:11+00:00" + "time": "2021-08-25T20:02:16+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "symfony/deprecation-contracts", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "classmap": [ - "src/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:12:34+00:00" + "time": "2021-03-23T23:28:01+00:00" }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", + { + "name": "symfony/polyfill-ctype", + "version": "v1.23.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:14:26+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.23.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", + "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:17:30+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.23.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", + "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:45:17+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { - "name": "sebastian/type", - "version": "2.3.4", + "name": "symfony/polyfill-mbstring", + "version": "v1.23.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", + "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2021-06-15T12:49:02+00:00" + "time": "2021-05-27T12:26:48+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "symfony/polyfill-php73", + "version": "v1.23.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", + "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:39:44+00:00" + "time": "2021-02-19T12:13:01+00:00" }, { - "name": "slevomat/coding-standard", - "version": "7.0.15", + "name": "symfony/polyfill-php80", + "version": "v1.23.1", "source": { "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", - "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", + "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.5.1 - 0.5.6", - "squizlabs/php_codesniffer": "^3.6.0" - }, - "require-dev": { - "phing/phing": "2.17.0", - "php-parallel-lint/php-parallel-lint": "1.3.1", - "phpstan/phpstan": "0.12.98", - "phpstan/phpstan-deprecation-rules": "0.12.6", - "phpstan/phpstan-phpunit": "0.12.22", - "phpstan/phpstan-strict-rules": "0.12.11", - "phpunit/phpunit": "7.5.20|8.5.5|9.5.9" + "php": ">=7.1" }, - "type": "phpcodesniffer-standard", + "type": "library", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "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.", + "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": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.0.15" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" }, "funding": [ { - "url": "https://github.com/kukulich", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2021-09-09T10:29:09+00:00" + "time": "2021-07-28T13:41:28+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "name": "symfony/service-contracts", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=7.2.5", + "psr/container": "^1.1" }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "suggest": { + "symfony/service-implementation": "" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "phpcs", + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", "standards" ], "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" + "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" }, - "time": "2021-04-09T00:54:41+00:00" + "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": "2021-04-01T10:43:52+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/string", + "version": "v5.3.7", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/string.git", + "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", + "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Component\\String\\": "" }, "files": [ - "bootstrap.php" + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4637,24 +6046,26 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "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": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/string/tree/v5.3.7" }, "funding": [ { @@ -4670,7 +6081,7 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-08-26T08:00:08+00:00" }, { "name": "theseer/tokenizer", @@ -4722,6 +6133,111 @@ ], "time": "2021-07-28T10:34:58+00:00" }, + { + "name": "vimeo/psalm", + "version": "4.10.0", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/916b098b008f6de4543892b1e0651c1c3b92cbfa", + "reference": "916b098b008f6de4543892b1e0651c1c3b92cbfa", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer/package-versions-deprecated": "^1.8.0", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^1.1 || ^2.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.0.3", + "felixfbecker/language-server-protocol": "^1.5", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.12", + "openlss/lib-array2xml": "^1.0", + "php": "^7.1|^8", + "sebastian/diff": "^3.0 || ^4.0", + "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0", + "webmozart/path-util": "^2.3" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2", + "brianium/paratest": "^4.0||^6.0", + "ext-curl": "*", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpdocumentor/reflection-docblock": "^5", + "phpmyadmin/sql-parser": "5.1.0||dev-master", + "phpspec/prophecy": ">=1.9.0", + "phpunit/phpunit": "^9.0", + "psalm/plugin-phpunit": "^0.16", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.3 || ^5.0", + "weirdan/prophecy-shim": "^1.0 || ^2.0" + }, + "suggest": { + "ext-igbinary": "^2.0.5" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm/" + }, + "files": [ + "src/functions.php", + "src/spl_object_id.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php" + ], + "support": { + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm/tree/4.10.0" + }, + "time": "2021-09-04T21:00:09+00:00" + }, { "name": "webmozart/assert", "version": "1.10.0", @@ -4779,6 +6295,56 @@ "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, "time": "2021-03-09T10:59:23+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "support": { + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" + }, + "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 4750b41..d64a281 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -3,6 +3,8 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="vendor/squizlabs/php_codesniffer/phpcs.xsd" > + + diff --git a/psalm.xml b/psalm.xml new file mode 100644 index 0000000..4f11f42 --- /dev/null +++ b/psalm.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php index 038342e..3a992c0 100644 --- a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php +++ b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php @@ -16,6 +16,7 @@ use SplFileInfo; use function assert; +use function is_string; use function pathinfo; use function realpath; use function str_replace; @@ -63,6 +64,7 @@ protected function compileFromAggregateResolver(AggregateResolver $resolver): ar foreach ($resolver->getIterator() as $queuedResolver) { assert($queuedResolver instanceof ResolverInterface); + /** @psalm-var array $map */ $map = ArrayUtils::merge($this->compileMap($queuedResolver), $map); } @@ -79,7 +81,9 @@ protected function compileFromTemplatePathStack(TemplatePathStack $resolver): ar $map = []; foreach ($resolver->getPaths()->toArray() as $path) { - $path = realpath($path); + assert(is_string($path)); + $path = realpath($path); + /** @var iterable $iterator */ $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::LEAVES_ONLY @@ -93,7 +97,11 @@ protected function compileFromTemplatePathStack(TemplatePathStack $resolver): ar return $map; } - /** @psalm-return array */ + /** + * @psalm-return array + * + * @psalm-suppress MixedReturnTypeCoercion the {@see TemplateMapResolver} does not have refined type declarations + */ protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver): array { return $resolver->getMap(); diff --git a/src/OcraCachedViewResolver/Factory/CacheFactory.php b/src/OcraCachedViewResolver/Factory/CacheFactory.php index f8dd939..0d0e146 100644 --- a/src/OcraCachedViewResolver/Factory/CacheFactory.php +++ b/src/OcraCachedViewResolver/Factory/CacheFactory.php @@ -5,8 +5,6 @@ namespace OcraCachedViewResolver\Factory; use Interop\Container\ContainerInterface; -use Interop\Container\Exception\ContainerException; -use Interop\Container\Exception\NotFoundException; use Laminas\Cache\Exception\InvalidArgumentException; use Laminas\Cache\Storage\StorageInterface; use Laminas\Cache\StorageFactory; @@ -15,6 +13,10 @@ /** * Factory responsible of building a {@see \Laminas\Cache\Storage\StorageInterface} * for the resolver + * + * @see Module + * + * @psalm-import-type OcraCachedViewResolverConfiguration from Module */ final class CacheFactory { @@ -22,11 +24,10 @@ final class CacheFactory * {@inheritDoc} * * @throws InvalidArgumentException - * @throws ContainerException - * @throws NotFoundException */ public function __invoke(ContainerInterface $container): StorageInterface { + /** @psalm-var OcraCachedViewResolverConfiguration $config */ $config = $container->get('Config'); return StorageFactory::factory($config[Module::CONFIG][Module::CONFIG_CACHE_DEFINITION]); diff --git a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php index ffcf90b..e9ebc4f 100644 --- a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php +++ b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php @@ -5,8 +5,6 @@ namespace OcraCachedViewResolver\Factory; use Interop\Container\ContainerInterface; -use Interop\Container\Exception\ContainerException; -use Interop\Container\Exception\NotFoundException; use Laminas\Cache\Storage\StorageInterface; use Laminas\ServiceManager\Factory\DelegatorFactoryInterface; use Laminas\View\Resolver\AggregateResolver; @@ -20,29 +18,32 @@ /** * Factory responsible of building a {@see \Laminas\View\Resolver\TemplateMapResolver} * from cached template definitions + * + * @see Module + * + * @psalm-import-type OcraCachedViewResolverConfiguration from Module */ final class CompiledMapResolverDelegatorFactory implements DelegatorFactoryInterface { - /** - * {@inheritDoc} - * - * @return AggregateResolver - * - * @throws ContainerException - * @throws NotFoundException - */ + /** {@inheritDoc} */ public function __invoke( ContainerInterface $container, $name, callable $callback, ?array $options = null ): ResolverInterface { - $config = $container->get('Config')[Module::CONFIG]; - $cache = $container->get($config[Module::CONFIG_CACHE_SERVICE]); + /** @psalm-var OcraCachedViewResolverConfiguration $allConfig */ + $allConfig = $container->get('Config'); + $config = $allConfig[Module::CONFIG]; + $cache = $container->get($config[Module::CONFIG_CACHE_SERVICE]); assert($cache instanceof StorageInterface); $resolver = new AggregateResolver(); +//phpcs:disable SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration.MissingVariable +//phpcs:disable SlevomatCodingStandard.Commenting.InlineDocCommentDeclaration.NoAssignment + /** @var callable(): ResolverInterface $callback */ +//phpcs:enable $resolver->attach(new LazyResolver($callback), 50); $resolver->attach(new CachingMapResolver($cache, $config[Module::CONFIG_CACHE_KEY], $callback), 100); diff --git a/src/OcraCachedViewResolver/Module.php b/src/OcraCachedViewResolver/Module.php index 090bafc..86e381b 100644 --- a/src/OcraCachedViewResolver/Module.php +++ b/src/OcraCachedViewResolver/Module.php @@ -12,6 +12,14 @@ /** * OcraCachedViewResolver module + * + * @psalm-type OcraCachedViewResolverConfiguration = array{ + * ocra_cached_view_resolver: array{ + * cache: array, + * cached_template_map_key: non-empty-string, + * cache_service: non-empty-string, + * }, + * } */ final class Module implements ConfigProviderInterface { diff --git a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php index 95cf94c..cf0fc31 100644 --- a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php +++ b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php @@ -8,13 +8,12 @@ use Laminas\View\Renderer\RendererInterface; use Laminas\View\Resolver\ResolverInterface; use OcraCachedViewResolver\Compiler\TemplateMapCompiler; -use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; use function is_array; final class CachingMapResolver implements ResolverInterface { - /** @var callable */ + /** @var callable(): ResolverInterface */ private $realResolverInstantiator; private StorageInterface $cache; @@ -24,6 +23,7 @@ final class CachingMapResolver implements ResolverInterface /** @var array|null */ private ?array $map = null; + /** @param callable(): ResolverInterface $realResolverInstantiator */ public function __construct(StorageInterface $cache, string $cacheKey, callable $realResolverInstantiator) { $this->cache = $cache; @@ -54,20 +54,16 @@ public function resolve($name, ?RendererInterface $renderer = null) */ private function loadMap(): void { - $this->map = $this->cache->getItem($this->cacheKey); + /** @var array|false $map */ + $map = $this->cache->getItem($this->cacheKey); - if (is_array($this->map)) { - return; - } + if (is_array($map)) { + $this->map = $map; - $realResolverInstantiator = $this->realResolverInstantiator; - $realResolver = $realResolverInstantiator(); - - if (! $realResolver instanceof ResolverInterface) { - throw InvalidResolverInstantiatorException::fromInvalidResolver($realResolver); + return; } - $this->map = (new TemplateMapCompiler())->compileMap($realResolver); + $this->map = (new TemplateMapCompiler())->compileMap(($this->realResolverInstantiator)()); $this->cache->setItem($this->cacheKey, $this->map); } diff --git a/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php b/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php deleted file mode 100644 index ea1dffe..0000000 --- a/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php +++ /dev/null @@ -1,12 +0,0 @@ -compiler = new TemplateMapCompiler(); } - /** - * @throws InvalidArgumentException - * - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack - */ public function testCompileFromTemplatePathStack(): void { $resolver = new TemplatePathStack(); @@ -55,12 +48,6 @@ public function testCompileFromTemplatePathStack(): void ); } - /** - * @throws InvalidArgumentException - * - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap - * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack - */ public function testCompileFromTemplatePathStackWithDifferentPaths(): void { $template2 = realpath(__DIR__ . '/_files/subdir1/template2.phtml'); diff --git a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php index 6d52de8..e4459b8 100644 --- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php +++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php @@ -46,7 +46,7 @@ public function testCompileFromMapResolver(): void $mapResolver = $this->createMock(TemplateMapResolver::class); $mapResolver ->method('getMap') - ->will(self::returnValue(['a' => 'b', 'c' => 'd'])); + ->willReturn(['a' => 'b', 'c' => 'd']); $map = $this->compiler->compileMap($mapResolver); @@ -61,14 +61,14 @@ public function testCompileFromTemplatePathStack(): void $paths = $this->createMock(SplStack::class); $paths ->method('toArray') - ->will(self::returnValue([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1'])); + ->willReturn([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1']); $templatePathStack ->method('getPaths') - ->will(self::returnValue($paths)); + ->willReturn($paths); $templatePathStack ->method('resolve') - ->willReturnCallback(static function ($name) { + ->willReturnCallback(static function (string $name) { $keys = [ 'template2' => __DIR__ . '/_files/subdir2/template2.phtml', 'template3' => false, @@ -97,20 +97,20 @@ public function testCompileFromAggregateResolver(): void $mapResolver1 = $this->createMock(TemplateMapResolver::class); $mapResolver1 ->method('getMap') - ->will(self::returnValue(['a' => 'a-value', 'b' => 'b-value'])); + ->willReturn(['a' => 'a-value', 'b' => 'b-value']); $mapResolver2 = $this->createMock(TemplateMapResolver::class); $mapResolver2 ->method('getMap') - ->will(self::returnValue(['c' => 'c-value', 'd' => 'd-value'])); + ->willReturn(['c' => 'c-value', 'd' => 'd-value']); $mapResolver3 = $this->createMock(TemplateMapResolver::class); $mapResolver3 ->method('getMap') - ->will(self::returnValue(['a' => 'override-a-value', 'd' => 'override-d-value', 'e' => 'e-value'])); + ->willReturn(['a' => 'override-a-value', 'd' => 'override-d-value', 'e' => 'e-value']); $iterator = new ArrayIterator([$mapResolver1, $mapResolver2, $mapResolver3]); $aggregateResolver ->method('getIterator') - ->will(self::returnValue($iterator)); + ->willReturn($iterator); $map = $this->compiler->compileMap($aggregateResolver); diff --git a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php index cb822bb..fc1c58f 100644 --- a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php +++ b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php @@ -7,6 +7,7 @@ use Interop\Container\ContainerInterface; use Laminas\Cache\Storage\StorageInterface; use Laminas\View\Resolver\AggregateResolver; +use Laminas\View\Resolver\ResolverInterface; use Laminas\View\Resolver\TemplateMapResolver; use OcraCachedViewResolver\Factory\CompiledMapResolverDelegatorFactory; use OcraCachedViewResolver\Module; @@ -27,8 +28,7 @@ class CompiledMapResolverDelegatorFactoryTest extends TestCase /** @var ContainerInterface&MockObject */ private $locator; - /** @var callable&MockObject */ - private $callback; + private MockObject $callback; /** @var StorageInterface&MockObject */ private $cache; @@ -38,7 +38,7 @@ protected function setUp(): void parent::setUp(); $this->locator = $this->createMock(ContainerInterface::class); - $this->callback = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); + $this->callback = $this->getMockBuilder(stdClass::class)->addMethods(['__invoke'])->getMock(); $this->cache = $this->createMock(StorageInterface::class); $this->locator->method('get')->will(self::returnValueMap([ @@ -65,12 +65,14 @@ public function testCreateServiceWithExistingCachedTemplateMap(): void ->expects(self::once()) ->method('getItem') ->with('key-name') - ->will(self::returnValue(['foo' => 'bar'])); + ->willReturn(['foo' => 'bar']); $this->callback->expects(self::never())->method('__invoke'); + /** @var callable(): ResolverInterface $callback */ + $callback = $this->callback; $factory = new CompiledMapResolverDelegatorFactory(); - $resolver = $factory->__invoke($this->locator, 'resolver', $this->callback); + $resolver = $factory->__invoke($this->locator, 'resolver', $callback); self::assertInstanceOf(AggregateResolver::class, $resolver); @@ -86,12 +88,14 @@ public function testCreateServiceWithEmptyCachedTemplateMap(): void { $realResolver = new TemplateMapResolver(['bar' => 'baz']); - $this->cache->expects(self::once())->method('getItem')->with('key-name')->will(self::returnValue(null)); + $this->cache->expects(self::once())->method('getItem')->with('key-name')->willReturn(null); $this->cache->expects(self::once())->method('setItem')->with('key-name', ['bar' => 'baz']); - $this->callback->expects(self::once())->method('__invoke')->will(self::returnValue($realResolver)); + $this->callback->expects(self::once())->method('__invoke')->willReturn($realResolver); + /** @var callable(): ResolverInterface $callback */ + $callback = $this->callback; $factory = new CompiledMapResolverDelegatorFactory(); - $resolver = $factory->__invoke($this->locator, 'resolver', $this->callback); + $resolver = $factory->__invoke($this->locator, 'resolver', $callback); self::assertInstanceOf(AggregateResolver::class, $resolver); diff --git a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php index 57edd35..de422b8 100644 --- a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php +++ b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php @@ -4,8 +4,6 @@ namespace OcraCachedViewResolverTest; -use Interop\Container\Exception\ContainerException; -use Interop\Container\Exception\NotFoundException; use Laminas\Cache\Storage\StorageInterface; use Laminas\ModuleManager\ModuleManager; use Laminas\Mvc\Service\ServiceManagerConfig; @@ -30,18 +28,12 @@ class ModuleFunctionalTest extends TestCase { protected ServiceManager $serviceManager; - /** @var AggregateResolver&ResolverInterface&MockObject ; */ - protected $originalResolver; + /** @var AggregateResolver ; */ + protected AggregateResolver $originalResolver; /** @var ResolverInterface&MockObject ; */ protected $fallbackResolver; - /** - * {@inheritDoc} - * - * @throws ContainerException - * @throws NotFoundException - */ protected function setUp(): void { parent::setUp(); @@ -74,7 +66,7 @@ protected function setUp(): void $mapResolver = $this->createMock(TemplateMapResolver::class); $this->fallbackResolver = $this->createMock(ResolverInterface::class); - $mapResolver->expects(self::any())->method('getMap')->will(self::returnValue(['a' => 'b'])); + $mapResolver->method('getMap')->willReturn(['a' => 'b']); $this->originalResolver->attach($mapResolver, 10); $this->originalResolver->attach($this->fallbackResolver, 5); @@ -102,6 +94,7 @@ public function testDefinedServices(): void self::assertSame($resolver, $this->serviceManager->get('ViewResolver')); foreach ($resolver->getIterator() as $previousResolver) { + assert($previousResolver instanceof ResolverInterface); self::assertThat( $previousResolver, self::logicalOr( @@ -140,7 +133,7 @@ public function testFallbackResolverCall(): void ->expects(self::once()) ->method('resolve') ->with('fallback.phtml') - ->will(self::returnValue('fallback-path.phtml')); + ->willReturn('fallback-path.phtml'); self::assertSame('fallback-path.phtml', $resolver->resolve('fallback.phtml')); } diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php index 3cacafb..22d0bc7 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php @@ -6,9 +6,9 @@ use Laminas\Cache\Storage\StorageInterface; use Laminas\View\Renderer\RendererInterface; +use Laminas\View\Resolver\ResolverInterface; use Laminas\View\Resolver\TemplateMapResolver; use OcraCachedViewResolver\View\Resolver\CachingMapResolver; -use OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use stdClass; @@ -21,8 +21,7 @@ */ class CachingMapResolverTest extends TestCase { - /** @var callable&MockObject */ - private $resolverInstantiator; + private MockObject $resolverInstantiator; /** @var TemplateMapResolver&MockObject */ private $realResolver; @@ -41,21 +40,23 @@ protected function setUp(): void { parent::setUp(); - $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); + $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->addMethods(['__invoke'])->getMock(); $this->realResolver = $this->createMock(TemplateMapResolver::class); $this->renderer = $this->createMock(RendererInterface::class); $this->cache = $this->createMock(StorageInterface::class); - $this->cachingMapResolver = new CachingMapResolver( + /** @psalm-var callable(): ResolverInterface $resolverInstantiator */ + $resolverInstantiator = $this->resolverInstantiator; + $this->cachingMapResolver = new CachingMapResolver( $this->cache, $this->cacheKey, - $this->resolverInstantiator + $resolverInstantiator ); $this ->realResolver ->expects(self::any()) ->method('getMap') - ->will(self::returnValue(['view-name' => 'path/to/script'])); + ->willReturn(['view-name' => 'path/to/script']); } public function testResolverCacheIsPopulatedOnResolve(): void @@ -64,7 +65,7 @@ public function testResolverCacheIsPopulatedOnResolve(): void ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->cache ->expects(self::once()) @@ -85,7 +86,7 @@ public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache( ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->cache ->expects(self::once()) @@ -112,48 +113,27 @@ public function testResolvingWithNonEmptyCacheWillNotHitResolverInstantiatorOrWr ->expects(self::once()) ->method('getItem') ->with($this->cacheKey) - ->will(self::returnValue(['view-name' => 'path/to/cached/script'])); + ->willReturn(['view-name' => 'path/to/cached/script']); self::assertSame('path/to/cached/script', $this->cachingMapResolver->resolve('view-name', $this->renderer)); self::assertSame('path/to/cached/script', $this->cachingMapResolver->resolve('view-name', $this->renderer)); self::assertFalse($this->cachingMapResolver->resolve('unknown-view-name', $this->renderer)); } - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ public function testResolveWithoutRenderer(): void { $this ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->realResolver ->expects(self::any()) ->method('resolve') ->with('view-name', null) - ->will(self::returnValue('path/to/script')); + ->willReturn('path/to/script'); self::assertSame('path/to/script', $this->cachingMapResolver->resolve('view-name')); } - - /** - * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve - */ - public function testLazyResolverRefusesInvalidRealResolver(): void - { - $this - ->resolverInstantiator - ->expects(self::once()) - ->method('__invoke') - ->will(self::returnValue(null)); - - $cachingMapResolver = new CachingMapResolver($this->cache, $this->cacheKey, $this->resolverInstantiator); - - $this->expectException(InvalidResolverInstantiatorException::class); - - $cachingMapResolver->resolve('foo'); - } } diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php deleted file mode 100644 index e5f17fd..0000000 --- a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php +++ /dev/null @@ -1,47 +0,0 @@ -getMessage() - ); - } - - public function testFromInvalidObjectResolver(): void - { - $exception = InvalidResolverInstantiatorException::fromInvalidResolver($this); - - self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception); - self::assertSame( - 'Invalid resolver found, expected `Laminas\View\Resolver\ResolverInterface`, `' . self::class . '` given.', - $exception->getMessage() - ); - } -} diff --git a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php index 16f0571..c804e7f 100644 --- a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php +++ b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php @@ -19,8 +19,7 @@ */ class LazyResolverTest extends TestCase { - /** @var callable&MockObject */ - private $resolverInstantiator; + private MockObject $resolverInstantiator; /** @var ResolverInterface&MockObject */ private $realResolver; @@ -34,10 +33,13 @@ protected function setUp(): void { parent::setUp(); - $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock(); + $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->addMethods(['__invoke'])->getMock(); $this->realResolver = $this->createMock(ResolverInterface::class); $this->renderer = $this->createMock(RendererInterface::class); - $this->lazyResolver = new LazyResolver($this->resolverInstantiator); + /** @psalm-var callable(): ResolverInterface $resolverInstantiator */ + $resolverInstantiator = $this->resolverInstantiator; + + $this->lazyResolver = new LazyResolver($resolverInstantiator); } public function testResolve(): void @@ -46,13 +48,13 @@ public function testResolve(): void ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->realResolver ->expects(self::any()) ->method('resolve') ->with('view-name', $this->renderer) - ->will(self::returnValue('path/to/script')); + ->willReturn('path/to/script'); self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); } @@ -63,12 +65,12 @@ public function testResolveWithoutRenderer(): void ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->realResolver ->method('resolve') ->with('view-name', null) - ->will(self::returnValue('path/to/script')); + ->willReturn('path/to/script'); self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name')); } @@ -77,7 +79,10 @@ public function testRealResolverNotCreatedIfNotNeeded(): void { $this->resolverInstantiator->expects(self::never())->method('__invoke'); - new LazyResolver($this->resolverInstantiator); + /** @psalm-var callable(): ResolverInterface $resolverInstantiator */ + $resolverInstantiator = $this->resolverInstantiator; + + new LazyResolver($resolverInstantiator); } public function testResolveCausesRealResolverInstantiationOnlyOnce(): void @@ -86,13 +91,13 @@ public function testResolveCausesRealResolverInstantiationOnlyOnce(): void ->resolverInstantiator ->expects(self::once()) ->method('__invoke') - ->will(self::returnValue($this->realResolver)); + ->willReturn($this->realResolver); $this ->realResolver ->expects(self::exactly(2)) ->method('resolve') ->with('view-name', $this->renderer) - ->will(self::returnValue('path/to/script')); + ->willReturn('path/to/script'); self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer)); From f2d4986a1e7e1732fd37c8466ccdd30fc9d19ac6 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:55:44 +0200 Subject: [PATCH 11/15] Removed `config.platform` composer setting --- composer.json | 5 ----- composer.lock | 5 +---- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 62bfb88..b614fd6 100644 --- a/composer.json +++ b/composer.json @@ -44,10 +44,5 @@ "branch-alias": { "dev-master": "4.1.x-dev" } - }, - "config": { - "platform": { - "php": "7.4.99" - } } } diff --git a/composer.lock b/composer.lock index 698bc34..e73e5c6 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": "2b623507b040c004986a0d65f5dac40a", + "content-hash": "a7cebe78b19e654827af3a84452bd6cf", "packages": [ { "name": "brick/varexporter", @@ -6356,8 +6356,5 @@ "php": "^7.4.7 || ~8.0.0 || ~8.0.1" }, "platform-dev": [], - "platform-overrides": { - "php": "7.4.99" - }, "plugin-api-version": "2.1.0" } From b54cc7aafe6d6e2a9fa22b9915fe855dd883bf71 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:58:09 +0200 Subject: [PATCH 12/15] Attempt PHP `8.1.0` support --- composer.json | 2 +- composer.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index b614fd6..b6f3b60 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ } ], "require": { - "php": "^7.4.7 || ~8.0.0 || ~8.0.1", + "php": "^7.4.7 || ~8.0.0 || ~8.1.0", "laminas/laminas-servicemanager": "^3.10.0", "laminas/laminas-mvc": "^3.2.0", "laminas/laminas-modulemanager": "^2.10.2", diff --git a/composer.lock b/composer.lock index e73e5c6..0196588 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": "a7cebe78b19e654827af3a84452bd6cf", + "content-hash": "304eb1d8987825fc8d5ddb6bfc25597d", "packages": [ { "name": "brick/varexporter", @@ -6353,7 +6353,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.4.7 || ~8.0.0 || ~8.0.1" + "php": "^7.4.7 || ~8.0.0 || ~8.1.0" }, "platform-dev": [], "plugin-api-version": "2.1.0" From afcf98a7d3b4d9efe0443120ac4aee906f56804b Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 07:58:57 +0200 Subject: [PATCH 13/15] Removed versioneye badge (discontinued service) --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ee481d2..2f9b480 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,9 @@ in your application by caching the process of resolving template names to templa In [`laminas/laminas-mvc-skeleton`](https://github.com/laminas/laminas-mvc-skeleton), the process of resolving template paths causes a lot of stat calls (disk access). This module adds a cache layer to avoid that. -| Releases | Downloads | Dependencies | -| -------- | ------- | ------------- | -| [![Latest Stable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/stable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) [![Latest Unstable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/unstable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Total Downloads](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/downloads.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Dependency Status](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver/badge.png)](https://www.versioneye.com/package/php--ocramius--ocra-cached-view-resolver) | +| Releases | Downloads | +| -------- | ------- | +| [![Latest Stable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/stable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) [![Latest Unstable Version](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/v/unstable.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | [![Total Downloads](https://poser.pugx.org/ocramius/ocra-cached-view-resolver/downloads.png)](https://packagist.org/packages/ocramius/ocra-cached-view-resolver) | ## Installation From e29957edf58c1b1673e4d7a35f3883575fb45bb2 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 08:00:44 +0200 Subject: [PATCH 14/15] Ignore platform requirements when testing PHP 8.1 (for now) --- .laminas-ci.json | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .laminas-ci.json diff --git a/.laminas-ci.json b/.laminas-ci.json new file mode 100644 index 0000000..2251e2e --- /dev/null +++ b/.laminas-ci.json @@ -0,0 +1,5 @@ +{ + "ignore_php_platform_requirements": { + "8.1": true + } +} From 6af740fd417189b1fb11245bd57782ffb3bf3805 Mon Sep 17 00:00:00 2001 From: Marco Pivetta Date: Sun, 19 Sep 2021 08:02:54 +0200 Subject: [PATCH 15/15] Removed PHP 8.1 support for now: bullshit deprecation warnings make it unusable Fuck that, ain't nobody got time for it. Will get back to it when/if it's usable. --- .laminas-ci.json | 5 ----- composer.json | 2 +- composer.lock | 4 ++-- 3 files changed, 3 insertions(+), 8 deletions(-) delete mode 100644 .laminas-ci.json diff --git a/.laminas-ci.json b/.laminas-ci.json deleted file mode 100644 index 2251e2e..0000000 --- a/.laminas-ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ignore_php_platform_requirements": { - "8.1": true - } -} diff --git a/composer.json b/composer.json index b6f3b60..7080684 100644 --- a/composer.json +++ b/composer.json @@ -18,7 +18,7 @@ } ], "require": { - "php": "^7.4.7 || ~8.0.0 || ~8.1.0", + "php": "^7.4.7 || ~8.0.0", "laminas/laminas-servicemanager": "^3.10.0", "laminas/laminas-mvc": "^3.2.0", "laminas/laminas-modulemanager": "^2.10.2", diff --git a/composer.lock b/composer.lock index 0196588..bce9776 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": "304eb1d8987825fc8d5ddb6bfc25597d", + "content-hash": "56045d797fd1dac7226497c2a9df9f68", "packages": [ { "name": "brick/varexporter", @@ -6353,7 +6353,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.4.7 || ~8.0.0 || ~8.1.0" + "php": "^7.4.7 || ~8.0.0" }, "platform-dev": [], "plugin-api-version": "2.1.0"