.github/FUNDING.yml000064400000000042144760110740007721 0ustar00community_bridge: laminas-project .github/workflows/continuous-integration.yml000064400000000304144760110740015414 0ustar00name: "Continuous Integration" on: pull_request: push: branches: tags: jobs: ci: uses: laminas/workflow-continuous-integration/.github/workflows/continuous-integration.yml@1.x .github/workflows/release-on-milestone-closed.yml000064400000000676144760110740016177 0ustar00name: "Automatic Releases" on: milestone: types: - "closed" jobs: release: uses: laminas/workflow-automatic-releases/.github/workflows/release-on-milestone-closed.yml@1.x secrets: GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }} GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }} ORGANIZATION_ADMIN_TOKEN: ${{ secrets.ORGANIZATION_ADMIN_TOKEN }} SIGNING_SECRET_KEY: ${{ secrets.SIGNING_SECRET_KEY }} .laminas-ci.json000064400000000110144760110740007526 0ustar00{ "ignore_php_platform_requirements": { "8.1": true } } COPYRIGHT.md000064400000000133144760110740006437 0ustar00Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/) LICENSE.md000064400000002732144760110740006160 0ustar00Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of Laminas Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. README.md000064400000001751144760110740006033 0ustar00# laminas-zendframework-bridge [![Build Status](https://github.com/laminas/laminas-zendframework-bridge/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-zendframework-bridge/actions?query=workflow%3A"Continuous+Integration") This library provides a custom autoloader that aliases legacy Zend Framework, Apigility, and Expressive classes to their replacements under the Laminas Project. This package should be installed only if you are also using the composer plugin that installs Laminas packages to replace ZF/Apigility/Expressive packages. This tool supports: * Zend Framework MVC projects, all v2 and v3 releases * Apigility projects, all stable versions * Expressive versions, all stable versions ## Installation Run the following to install this library: ```bash $ composer require laminas/laminas-zendframework-bridge ``` ## Support * [Issues](https://github.com/laminas/laminas-zendframework-bridge/issues/) * [Forum](https://discourse.laminas.dev/) composer.json000064400000003603144760110740007274 0ustar00{ "name": "laminas/laminas-zendframework-bridge", "description": "Alias legacy ZF class names to Laminas Project equivalents.", "license": "BSD-3-Clause", "keywords": [ "autoloading", "laminas", "zf", "zendframework" ], "support": { "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", "source": "https://github.com/laminas/laminas-zendframework-bridge", "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", "forum": "https://discourse.laminas.dev/" }, "require": { "php": ">=7.4, <8.2" }, "require-dev": { "phpunit/phpunit": "^9.5.14", "psalm/plugin-phpunit": "^0.15.2", "squizlabs/php_codesniffer": "^3.6.2", "vimeo/psalm": "^4.21.0" }, "autoload": { "files": [ "src/autoload.php" ], "psr-4": { "Laminas\\ZendFrameworkBridge\\": "src//" } }, "autoload-dev": { "files": [ "test/classes.php" ], "psr-4": { "LaminasTest\\ZendFrameworkBridge\\": "test/", "LaminasTest\\ZendFrameworkBridge\\TestAsset\\": "test/TestAsset/classes/", "Laminas\\ApiTools\\": "test/TestAsset/LaminasApiTools/", "Mezzio\\": "test/TestAsset/Mezzio/", "Laminas\\": "test/TestAsset/Laminas/" } }, "extra": { "laminas": { "module": "Laminas\\ZendFrameworkBridge" } }, "config": { "sort-packages": true, "platform": { "php": "7.4.99" } }, "scripts": { "cs-check": "phpcs", "cs-fix": "phpcbf", "static-analysis": "psalm --shepherd --stats", "test": "phpunit --colors=always", "test-coverage": "phpunit --colors=always --coverage-clover clover.xml" } } composer.lock000064400000423174144760110740007264 0ustar00{ "_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": "82c584c7c1e22760cfc947f565ddf060", "packages": [], "packages-dev": [ { "name": "amphp/amp", "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "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": { "files": [ "lib/functions.php", "lib/Internal/functions.php" ], "psr-4": { "Amp\\": "lib" } }, "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": "https://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.2" }, "funding": [ { "url": "https://github.com/amphp", "type": "github" } ], "time": "2022-02-20T17:52:18+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": { "files": [ "lib/functions.php" ], "psr-4": { "Amp\\ByteStream\\": "lib" } }, "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.5", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { "composer-plugin-api": "^1.1.0 || ^2.0", "php": "^7 || ^8" }, "replace": { "ocramius/package-versions": "1.11.99" }, "require-dev": { "composer/composer": "^1.9.3 || ^2.0@dev", "ext-zip": "^1.13", "phpunit/phpunit": "^6.5 || ^7" }, "type": "composer-plugin", "extra": { "class": "PackageVersions\\Installer", "branch-alias": { "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { "PackageVersions\\": "src/PackageVersions" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Marco Pivetta", "email": "ocramius@gmail.com" }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be" } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/composer/package-versions-deprecated/issues", "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, { "url": "https://github.com/composer", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], "time": "2022-01-17T14:14:24+00:00" }, { "name": "composer/pcre", "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { "dev-main": "1.x-dev" } }, "autoload": { "psr-4": { "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be" } ], "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ "PCRE", "preg", "regex", "regular expression" ], "support": { "issues": "https://github.com/composer/pcre/issues", "source": "https://github.com/composer/pcre/tree/1.0.1" }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, { "url": "https://github.com/composer", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], "time": "2022-01-21T20:24:37+00:00" }, { "name": "composer/semver", "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/composer/semver.git", "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649", "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" } }, "autoload": { "psr-4": { "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nils Adermann", "email": "naderman@naderman.de", "homepage": "http://www.naderman.de" }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be" }, { "name": "Rob Bast", "email": "rob.bast@gmail.com", "homepage": "http://robbast.nl" } ], "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ "semantic", "semver", "validation", "versioning" ], "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", "source": "https://github.com/composer/semver/tree/3.2.9" }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, { "url": "https://github.com/composer", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], "time": "2022-02-04T13:58:43+00:00" }, { "name": "composer/xdebug-handler", "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8", "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8", "shasum": "" }, "require": { "composer/pcre": "^1", "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { "psr-4": { "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "John Stevenson", "email": "john-stevenson@blueyonder.co.uk" } ], "description": "Restarts a process without Xdebug.", "keywords": [ "Xdebug", "performance" ], "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", "source": "https://github.com/composer/xdebug-handler/tree/3.0.1" }, "funding": [ { "url": "https://packagist.com", "type": "custom" }, { "url": "https://github.com/composer", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/composer/composer", "type": "tidelift" } ], "time": "2022-01-04T18:29:42+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/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" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { "files": [ "src/DeepCopy/deep_copy.php" ], "psr-4": { "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", "keywords": [ "clone", "copy", "duplicate", "object", "object graph" ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", "source": "https://github.com/myclabs/DeepCopy/tree/1.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": "nikic/php-parser", "version": "v4.13.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "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.13.2" }, "time": "2021-11-30T19:35:32+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.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "type": "library", "autoload": { "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Arne Blankerts", "email": "arne@blankerts.de", "role": "Developer" }, { "name": "Sebastian Heuer", "email": "sebastian@phpeople.de", "role": "Developer" }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "Developer" } ], "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", "source": "https://github.com/phar-io/version/tree/3.2.1" }, "time": "2022-02-21T01:04:05+00:00" }, { "name": "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.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "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", "psalm/phar": "^4.8" }, "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/5.3.0" }, "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", "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.6.0" }, "time": "2022-01-04T19:58:01+00:00" }, { "name": "phpspec/prophecy", "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "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/v1.15.0" }, "time": "2021-12-08T12:19:24+00:00" }, { "name": "phpunit/php-code-coverage", "version": "9.2.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/665a1ac0a763c51afc30d6d130dac0813092b17f", "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.13.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.11" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], "time": "2022-02-18T12:46:09+00:00" }, { "name": "phpunit/php-file-iterator", "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "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.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], "time": "2021-12-02T12:48:52+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.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", "reference": "1883687169c017d6ae37c58883ca3994cfc34189" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189", "reference": "1883687169c017d6ae37c58883ca3994cfc34189", "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.7", "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": { "files": [ "src/Framework/Assert/Functions.php" ], "classmap": [ "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", "role": "lead" } ], "description": "The PHP Unit Testing framework.", "homepage": "https://phpunit.de/", "keywords": [ "phpunit", "testing", "xunit" ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14" }, "funding": [ { "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], "time": "2022-02-18T12:54:07+00:00" }, { "name": "psalm/plugin-phpunit", "version": "0.15.2", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/31d15bbc0169a3c454e495e03fd8a6ccb663661b", "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b", "shasum": "" }, "require": { "composer/package-versions-deprecated": "^1.10", "composer/semver": "^1.4 || ^2.0 || ^3.0", "ext-simplexml": "*", "php": "^7.1 || ^8.0", "vimeo/psalm": "dev-master || dev-4.x || ^4.0" }, "conflict": { "phpunit/phpunit": "<7.5" }, "require-dev": { "codeception/codeception": "^4.0.3", "php": "^7.3 || ^8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", "squizlabs/php_codesniffer": "^3.3.1", "weirdan/codeception-psalm-module": "^0.11.0", "weirdan/prophecy-shim": "^1.0 || ^2.0" }, "type": "psalm-plugin", "extra": { "psalm": { "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" } }, "autoload": { "psr-4": { "Psalm\\PhpUnitPlugin\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Matt Brown", "email": "github@muglug.com" } ], "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.15.2" }, "time": "2021-05-29T19:11:38+00:00" }, { "name": "psr/container", "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", "autoload": { "psr-4": { "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "PHP-FIG", "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", "homepage": "https://github.com/php-fig/container", "keywords": [ "PSR-11", "container", "container-interface", "container-interop", "psr" ], "support": { "issues": "https://github.com/php-fig/container/issues", "source": "https://github.com/php-fig/container/tree/1.1.2" }, "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/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.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "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": "https://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.4" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], "time": "2021-11-11T14:18:36+00:00" }, { "name": "sebastian/global-state", "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "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.5" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], "time": "2022-02-14T08:28:10+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": "squizlabs/php_codesniffer", "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", "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-12-12T21:44:58+00:00" }, { "name": "symfony/console", "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/console/zipball/a2a86ec353d825c75856c6fd14fac416a7bdb6b8", "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2|^3", "symfony/string": "^5.1|^6.0" }, "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|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/event-dispatcher": "^4.4|^5.0|^6.0", "symfony/lock": "^4.4|^5.0|^6.0", "symfony/process": "^4.4|^5.0|^6.0", "symfony/var-dumper": "^4.4|^5.0|^6.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.4.3" }, "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2022-01-26T16:28:35+00:00" }, { "name": "symfony/deprecation-contracts", "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", "shasum": "" }, "require": { "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { "dev-main": "2.5-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.5.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-07-12T14:48:14+00:00" }, { "name": "symfony/polyfill-ctype", "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { "php": ">=7.1" }, "provide": { "ext-ctype": "*" }, "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.24.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-10-20T20:35:02+00:00" }, { "name": "symfony/polyfill-intl-grapheme", "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", "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": { "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "grapheme", "intl", "polyfill", "portable", "shim" ], "support": { "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.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-11-23T21:10:46+00:00" }, { "name": "symfony/polyfill-intl-normalizer", "version": "v1.24.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": { "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Polyfill\\Intl\\Normalizer\\": "" }, "classmap": [ "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for intl's Normalizer class and related functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "intl", "normalizer", "polyfill", "portable", "shim" ], "support": { "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.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.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, "provide": { "ext-mbstring": "*" }, "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": { "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", "mbstring", "polyfill", "portable", "shim" ], "support": { "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.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-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php73", "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", "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": { "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Polyfill\\Php73\\": "" }, "classmap": [ "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "support": { "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.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-06-05T21:20:04+00:00" }, { "name": "symfony/polyfill-php80", "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", "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": { "files": [ "bootstrap.php" ], "psr-4": { "Symfony\\Polyfill\\Php80\\": "" }, "classmap": [ "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { "name": "Ion Bazan", "email": "ion.bazan@gmail.com" }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", "polyfill", "portable", "shim" ], "support": { "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.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-09-13T13:58:33+00:00" }, { "name": "symfony/service-contracts", "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1", "symfony/deprecation-contracts": "^2.1" }, "conflict": { "ext-psr": "<1.1|>=2" }, "suggest": { "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { "dev-main": "2.5-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.5.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-11-04T16:48:04+00:00" }, { "name": "symfony/string", "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", "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" }, "conflict": { "symfony/translation-contracts": ">=3.0" }, "require-dev": { "symfony/error-handler": "^4.4|^5.0|^6.0", "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", "symfony/var-exporter": "^4.4|^5.0|^6.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.4.3" }, "funding": [ { "url": "https://symfony.com/sponsor", "type": "custom" }, { "url": "https://github.com/fabpot", "type": "github" }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], "time": "2022-01-02T09:53:40+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.21.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1" }, "dist": { "type": "zip", "url": "https://api.github.com/repos/vimeo/psalm/zipball/d8bec4c7aaee111a532daec32fb09de5687053d1", "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1", "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 || ^3.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.13", "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 || ^6.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 || ^6.0", "weirdan/prophecy-shim": "^1.0 || ^2.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", "ext-igbinary": "^2.0.5 is required, used to serialize caching data" }, "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": { "files": [ "src/functions.php", "src/spl_object_id.php" ], "psr-4": { "Psalm\\": "src/Psalm/" } }, "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.21.0" }, "time": "2022-02-18T04:34:15+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" }, "abandoned": "symfony/filesystem", "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, "platform": { "php": ">=7.4, <8.2" }, "platform-dev": [], "platform-overrides": { "php": "7.4.99" }, "plugin-api-version": "2.2.0" } config/replacements.php000064400000042612144760110740011215 0ustar00 'zendframework/zendframework', 'zend-developer-tools/toolbar/bjy' => 'zend-developer-tools/toolbar/bjy', 'zend-developer-tools/toolbar/doctrine' => 'zend-developer-tools/toolbar/doctrine', // NAMESPACES // Zend Framework components 'Zend\\AuraDi\\Config' => 'Laminas\\AuraDi\\Config', 'Zend\\Authentication' => 'Laminas\\Authentication', 'Zend\\Barcode' => 'Laminas\\Barcode', 'Zend\\Cache' => 'Laminas\\Cache', 'Zend\\Captcha' => 'Laminas\\Captcha', 'Zend\\Code' => 'Laminas\\Code', 'ZendCodingStandard\\Sniffs' => 'LaminasCodingStandard\\Sniffs', 'ZendCodingStandard\\Utils' => 'LaminasCodingStandard\\Utils', 'Zend\\ComponentInstaller' => 'Laminas\\ComponentInstaller', 'Zend\\Config' => 'Laminas\\Config', 'Zend\\ConfigAggregator' => 'Laminas\\ConfigAggregator', 'Zend\\ConfigAggregatorModuleManager' => 'Laminas\\ConfigAggregatorModuleManager', 'Zend\\ConfigAggregatorParameters' => 'Laminas\\ConfigAggregatorParameters', 'Zend\\Console' => 'Laminas\\Console', 'Zend\\ContainerConfigTest' => 'Laminas\\ContainerConfigTest', 'Zend\\Crypt' => 'Laminas\\Crypt', 'Zend\\Db' => 'Laminas\\Db', 'ZendDeveloperTools' => 'Laminas\\DeveloperTools', 'Zend\\Di' => 'Laminas\\Di', 'Zend\\Diactoros' => 'Laminas\\Diactoros', 'ZendDiagnostics\\Check' => 'Laminas\\Diagnostics\\Check', 'ZendDiagnostics\\Result' => 'Laminas\\Diagnostics\\Result', 'ZendDiagnostics\\Runner' => 'Laminas\\Diagnostics\\Runner', 'Zend\\Dom' => 'Laminas\\Dom', 'Zend\\Escaper' => 'Laminas\\Escaper', 'Zend\\EventManager' => 'Laminas\\EventManager', 'Zend\\Feed' => 'Laminas\\Feed', 'Zend\\File' => 'Laminas\\File', 'Zend\\Filter' => 'Laminas\\Filter', 'Zend\\Form' => 'Laminas\\Form', 'Zend\\Http' => 'Laminas\\Http', 'Zend\\HttpHandlerRunner' => 'Laminas\\HttpHandlerRunner', 'Zend\\Hydrator' => 'Laminas\\Hydrator', 'Zend\\I18n' => 'Laminas\\I18n', 'Zend\\InputFilter' => 'Laminas\\InputFilter', 'Zend\\Json' => 'Laminas\\Json', 'Zend\\Ldap' => 'Laminas\\Ldap', 'Zend\\Loader' => 'Laminas\\Loader', 'Zend\\Log' => 'Laminas\\Log', 'Zend\\Mail' => 'Laminas\\Mail', 'Zend\\Math' => 'Laminas\\Math', 'Zend\\Memory' => 'Laminas\\Memory', 'Zend\\Mime' => 'Laminas\\Mime', 'Zend\\ModuleManager' => 'Laminas\\ModuleManager', 'Zend\\Mvc' => 'Laminas\\Mvc', 'Zend\\Navigation' => 'Laminas\\Navigation', 'Zend\\Paginator' => 'Laminas\\Paginator', 'Zend\\Permissions' => 'Laminas\\Permissions', 'Zend\\Pimple\\Config' => 'Laminas\\Pimple\\Config', 'Zend\\ProblemDetails' => 'Mezzio\\ProblemDetails', 'Zend\\ProgressBar' => 'Laminas\\ProgressBar', 'Zend\\Psr7Bridge' => 'Laminas\\Psr7Bridge', 'Zend\\Router' => 'Laminas\\Router', 'Zend\\Serializer' => 'Laminas\\Serializer', 'Zend\\Server' => 'Laminas\\Server', 'Zend\\ServiceManager' => 'Laminas\\ServiceManager', 'ZendService\\ReCaptcha' => 'Laminas\\ReCaptcha', 'ZendService\\Twitter' => 'Laminas\\Twitter', 'Zend\\Session' => 'Laminas\\Session', 'Zend\\SkeletonInstaller' => 'Laminas\\SkeletonInstaller', 'Zend\\Soap' => 'Laminas\\Soap', 'Zend\\Stdlib' => 'Laminas\\Stdlib', 'Zend\\Stratigility' => 'Laminas\\Stratigility', 'Zend\\Tag' => 'Laminas\\Tag', 'Zend\\Test' => 'Laminas\\Test', 'Zend\\Text' => 'Laminas\\Text', 'Zend\\Uri' => 'Laminas\\Uri', 'Zend\\Validator' => 'Laminas\\Validator', 'Zend\\View' => 'Laminas\\View', 'ZendXml' => 'Laminas\\Xml', 'Zend\\Xml2Json' => 'Laminas\\Xml2Json', 'Zend\\XmlRpc' => 'Laminas\\XmlRpc', 'ZendOAuth' => 'Laminas\\OAuth', // class ZendAcl in zend-expressive-authorization-acl 'ZendAcl' => 'LaminasAcl', 'Zend\\Expressive\\Authorization\\Acl\\ZendAcl' => 'Mezzio\\Authorization\\Acl\\LaminasAcl', // class ZendHttpClientDecorator in zend-feed 'ZendHttp' => 'LaminasHttp', // class ZendModuleProvider in zend-config-aggregator-modulemanager 'ZendModule' => 'LaminasModule', // class ZendRbac in zend-expressive-authorization-rbac 'ZendRbac' => 'LaminasRbac', 'Zend\\Expressive\\Authorization\\Rbac\\ZendRbac' => 'Mezzio\\Authorization\\Rbac\\LaminasRbac', // class ZendRouter in zend-expressive-router-zendrouter 'ZendRouter' => 'LaminasRouter', 'Zend\\Expressive\\Router\\ZendRouter' => 'Mezzio\\Router\\LaminasRouter', // class ZendViewRenderer in zend-expressive-zendviewrenderer 'ZendViewRenderer' => 'LaminasViewRenderer', 'Zend\\Expressive\\ZendView\\ZendViewRenderer' => 'Mezzio\\LaminasView\\LaminasViewRenderer', 'a\\Zend' => 'a\\Zend', 'b\\Zend' => 'b\\Zend', 'c\\Zend' => 'c\\Zend', 'd\\Zend' => 'd\\Zend', 'e\\Zend' => 'e\\Zend', 'f\\Zend' => 'f\\Zend', 'g\\Zend' => 'g\\Zend', 'h\\Zend' => 'h\\Zend', 'i\\Zend' => 'i\\Zend', 'j\\Zend' => 'j\\Zend', 'k\\Zend' => 'k\\Zend', 'l\\Zend' => 'l\\Zend', 'm\\Zend' => 'm\\Zend', 'n\\Zend' => 'n\\Zend', 'o\\Zend' => 'o\\Zend', 'p\\Zend' => 'p\\Zend', 'q\\Zend' => 'q\\Zend', 'r\\Zend' => 'r\\Zend', 's\\Zend' => 's\\Zend', 't\\Zend' => 't\\Zend', 'u\\Zend' => 'u\\Zend', 'v\\Zend' => 'v\\Zend', 'w\\Zend' => 'w\\Zend', 'x\\Zend' => 'x\\Zend', 'y\\Zend' => 'y\\Zend', 'z\\Zend' => 'z\\Zend', // Expressive 'Zend\\Expressive' => 'Mezzio', 'ZendAuthentication' => 'LaminasAuthentication', 'ZendAcl' => 'LaminasAcl', 'ZendRbac' => 'LaminasRbac', 'ZendRouter' => 'LaminasRouter', 'ExpressiveUrlGenerator' => 'MezzioUrlGenerator', 'ExpressiveInstaller' => 'MezzioInstaller', // Apigility 'ZF\\Apigility' => 'Laminas\\ApiTools', 'ZF\\ApiProblem' => 'Laminas\\ApiTools\\ApiProblem', 'ZF\\AssetManager' => 'Laminas\\ApiTools\\AssetManager', 'ZF\\ComposerAutoloading' => 'Laminas\\ComposerAutoloading', 'ZF\\Configuration' => 'Laminas\\ApiTools\\Configuration', 'ZF\\ContentNegotiation' => 'Laminas\\ApiTools\\ContentNegotiation', 'ZF\\ContentValidation' => 'Laminas\\ApiTools\\ContentValidation', 'ZF\\DevelopmentMode' => 'Laminas\\DevelopmentMode', 'ZF\\Doctrine\\QueryBuilder' => 'Laminas\\ApiTools\\Doctrine\\QueryBuilder', 'ZF\\Hal' => 'Laminas\\ApiTools\\Hal', 'ZF\\HttpCache' => 'Laminas\\ApiTools\\HttpCache', 'ZF\\MvcAuth' => 'Laminas\\ApiTools\\MvcAuth', 'ZF\\OAuth2' => 'Laminas\\ApiTools\\OAuth2', 'ZF\\Rest' => 'Laminas\\ApiTools\\Rest', 'ZF\\Rpc' => 'Laminas\\ApiTools\\Rpc', 'ZF\\Versioning' => 'Laminas\\ApiTools\\Versioning', 'a\\ZF' => 'a\\ZF', 'b\\ZF' => 'b\\ZF', 'c\\ZF' => 'c\\ZF', 'd\\ZF' => 'd\\ZF', 'e\\ZF' => 'e\\ZF', 'f\\ZF' => 'f\\ZF', 'g\\ZF' => 'g\\ZF', 'h\\ZF' => 'h\\ZF', 'i\\ZF' => 'i\\ZF', 'j\\ZF' => 'j\\ZF', 'k\\ZF' => 'k\\ZF', 'l\\ZF' => 'l\\ZF', 'm\\ZF' => 'm\\ZF', 'n\\ZF' => 'n\\ZF', 'o\\ZF' => 'o\\ZF', 'p\\ZF' => 'p\\ZF', 'q\\ZF' => 'q\\ZF', 'r\\ZF' => 'r\\ZF', 's\\ZF' => 's\\ZF', 't\\ZF' => 't\\ZF', 'u\\ZF' => 'u\\ZF', 'v\\ZF' => 'v\\ZF', 'w\\ZF' => 'w\\ZF', 'x\\ZF' => 'x\\ZF', 'y\\ZF' => 'y\\ZF', 'z\\ZF' => 'z\\ZF', 'ApigilityModuleInterface' => 'ApiToolsModuleInterface', 'ApigilityProviderInterface' => 'ApiToolsProviderInterface', 'ApigilityVersionController' => 'ApiToolsVersionController', // PACKAGES // ZF components, MVC 'zendframework/skeleton-application' => 'laminas/skeleton-application', 'zendframework/zend-auradi-config' => 'laminas/laminas-auradi-config', 'zendframework/zend-authentication' => 'laminas/laminas-authentication', 'zendframework/zend-barcode' => 'laminas/laminas-barcode', 'zendframework/zend-cache' => 'laminas/laminas-cache', 'zendframework/zend-captcha' => 'laminas/laminas-captcha', 'zendframework/zend-code' => 'laminas/laminas-code', 'zendframework/zend-coding-standard' => 'laminas/laminas-coding-standard', 'zendframework/zend-component-installer' => 'laminas/laminas-component-installer', 'zendframework/zend-composer-autoloading' => 'laminas/laminas-composer-autoloading', 'zendframework/zend-config-aggregator' => 'laminas/laminas-config-aggregator', 'zendframework/zend-config' => 'laminas/laminas-config', 'zendframework/zend-console' => 'laminas/laminas-console', 'zendframework/zend-container-config-test' => 'laminas/laminas-container-config-test', 'zendframework/zend-crypt' => 'laminas/laminas-crypt', 'zendframework/zend-db' => 'laminas/laminas-db', 'zendframework/zend-developer-tools' => 'laminas/laminas-developer-tools', 'zendframework/zend-diactoros' => 'laminas/laminas-diactoros', 'zendframework/zenddiagnostics' => 'laminas/laminas-diagnostics', 'zendframework/zend-di' => 'laminas/laminas-di', 'zendframework/zend-dom' => 'laminas/laminas-dom', 'zendframework/zend-escaper' => 'laminas/laminas-escaper', 'zendframework/zend-eventmanager' => 'laminas/laminas-eventmanager', 'zendframework/zend-feed' => 'laminas/laminas-feed', 'zendframework/zend-file' => 'laminas/laminas-file', 'zendframework/zend-filter' => 'laminas/laminas-filter', 'zendframework/zend-form' => 'laminas/laminas-form', 'zendframework/zend-httphandlerrunner' => 'laminas/laminas-httphandlerrunner', 'zendframework/zend-http' => 'laminas/laminas-http', 'zendframework/zend-hydrator' => 'laminas/laminas-hydrator', 'zendframework/zend-i18n' => 'laminas/laminas-i18n', 'zendframework/zend-i18n-resources' => 'laminas/laminas-i18n-resources', 'zendframework/zend-inputfilter' => 'laminas/laminas-inputfilter', 'zendframework/zend-json' => 'laminas/laminas-json', 'zendframework/zend-json-server' => 'laminas/laminas-json-server', 'zendframework/zend-ldap' => 'laminas/laminas-ldap', 'zendframework/zend-loader' => 'laminas/laminas-loader', 'zendframework/zend-log' => 'laminas/laminas-log', 'zendframework/zend-mail' => 'laminas/laminas-mail', 'zendframework/zend-math' => 'laminas/laminas-math', 'zendframework/zend-memory' => 'laminas/laminas-memory', 'zendframework/zend-mime' => 'laminas/laminas-mime', 'zendframework/zend-modulemanager' => 'laminas/laminas-modulemanager', 'zendframework/zend-mvc' => 'laminas/laminas-mvc', 'zendframework/zend-navigation' => 'laminas/laminas-navigation', 'zendframework/zend-oauth' => 'laminas/laminas-oauth', 'zendframework/zend-paginator' => 'laminas/laminas-paginator', 'zendframework/zend-permissions-acl' => 'laminas/laminas-permissions-acl', 'zendframework/zend-permissions-rbac' => 'laminas/laminas-permissions-rbac', 'zendframework/zend-pimple-config' => 'laminas/laminas-pimple-config', 'zendframework/zend-progressbar' => 'laminas/laminas-progressbar', 'zendframework/zend-psr7bridge' => 'laminas/laminas-psr7bridge', 'zendframework/zend-recaptcha' => 'laminas/laminas-recaptcha', 'zendframework/zend-router' => 'laminas/laminas-router', 'zendframework/zend-serializer' => 'laminas/laminas-serializer', 'zendframework/zend-server' => 'laminas/laminas-server', 'zendframework/zend-servicemanager' => 'laminas/laminas-servicemanager', 'zendframework/zendservice-recaptcha' => 'laminas/laminas-recaptcha', 'zendframework/zendservice-twitter' => 'laminas/laminas-twitter', 'zendframework/zend-session' => 'laminas/laminas-session', 'zendframework/zend-skeleton-installer' => 'laminas/laminas-skeleton-installer', 'zendframework/zend-soap' => 'laminas/laminas-soap', 'zendframework/zend-stdlib' => 'laminas/laminas-stdlib', 'zendframework/zend-stratigility' => 'laminas/laminas-stratigility', 'zendframework/zend-tag' => 'laminas/laminas-tag', 'zendframework/zend-test' => 'laminas/laminas-test', 'zendframework/zend-text' => 'laminas/laminas-text', 'zendframework/zend-uri' => 'laminas/laminas-uri', 'zendframework/zend-validator' => 'laminas/laminas-validator', 'zendframework/zend-view' => 'laminas/laminas-view', 'zendframework/zend-xml2json' => 'laminas/laminas-xml2json', 'zendframework/zend-xml' => 'laminas/laminas-xml', 'zendframework/zend-xmlrpc' => 'laminas/laminas-xmlrpc', // Expressive packages 'zendframework/zend-expressive' => 'mezzio/mezzio', 'zendframework/zend-expressive-zendrouter' => 'mezzio/mezzio-laminasrouter', 'zendframework/zend-problem-details' => 'mezzio/mezzio-problem-details', 'zendframework/zend-expressive-zendviewrenderer' => 'mezzio/mezzio-laminasviewrenderer', // Apigility packages 'zfcampus/apigility-documentation' => 'laminas-api-tools/documentation', 'zfcampus/statuslib-example' => 'laminas-api-tools/statuslib-example', 'zfcampus/zf-apigility' => 'laminas-api-tools/api-tools', 'zfcampus/zf-api-problem' => 'laminas-api-tools/api-tools-api-problem', 'zfcampus/zf-asset-manager' => 'laminas-api-tools/api-tools-asset-manager', 'zfcampus/zf-configuration' => 'laminas-api-tools/api-tools-configuration', 'zfcampus/zf-content-negotiation' => 'laminas-api-tools/api-tools-content-negotiation', 'zfcampus/zf-content-validation' => 'laminas-api-tools/api-tools-content-validation', 'zfcampus/zf-development-mode' => 'laminas/laminas-development-mode', 'zfcampus/zf-doctrine-querybuilder' => 'laminas-api-tools/api-tools-doctrine-querybuilder', 'zfcampus/zf-hal' => 'laminas-api-tools/api-tools-hal', 'zfcampus/zf-http-cache' => 'laminas-api-tools/api-tools-http-cache', 'zfcampus/zf-mvc-auth' => 'laminas-api-tools/api-tools-mvc-auth', 'zfcampus/zf-oauth2' => 'laminas-api-tools/api-tools-oauth2', 'zfcampus/zf-rest' => 'laminas-api-tools/api-tools-rest', 'zfcampus/zf-rpc' => 'laminas-api-tools/api-tools-rpc', 'zfcampus/zf-versioning' => 'laminas-api-tools/api-tools-versioning', // CONFIG KEYS, SCRIPT NAMES, ETC // ZF components '::fromZend' => '::fromLaminas', // psr7bridge '::toZend' => '::toLaminas', // psr7bridge 'use_zend_loader' => 'use_laminas_loader', // zend-modulemanager 'zend-config' => 'laminas-config', 'zend-developer-tools/' => 'laminas-developer-tools/', 'zend-tag-cloud' => 'laminas-tag-cloud', 'zenddevelopertools' => 'laminas-developer-tools', 'zendbarcode' => 'laminasbarcode', 'ZendBarcode' => 'LaminasBarcode', 'zendcache' => 'laminascache', 'ZendCache' => 'LaminasCache', 'zendconfig' => 'laminasconfig', 'ZendConfig' => 'LaminasConfig', 'zendfeed' => 'laminasfeed', 'ZendFeed' => 'LaminasFeed', 'zendfilter' => 'laminasfilter', 'ZendFilter' => 'LaminasFilter', 'zendform' => 'laminasform', 'ZendForm' => 'LaminasForm', 'zendi18n' => 'laminasi18n', 'ZendI18n' => 'LaminasI18n', 'zendinputfilter' => 'laminasinputfilter', 'ZendInputFilter' => 'LaminasInputFilter', 'zendlog' => 'laminaslog', 'ZendLog' => 'LaminasLog', 'zendmail' => 'laminasmail', 'ZendMail' => 'LaminasMail', 'zendmvc' => 'laminasmvc', 'ZendMvc' => 'LaminasMvc', 'zendpaginator' => 'laminaspaginator', 'ZendPaginator' => 'LaminasPaginator', 'zendserializer' => 'laminasserializer', 'ZendSerializer' => 'LaminasSerializer', 'zendtag' => 'laminastag', 'ZendTag' => 'LaminasTag', 'zendtext' => 'laminastext', 'ZendText' => 'LaminasText', 'zendvalidator' => 'laminasvalidator', 'ZendValidator' => 'LaminasValidator', 'zendview' => 'laminasview', 'ZendView' => 'LaminasView', 'zend-framework.flf' => 'laminas-project.flf', // Expressive-related "'zend-expressive'" => "'mezzio'", '"zend-expressive"' => '"mezzio"', 'zend-expressive.' => 'mezzio.', 'zend-expressive-authorization' => 'mezzio-authorization', 'zend-expressive-hal' => 'mezzio-hal', 'zend-expressive-session' => 'mezzio-session', 'zend-expressive-swoole' => 'mezzio-swoole', 'zend-expressive-tooling' => 'mezzio-tooling', // Apigility-related "'zf-apigility'" => "'api-tools'", '"zf-apigility"' => '"api-tools"', 'zf-apigility/' => 'api-tools/', 'zf-apigility-admin' => 'api-tools-admin', 'zf-content-negotiation' => 'api-tools-content-negotiation', 'zf-hal' => 'api-tools-hal', 'zf-rest' => 'api-tools-rest', 'zf-rpc' => 'api-tools-rpc', 'zf-content-validation' => 'api-tools-content-validation', 'zf-apigility-ui' => 'api-tools-ui', 'zf-apigility-documentation-blueprint' => 'api-tools-documentation-blueprint', 'zf-apigility-documentation-swagger' => 'api-tools-documentation-swagger', 'zf-apigility-welcome' => 'api-tools-welcome', 'zf-api-problem' => 'api-tools-api-problem', 'zf-configuration' => 'api-tools-configuration', 'zf-http-cache' => 'api-tools-http-cache', 'zf-mvc-auth' => 'api-tools-mvc-auth', 'zf-oauth2' => 'api-tools-oauth2', 'zf-versioning' => 'api-tools-versioning', 'ZfApigilityDoctrineQueryProviderManager' => 'LaminasApiToolsDoctrineQueryProviderManager', 'ZfApigilityDoctrineQueryCreateFilterManager' => 'LaminasApiToolsDoctrineQueryCreateFilterManager', 'zf-apigility-doctrine' => 'api-tools-doctrine', 'zf-development-mode' => 'laminas-development-mode', 'zf-doctrine-querybuilder' => 'api-tools-doctrine-querybuilder', // 3rd party Apigility packages 'api-skeletons/zf-' => 'api-skeletons/zf-', // api-skeletons packages 'zf-oauth2-' => 'zf-oauth2-', // api-skeletons OAuth2-related packages 'ZF\\OAuth2\\Client' => 'ZF\\OAuth2\\Client', // api-skeletons/zf-oauth2-client 'ZF\\OAuth2\\Doctrine' => 'ZF\\OAuth2\\Doctrine', // api-skeletons/zf-oauth2-doctrine ]; psalm-baseline.xml000064400000014334144760110740010173 0ustar00 'ZendAcl' => 'LaminasAcl' 'ZendRbac' => 'LaminasRbac' 'ZendRouter' => 'LaminasRouter' $keys $value $value $value $value function ($value) { function ($value) { function ($value, array $keys) { function ($value, array $keys) { replaceDependencyConfiguration replaceDependencyFactories replaceDependencyServices $config $newKey $newKey $newKey $target [$key] $config[$key] $config['aliases'][$alias] $config['aliases'][$service] $config['aliases'][$service] $aliases[$name] $config[$key] $keys[$key] $rewritten[$newKey] $rewritten[$newKey] $rewritten[$newKey] $this->exactReplacements[$value] $aliases[$name] $a[$key] $a[$key] $a[] $config $config $config[$key] $config['factories'][$replacedService] $config['services'][$replacedService] $data $factory $factory $key $key $name $newKey $notIn[] $result $rewritten[$key] $rewritten[$newKey] $rewritten[$newKey][] $serviceInstance $serviceInstance $target $value $value init onMergeConfig ModuleEvent ModuleManager $replacement $replacement $original $original $original $replacement $this->replacements $this->replacements new $legacy() testLegacyClassIsAliasToLaminas testReverseAliasCreated testTypeHint testLegacyClassIsAliasToLaminas invalidServiceManagerConfiguration testRewritesNestedKeys testServiceManagerServiceInstancesCanBeHandled testWillSkipInvalidConfigurations $config $config $expected iterable require $configLocation require $expectedResultLocation $event $moduleManager testInitRegistersListenerWithEventManager testOnMergeConfigProcessesAndReplacesConfigurationPulledFromListener $config $config $expected iterable require $configFile require $expectationsFile testEdgeCases iterable psalm.xml.dist000064400000002332144760110740007350 0ustar00 src/Autoloader.php000064400000013274144760110740010156 0ustar00 $namespaces * @return callable(string): void */ private static function createPrependAutoloader(array $namespaces, ClassLoader $classLoader, ArrayObject $loaded) { /** * @param string $class Class name to autoload * @return void */ return static function ($class) use ($namespaces, $classLoader, $loaded): void { if (isset($loaded[$class])) { return; } $segments = explode('\\', $class); $i = 0; $check = ''; while (isset($segments[$i + 1], $namespaces[$check . $segments[$i] . '\\'])) { $check .= $segments[$i] . '\\'; ++$i; } if ($check === '') { return; } if ($classLoader->loadClass($class)) { $legacy = $namespaces[$check] . strtr(substr($class, strlen($check)), [ 'ApiTools' => 'Apigility', 'Mezzio' => 'Expressive', 'Laminas' => 'Zend', ]); class_alias($class, $legacy); } }; } /** * @param array $namespaces * @return callable(string): void */ private static function createAppendAutoloader(array $namespaces, ArrayObject $loaded) { /** * @param string $class Class name to autoload * @return void */ return static function ($class) use ($namespaces, $loaded) { $segments = explode('\\', $class); if ($segments[0] === 'ZendService' && isset($segments[1])) { $segments[0] .= '\\' . $segments[1]; unset($segments[1]); /** @psalm-suppress RedundantFunctionCall */ $segments = array_values($segments); } $i = 0; $check = ''; // We are checking segments of the namespace to match quicker while (isset($segments[$i + 1], $namespaces[$check . $segments[$i] . '\\'])) { $check .= $segments[$i] . '\\'; ++$i; } if ($check === '') { return; } $alias = $namespaces[$check] . strtr(substr($class, strlen($check)), [ 'Apigility' => 'ApiTools', 'Expressive' => 'Mezzio', 'Zend' => 'Laminas', 'AbstractZendServer' => 'AbstractZendServer', 'ZendServerDisk' => 'ZendServerDisk', 'ZendServerShm' => 'ZendServerShm', 'ZendMonitor' => 'ZendMonitor', ]); $loaded[$alias] = true; if (class_exists($alias) || interface_exists($alias) || trait_exists($alias)) { class_alias($alias, $class); } }; } private static function getClassLoaderFromVendorDirectory(string $composerVendorDirectory): ?ClassLoader { $filename = rtrim($composerVendorDirectory, '/') . '/autoload.php'; if (!file_exists($filename)) { return null; } /** @psalm-suppress MixedAssignment */ $loader = include $filename; if (!$loader instanceof ClassLoader) { return null; } return $loader; } } src/ConfigPostProcessor.php000064400000031001144760110740012016 0ustar00 true, 'factories' => true, 'invokables' => true, 'services' => true, ]; /** @var array String keys => string values */ private $exactReplacements = [ 'zend-expressive' => 'mezzio', 'zf-apigility' => 'api-tools', ]; /** @var Replacements */ private $replacements; /** @var callable[] */ private $rulesets; public function __construct() { $this->replacements = new Replacements(); /* Define the rulesets for replacements. * * Each ruleset has the following signature: * * @param mixed $value * @param string[] $keys Full nested key hierarchy leading to the value * @return null|callable * * If no match is made, a null is returned, allowing it to fallback to * the next ruleset in the list. If a match is made, a callback is returned, * and that will be used to perform the replacement on the value. * * The callback should have the following signature: * * @param mixed $value * @param string[] $keys * @return mixed The transformed value */ $this->rulesets = [ // Exact values function ($value) { return is_string($value) && isset($this->exactReplacements[$value]) ? [$this, 'replaceExactValue'] : null; }, // Router (MVC applications) // We do not want to rewrite these. function ($value, array $keys) { $key = array_pop($keys); // Only worried about a top-level "router" key. return $key === 'router' && $keys === [] && is_array($value) ? [$this, 'noopReplacement'] : null; }, // service- and pluginmanager handling function ($value) { return is_array($value) && array_intersect_key(self::SERVICE_MANAGER_KEYS_OF_INTEREST, $value) !== [] ? [$this, 'replaceDependencyConfiguration'] : null; }, // Array values function ($value, array $keys) { return $keys !== [] && is_array($value) ? [$this, '__invoke'] : null; }, ]; } /** * @param string[] $keys Hierarchy of keys, for determining location in * nested configuration. * @return array */ public function __invoke(array $config, array $keys = []) { $rewritten = []; foreach ($config as $key => $value) { // Determine new key from replacements $newKey = is_string($key) ? $this->replace($key, $keys) : $key; // Keep original values with original key, if the key has changed, but only at the top-level. if (empty($keys) && $newKey !== $key) { $rewritten[$key] = $value; } // Perform value replacements, if any $newValue = $this->replace($value, $keys, $newKey); // Key does not already exist and/or is not an array value if (! array_key_exists($newKey, $rewritten) || ! is_array($rewritten[$newKey])) { // Do not overwrite existing values with null values $rewritten[$newKey] = array_key_exists($newKey, $rewritten) && null === $newValue ? $rewritten[$newKey] : $newValue; continue; } // New value is null; nothing to do. if (null === $newValue) { continue; } // Key already exists as an array value, but $value is not an array if (! is_array($newValue)) { $rewritten[$newKey][] = $newValue; continue; } // Key already exists as an array value, and $value is also an array $rewritten[$newKey] = static::merge($rewritten[$newKey], $newValue); } return $rewritten; } /** * Perform substitutions as needed on an individual value. * * The $key is provided to allow fine-grained selection of rewrite rules. * * @param mixed $value * @param string[] $keys Key hierarchy * @param null|int|string $key * @return mixed */ private function replace($value, array $keys, $key = null) { // Add new key to the list of keys. // We do not need to remove it later, as we are working on a copy of the array. $keys[] = $key; // Identify rewrite strategy and perform replacements $rewriteRule = $this->replacementRuleMatch($value, $keys); return $rewriteRule($value, $keys); } /** * Merge two arrays together. * * If an integer key exists in both arrays, the value from the second array * will be appended to the first array. If both values are arrays, they are * merged together, else the value of the second array overwrites the one * of the first array. * * Based on zend-stdlib Zend\Stdlib\ArrayUtils::merge * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) * * @return array */ public static function merge(array $a, array $b) { foreach ($b as $key => $value) { if (! isset($a[$key]) && ! array_key_exists($key, $a)) { $a[$key] = $value; continue; } if (null === $value && array_key_exists($key, $a)) { // Leave as-is if value from $b is null continue; } if (is_int($key)) { $a[] = $value; continue; } if (is_array($value) && is_array($a[$key])) { $a[$key] = static::merge($a[$key], $value); continue; } $a[$key] = $value; } return $a; } /** * @param mixed $value * @param null|int|string $key * @return callable Callable to invoke with value */ private function replacementRuleMatch($value, $key = null) { foreach ($this->rulesets as $ruleset) { $result = $ruleset($value, $key); if (is_callable($result)) { return $result; } } return [$this, 'fallbackReplacement']; } /** * Replace a value using the translation table, if the value is a string. * * @param mixed $value * @return mixed */ private function fallbackReplacement($value) { return is_string($value) ? $this->replacements->replace($value) : $value; } /** * Replace a value matched exactly. * * @param mixed $value * @return mixed */ private function replaceExactValue($value) { return $this->exactReplacements[$value]; } private function replaceDependencyConfiguration(array $config) { $aliases = isset($config['aliases']) && is_array($config['aliases']) ? $this->replaceDependencyAliases($config['aliases']) : []; if ($aliases) { $config['aliases'] = $aliases; } $config = $this->replaceDependencyInvokables($config); $config = $this->replaceDependencyFactories($config); $config = $this->replaceDependencyServices($config); $keys = self::SERVICE_MANAGER_KEYS_OF_INTEREST; foreach ($config as $key => $data) { if (isset($keys[$key])) { continue; } $config[$key] = is_array($data) ? $this->__invoke($data, [$key]) : $data; } return $config; } /** * Rewrite dependency aliases array * * In this case, we want to keep the alias as-is, but rewrite the target. * * We need also provide an additional alias if the alias key is a legacy class. * * @return array */ private function replaceDependencyAliases(array $aliases) { foreach ($aliases as $alias => $target) { if (! is_string($alias) || ! is_string($target)) { continue; } $newTarget = $this->replacements->replace($target); $newAlias = $this->replacements->replace($alias); $notIn = [$newTarget]; $name = $newTarget; while (isset($aliases[$name])) { $notIn[] = $aliases[$name]; $name = $aliases[$name]; } if ($newAlias === $alias && ! in_array($alias, $notIn, true)) { $aliases[$alias] = $newTarget; continue; } if (isset($aliases[$newAlias])) { continue; } if (! in_array($newAlias, $notIn, true)) { $aliases[$alias] = $newAlias; $aliases[$newAlias] = $newTarget; } } return $aliases; } /** * Rewrite dependency invokables array * * In this case, we want to keep the alias as-is, but rewrite the target. * * We need also provide an additional alias if invokable is defined with * an alias which is a legacy class. * * @return array */ private function replaceDependencyInvokables(array $config) { if (empty($config['invokables']) || ! is_array($config['invokables'])) { return $config; } foreach ($config['invokables'] as $alias => $target) { if (! is_string($alias)) { continue; } $newTarget = $this->replacements->replace($target); $newAlias = $this->replacements->replace($alias); if ($alias === $target || isset($config['aliases'][$newAlias])) { $config['invokables'][$alias] = $newTarget; continue; } $config['invokables'][$newAlias] = $newTarget; if ($newAlias === $alias) { continue; } $config['aliases'][$alias] = $newAlias; unset($config['invokables'][$alias]); } return $config; } /** * @param mixed $value * @return mixed Returns $value verbatim. */ private function noopReplacement($value) { return $value; } private function replaceDependencyFactories(array $config) { if (empty($config['factories']) || ! is_array($config['factories'])) { return $config; } foreach ($config['factories'] as $service => $factory) { if (! is_string($service)) { continue; } $replacedService = $this->replacements->replace($service); $factory = is_string($factory) ? $this->replacements->replace($factory) : $factory; $config['factories'][$replacedService] = $factory; if ($replacedService === $service) { continue; } unset($config['factories'][$service]); if (isset($config['aliases'][$service])) { continue; } $config['aliases'][$service] = $replacedService; } return $config; } private function replaceDependencyServices(array $config) { if (empty($config['services']) || ! is_array($config['services'])) { return $config; } foreach ($config['services'] as $service => $serviceInstance) { if (! is_string($service)) { continue; } $replacedService = $this->replacements->replace($service); $serviceInstance = is_array($serviceInstance) ? $this->__invoke($serviceInstance) : $serviceInstance; $config['services'][$replacedService] = $serviceInstance; if ($service === $replacedService) { continue; } unset($config['services'][$service]); if (isset($config['aliases'][$service])) { continue; } $config['aliases'][$service] = $replacedService; } return $config; } } src/Module.php000064400000002506144760110740007300 0ustar00getEventManager() ->attach('mergeConfig', [$this, 'onMergeConfig']); } /** * Perform substitutions in the merged configuration. * * Rewrites keys and values matching known ZF classes, namespaces, and * configuration keys to their Laminas equivalents. * * Type-hinting deliberately omitted to allow unit testing * without dependencies on packages that do not exist yet. * * @param ModuleEvent $event */ public function onMergeConfig($event) { /** @var ConfigMergerInterface */ $configMerger = $event->getConfigListener(); $processor = new ConfigPostProcessor(); $configMerger->setMergedConfig( $processor( $configMerger->getMergedConfig($returnAsObject = false) ) ); } } src/Replacements.php000064400000002115144760110740010471 0ustar00replacements = array_merge( require __DIR__ . '/../config/replacements.php', $additionalReplacements ); // Provide multiple variants of strings containing namespace separators foreach ($this->replacements as $original => $replacement) { if (false === strpos($original, '\\')) { continue; } $this->replacements[str_replace('\\', '\\\\', $original)] = str_replace('\\', '\\\\', $replacement); $this->replacements[str_replace('\\', '\\\\\\\\', $original)] = str_replace('\\', '\\\\\\\\', $replacement); } } /** * @param string $value * @return string */ public function replace($value) { return strtr($value, $this->replacements); } } src/RewriteRules.php000064400000005324144760110740010510 0ustar00 'Mezzio\\ProblemDetails\\', 'Zend\\Expressive\\' => 'Mezzio\\', // Laminas 'Zend\\' => 'Laminas\\', 'ZF\\ComposerAutoloading\\' => 'Laminas\\ComposerAutoloading\\', 'ZF\\DevelopmentMode\\' => 'Laminas\\DevelopmentMode\\', // Apigility 'ZF\\Apigility\\' => 'Laminas\\ApiTools\\', 'ZF\\' => 'Laminas\\ApiTools\\', // ZendXml, API wrappers, zend-http OAuth support, zend-diagnostics, ZendDeveloperTools 'ZendXml\\' => 'Laminas\\Xml\\', 'ZendOAuth\\' => 'Laminas\\OAuth\\', 'ZendDiagnostics\\' => 'Laminas\\Diagnostics\\', 'ZendService\\ReCaptcha\\' => 'Laminas\\ReCaptcha\\', 'ZendService\\Twitter\\' => 'Laminas\\Twitter\\', 'ZendDeveloperTools\\' => 'Laminas\\DeveloperTools\\', ]; } /** * @return array */ public static function namespaceReverse() { return [ // ZendXml, ZendOAuth, ZendDiagnostics, ZendDeveloperTools 'Laminas\\Xml\\' => 'ZendXml\\', 'Laminas\\OAuth\\' => 'ZendOAuth\\', 'Laminas\\Diagnostics\\' => 'ZendDiagnostics\\', 'Laminas\\DeveloperTools\\' => 'ZendDeveloperTools\\', // Zend Service 'Laminas\\ReCaptcha\\' => 'ZendService\\ReCaptcha\\', 'Laminas\\Twitter\\' => 'ZendService\\Twitter\\', // Zend 'Laminas\\' => 'Zend\\', // Expressive 'Mezzio\\ProblemDetails\\' => 'Zend\\ProblemDetails\\', 'Mezzio\\' => 'Zend\\Expressive\\', // Laminas to ZfCampus 'Laminas\\ComposerAutoloading\\' => 'ZF\\ComposerAutoloading\\', 'Laminas\\DevelopmentMode\\' => 'ZF\\DevelopmentMode\\', // Apigility 'Laminas\\ApiTools\\Admin\\' => 'ZF\\Apigility\\Admin\\', 'Laminas\\ApiTools\\Doctrine\\' => 'ZF\\Apigility\\Doctrine\\', 'Laminas\\ApiTools\\Documentation\\' => 'ZF\\Apigility\\Documentation\\', 'Laminas\\ApiTools\\Example\\' => 'ZF\\Apigility\\Example\\', 'Laminas\\ApiTools\\Provider\\' => 'ZF\\Apigility\\Provider\\', 'Laminas\\ApiTools\\Welcome\\' => 'ZF\\Apiglity\\Welcome\\', 'Laminas\\ApiTools\\' => 'ZF\\', ]; } } src/autoload.php000064400000000067144760110740007663 0ustar00