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]
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/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 }}
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
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 }}
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/.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..2f9b480 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 |
+| -------- | ------- |
+| [![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
@@ -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.
diff --git a/composer.json b/composer.json
index b9acc20..7080684 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",
+ "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": {
diff --git a/composer.lock b/composer.lock
new file mode 100644
index 0000000..bce9776
--- /dev/null
+++ b/composer.lock
@@ -0,0 +1,6360 @@
+{
+ "_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": "56045d797fd1dac7226497c2a9df9f68",
+ "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": "amphp/amp",
+ "version": "v2.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
+ "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "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": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Amp\\": "lib"
+ },
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "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": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "http://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-16T20:06:06+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "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"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "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"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T08:41:34+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9",
+ "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.54",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.2.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-24T12:41:47+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.55",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-31T17:03:58+00:00"
+ },
+ {
+ "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",
+ "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": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
+ },
+ {
+ "name": "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/console",
+ "version": "v5.3.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a",
+ "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a",
+ "shasum": ""
+ },
+ "require": {
+ "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": {
+ "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"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.3.7"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-08-25T20:02:16+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.4-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-03-23T23:28:01+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": "symfony/polyfill-intl-grapheme",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "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\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "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\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.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": "symfony/polyfill-mbstring",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "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\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "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\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.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": "symfony/polyfill-php80",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "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\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-28T13:41:28+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+ "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.1"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "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": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-04-01T10:43:52+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.3.7",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5",
+ "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5",
+ "shasum": ""
+ },
+ "require": {
+ "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"
+ },
+ "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",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.3.7"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-08-26T08:00:08+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": "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",
+ "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"
+ },
+ {
+ "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": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.4.7 || ~8.0.0"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.1.0"
+}
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
new file mode 100644
index 0000000..d64a281
--- /dev/null
+++ b/phpcs.xml.dist
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ src
+ tests
+ tests/OcraCachedViewResolverTest/Compiler/_files/*
+
+
+
+
+
+
+
+
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
-
-
+
+
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 f43ecf0..3a992c0 100644
--- a/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php
+++ b/src/OcraCachedViewResolver/Compiler/TemplateMapCompiler.php
@@ -1,41 +1,34 @@
- * @license MIT
+ * an {@see \Laminas\View\Resolver\TemplateMapResolver}, a
+ * {@see \Laminas\View\Resolver\TemplatePathStack} or a
+ * {@see \Laminas\View\Resolver\AggregateResolver}
*/
class TemplateMapCompiler
{
@@ -43,13 +36,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 \Zend\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 +57,14 @@ 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);
+ /** @psalm-var array $map */
$map = ArrayUtils::merge($this->compileMap($queuedResolver), $map);
}
@@ -79,32 +72,37 @@ protected function compileFromAggregateResolver(AggregateResolver $resolver) : a
}
/**
- * @param TemplatePathStack $resolver
- *
- * @return array
+ * @return array
*
- * @throws \Zend\View\Exception\DomainException
+ * @throws DomainException
*/
- protected function compileFromTemplatePathStack(TemplatePathStack $resolver) : array
+ protected function compileFromTemplatePathStack(TemplatePathStack $resolver): array
{
$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
);
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
+ *
+ * @psalm-suppress MixedReturnTypeCoercion the {@see TemplateMapResolver} does not have refined type declarations
+ */
+ protected function compileFromTemplateMapResolver(TemplateMapResolver $resolver): array
{
return $resolver->getMap();
}
@@ -112,24 +110,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 \Zend\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) {
+ return $map;
+ }
+
+ $resolvedPath = $resolver->resolve($templateName);
- if ($fileName && ($resolvedPath = $resolver->resolve($templateName))) {
- $map[$templateName] = realpath($resolvedPath);
+ 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 dcfc0bf..0d0e146 100644
--- a/src/OcraCachedViewResolver/Factory/CacheFactory.php
+++ b/src/OcraCachedViewResolver/Factory/CacheFactory.php
@@ -1,37 +1,22 @@
- * @license MIT
+ * @see Module
+ *
+ * @psalm-import-type OcraCachedViewResolverConfiguration from Module
*/
final class CacheFactory
{
@@ -39,11 +24,10 @@ final class CacheFactory
* {@inheritDoc}
*
* @throws InvalidArgumentException
- * @throws ContainerException
- * @throws NotFoundException
*/
- public function __invoke(ContainerInterface $container) : StorageInterface
+ 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 be89fa2..e9ebc4f 100644
--- a/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php
+++ b/src/OcraCachedViewResolver/Factory/CompiledMapResolverDelegatorFactory.php
@@ -1,62 +1,49 @@
- * @license MIT
+ * @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];
- /* @var $cache \Zend\Cache\Storage\StorageInterface */
- $cache = $container->get($config[Module::CONFIG_CACHE_SERVICE]);
+ ?array $options = null
+ ): ResolverInterface {
+ /** @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 ce76324..86e381b 100644
--- a/src/OcraCachedViewResolver/Module.php
+++ b/src/OcraCachedViewResolver/Module.php
@@ -1,62 +1,53 @@
- * @license MIT
+ * @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
{
/**
* 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 \Zend\Cache\StorageFactory}
+ * 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 f8bbad2..cf0fc31 100644
--- a/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php
+++ b/src/OcraCachedViewResolver/View/Resolver/CachingMapResolver.php
@@ -1,79 +1,46 @@
- * @license MIT
- */
+
+use function is_array;
+
final class CachingMapResolver implements ResolverInterface
{
- /**
- * @var callable
- */
+ /** @var callable(): ResolverInterface */
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)
+ /** @param callable(): ResolverInterface $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,22 +52,18 @@ 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);
+ /** @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 0b36f22..0000000
--- a/src/OcraCachedViewResolver/View/Resolver/Exception/ExceptionInterface.php
+++ /dev/null
@@ -1,29 +0,0 @@
-
- * @license MIT
- */
-interface ExceptionInterface
-{
-}
diff --git a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php b/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php
deleted file mode 100644
index 0bc49fa..0000000
--- a/src/OcraCachedViewResolver/View/Resolver/Exception/InvalidResolverInstantiatorException.php
+++ /dev/null
@@ -1,57 +0,0 @@
-
- * @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
- {
- return new self(sprintf(
- 'Invalid resolver found, expected `' . ResolverInterface::class . '`, `%s` given.',
- is_object($resolver) ? get_class($resolver) : gettype($resolver)
- ));
- }
-}
diff --git a/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php b/src/OcraCachedViewResolver/View/Resolver/LazyResolver.php
index d532323..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 4fa3bbf..edc05b8 100644
--- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php
+++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerFunctionalTest.php
@@ -1,60 +1,33 @@
- * @license MIT
- *
* @group Functional
* @coversNothing
*/
class TemplateMapCompilerFunctionalTest extends TestCase
{
- /**
- * @var TemplateMapCompiler
- */
- protected $compiler;
-
- /**
- * {@inheritDoc}
- */
- public function setUp()
+ protected TemplateMapCompiler $compiler;
+
+ protected function setUp(): void
{
parent::setUp();
$this->compiler = new TemplateMapCompiler();
}
- /**
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack
- *
- * @throws \Zend\View\Exception\InvalidArgumentException
- */
- public function testCompileFromTemplatePathStack()
+ public function testCompileFromTemplatePathStack(): void
{
$resolver = new TemplatePathStack();
$resolver->addPath(__DIR__ . '/_files/subdir1');
@@ -63,8 +36,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(
[
@@ -75,19 +48,13 @@ public function testCompileFromTemplatePathStack()
);
}
- /**
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplatePathStack
- *
- * @throws \Zend\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');
- 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..e4459b8 100644
--- a/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php
+++ b/tests/OcraCachedViewResolverTest/Compiler/TemplateMapCompilerTest.php
@@ -1,87 +1,52 @@
- * @license MIT
- *
* @group Coverage
- *
* @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler
*/
class TemplateMapCompilerTest extends TestCase
{
- /**
- * @var TemplateMapCompiler
- */
- protected $compiler;
-
- /**
- * {@inheritDoc}
- */
- public function setUp()
+ protected TemplateMapCompiler $compiler;
+
+ protected function setUp(): void
{
parent::setUp();
$this->compiler = new TemplateMapCompiler();
}
- /**
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap
- *
- * @throws \PHPUnit_Framework_Exception
- */
- 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));
}
- /**
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileMap
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::compileFromTemplateMapResolver
- * @covers \OcraCachedViewResolver\Compiler\TemplateMapCompiler::addResolvedPath
- *
- * @throws \PHPUnit_Framework_Exception
- */
- public function testCompileFromMapResolver()
+ public function testCompileFromMapResolver(): void
{
- /* @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']));
+ ->willReturn(['a' => 'b', 'c' => 'd']);
$map = $this->compiler->compileMap($mapResolver);
@@ -90,31 +55,20 @@ 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()
+ public function testCompileFromTemplatePathStack(): void
{
- /* @var $templatePathStack TemplatePathStack|\PHPUnit_Framework_MockObject_MockObject */
$templatePathStack = $this->createMock(TemplatePathStack::class);
- $paths = $this->createMock(SplStack::class);
+ $paths = $this->createMock(SplStack::class);
$paths
- ->expects(self::any())
->method('toArray')
- ->will(self::returnValue([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1']));
+ ->willReturn([__DIR__ . '/_files/subdir2', __DIR__ . '/_files/subdir1']);
$templatePathStack
- ->expects(self::any())
->method('getPaths')
- ->will(self::returnValue($paths));
+ ->willReturn($paths);
$templatePathStack
- ->expects(self::any())
->method('resolve')
- ->willReturnCallback(function ($name) {
+ ->willReturnCallback(static function (string $name) {
$keys = [
'template2' => __DIR__ . '/_files/subdir2/template2.phtml',
'template3' => false,
@@ -130,48 +84,33 @@ 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()
+ public function testCompileFromAggregateResolver(): void
{
- /* @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 = $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 */
+ ->willReturn(['a' => 'a-value', 'b' => 'b-value']);
$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 */
+ ->willReturn(['c' => 'c-value', 'd' => 'd-value']);
$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']));
+ ->willReturn(['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));
+ ->willReturn($iterator);
$map = $this->compiler->compileMap($aggregateResolver);
diff --git a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php
index 8d00602..aa98914 100644
--- a/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php
+++ b/tests/OcraCachedViewResolverTest/Factory/CacheFactoryTest.php
@@ -1,47 +1,28 @@
- * @license MIT
- *
* @group Coverage
- *
* @covers \OcraCachedViewResolver\Factory\CacheFactory
*/
class CacheFactoryTest extends TestCase
{
- public function testCreateService()
+ public function testCreateService(): void
{
- /* @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..fc1c58f 100644
--- a/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php
+++ b/tests/OcraCachedViewResolverTest/Factory/CompiledMapResolverDelegatorFactoryTest.php
@@ -1,73 +1,47 @@
- * @license MIT
- *
* @group Coverage
- *
* @covers \OcraCachedViewResolver\Factory\CompiledMapResolverDelegatorFactory
*/
class CompiledMapResolverDelegatorFactoryTest extends TestCase
{
- /**
- * @var ContainerInterface|\PHPUnit_Framework_MockObject_MockObject
- */
+ /** @var ContainerInterface&MockObject */
private $locator;
- /**
- * @var callable|\PHPUnit_Framework_MockObject_MockObject
- */
- private $callback;
+ private MockObject $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->callback = $this->getMockBuilder(stdClass::class)->addMethods(['__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',
[
@@ -84,19 +58,21 @@ protected function setUp()
]));
}
- public function testCreateServiceWithExistingCachedTemplateMap()
+ public function testCreateServiceWithExistingCachedTemplateMap(): void
{
$this
->cache
->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);
@@ -108,16 +84,18 @@ public function testCreateServiceWithExistingCachedTemplateMap()
self::assertSame('bar', $resolver->resolve('foo'));
}
- public function testCreateServiceWithEmptyCachedTemplateMap()
+ 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 ef0bf72..de422b8 100644
--- a/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php
+++ b/tests/OcraCachedViewResolverTest/ModuleFunctionalTest.php
@@ -1,71 +1,43 @@
- * @license MIT
- *
* @group Functional
- *
* @coversNothing
*/
class ModuleFunctionalTest extends TestCase
{
- /**
- * @var ServiceManager
- */
- protected $serviceManager;
-
- /**
- * @var AggregateResolver|\Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject;
- */
- protected $originalResolver;
-
- /**
- * @var \Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject;
- */
+ protected ServiceManager $serviceManager;
+
+ /** @var AggregateResolver ; */
+ protected AggregateResolver $originalResolver;
+
+ /** @var 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 +47,7 @@ public function setUp()
'ApplicationConfig',
[
'modules' => [
- 'Zend\Router',
+ 'Laminas\Router',
'OcraCachedViewResolver',
],
'module_listener_options' => [
@@ -86,16 +58,15 @@ public function setUp()
]
);
- /* @var $moduleManager \Zend\ModuleManager\ModuleManager */
$moduleManager = $this->serviceManager->get('ModuleManager');
+ assert($moduleManager instanceof 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);
- $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);
@@ -103,26 +74,27 @@ public function setUp()
$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 \Zend\View\Resolver\AggregateResolver */
$resolver = $this->serviceManager->get('ViewResolver');
+ assert($resolver instanceof AggregateResolver);
self::assertInstanceOf(AggregateResolver::class, $resolver);
self::assertSame($resolver, $this->serviceManager->get('ViewResolver'));
foreach ($resolver->getIterator() as $previousResolver) {
+ assert($previousResolver instanceof ResolverInterface);
self::assertThat(
$previousResolver,
self::logicalOr(
@@ -133,15 +105,15 @@ public function testDefinedServices()
}
}
- public function testCachesResolvedTemplates()
+ public function testCachesResolvedTemplates(): void
{
- /* @var $cache \Zend\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'));
@@ -150,17 +122,18 @@ public function testCachesResolvedTemplates()
$this->serviceManager->build('ViewResolver');
}
- public function testFallbackResolverCall()
+ public function testFallbackResolverCall(): void
{
- /* @var $resolver \Zend\View\Resolver\TemplateMapResolver */
$resolver = $this->serviceManager->get('ViewResolver');
+ self::assertInstanceOf(ResolverInterface::class, $resolver);
+
$this
->fallbackResolver
->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/ModuleTest.php b/tests/OcraCachedViewResolverTest/ModuleTest.php
index dfe4f53..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::assertInternalType('array', (new Module())->getConfig());
+ 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 d3cac5f..22d0bc7 100644
--- a/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php
+++ b/tests/OcraCachedViewResolverTest/View/Resolver/CachingMapResolverTest.php
@@ -1,104 +1,71 @@
- * @license MIT
- *
* @group Coverage
- *
* @covers \OcraCachedViewResolver\View\Resolver\CachingMapResolver
*/
class CachingMapResolverTest extends TestCase
{
- /**
- * @var callable|\PHPUnit_Framework_MockObject_MockObject
- */
- private $resolverInstantiator;
-
- /**
- * @var TemplateMapResolver|\PHPUnit_Framework_MockObject_MockObject
- */
+ private MockObject $resolverInstantiator;
+
+ /** @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;
- /**
- * @var string
- */
- private $cacheKey = 'cache-key';
-
- /**
- * @var CachingMapResolver
- */
- private $cachingMapResolver;
-
- /**
- * {@inheritDoc}
- *
- * @throws \PHPUnit_Framework_Exception
- */
- protected function setUp()
+ private string $cacheKey = 'cache-key';
+
+ private CachingMapResolver $cachingMapResolver;
+
+ protected function setUp(): void
{
- $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock();
+ parent::setUp();
+
+ $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()
+ public function testResolverCacheIsPopulatedOnResolve(): void
{
$this
->resolverInstantiator
->expects(self::once())
->method('__invoke')
- ->will(self::returnValue($this->realResolver));
+ ->willReturn($this->realResolver);
$this
->cache
->expects(self::once())
@@ -113,13 +80,13 @@ public function testResolverCacheIsPopulatedOnResolve()
self::assertSame('path/to/script', $this->cachingMapResolver->resolve('view-name', $this->renderer));
}
- public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache()
+ public function testResolvingMultipleTimesDoesNotHitResolverInstantiatorOrCache(): void
{
$this
->resolverInstantiator
->expects(self::once())
->method('__invoke')
- ->will(self::returnValue($this->realResolver));
+ ->willReturn($this->realResolver);
$this
->cache
->expects(self::once())
@@ -136,7 +103,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');
@@ -146,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()
+ 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()
- {
- $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 abb11a1..0000000
--- a/tests/OcraCachedViewResolverTest/View/Resolver/Exception/InvalidResolverInstantiatorExceptionTest.php
+++ /dev/null
@@ -1,86 +0,0 @@
-
- * @license MIT
- *
- * @covers \OcraCachedViewResolver\View\Resolver\Exception\InvalidResolverInstantiatorException
- * @covers \OcraCachedViewResolver\View\Resolver\Exception\ExceptionInterface
- */
-class InvalidResolverInstantiatorExceptionTest extends TestCase
-{
- public function testInstanceOfBaseExceptionInterface()
- {
- self::assertInstanceOf(
- InvalidResolverInstantiatorException::class,
- new InvalidResolverInstantiatorException()
- );
- }
-
- 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()
- {
- $exception = InvalidResolverInstantiatorException::fromInvalidResolver(null);
-
- self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception);
- self::assertSame(
- 'Invalid resolver found, expected `Zend\View\Resolver\ResolverInterface`, `NULL` given.',
- $exception->getMessage()
- );
- }
-
- public function testFromInvalidObjectResolver()
- {
- $exception = InvalidResolverInstantiatorException::fromInvalidResolver($this);
-
- self::assertInstanceOf(InvalidResolverInstantiatorException::class, $exception);
- self::assertSame(
- 'Invalid resolver found, expected `Zend\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..c804e7f 100644
--- a/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php
+++ b/tests/OcraCachedViewResolverTest/View/Resolver/LazyResolverTest.php
@@ -1,171 +1,105 @@
- * @license MIT
- *
* @group Coverage
- *
* @covers \OcraCachedViewResolver\View\Resolver\LazyResolver
*/
class LazyResolverTest extends TestCase
{
- /**
- * @var callable|\PHPUnit_Framework_MockObject_MockObject
- */
- private $resolverInstantiator;
-
- /**
- * @var \Zend\View\Resolver\ResolverInterface|\PHPUnit_Framework_MockObject_MockObject
- */
+ private MockObject $resolverInstantiator;
+
+ /** @var ResolverInterface&MockObject */
private $realResolver;
- /**
- * @var \Zend\View\Renderer\RendererInterface|\PHPUnit_Framework_MockObject_MockObject
- */
+ /** @var RendererInterface&MockObject */
private $renderer;
- /**
- * @var LazyResolver
- */
- private $lazyResolver;
-
- /**
- * {@inheritDoc}
- *
- * @throws \PHPUnit_Framework_Exception
- */
- protected function setUp()
+ private LazyResolver $lazyResolver;
+
+ protected function setUp(): void
{
- $this->resolverInstantiator = $this->getMockBuilder(stdClass::class)->setMethods(['__invoke'])->getMock();
+ parent::setUp();
+
+ $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);
}
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve
- */
- public function testResolve()
+ public function testResolve(): 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', $this->renderer)
- ->will(self::returnValue('path/to/script'));
+ ->willReturn('path/to/script');
self::assertSame('path/to/script', $this->lazyResolver->resolve('view-name', $this->renderer));
}
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve
- */
- public function testResolveWithoutRenderer()
+ 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->lazyResolver->resolve('view-name'));
}
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::__construct
- */
- public function testRealResolverNotCreatedIfNotNeeded()
+ 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);
}
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve
- */
- public function testResolveCausesRealResolverInstantiationOnlyOnce()
+ public function testResolveCausesRealResolverInstantiationOnlyOnce(): void
{
$this
->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));
}
-
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve
- */
- public function testLazyResolverRefusesNonCallableInstantiator()
- {
- $this->expectException(InvalidResolverInstantiatorException::class);
-
- new LazyResolver($this);
- }
-
- /**
- * @covers \OcraCachedViewResolver\View\Resolver\LazyResolver::resolve
- */
- 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 39131eb..dcc29a7 100644
--- a/tests/testing.config.php
+++ b/tests/testing.config.php
@@ -1,23 +1,9 @@
[