diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..5f820b24 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,2 @@ +# These are supported funding model platforms +github: [phpgt] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6a451fa7..57986ce2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,44 +3,64 @@ name: CI on: [push] jobs: - build: + composer: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - - uses: php-actions/composer@v2 - - name: Upload build for test runner + + - name: Cache Composer dependencies + uses: actions/cache@v2 + with: + path: /tmp/composer-cache + key: ${{ runner.os }}-${{ hashFiles('**/composer.lock') }} + + - uses: php-actions/composer@v6 + + - name: Archive build + run: mkdir /tmp/github-actions/ && tar -cvf /tmp/github-actions/build.tar ./ + + - name: Upload build archive for test runners uses: actions/upload-artifact@v2 with: name: build-artifact - path: ./ + path: /tmp/github-actions phpunit: runs-on: ubuntu-latest - needs: [build] + needs: [composer] steps: - uses: actions/download-artifact@v2 with: name: build-artifact - path: ./ + path: /tmp/github-actions + + - name: Extract build archive + run: tar -xvf /tmp/github-actions/build.tar ./ - name: PHP Unit tests - uses: php-actions/phpunit@v9 + uses: php-actions/phpunit@v3 with: + php_version: 8.0 + php_extensions: xdebug configuration: test/phpunit/phpunit.xml + bootstrap: vendor/autoload.php phpstan: runs-on: ubuntu-latest - needs: [build] + needs: [composer] steps: - uses: actions/download-artifact@v2 with: name: build-artifact - path: ./ + path: /tmp/github-actions + + - name: Extract build archive + run: tar -xvf /tmp/github-actions/build.tar ./ - name: PHP Static Analysis - uses: php-actions/phpstan@master + uses: php-actions/phpstan@v3 with: - path: src/ \ No newline at end of file + path: src/ diff --git a/.scrutinizer.yml b/.scrutinizer.yml index a2d2669e..3f7485fd 100644 --- a/.scrutinizer.yml +++ b/.scrutinizer.yml @@ -1,14 +1,25 @@ build: environment: - php: - version: 7.4.0 - tests: - override: - - - command: 'vendor/bin/phpunit test/unit --coverage-clover coverage --whitelist src' - coverage: - file: 'coverage' - format: 'php-clover' + php: 8.0.0 + + nodes: + analysis: + tests: + override: + - php-scrutinizer-run + + tests-and-coverage: + environment: + php: + ini: + "xdebug.mode": coverage + tests: + override: + - phpcs-run ./src + - command: "vendor/bin/phpunit test/phpunit --coverage-clover test/phpunit/_coverage --whitelist src" + coverage: + file: "test/phpunit/_coverage" + format: "php-clover" checks: php: @@ -18,4 +29,4 @@ checks: filter: excluded_paths: - test/* - - vendor/* \ No newline at end of file + - vendor/* diff --git a/build.default.json b/build.default.json index 52a31119..5f2125f7 100644 --- a/build.default.json +++ b/build.default.json @@ -3,12 +3,11 @@ "require": { "node": "*", "babel": "*", - "webpack": "*", - "webpack-cli": "*" + "webpack": "*" }, "execute": { - "command": "webpack-cli", - "arguments": ["build", "--mode=development", "--devtool=source-map", "--entry=./script/main.es6", "--output-filename=script.js", "--output-path=./www"] + "command": "webpack", + "arguments": ["--entry","./script/main.es6", "--output-path", "./www", "--output-filename", "script.js", "--devtool", "source-map", "--mode", "production"] } }, diff --git a/composer.json b/composer.json index 97a76a18..94f9a2c3 100644 --- a/composer.json +++ b/composer.json @@ -13,21 +13,17 @@ "ext-dom": "*", "ext-json": "*", "php": ">=8.0", - "phpgt/build": "^1.0", - "phpgt/cli": "^1.3", + "phpgt/config": "^1.0", - "phpgt/cookie": "^1.0", - "phpgt/cron": "^1.0", - "phpgt/csrf": "^1.6", - "phpgt/database": "^1.1", - "phpgt/dom": "v3.0.0", - "phpgt/domtemplate": "^1.3 || ^2.0", - "phpgt/fetch": "^1.0", + "phpgt/csrf": "^1.7.2", + "phpgt/dom": "^3.0.0", + "phpgt/domtemplate": "^2.0", + "phpgt/database": "^1.4", "phpgt/http": "^1.0", - "phpgt/input": "^1.1", - "phpgt/protectedglobal": "^1.0", - "phpgt/server": "^1.1", - "phpgt/session": "^1.1", + "phpgt/logger": "^1.0", + "phpgt/routing": "^1.0", + "phpgt/servicecontainer": "^1.1.1", + "phpgt/session": "^1.1.2", "phpgt/sync": "^1.2", "psr/http-server-middleware": "^1.0", @@ -35,10 +31,8 @@ }, "require-dev": { - "phpunit/phpunit": "8.* || 9.*", - "behat/behat": "^3.0.5", - "behat/mink-extension": "^2.3", - "behat/mink-goutte-driver": "^1.2" + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9.5" }, "autoload": { @@ -63,5 +57,12 @@ "router", "toolbox", "prototype" + ], + + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/PhpGt" + } ] } diff --git a/composer.lock b/composer.lock index 0ab9986b..380d7cb6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,117 +4,87 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9259b8604fe99f00ba9567984803eef7", + "content-hash": "8930af8bf57e48f52900c6683b28d8d0", "packages": [ { - "name": "composer/semver", - "version": "1.7.2", + "name": "magicalex/write-ini-file", + "version": "v1.2.4", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a" + "url": "https://github.com/Magicalex/WriteiniFile.git", + "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a", + "url": "https://api.github.com/repos/Magicalex/WriteiniFile/zipball/3a933e8222ed2b0ff724c2d4278666fa257e42ac", + "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" + "php-coveralls/php-coveralls": "2.1.0", + "phpunit/phpunit": "5.7.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "WriteiniFile\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "GPL-3.0" ], "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" + "name": "magicalex", + "email": "magicalex@mondedie.fr" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "Write-ini-file php library for create, remove, erase, add, and update ini file", + "homepage": "https://github.com/Magicalex/WriteIniFile", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "file", + "ini", + "write", + "write_ini_file" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/1.7.2" + "issues": "https://github.com/Magicalex/WriteiniFile/issues", + "source": "https://github.com/Magicalex/WriteiniFile/tree/master" }, - "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": "2020-12-03T15:47:16+00:00" + "time": "2018-09-09T12:40:38+00:00" }, { - "name": "dragonmantank/cron-expression", - "version": "v2.3.1", + "name": "phpgt/cli", + "version": "v1.3.2", "source": { "type": "git", - "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2" + "url": "https://github.com/PhpGt/Cli.git", + "reference": "3f00088f76225088602e6d9faa1cf90fbd2205d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/65b2d8ee1f10915efb3b55597da3404f096acba2", - "reference": "65b2d8ee1f10915efb3b55597da3404f096acba2", + "url": "https://api.github.com/repos/PhpGt/Cli/zipball/3f00088f76225088602e6d9faa1cf90fbd2205d3", + "reference": "3f00088f76225088602e6d9faa1cf90fbd2205d3", "shasum": "" }, "require": { - "php": "^7.0|^8.0" + "ext-json": "*", + "ext-readline": "*", + "php": ">=8.0", + "phpgt/daemon": "1.*" }, "require-dev": { - "phpunit/phpunit": "^6.4|^7.0|^8.0|^9.0" + "phpstan/phpstan": ">=0.12.64", + "phpunit/phpunit": "9.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, "autoload": { "psr-4": { - "Cron\\": "src/Cron/" + "Gt\\Cli\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -123,117 +93,111 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Chris Tankersley", - "email": "chris@ctankersley.com", - "homepage": "https://github.com/dragonmantank" + "name": "Greg Bowler", + "email": "greg.bowler@g105b.com" } ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "description": "Command line interface builder.", "keywords": [ - "cron", - "schedule" + "cli", + "phpgt", + "terminal", + "webengine" ], "support": { - "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v2.3.1" + "issues": "https://github.com/PhpGt/Cli/issues", + "source": "https://github.com/PhpGt/Cli/tree/v1.3.2" }, "funding": [ { - "url": "https://github.com/dragonmantank", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2020-10-13T00:52:37+00:00" + "time": "2021-06-15T19:01:44+00:00" }, { - "name": "magicalex/write-ini-file", - "version": "v1.2.4", + "name": "phpgt/config", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/Magicalex/WriteiniFile.git", - "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac" + "url": "https://github.com/PhpGt/Config.git", + "reference": "805bba9ef1cb8e087a04e4601045271f73868a96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Magicalex/WriteiniFile/zipball/3a933e8222ed2b0ff724c2d4278666fa257e42ac", - "reference": "3a933e8222ed2b0ff724c2d4278666fa257e42ac", + "url": "https://api.github.com/repos/PhpGt/Config/zipball/805bba9ef1cb8e087a04e4601045271f73868a96", + "reference": "805bba9ef1cb8e087a04e4601045271f73868a96", "shasum": "" }, "require": { - "php": ">=5.6.0" + "magicalex/write-ini-file": "v1.2.4", + "php": ">=8.0", + "phpgt/typesafegetter": "1.*" }, "require-dev": { - "php-coveralls/php-coveralls": "2.1.0", - "phpunit/phpunit": "5.7.*" + "phpstan/phpstan": ">=0.12.64", + "phpunit/phpunit": "9.*" }, + "bin": [ + "bin/config-generate" + ], "type": "library", "autoload": { "psr-4": { - "WriteiniFile\\": "src" + "Gt\\Config\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0" + "MIT" ], "authors": [ { - "name": "magicalex", - "email": "magicalex@mondedie.fr" + "name": "Greg Bowler", + "email": "greg.bowler@g105b.com" } ], - "description": "Write-ini-file php library for create, remove, erase, add, and update ini file", - "homepage": "https://github.com/Magicalex/WriteIniFile", - "keywords": [ - "file", - "ini", - "write", - "write_ini_file" - ], + "description": "Manage configuration with ini files and environment variables.", "support": { - "issues": "https://github.com/Magicalex/WriteiniFile/issues", - "source": "https://github.com/Magicalex/WriteiniFile/tree/master" + "issues": "https://github.com/PhpGt/Config/issues", + "source": "https://github.com/PhpGt/Config/tree/v1.1.0" }, - "time": "2018-09-09T12:40:38+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/PhpGt", + "type": "github" + } + ], + "time": "2021-01-30T14:24:07+00:00" }, { - "name": "php-http/httplug", - "version": "2.2.0", + "name": "phpgt/csrf", + "version": "v1.7.2", "source": { "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9" + "url": "https://github.com/PhpGt/Csrf.git", + "reference": "301ede2ac2ca158e7e892eda7fc4a8752574d9ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/191a0a1b41ed026b717421931f8d3bd2514ffbf9", - "reference": "191a0a1b41ed026b717421931f8d3bd2514ffbf9", + "url": "https://api.github.com/repos/PhpGt/Csrf/zipball/301ede2ac2ca158e7e892eda7fc4a8752574d9ea", + "reference": "301ede2ac2ca158e7e892eda7fc4a8752574d9ea", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/promise": "^1.1", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" + "php": ">=7.4", + "phpgt/dom": "^3.0.0", + "phpgt/session": "1.*" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.1", - "phpspec/phpspec": "^5.1 || ^6.0" + "phpstan/phpstan": ">=0.12.64", + "phpunit/phpunit": "9.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, "autoload": { "psr-4": { - "Http\\Client\\": "src/" + "Gt\\Csrf\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -242,57 +206,56 @@ ], "authors": [ { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" + "name": "James Fellows", + "email": "mrfellows@gmail.com", + "role": "Developer" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "name": "Greg Bowler", + "email": "greg.bowler@g105b.com", + "role": "Developer" } ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], + "description": "Automatic protection from Cross-Site Request Forgery.", "support": { - "issues": "https://github.com/php-http/httplug/issues", - "source": "https://github.com/php-http/httplug/tree/master" + "issues": "https://github.com/PhpGt/Csrf/issues", + "source": "https://github.com/PhpGt/Csrf/tree/v1.7.2" }, - "time": "2020-07-13T15:43:23+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/PhpGt", + "type": "github" + } + ], + "time": "2021-10-17T17:24:40+00:00" }, { - "name": "php-http/promise", - "version": "1.1.0", + "name": "phpgt/cssxpath", + "version": "v1.1.4", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "url": "https://github.com/PhpGt/CssXPath.git", + "reference": "7f073ba346c49a339a7b2cda9ccfdb1994c5d271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/PhpGt/CssXPath/zipball/7f073ba346c49a339a7b2cda9ccfdb1994c5d271", + "reference": "7f073ba346c49a339a7b2cda9ccfdb1994c5d271", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=7.3" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "ext-dom": "*", + "ext-libxml": "*", + "phpstan/phpstan": ">=0.12.42", + "phpunit/phpunit": "^9.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" + "Gt\\CssXPath\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -301,96 +264,98 @@ ], "authors": [ { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Greg Bowler", + "email": "greg.bowler@g105b.com", + "homepage": "https://www.g105b.com", + "role": "Developer" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], + "description": "Convert CSS selectors to XPath queries.", "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "issues": "https://github.com/PhpGt/CssXPath/issues", + "source": "https://github.com/PhpGt/CssXPath/tree/v1.1.4" }, - "time": "2020-07-07T09:29:14+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/PhpGt", + "type": "github" + } + ], + "time": "2021-11-13T15:40:44+00:00" }, { - "name": "phpgt/build", - "version": "v1.0.1", + "name": "phpgt/daemon", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/Build.git", - "reference": "1c88657e01e3fed1df7df50c1f9df825290d1250" + "url": "https://github.com/PhpGt/Daemon.git", + "reference": "6490df99a22818149f30e3af408002ea7f73e035" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Build/zipball/1c88657e01e3fed1df7df50c1f9df825290d1250", - "reference": "1c88657e01e3fed1df7df50c1f9df825290d1250", + "url": "https://api.github.com/repos/PhpGt/Daemon/zipball/6490df99a22818149f30e3af408002ea7f73e035", + "reference": "6490df99a22818149f30e3af408002ea7f73e035", "shasum": "" }, "require": { - "composer/semver": "1.*", - "ext-json": "*", - "php": ">=7.4", - "phpgt/cli": "*", - "webmozart/glob": "4.*" + "php": ">=7.4" }, "require-dev": { - "phpunit/phpunit": "8.*" + "phpstan/phpstan": ">=0.12.42", + "phpunit/phpunit": "9.*" }, - "bin": [ - "bin/build" - ], "type": "library", "autoload": { "psr-4": { - "Gt\\Build\\": "./src" + "Gt\\Daemon\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Client-side build system for PHP projects.", + "description": "Background script execution with cross-platform compatible streaming.", "support": { - "issues": "https://github.com/PhpGt/Build/issues", - "source": "https://github.com/PhpGt/Build/tree/master" + "issues": "https://github.com/PhpGt/Daemon/issues", + "source": "https://github.com/PhpGt/Daemon/tree/v1.1.2" }, - "time": "2020-01-16T09:20:54+00:00" + "funding": [ + { + "url": "https://github.com/phpgt", + "type": "github" + } + ], + "time": "2021-02-02T17:33:16+00:00" }, { - "name": "phpgt/cli", - "version": "v1.3.1", + "name": "phpgt/database", + "version": "v1.4.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/Cli.git", - "reference": "02e25f8c0908f6977bda7ff5ddf1c0af75ba3c4b" + "url": "https://github.com/PhpGt/Database.git", + "reference": "db929a74e7e57f8424027c8fe685b37c6459db86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cli/zipball/02e25f8c0908f6977bda7ff5ddf1c0af75ba3c4b", - "reference": "02e25f8c0908f6977bda7ff5ddf1c0af75ba3c4b", + "url": "https://api.github.com/repos/PhpGt/Database/zipball/db929a74e7e57f8424027c8fe685b37c6459db86", + "reference": "db929a74e7e57f8424027c8fe685b37c6459db86", "shasum": "" }, "require": { - "ext-json": "*", + "ext-pdo": "*", "php": ">=7.4", - "phpgt/daemon": "1.*" + "phpgt/cli": "^1.3", + "phpgt/config": "^v1.1.0" }, "require-dev": { - "phpstan/phpstan": ">=0.12.64", - "phpunit/phpunit": "9.*" + "ext-sqlite3": "*", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.4" }, + "bin": [ + "bin/migrate" + ], "type": "library", "autoload": { "psr-4": { - "Gt\\Cli\\": "./src" + "Gt\\Database\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -401,57 +366,60 @@ { "name": "Greg Bowler", "email": "greg.bowler@g105b.com" + }, + { + "name": "James Fellows", + "email": "james.fellows@finanscapes.com" + }, + { + "name": "Christopher Paul Shaw", + "email": "i-am-in-your-code-stealing-your-lulz@chris-shaw.com" } ], - "description": "Command line interface builder.", - "keywords": [ - "cli", - "phpgt", - "terminal", - "webengine" - ], + "description": "Database API organisation.", "support": { - "issues": "https://github.com/PhpGt/Cli/issues", - "source": "https://github.com/PhpGt/Cli/tree/v1.3.1" + "issues": "https://github.com/PhpGt/Database/issues", + "source": "https://github.com/PhpGt/Database/tree/v1.4.0" }, "funding": [ { - "url": "https://github.com/phpgt", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2021-02-15T09:40:11+00:00" + "time": "2021-09-23T09:07:04+00:00" }, { - "name": "phpgt/config", - "version": "v1.1.0", + "name": "phpgt/dom", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/Config.git", - "reference": "805bba9ef1cb8e087a04e4601045271f73868a96" + "url": "https://github.com/PhpGt/Dom.git", + "reference": "762e10859d660d30c159cba3e8af19ec1ae5203c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Config/zipball/805bba9ef1cb8e087a04e4601045271f73868a96", - "reference": "805bba9ef1cb8e087a04e4601045271f73868a96", + "url": "https://api.github.com/repos/PhpGt/Dom/zipball/762e10859d660d30c159cba3e8af19ec1ae5203c", + "reference": "762e10859d660d30c159cba3e8af19ec1ae5203c", "shasum": "" }, "require": { - "magicalex/write-ini-file": "v1.2.4", + "ext-dom": "*", + "ext-libxml": "*", + "ext-mbstring": "*", "php": ">=8.0", - "phpgt/typesafegetter": "1.*" - }, + "phpgt/cssxpath": ">=1.1.2", + "phpgt/propfunc": "^1.0", + "psr/http-message": "^1.0" + }, "require-dev": { - "phpstan/phpstan": ">=0.12.64", - "phpunit/phpunit": "9.*" + "phpstan/phpstan": ">=0.12", + "phpunit/phpunit": ">=9.3.8" }, - "bin": [ - "bin/config-generate" - ], "type": "library", "autoload": { "psr-4": { - "Gt\\Config\\": "./src" + "Gt\\Dom\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -461,13 +429,55 @@ "authors": [ { "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" + "email": "greg.bowler@g105b.com", + "homepage": "https://www.g105b.com", + "role": "Developer" + }, + { + "name": "Alvaro Guimaraes", + "homepage": "https://github.com/aguimaraes", + "role": "Developer" + }, + { + "name": "James Fellows", + "homepage": "https://github.com/j4m3s", + "role": "Developer" + }, + { + "name": "Emile Ward", + "homepage": "https://github.com/emileward", + "role": "Developer" + }, + { + "name": "Jelmer Wijnja", + "homepage": "https://github.com/Jelmergu", + "role": "Developer" + }, + { + "name": "Ognjen Petrovic", + "homepage": "https://github.com/ognjen-petrovic", + "role": "Developer" + }, + { + "name": "Jacob Bearden", + "homepage": "https://github.com/jacobbearden", + "role": "Documentation contributor" + }, + { + "name": "Jaroslav Týc", + "homepage": "https://www.jaroslavtyc.com/", + "role": "Developer" + }, + { + "name": "Andrii Beziazychnyi", + "homepage": "https://www.atwix.com/", + "role": "Developer" } ], - "description": "Manage configuration with ini files and environment variables.", + "description": "The modern DOM API for PHP projects.", "support": { - "issues": "https://github.com/PhpGt/Config/issues", - "source": "https://github.com/PhpGt/Config/tree/v1.1.0" + "issues": "https://github.com/PhpGt/Dom/issues", + "source": "https://github.com/PhpGt/Dom/tree/v3.0.2" }, "funding": [ { @@ -475,115 +485,117 @@ "type": "github" } ], - "time": "2021-01-30T14:24:07+00:00" + "time": "2022-01-30T16:47:45+00:00" }, { - "name": "phpgt/cookie", - "version": "v1.0.2", + "name": "phpgt/domtemplate", + "version": "v2.2.3", "source": { "type": "git", - "url": "https://github.com/PhpGt/Cookie.git", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e" + "url": "https://github.com/PhpGt/DomTemplate.git", + "reference": "d8ea73c17a81ab54bea671701b324650f4d7dc48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cookie/zipball/dd811b6f04becc7c1f8524d84ad02e4635f4a94e", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e", + "url": "https://api.github.com/repos/PhpGt/DomTemplate/zipball/d8ea73c17a81ab54bea671701b324650f4d7dc48", + "reference": "d8ea73c17a81ab54bea671701b324650f4d7dc48", "shasum": "" }, "require": { - "php": ">=7.2" + "ext-dom": "*", + "php": ">=8.0", + "phpgt/dom": "^3.0.0" }, "require-dev": { - "phpunit/phpunit": "8.*" + "phpstan/phpstan": "~1.1", + "phpunit/phpunit": "~9.5" }, "type": "library", "autoload": { "psr-4": { - "Gt\\Cookie\\": "./src" + "Gt\\DomTemplate\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "Bind dynamic data to reusable HTML components.", + "support": { + "issues": "https://github.com/PhpGt/DomTemplate/issues", + "source": "https://github.com/PhpGt/DomTemplate/tree/v2.2.3" + }, + "funding": [ { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" + "url": "https://github.com/sponsors/PhpGt", + "type": "github" } ], - "description": "Object oriented cookie handler.", - "support": { - "issues": "https://github.com/PhpGt/Cookie/issues", - "source": "https://github.com/PhpGt/Cookie/tree/v1.0.2" - }, - "time": "2019-07-17T20:11:11+00:00" + "time": "2022-01-30T16:25:30+00:00" }, { - "name": "phpgt/cron", - "version": "v1.0.2", + "name": "phpgt/http", + "version": "v1.1.4", "source": { "type": "git", - "url": "https://github.com/PhpGt/Cron.git", - "reference": "a2eb61546c617b8880c90207bad2e6918d32bedb" + "url": "https://github.com/PhpGt/Http.git", + "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cron/zipball/a2eb61546c617b8880c90207bad2e6918d32bedb", - "reference": "a2eb61546c617b8880c90207bad2e6918d32bedb", + "url": "https://api.github.com/repos/PhpGt/Http/zipball/80ed7269050bc0f2de2402c5461711dd2418f55f", + "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f", "shasum": "" }, "require": { - "dragonmantank/cron-expression": "^2.2", - "php": ">=7.4", - "phpgt/cli": "1.*" + "php": ">=8.0", + "phpgt/input": "^v1", + "psr/http-message": "^v1.0.1", + "willdurand/negotiation": "v3.0.*" }, "require-dev": { "phpstan/phpstan": ">=0.12.64", "phpunit/phpunit": "9.*" }, - "bin": [ - "bin/cron" - ], "type": "library", "autoload": { "psr-4": { - "Gt\\Cron\\": "./src/" + "Gt\\Http\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Run scripts or static functions at regular intervals.", + "license": [ + "MIT" + ], + "description": "PSR-7 HTTP message implementation.", "support": { - "issues": "https://github.com/PhpGt/Cron/issues", - "source": "https://github.com/PhpGt/Cron/tree/v1.0.2" + "issues": "https://github.com/PhpGt/Http/issues", + "source": "https://github.com/PhpGt/Http/tree/v1.1.4" }, "funding": [ { - "url": "https://github.com/phpgt", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2021-02-15T09:58:17+00:00" + "time": "2021-06-23T15:45:09+00:00" }, { - "name": "phpgt/csrf", - "version": "v1.7.0", + "name": "phpgt/input", + "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/Csrf.git", - "reference": "f98b9eb71201bbc7ee94ad81b1fe13bde292cdd6" + "url": "https://github.com/PhpGt/Input.git", + "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Csrf/zipball/f98b9eb71201bbc7ee94ad81b1fe13bde292cdd6", - "reference": "f98b9eb71201bbc7ee94ad81b1fe13bde292cdd6", + "url": "https://api.github.com/repos/PhpGt/Input/zipball/ae78931ffd5c4800f362db61bd86f8e545733e86", + "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86", "shasum": "" }, "require": { - "php": ">=7.2", - "phpgt/dom": "*", - "phpgt/session": "*" + "phpgt/http": "*" }, "require-dev": { "phpunit/phpunit": "8.*" @@ -591,7 +603,45 @@ "type": "library", "autoload": { "psr-4": { - "Gt\\Csrf\\": "./src" + "Gt\\Input\\": "./src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Encapsulated user input.", + "support": { + "issues": "https://github.com/PhpGt/Input/issues", + "source": "https://github.com/PhpGt/Input/tree/v1.1.2" + }, + "time": "2019-11-29T11:22:35+00:00" + }, + { + "name": "phpgt/logger", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PhpGt/Logger.git", + "reference": "9cbb7c986941bff513aedf80dfa256497aff8dd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PhpGt/Logger/zipball/9cbb7c986941bff513aedf80dfa256497aff8dd2", + "reference": "9cbb7c986941bff513aedf80dfa256497aff8dd2", + "shasum": "" + }, + "require": { + "php": ">=7.4" + }, + "require-dev": { + "phpstan/phpstan": ">=0.12.64", + "phpunit/phpunit": "9.*" + }, + "type": "library", + "autoload": { + "psr-4": { + "Gt\\Logger\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -599,51 +649,49 @@ "MIT" ], "authors": [ - { - "name": "James Fellows", - "email": "mrfellows@gmail.com", - "role": "Developer" - }, { "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "role": "Developer" + "email": "greg.bowler@g105b.com" } ], - "description": "Automatic protection from Cross-Site Request Forgery.", + "description": "PSR-3 logger and implementation.", "support": { - "issues": "https://github.com/PhpGt/Csrf/issues", - "source": "https://github.com/PhpGt/Csrf/tree/master" + "issues": "https://github.com/PhpGt/Logger/issues", + "source": "https://github.com/PhpGt/Logger/tree/v1.0.0" }, - "time": "2020-05-06T17:44:52+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/PhpGt", + "type": "github" + } + ], + "time": "2021-09-21T14:18:11+00:00" }, { - "name": "phpgt/cssxpath", - "version": "v1.1.3", + "name": "phpgt/propfunc", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/PhpGt/CssXPath.git", - "reference": "64813864ab00e52cbde2cd517d6c6235b7f9ac69" + "url": "https://github.com/PhpGt/PropFunc.git", + "reference": "091213649e89ff22d1ef640b46fbee5215c65520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/CssXPath/zipball/64813864ab00e52cbde2cd517d6c6235b7f9ac69", - "reference": "64813864ab00e52cbde2cd517d6c6235b7f9ac69", + "url": "https://api.github.com/repos/PhpGt/PropFunc/zipball/091213649e89ff22d1ef640b46fbee5215c65520", + "reference": "091213649e89ff22d1ef640b46fbee5215c65520", "shasum": "" }, "require": { - "php": ">=7.4" + "php": ">=8.0" }, "require-dev": { - "ext-dom": "*", - "ext-libxml": "*", - "phpstan/phpstan": ">=0.12.42", - "phpunit/phpunit": "^9.5" + "phpstan/phpstan": ">=0.12", + "phpunit/phpunit": ">=9.3" }, "type": "library", "autoload": { "psr-4": { - "Gt\\CssXPath\\": "./src" + "Gt\\PropFunc\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -658,46 +706,50 @@ "role": "Developer" } ], - "description": "Convert CSS selectors to XPath queries.", + "description": "Property accessor and mutator functions.", "support": { - "issues": "https://github.com/PhpGt/CssXPath/issues", - "source": "https://github.com/PhpGt/CssXPath/tree/v1.1.3" + "issues": "https://github.com/PhpGt/PropFunc/issues", + "source": "https://github.com/PhpGt/PropFunc/tree/v1.0.1" }, "funding": [ { - "url": "https://github.com/phpgt", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2021-01-28T13:27:01+00:00" + "time": "2021-03-23T12:46:44+00:00" }, { - "name": "phpgt/curl", - "version": "v3.0.4", + "name": "phpgt/routing", + "version": "v1.0.5", "source": { "type": "git", - "url": "https://github.com/PhpGt/Curl.git", - "reference": "50436aa457d9ea508499b2f32b032b1882262efd" + "url": "https://github.com/PhpGt/Routing.git", + "reference": "847f46706a358340989cb996ce499fdcd8fca498" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Curl/zipball/50436aa457d9ea508499b2f32b032b1882262efd", - "reference": "50436aa457d9ea508499b2f32b032b1882262efd", + "url": "https://api.github.com/repos/PhpGt/Routing/zipball/847f46706a358340989cb996ce499fdcd8fca498", + "reference": "847f46706a358340989cb996ce499fdcd8fca498", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2.0" + "php": ">=8.0", + "phpgt/config": "^v1.1.0", + "phpgt/http": "^v1", + "phpgt/servicecontainer": "1.*", + "phpgt/typesafegetter": "^1.2.2", + "psr/http-message": "1.*", + "willdurand/negotiation": "^3.0" }, "require-dev": { - "phpstan/phpstan": ">=0.12.64", - "phpunit/phpunit": "9.*" + "phpstan/phpstan": "~1.2", + "phpunit/phpunit": "~9.5" }, "type": "library", "autoload": { "psr-4": { - "Gt\\Curl\\": "./src" + "Gt\\Routing\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", @@ -707,211 +759,174 @@ "authors": [ { "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" + "email": "greg.bowler@g105b.com", + "homepage": "https://www.g105b.com", + "role": "Developer" } ], - "description": "cURL object wrapper.", + "description": "Routes HTTP requests to your code.", "keywords": [ - "curl", - "curl_multi", - "http", - "interface" + "assembly", + "logic", + "redirect", + "request", + "route", + "router", + "uri", + "url", + "view" ], "support": { - "issues": "https://github.com/PhpGt/Curl/issues", - "source": "https://github.com/PhpGt/Curl/tree/v3.0.4" + "issues": "https://github.com/PhpGt/Routing/issues", + "source": "https://github.com/PhpGt/Routing/tree/v1.0.5" }, "funding": [ { - "url": "https://github.com/phpgt", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2020-12-24T19:03:28+00:00" + "time": "2022-01-31T13:57:32+00:00" }, { - "name": "phpgt/daemon", + "name": "phpgt/servicecontainer", "version": "v1.1.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/Daemon.git", - "reference": "6490df99a22818149f30e3af408002ea7f73e035" + "url": "https://github.com/PhpGt/ServiceContainer.git", + "reference": "8d0faf7325af1b5e46e24a19c5fa6a4f9371c240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Daemon/zipball/6490df99a22818149f30e3af408002ea7f73e035", - "reference": "6490df99a22818149f30e3af408002ea7f73e035", + "url": "https://api.github.com/repos/PhpGt/ServiceContainer/zipball/8d0faf7325af1b5e46e24a19c5fa6a4f9371c240", + "reference": "8d0faf7325af1b5e46e24a19c5fa6a4f9371c240", "shasum": "" }, "require": { - "php": ">=7.4" + "php": ">=8.0", + "psr/container": "^2.0.1" + }, + "provide": { + "psr/container-implementation": "1.0" }, "require-dev": { - "phpstan/phpstan": ">=0.12.42", + "phpstan/phpstan": "0.12.*", "phpunit/phpunit": "9.*" }, "type": "library", "autoload": { "psr-4": { - "Gt\\Daemon\\": "./src" + "Gt\\ServiceContainer\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Background script execution with cross-platform compatible streaming.", + "license": [ + "MIT" + ], + "description": "Centralised construction of a project's core objects.", "support": { - "issues": "https://github.com/PhpGt/Daemon/issues", - "source": "https://github.com/PhpGt/Daemon/tree/v1.1.2" + "issues": "https://github.com/PhpGt/ServiceContainer/issues", + "source": "https://github.com/PhpGt/ServiceContainer/tree/v1.1.2" }, "funding": [ { - "url": "https://github.com/phpgt", + "url": "https://github.com/sponsors/PhpGt", "type": "github" } ], - "time": "2021-02-02T17:33:16+00:00" + "time": "2021-11-09T11:41:52+00:00" }, { - "name": "phpgt/database", - "version": "1.3.0", + "name": "phpgt/session", + "version": "v1.1.3", "source": { "type": "git", - "url": "https://github.com/PhpGt/Database.git", - "reference": "168d6a74c9b97f5df537d875166f1d8c08cb3e86" + "url": "https://github.com/PhpGt/Session.git", + "reference": "5da87957e5b82f76b8cf4461b276bb22fae7c82c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Database/zipball/168d6a74c9b97f5df537d875166f1d8c08cb3e86", - "reference": "168d6a74c9b97f5df537d875166f1d8c08cb3e86", + "url": "https://api.github.com/repos/PhpGt/Session/zipball/5da87957e5b82f76b8cf4461b276bb22fae7c82c", + "reference": "5da87957e5b82f76b8cf4461b276bb22fae7c82c", "shasum": "" }, "require": { - "ext-pdo": "*", - "php": ">=7.4", - "phpgt/config": "*" + "php": ">=7.2" }, "require-dev": { - "ext-sqlite3": "*", - "phpstan/phpstan": "^0.12.42", - "phpunit/phpunit": "^9.4.0" + "phpstan/phpstan": "1.0.2", + "phpunit/phpunit": "9.*" }, - "bin": [ - "bin/db-migrate" - ], "type": "library", "autoload": { "psr-4": { - "Gt\\Database\\": "./src" + "Gt\\Session\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - }, - { - "name": "James Fellows", - "email": "james.fellows@finanscapes.com" - }, + "description": "Encapsulated user sessions.", + "support": { + "issues": "https://github.com/PhpGt/Session/issues", + "source": "https://github.com/PhpGt/Session/tree/v1.1.3" + }, + "funding": [ { - "name": "Christopher Paul Shaw", - "email": "i-am-in-your-code-stealing-your-lulz@chris-shaw.com" + "url": "https://github.com/sponsors/PhpGt", + "type": "github" } ], - "description": "Database API organisation.", - "support": { - "issues": "https://github.com/PhpGt/Database/issues", - "source": "https://github.com/PhpGt/Database/tree/1.3.0" - }, - "time": "2021-04-29T17:24:29+00:00" + "time": "2021-11-04T14:38:29+00:00" }, { - "name": "phpgt/dom", - "version": "v3.0.0", + "name": "phpgt/sync", + "version": "v1.2.8", "source": { "type": "git", - "url": "https://github.com/PhpGt/Dom.git", - "reference": "cbe5a007908dd24bea14c1eeeccf8cc8f83a225f" + "url": "https://github.com/PhpGt/Sync.git", + "reference": "47e6865deb2fa82c6738c911be60f0eb2f845d21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Dom/zipball/cbe5a007908dd24bea14c1eeeccf8cc8f83a225f", - "reference": "cbe5a007908dd24bea14c1eeeccf8cc8f83a225f", + "url": "https://api.github.com/repos/PhpGt/Sync/zipball/47e6865deb2fa82c6738c911be60f0eb2f845d21", + "reference": "47e6865deb2fa82c6738c911be60f0eb2f845d21", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-mbstring": "*", "php": ">=8.0", - "phpgt/cssxpath": ">=1.1.2", - "phpgt/propfunc": "^1.0", - "psr/http-message": "^1.0" + "phpgt/cli": "1.3.*", + "webmozart/glob": "4.*" }, "require-dev": { - "phpstan/phpstan": ">=0.12", - "phpunit/phpunit": ">=9.3.8" + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^9.5" }, + "bin": [ + "bin/sync" + ], "type": "library", "autoload": { "psr-4": { - "Gt\\Dom\\": "./src" + "Gt\\Sync\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "homepage": "https://www.g105b.com", - "role": "Developer" - }, - { - "name": "Alvaro Guimaraes", - "homepage": "https://github.com/aguimaraes", - "role": "Developer" - }, - { - "name": "James Fellows", - "homepage": "https://github.com/j4m3s", - "role": "Developer" - }, - { - "name": "Emile Ward", - "homepage": "https://github.com/emileward", - "role": "Developer" - }, - { - "name": "Jelmer Wijnja", - "homepage": "https://github.com/Jelmergu", - "role": "Developer" - }, - { - "name": "Ognjen Petrovic", - "homepage": "https://github.com/ognjen-petrovic", - "role": "Developer" - }, - { - "name": "Jacob Bearden", - "homepage": "https://github.com/jacobbearden", - "role": "Documentation contributor" - }, - { - "name": "Jaroslav Týc", - "homepage": "https://www.jaroslavtyc.com/", - "role": "Developer" - } + "description": "Synchronise two directories.", + "keywords": [ + "copy", + "file", + "files", + "filesystem", + "recursive", + "rsync", + "synchronise", + "synchronize" ], - "description": "The modern DOM API for PHP projects.", "support": { - "issues": "https://github.com/PhpGt/Dom/issues", - "source": "https://github.com/PhpGt/Dom/tree/v3.0.0" + "issues": "https://github.com/PhpGt/Sync/issues", + "source": "https://github.com/PhpGt/Sync/tree/v1.2.8" }, "funding": [ { @@ -919,45 +934,48 @@ "type": "github" } ], - "time": "2021-09-15T18:35:06+00:00" + "time": "2021-10-13T20:05:27+00:00" }, { - "name": "phpgt/domtemplate", - "version": "v2.0.1", + "name": "phpgt/typesafegetter", + "version": "v1.2.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/DomTemplate.git", - "reference": "75332111a9eb7f44c8f59cccb90fe409e9c90ad3" + "url": "https://github.com/PhpGt/TypeSafeGetter.git", + "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/DomTemplate/zipball/75332111a9eb7f44c8f59cccb90fe409e9c90ad3", - "reference": "75332111a9eb7f44c8f59cccb90fe409e9c90ad3", + "url": "https://api.github.com/repos/PhpGt/TypeSafeGetter/zipball/ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", + "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", "shasum": "" }, "require": { - "ext-dom": "*", - "php": ">=8.0", - "phpgt/dom": "^3.0.0" + "php": ">=8.0" }, "require-dev": { - "phpstan/phpstan": "0.12.*", - "phpunit/phpunit": "9.*" + "phpstan/phpstan": ">=0.12.42" }, "type": "library", "autoload": { "psr-4": { - "Gt\\DomTemplate\\": "./src" + "Gt\\TypeSafeGetter\\": "./src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Bind dynamic data to reusable HTML components.", + "authors": [ + { + "name": "Greg Bowler", + "email": "greg.bowler@g105b.com" + } + ], + "description": "An interface for objects that expose type-safe getter methods.", "support": { - "issues": "https://github.com/PhpGt/DomTemplate/issues", - "source": "https://github.com/PhpGt/DomTemplate/tree/v2.0.1" + "issues": "https://github.com/PhpGt/TypeSafeGetter/issues", + "source": "https://github.com/PhpGt/TypeSafeGetter/tree/v1.2.2" }, "funding": [ { @@ -965,44 +983,34 @@ "type": "github" } ], - "time": "2021-10-02T12:35:48+00:00" + "time": "2021-01-30T12:18:23+00:00" }, { - "name": "phpgt/fetch", - "version": "v1.0.1", + "name": "psr/container", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/PhpGt/Fetch.git", - "reference": "927f8474bc7f470b934244be55d19bd3a4644b96" + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Fetch/zipball/927f8474bc7f470b934244be55d19bd3a4644b96", - "reference": "927f8474bc7f470b934244be55d19bd3a4644b96", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2", - "php-http/httplug": "^2.0", - "phpgt/curl": "*", - "phpgt/http": "*", - "react/event-loop": "^1.0", - "react/promise": "2.*" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "phpstan/phpstan": ">=0.12.42", - "phpunit/phpunit": "9.*" + "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Fetch\\": "./src" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1011,144 +1019,163 @@ ], "authors": [ { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "Asynchronous HTTP client with promises for PHP 7 applications.", + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", "keywords": [ - "ajax", - "async", - "asynchronous", - "curl", - "curl_multi", - "fetch", - "get", - "http", - "post", - "xmlhttprequest" + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" ], "support": { - "issues": "https://github.com/PhpGt/Fetch/issues", - "source": "https://github.com/PhpGt/Fetch/tree/v1.0.1" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "funding": [ - { - "url": "https://github.com/phpgt", - "type": "github" - } - ], - "time": "2020-12-28T18:29:42+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { - "name": "phpgt/http", - "version": "v1.1.4", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/PhpGt/Http.git", - "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Http/zipball/80ed7269050bc0f2de2402c5461711dd2418f55f", - "reference": "80ed7269050bc0f2de2402c5461711dd2418f55f", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=8.0", - "phpgt/input": "^v1", - "psr/http-message": "^v1.0.1", - "willdurand/negotiation": "v3.0.*" - }, - "require-dev": { - "phpstan/phpstan": ">=0.12.64", - "phpunit/phpunit": "9.*" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Http\\": "./src" + "Psr\\Http\\Message\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PSR-7 HTTP message implementation.", - "support": { - "issues": "https://github.com/PhpGt/Http/issues", - "source": "https://github.com/PhpGt/Http/tree/v1.1.4" - }, - "funding": [ + "authors": [ { - "url": "https://github.com/sponsors/PhpGt", - "type": "github" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "time": "2021-06-23T15:45:09+00:00" + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "phpgt/input", - "version": "v1.1.2", + "name": "psr/http-server-handler", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/PhpGt/Input.git", - "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86" + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Input/zipball/ae78931ffd5c4800f362db61bd86f8e545733e86", - "reference": "ae78931ffd5c4800f362db61bd86f8e545733e86", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", + "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", "shasum": "" }, "require": { - "phpgt/http": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" + "php": ">=7.0", + "psr/http-message": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Input\\": "./src" + "Psr\\Http\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Encapsulated user input.", + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], "support": { - "issues": "https://github.com/PhpGt/Input/issues", - "source": "https://github.com/PhpGt/Input/tree/v1.1.2" + "issues": "https://github.com/php-fig/http-server-handler/issues", + "source": "https://github.com/php-fig/http-server-handler/tree/master" }, - "time": "2019-11-29T11:22:35+00:00" + "time": "2018-10-30T16:46:14+00:00" }, { - "name": "phpgt/propfunc", - "version": "v1.0.1", + "name": "psr/http-server-middleware", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/PhpGt/PropFunc.git", - "reference": "091213649e89ff22d1ef640b46fbee5215c65520" + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/PropFunc/zipball/091213649e89ff22d1ef640b46fbee5215c65520", - "reference": "091213649e89ff22d1ef640b46fbee5215c65520", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", + "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", "shasum": "" }, "require": { - "php": ">=8.0" - }, - "require-dev": { - "phpstan/phpstan": ">=0.12", - "phpunit/phpunit": ">=9.3" + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Gt\\PropFunc\\": "./src" + "Psr\\Http\\Server\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1157,218 +1184,297 @@ ], "authors": [ { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "homepage": "https://www.g105b.com", - "role": "Developer" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Property accessor and mutator functions.", + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], "support": { - "issues": "https://github.com/PhpGt/PropFunc/issues", - "source": "https://github.com/PhpGt/PropFunc/tree/v1.0.1" + "issues": "https://github.com/php-fig/http-server-middleware/issues", + "source": "https://github.com/php-fig/http-server-middleware/tree/master" }, - "funding": [ - { - "url": "https://github.com/sponsors/PhpGt", - "type": "github" - } - ], - "time": "2021-03-23T12:46:44+00:00" + "time": "2018-10-30T17:12:04+00:00" }, { - "name": "phpgt/protectedglobal", - "version": "v1.0.0", + "name": "symfony/polyfill-ctype", + "version": "v1.24.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/ProtectedGlobal.git", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/ProtectedGlobal/zipball/3291d2e846dd2d03d585364e9b6652fa76fae64a", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { - "php": ">7.1" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "8.*" + "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": { - "Gt\\ProtectedGlobal\\": "./src/" - } + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Protect against accidental use of superglobals.", + "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": { - "issues": "https://github.com/PhpGt/ProtectedGlobal/issues", - "source": "https://github.com/PhpGt/ProtectedGlobal/tree/v1.0.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" }, - "time": "2019-06-03T15:19:50+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-20T20:35:02+00:00" }, { - "name": "phpgt/server", - "version": "v1.1.0", + "name": "webmozart/assert", + "version": "1.10.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/Server.git", - "reference": "b783ab4b972b83d44bcc24261d8e4669d1c25795" + "url": "https://github.com/webmozarts/assert.git", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Server/zipball/b783ab4b972b83d44bcc24261d8e4669d1c25795", - "reference": "b783ab4b972b83d44bcc24261d8e4669d1c25795", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": ">=7.4", - "phpgt/cli": "*" + "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.*" + "phpunit/phpunit": "^8.5.13" }, - "bin": [ - "bin/serve" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Server\\": "./src/" + "Webmozart\\Assert\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Development HTTP server.", + "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/PhpGt/Server/issues", - "source": "https://github.com/PhpGt/Server/tree/master" + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2020-01-03T17:34:52+00:00" + "time": "2021-03-09T10:59:23+00:00" }, { - "name": "phpgt/session", - "version": "v1.1.2", + "name": "webmozart/glob", + "version": "4.4.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/Session.git", - "reference": "a890bade65489c9e3fc92cc3dfb44efc54985a9a" + "url": "https://github.com/webmozarts/glob.git", + "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Session/zipball/a890bade65489c9e3fc92cc3dfb44efc54985a9a", - "reference": "a890bade65489c9e3fc92cc3dfb44efc54985a9a", + "url": "https://api.github.com/repos/webmozarts/glob/zipball/539b5dbc10021d3f9242e7a9e9b6b37843179e83", + "reference": "539b5dbc10021d3f9242e7a9e9b6b37843179e83", "shasum": "" }, "require": { - "php": ">=7.2" + "php": "^7.3 || ^8.0.0", + "webmozart/path-util": "^2.2" }, "require-dev": { - "phpstan/phpstan": ">=0.12.64", - "phpunit/phpunit": "9.*" + "phpunit/phpunit": "^9.5", + "symfony/filesystem": "^5.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Session\\": "./src" + "Webmozart\\Glob\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Encapsulated user sessions.", - "support": { - "issues": "https://github.com/PhpGt/Session/issues", - "source": "https://github.com/PhpGt/Session/tree/v1.1.2" - }, - "funding": [ + "authors": [ { - "url": "https://github.com/phpgt", - "type": "github" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "time": "2021-01-12T10:15:28+00:00" + "description": "A PHP implementation of Ant's glob.", + "support": { + "issues": "https://github.com/webmozarts/glob/issues", + "source": "https://github.com/webmozarts/glob/tree/4.4.0" + }, + "time": "2021-10-07T16:13:08+00:00" }, { - "name": "phpgt/sync", - "version": "v1.2.6", + "name": "webmozart/path-util", + "version": "2.3.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/Sync.git", - "reference": "863c60643ff1ee816705a7ccb9cd0e7deeb83763" + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Sync/zipball/863c60643ff1ee816705a7ccb9cd0e7deeb83763", - "reference": "863c60643ff1ee816705a7ccb9cd0e7deeb83763", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", "shasum": "" }, "require": { - "php": ">=7.2", - "phpgt/cli": "1.3.*", - "webmozart/glob": "4.*" + "php": ">=5.3.3", + "webmozart/assert": "~1.0" }, "require-dev": { - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "9.*" + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" }, - "bin": [ - "bin/sync" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, "autoload": { "psr-4": { - "Gt\\Sync\\": "./src" + "Webmozart\\PathUtil\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", - "description": "Synchronise two directories.", - "keywords": [ - "copy", - "file", - "files", - "filesystem", - "recursive", - "rsync", - "synchronise", - "synchronize" + "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/PhpGt/Sync/issues", - "source": "https://github.com/PhpGt/Sync/tree/v1.2.6" + "issues": "https://github.com/webmozart/path-util/issues", + "source": "https://github.com/webmozart/path-util/tree/2.3.0" }, - "time": "2021-02-15T11:03:02+00:00" + "abandoned": "symfony/filesystem", + "time": "2015-12-17T08:42:14+00:00" }, { - "name": "phpgt/typesafegetter", - "version": "v1.2.2", + "name": "willdurand/negotiation", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/PhpGt/TypeSafeGetter.git", - "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31" + "url": "https://github.com/willdurand/Negotiation.git", + "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhpGt/TypeSafeGetter/zipball/ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", - "reference": "ffeb5d847b3a4b36081a5cd180587fc4d83c6e31", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", + "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", "shasum": "" }, "require": { - "php": ">=8.0" + "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": ">=0.12.42" + "symfony/phpunit-bridge": "^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { "psr-4": { - "Gt\\TypeSafeGetter\\": "./src" + "Negotiation\\": "src/Negotiation" } }, "notification-url": "https://packagist.org/downloads/", @@ -1377,3051 +1483,186 @@ ], "authors": [ { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "An interface for objects that expose type-safe getter methods.", - "support": { - "issues": "https://github.com/PhpGt/TypeSafeGetter/issues", - "source": "https://github.com/PhpGt/TypeSafeGetter/tree/v1.2.2" - }, - "funding": [ - { - "url": "https://github.com/sponsors/PhpGt", - "type": "github" - } - ], - "time": "2021-01-30T12:18:23+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "shasum": "" - }, - "require": { - "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "support": { - "source": "https://github.com/php-fig/http-client/tree/master" - }, - "time": "2020-06-29T06:28:15+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-handler/issues", - "source": "https://github.com/php-fig/http-server-handler/tree/master" - }, - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-server-middleware/issues", - "source": "https://github.com/php-fig/http-server-middleware/tree/master" - }, - "time": "2018-10-30T17:12:04+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:31:24+00:00" - }, - { - "name": "react/promise", - "version": "v2.8.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.8.0" - }, - "time": "2020-05-12T15:16:56+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "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/glob", - "version": "4.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/glob.git", - "reference": "06358fafde0f32edb4513f4fd88fe113a40c90ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/glob/zipball/06358fafde0f32edb4513f4fd88fe113a40c90ee", - "reference": "06358fafde0f32edb4513f4fd88fe113a40c90ee", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0.0", - "webmozart/path-util": "^2.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.0", - "symfony/filesystem": "^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Glob\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A PHP implementation of Ant's glob.", - "support": { - "issues": "https://github.com/webmozarts/glob/issues", - "source": "https://github.com/webmozarts/glob/tree/4.3.0" - }, - "time": "2021-01-21T06:17:15+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "time": "2015-12-17T08:42:14+00:00" - }, - { - "name": "willdurand/negotiation", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", - "shasum": "" - }, - "require": { - "php": ">=7.1.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "psr-4": { - "Negotiation\\": "src/Negotiation" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "William Durand", - "email": "will+git@drnd.me" - } - ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", - "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" - ], - "support": { - "issues": "https://github.com/willdurand/Negotiation/issues", - "source": "https://github.com/willdurand/Negotiation/tree/3.0.0" - }, - "time": "2020-09-25T08:01:41+00:00" - } - ], - "packages-dev": [ - { - "name": "behat/behat", - "version": "v3.8.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/Behat.git", - "reference": "fbb065457d523d9856d4b50775b4151a7598b510" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/fbb065457d523d9856d4b50775b4151a7598b510", - "reference": "fbb065457d523d9856d4b50775b4151a7598b510", - "shasum": "" - }, - "require": { - "behat/gherkin": "^4.6.0", - "behat/transliterator": "^1.2", - "ext-mbstring": "*", - "php": "^7.2 || ^8.0", - "psr/container": "^1.0", - "symfony/config": "^4.4 || ^5.0", - "symfony/console": "^4.4 || ^5.0", - "symfony/dependency-injection": "^4.4 || ^5.0", - "symfony/event-dispatcher": "^4.4 || ^5.0", - "symfony/translation": "^4.4 || ^5.0", - "symfony/yaml": "^4.4 || ^5.0" - }, - "require-dev": { - "container-interop/container-interop": "^1.2", - "herrera-io/box": "~1.6.1", - "phpunit/phpunit": "^8.5 || ^9.0", - "symfony/process": "^4.4 || ^5.0" - }, - "suggest": { - "ext-dom": "Needed to output test results in JUnit format." - }, - "bin": [ - "bin/behat" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Behat\\": "src/Behat/Behat/", - "Behat\\Testwork\\": "src/Behat/Testwork/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Scenario-oriented BDD framework for PHP", - "homepage": "http://behat.org/", - "keywords": [ - "Agile", - "BDD", - "ScenarioBDD", - "Scrum", - "StoryBDD", - "User story", - "business", - "development", - "documentation", - "examples", - "symfony", - "testing" - ], - "support": { - "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.8.1" - }, - "time": "2020-11-07T15:55:18+00:00" - }, - { - "name": "behat/gherkin", - "version": "v4.8.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd", - "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd", - "shasum": "" - }, - "require": { - "php": "~7.2|~8.0" - }, - "require-dev": { - "cucumber/cucumber": "dev-gherkin-16.0.0", - "phpunit/phpunit": "~8|~9", - "symfony/phpunit-bridge": "~3|~4|~5", - "symfony/yaml": "~3|~4|~5" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Gherkin DSL parser for PHP", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ], - "support": { - "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.8.0" - }, - "time": "2021-02-04T12:44:21+00:00" - }, - { - "name": "behat/mink", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/Mink.git", - "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887", - "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20", - "symfony/debug": "^2.7|^3.0|^4.0", - "symfony/phpunit-bridge": "^3.4.38 || ^5.0.5" - }, - "suggest": { - "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", - "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", - "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", - "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)", - "dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Browser controller/emulator abstraction for PHP", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "testing", - "web" - ], - "support": { - "issues": "https://github.com/minkphp/Mink/issues", - "source": "https://github.com/minkphp/Mink/tree/v1.8.1" - }, - "time": "2020-03-11T15:45:53+00:00" - }, - { - "name": "behat/mink-browserkit-driver", - "version": "v1.3.4", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", - "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/e3b90840022ebcd544c7b394a3c9597ae242cbee", - "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee", - "shasum": "" - }, - "require": { - "behat/mink": "^1.7.1@dev", - "php": ">=5.3.6", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master", - "symfony/debug": "^2.7|^3.0|^4.0", - "symfony/http-kernel": "~2.3|~3.0|~4.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Symfony2 BrowserKit driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "Mink", - "Symfony2", - "browser", - "testing" - ], - "support": { - "issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues", - "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.3.4" - }, - "time": "2020-03-11T09:49:45+00:00" - }, - { - "name": "behat/mink-extension", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/MinkExtension.git", - "reference": "80f7849ba53867181b7e412df9210e12fba50177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", - "reference": "80f7849ba53867181b7e412df9210e12fba50177", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.5", - "behat/mink": "^1.5", - "php": ">=5.3.2", - "symfony/config": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "behat/mink-goutte-driver": "^1.1", - "phpspec/phpspec": "^2.0" - }, - "type": "behat-extension", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com" - } - ], - "description": "Mink extension for Behat", - "homepage": "http://extensions.behat.org/mink", - "keywords": [ - "browser", - "gui", - "test", - "web" - ], - "support": { - "issues": "https://github.com/Behat/MinkExtension/issues", - "source": "https://github.com/Behat/MinkExtension/tree/master" - }, - "time": "2018-02-06T15:36:30+00:00" - }, - { - "name": "behat/mink-goutte-driver", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkGoutteDriver.git", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "shasum": "" - }, - "require": { - "behat/mink": "~1.6@dev", - "behat/mink-browserkit-driver": "~1.2@dev", - "fabpot/goutte": "~1.0.4|~2.0|~3.1", - "php": ">=5.3.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Goutte driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "goutte", - "headless", - "testing" - ], - "support": { - "issues": "https://github.com/minkphp/MinkGoutteDriver/issues", - "source": "https://github.com/minkphp/MinkGoutteDriver/tree/master" - }, - "time": "2016-03-05T09:04:22+00:00" - }, - { - "name": "behat/transliterator", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Transliterator.git", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0", - "phpunit/phpunit": "^4.8.36|^6.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Transliterator\\": "src/Behat/Transliterator" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Artistic-1.0" - ], - "description": "String transliterator", - "keywords": [ - "i18n", - "slug", - "transliterator" - ], - "support": { - "issues": "https://github.com/Behat/Transliterator/issues", - "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" - }, - "time": "2020-01-14T16:39: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": "fabpot/goutte", - "version": "v3.3.1", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "reference": "80a23b64f44d54dd571d114c473d9d7e9ed84ca5", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=7.1.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^5.0" - }, - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Goutte\\": "Goutte" - }, - "exclude-from-classmap": [ - "Goutte/Tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", - "keywords": [ - "scraper" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/Goutte/issues", - "source": "https://github.com/FriendsOfPHP/Goutte/tree/v3.3.1" - }, - "time": "2020-11-01T09:30:18+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.5.5", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.5-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "support": { - "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5" - }, - "time": "2020-06-16T21:01:06+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "support": { - "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" - }, - "time": "2021-03-07T09:25:29+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.8.2", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" - }, - "suggest": { - "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "support": { - "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" - }, - "time": "2021-04-26T09:17:50+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.10.2", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2020-11-13T09:40:50+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.12.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" - }, - "time": "2021-07-21T10:44:31+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" - }, - "time": "2021-02-23T14:00:09+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "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.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" - }, - "time": "2021-03-17T13:42:18+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", - "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.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-03-28T07:26:59+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:57:25+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.9", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" - }, - "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-08-31T06:47:40+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" - }, - "time": "2019-03-08T08:55:37+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" + "name": "William Durand", + "email": "will+git@drnd.me" } ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", + "description": "Content Negotiation tools for PHP provided as a standalone library.", + "homepage": "http://williamdurand.fr/Negotiation/", "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" + "accept", + "content", + "format", + "header", + "negotiation" ], "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "issues": "https://github.com/willdurand/Negotiation/issues", + "source": "https://github.com/willdurand/Negotiation/tree/3.0.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, + "time": "2020-09-25T08:01:41+00:00" + } + ], + "packages-dev": [ { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "doctrine/instantiator", + "version": "1.4.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" + "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", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "constructor", + "instantiate" ], "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.4.0" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" }, { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2020-11-10T18:47:58+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.3", + "name": "myclabs/deep-copy", + "version": "1.10.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", + "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } + "MIT" ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Create deep copies (clones) of your objects", "keywords": [ - "global state" + "clone", + "copy", + "duplicate", + "object", + "object graph" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2020-11-13T09:40:50+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "nikic/php-parser", + "version": "v4.13.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", + "reference": "210577fe3cf7badcc5814d99455df46564f3c077", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "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": "1.0-dev" + "dev-master": "4.9-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4429,51 +1670,45 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nikita Popov" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2021-11-30T19:35:32+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "phar-io/manifest", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4486,51 +1721,47 @@ "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" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2021-07-20T11:28:43+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, "autoload": { "classmap": [ "src/" @@ -4541,2073 +1772,1704 @@ "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" + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Library for handling version information and constraints", "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-2.x": "2.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "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/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2020-06-27T09:03:43+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "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": [ + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], - "time": "2020-09-28T06:45:17+00:00" + "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": "sebastian/type", - "version": "2.3.4", + "name": "phpdocumentor/type-resolver", + "version": "1.6.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", "shasum": "" }, "require": { - "php": ">=7.3" + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "ext-tokenizer": "*", + "psalm/phar": "^4.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-01-04T19:58:01+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "phpspec/prophecy", + "version": "v1.15.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/phpspec/prophecy.git", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", "shasum": "" }, "require": { - "php": ">=7.3" + "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": "3.0-dev" + "dev-master": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Prophecy\\": "src/Prophecy" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Konstantin Kudryashov", + "email": "ever.zet@gmail.com", + "homepage": "http://everzet.com" + }, + { + "name": "Marcello Duarte", + "email": "marcello.duarte@gmail.com" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "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/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "issues": "https://github.com/phpspec/prophecy/issues", + "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2021-12-08T12:19:24+00:00" }, { - "name": "symfony/browser-kit", - "version": "v4.4.27", + "name": "phpstan/phpstan", + "version": "1.4.6", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8a7761f1c520e0dad6e04d862fdc697445457cfe", + "reference": "8a7761f1c520e0dad6e04d862fdc697445457cfe", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" - }, - "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" + "php": "^7.1|^8.0" }, - "suggest": { - "symfony/process": "" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "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": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", - "homepage": "https://symfony.com", + "description": "PHPStan - PHP Static Analysis Tool", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.27" + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.4.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" + "url": "https://github.com/ondrejmirtes", + "type": "github" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/phpstan", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2022-02-06T12:56:13+00:00" }, { - "name": "symfony/config", - "version": "v4.4.30", + "name": "phpunit/php-code-coverage", + "version": "9.2.11", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "d9ea72de055cd822e5228ff898e2aad2f52f76b0" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/d9ea72de055cd822e5228ff898e2aad2f52f76b0", - "reference": "d9ea72de055cd822e5228ff898e2aad2f52f76b0", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/665a1ac0a763c51afc30d6d130dac0813092b17f", + "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" - }, - "conflict": { - "symfony/finder": "<3.4" + "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": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "phpunit/phpunit": "^9.3" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "ext-pcov": "*", + "ext-xdebug": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", - "homepage": "https://symfony.com", + "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": { - "source": "https://github.com/symfony/config/tree/v4.4.30" + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.11" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2022-02-18T12:46:09+00:00" }, { - "name": "symfony/console", - "version": "v5.3.7", + "name": "phpunit/php-file-iterator", + "version": "3.0.6", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a" + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8b1008344647462ae6ec57559da166c2bfa5e16a", - "reference": "8b1008344647462ae6ec57559da166c2bfa5e16a", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" + "php": ">=7.3" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", "keywords": [ - "cli", - "command line", - "console", - "terminal" + "filesystem", + "iterator" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.7" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-08-25T20:02:16+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { - "name": "symfony/css-selector", - "version": "v5.3.4", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/7fb120adc7f600a59027775b224c13a33530dd90", - "reference": "7fb120adc7f600a59027775b224c13a33530dd90", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } }, - "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.4" + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v4.4.27", + "name": "phpunit/php-text-template", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "52866e2cb314972ff36c5b3d405ba8f523e56f6e" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/52866e2cb314972ff36c5b3d405ba8f523e56f6e", - "reference": "52866e2cb314972ff36c5b3d405ba8f523e56f6e", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "php": ">=7.3" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Allows you to standardize and centralize the way objects are constructed in your application", - "homepage": "https://symfony.com", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.27" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-07-23T15:41:52+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v2.4.0", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627", - "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "5.0-dev" } }, "autoload": { - "files": [ - "function.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0" + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v4.4.30", + "name": "phpunit/phpunit", + "version": "9.5.14", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4" + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "1883687169c017d6ae37c58883ca3994cfc34189" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4632ae3567746c7e915c33c67a2fb6ab746090c4", - "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189", + "reference": "1883687169c017d6ae37c58883ca3994cfc34189", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "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": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" }, "suggest": { - "symfony/css-selector": "" + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Eases DOM navigation for HTML and XML documents", - "homepage": "https://symfony.com", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.30" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-08-28T15:40:01+00:00" + "time": "2022-02-18T12:54:07+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v5.3.7", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ce7b20d69c66a20939d8952b617506a44d102130", - "reference": "ce7b20d69c66a20939d8952b617506a44d102130", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/dependency-injection": "<4.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "php": ">=7.3" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.7" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + { + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "symfony/event-dispatcher-contracts", - "version": "v2.4.0", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11", - "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/event-dispatcher": "^1" + "php": ">=7.3" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { - "name": "symfony/filesystem", - "version": "v5.3.4", + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/343f4fe324383ca46792cae728a3b6e2f708fb32", - "reference": "343f4fe324383ca46792cae728a3b6e2f708fb32", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.4" + "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://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "name": "sebastian/comparator", + "version": "4.0.6", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" + "comparator", + "compare", + "equality" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "nikic/php-parser": "^4.7", + "php": ">=7.3" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" - }, - { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "idn", - "intl", - "polyfill", - "portable", - "shim" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "name": "sebastian/diff", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" }, - "suggest": { - "ext-intl": "For best performance" + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, + "funding": [ { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "sebastian/environment", + "version": "5.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.1-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "Xdebug", + "environment", + "hhvm" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2020-09-28T05:52:38+00:00" }, { - "name": "symfony/polyfill-php72", - "version": "v1.23.0", + "name": "sebastian/exporter", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "export", + "exporter" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2021-11-11T14:18:36+00:00" }, { - "name": "symfony/polyfill-php73", - "version": "v1.23.0", + "name": "sebastian/global-state", + "version": "5.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010", - "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { - "php": ">=7.1" + "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-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "global state" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", "shasum": "" }, "require": { - "php": ">=7.1" + "nikic/php-parser": "^4.6", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.23.0", + "name": "sebastian/object-enumerator", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "e66119f3de95efc359483f810c4c3e6436279436" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436", - "reference": "e66119f3de95efc359483f810c4c3e6436279436", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.1" + "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-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "4.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "files": [ - "bootstrap.php" - ], "classmap": [ - "Resources/stubs" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-05-21T13:25:03+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "symfony/service-contracts", - "version": "v2.4.0", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", - "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1" + "php": ">=7.3" }, - "suggest": { - "symfony/service-implementation": "" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "2.0-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-04-01T10:43:52+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "symfony/string", - "version": "v5.3.7", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8d224396e28d30f81969f083a58763b8b9ceb0a5", - "reference": "8d224396e28d30f81969f083a58763b8b9ceb0a5", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "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" + "php": ">=7.3" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "phpunit/phpunit": "^9.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "files": [ - "Resources/functions.php" - ], - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "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" - ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "source": "https://github.com/symfony/string/tree/v5.3.7" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-08-26T08:00:08+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.30", + "name": "sebastian/resource-operations", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "db0ba1e85280d8ff11e38d53c70f8814d4d740f5" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/db0ba1e85280d8ff11e38d53c70f8814d4d740f5", - "reference": "db0ba1e85280d8ff11e38d53c70f8814d4d740f5", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0|2.0" + "php": ">=7.3" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "phpunit/phpunit": "^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" } ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.30" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-08-26T05:57:13+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "symfony/translation-contracts", - "version": "v2.4.0", + "name": "sebastian/type", + "version": "2.3.4", "source": { "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95", - "reference": "95c812666f3e91db75385749fe219c5e494c7f95", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=7.3" }, - "suggest": { - "symfony/translation-implementation": "" + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "2.3-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-03-23T23:28:01+00:00" + "time": "2021-06-15T12:49:02+00:00" }, { - "name": "symfony/yaml", - "version": "v5.3.6", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", - "reference": "4500fe63dc9c6ffc32d3b1cb0448c329f9c814b7", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<4.4" - }, - "require-dev": { - "symfony/console": "^4.4|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "php": ">=7.3" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.6" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2021-07-29T06:20:01+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { "name": "theseer/tokenizer", @@ -6672,5 +3534,5 @@ "php": ">=8.0" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/config.default.ini b/config.default.ini index 748ced1d..26fcf291 100644 --- a/config.default.ini +++ b/config.default.ini @@ -1,6 +1,28 @@ [app] namespace=App -default_content_type = text/html +class_dir=class +service_loader=ServiceLoader +slow_delta=0.25 +very_slow_delta=0.50 +render_buffer_size=1024 + +[router] +router_file=router.php +router_class=AppRouter +default_content_type=text/html + +[view] +component_directory=page/_component +partial_directory=page/_partial + +[logger] +type=stdout +level=debug +path= +timestamp_format=Y-m-d H:i:s +log_format={TIMESTAMP}\t{LEVEL}\t{MESSAGE}\t{CONTEXT} +separator=\t +newline=\n [session] handler=Gt\Session\FileHandler @@ -20,4 +42,4 @@ migration_table=_migration query_path=query [security] -default_headers="X-Content-Type-Options: nosniff; X-Frame-Options: deny; Content-Security-Policy: default-src 'none'" \ No newline at end of file +;default_headers="X-Content-Type-Options: nosniff; X-Frame-Options: deny; Content-Security-Policy: default-src 'none'" diff --git a/go.php b/go.php index 3631d401..5bbc7cc1 100644 --- a/go.php +++ b/go.php @@ -2,36 +2,56 @@ /** * Welcome to the PHP.Gt WebEngine! * - * This file is the entry point to the WebEngine. The whole request-response lifecycle is - * documented at https://github.com/PhpGt/WebEngine/wiki/From-request-to-response + * This file is the entry point to the WebEngine. The whole request-response + * lifecycle is documented at: + * https://github.com/PhpGt/WebEngine/wiki/From-request-to-response */ - +chdir(dirname($_SERVER["DOCUMENT_ROOT"])); +ini_set("display_errors", "on"); /** - * Before any code is executed, return false here if a static file is requested. When running the - * PHP inbuilt server, this will output the static file. Other webservers should not get to this - * point, but it's safe to prevent unnecessary execution. + * Before any code is executed, return false here if a static file is requested. + * When running the PHP inbuilt server, this will output the static file. + * Other webservers should not get to this point, but it's safe to prevent + * unnecessary execution. */ $uri = urldecode(parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH)); if(strstr($uri, ".") -|| is_file($_SERVER["DOCUMENT_ROOT"] . $uri)) { + || is_file($_SERVER["DOCUMENT_ROOT"] . $uri)) { return false; } /** - * Require the Composer autoloader, so the rest of the script can locate classes by their namespace, - * rather than having to know where on disk the files exist. - * @see https://getcomposer.org/doc/00-intro.md + * Require the Composer autoloader, so the rest of the script can locate + * classes by their namespace, rather than having to know where on disk the + * files exist. + * @link https://getcomposer.org/doc/00-intro.md */ -$composerAutoloaderPath = implode(DIRECTORY_SEPARATOR, [ - dirname($_SERVER["DOCUMENT_ROOT"]), - "vendor", - "autoload.php", -]); -require($composerAutoloaderPath); +foreach([__DIR__, dirname($_SERVER["DOCUMENT_ROOT"])] as $dir) { + $autoloadPath = "$dir/vendor/autoload.php"; + if(file_exists($autoloadPath)) { + /** @noinspection PhpIncludeInspection */ + require $autoloadPath; + break; + } +} /** - * That's all we need to start the request-response lifecycle. Buckle up and enjoy the ride! - * @see https://github.com/PhpGt/WebEngine/wiki/From-request-to-response + * That's all we need to start the request-response lifecycle. + * Buckle up and enjoy the ride! + * @link https://github.com/PhpGt/WebEngine/wiki/From-request-to-response */ -$lifecycle = new Gt\WebEngine\Lifecycle(); -$lifecycle->start(); \ No newline at end of file +if(file_exists("init.php")) { + require("init.php"); +} +$lifecycle = new Gt\WebEngine\Middleware\Lifecycle(); +try { + $lifecycle->start(); +} +catch(Exception $e) { + if(function_exists("exception_handler")) { + call_user_func("exception_handler", $e); + } + else { + throw $e; + } +} diff --git a/router.default.php b/router.default.php new file mode 100644 index 00000000..f0011b3c --- /dev/null +++ b/router.default.php @@ -0,0 +1,143 @@ +findForUriPath( + $request->getUri()->getPath(), + "api/v1", + "php" + ) as $logicName => $path) { + $this->addToLogicAssembly($path); + } + } + + #[Any(name: "page-route", accept: "text/html,application/xhtml+xml,*/*")] + public function page( + Request $request + ):void { + $pathMatcher = new PathMatcher("page"); + $this->setViewClass(HTMLView::class); + $pathMatcher->addFilter(function(string $filePath, string $uriPath, string $baseDir):bool { +// There are three types of matching files: Basic, Magic and Dynamic. +// Basic is where a URI matches directly to a file on disk. +// Magic is where a URI matches a PHP.Gt-specific file, like _common or _header. +// Dynamic is where a URI matches a file/directory marked as dynamic with "@". + $basicFileMatch = new BasicFileMatch($filePath, $baseDir); + if($basicFileMatch->matches($uriPath)) { + return true; + } + + $magicFileMatch = new MagicFileMatch($filePath, $baseDir); + if($magicFileMatch->matches($uriPath)) { + return true; + } + + return false; + }); + +// This sort function allow multiple headers and footers to be in nested +// directories, so the highest level header is at the start of the list, +// with the reverse logic applied to footers. +// TODO: Extract into own function. Should this be maintained within PHP.Gt/Routing ? + $headerFooterSort = function(string $a, string $b):int { + $fileNameA = pathinfo($a, PATHINFO_FILENAME); + $fileNameB = pathinfo($b, PATHINFO_FILENAME); + + if($fileNameA === "_header") { + if($fileNameB === "_header") { + $aDepth = substr_count($a, "/"); + $bDepth = substr_count($b, "/"); + if($aDepth > $bDepth) { + return 1; + } + elseif($aDepth < $bDepth) { + return -1; + } + else { + return 0; + } + } + + + return -1; + } + + if($fileNameA === "_footer") { + if($fileNameB === "_footer") { + $aDepth = substr_count($a, "/"); + $bDepth = substr_count($b, "/"); + if($aDepth < $bDepth) { + return 1; + } + elseif($aDepth > $bDepth) { + return -1; + } + else { + return 0; + } + } + + return 1; + } + + if($fileNameB === "_header") { + return 1; + } + + if($fileNameB === "_footer") { + return -1; + } + + return 0; + }; + + $sortNestLevelCallback = fn(string $a, string $b) => + substr_count($a, "/") > substr_count($b, "/") + ? 1 + : (substr_count($a, "/") < substr_count($b, "/") + ? -1 + : 0); + + $matchingLogics = $pathMatcher->findForUriPath( + $request->getUri()->getPath(), + "page", + "php" + ); + usort($matchingLogics, $sortNestLevelCallback); + foreach($matchingLogics as $path) { + $this->addToLogicAssembly($path); + } + + $matchingViews = $pathMatcher->findForUriPath( + $request->getUri()->getPath(), + "page", + "html" + ); + usort($matchingViews, $headerFooterSort); + foreach($matchingViews as $path) { + $this->addToViewAssembly($path); + } + } + + #[Post(path: "/greet/@name", function: "greet", accept: "text/plain")] + public function dynamicText( + DynamicPath $dynamicPath + ):void { + $this->addToLogicAssembly("class/Output/Greeter.php"); + } +} diff --git a/src/Debug/Timer.php b/src/Debug/Timer.php new file mode 100644 index 00000000..6c732097 --- /dev/null +++ b/src/Debug/Timer.php @@ -0,0 +1,19 @@ +startTime = microtime(true); + } + + public function stop():void { + $this->endTime = microtime(true); + } + + public function getDelta():float { + return $this->endTime - $this->startTime; + } +} diff --git a/src/Dispatch/ApiDispatcher.php b/src/Dispatch/ApiDispatcher.php deleted file mode 100644 index bfafeaf9..00000000 --- a/src/Dispatch/ApiDispatcher.php +++ /dev/null @@ -1,22 +0,0 @@ -router = $router; - $this->appNamespace = $appNamespace; - $this->errorHandlingFlag = false; - $this->logicFactory = new LogicFactory(); - $this->logicPropertyStore = null; - } - - public function storeInternalObjects( - Config $config, - ServerInfo $serverInfo, - Input $input, - CookieHandler $cookie, - Session $session, - Database $database, - Headers $headers - ):void { - $this->logicFactory->setConfig($config); - $this->logicFactory->setServerInfo($serverInfo); - $this->logicFactory->setInput($input); - $this->logicFactory->setCookieHandler($cookie); - $this->logicFactory->setSession($session); - $this->logicFactory->setDatabase($database); - $this->logicFactory->setHeaders($headers); - - } - - public function setCsrfProtection(TokenStore $csrfProtection):void { - $this->csrfProtection = $csrfProtection; - } - - /** - * Handle the request and return a response. - */ - public function handle(ServerRequestInterface $request):ResponseInterface { - $uriPath = $request->getUri()->getPath(); - $response = null; - - if($this instanceof PageDispatcher) { - $response = new PageResponse(); - } - else { - $response = new ApiResponse(); - } - - /** @var View|PageView|ApiView|null $view */ - $view = null; - $templateDirectory = implode(DIRECTORY_SEPARATOR, [ - $this->router->getBaseViewLogicPath(), - "_component", - ]); - - $this->router->redirectInvalidPaths($uriPath); - $viewAssembly = $this->router->getViewAssembly(); - $view = $this->getView( - $response->getBody(), - (string)$viewAssembly, - $templateDirectory, - $uriPath, - $request->getHeaderLine("accept") - ); - - $this->logicFactory->setView($view); - $baseLogicDirectory = $this->router->getBaseViewLogicPath(); - $logicAssembly = $this->router->getLogicAssembly(); - -// TODO: Opportunity for dependency injection: - $this->logicPropertyStore = new LogicPropertyStore(); - - $logicObjects = $this->createLogicObjects( - $logicAssembly, - $baseLogicDirectory, - $request->getUri(), - $this->logicPropertyStore - ); - - if(!$logicAssembly->basenameExists() - && !$viewAssembly->basenameExists()) { - throw new BasenameNotFoundException($uriPath); - } - -/* - * Within the logic objects, code can throw HttpExceptions, such as HttpNotFound, - * HttpForbidden, HttpTemporaryRedirect, etc. This try-catch-finally block will - * handle any HttpExceptions thrown from the logic objects, but this is not the - * only place where these exceptions can be thrown. For example, any syntax error - * or runtime error can still generate exceptions, which will be caught upstream - * and replaced with a relevant server error exception. - * - * Each catch block catches a different type of exception individually so that - * different behaviour can be applied for logging/headers/etc. - * - * NOTE: The catch blocks return the updated response object, The finally - * block updates the response with the status code of the exception before it - * is returned, if one is thrown. - */ - $httpException = null; - $this->dispatchLogicObjects( - $logicObjects, - $this->logicPropertyStore - ); - - if($token = $this->injectCsrf($view)) { - $response = $response->withHeader("X-CSRF", $token); - } - - if(!$this->errorHandlingFlag - && $errorResponse = $this->httpErrorResponse($request)) { - return $errorResponse; - } - - if($view instanceof PageView) { - $view->getViewModel()->removeTemplateAttributes(); - } - $view->stream(); - - $response = $response->withHeader( - "Content-type", - $this->router->getContentType() - ); - return $response; - } - - public function overrideRouterUri(UriInterface $uri):void { - $this->router->overrideUri($uri); - } - - /** @throws BasenameNotFoundException */ - protected abstract function getView( - StreamInterface $outputStream, - string $body, - string $templateDirectory, - string $path = null, - string $type = null - ):View; - - protected function streamResponse(string $viewFile, StreamInterface $body) { - $bodyContent = file_get_contents($viewFile); - $body->write($bodyContent); - } - - /** @return AbstractLogic[] */ - protected function createLogicObjects( - Assembly $logicAssembly, - string $baseLogicDirectory, - UriInterface $uri, - LogicPropertyStore $logicPropertyStore - ):array { - $logicObjects = []; - - foreach($logicAssembly as $logicPath) { - try { - $logicObjects []= $this->logicFactory->createLogicObjectFromPath( - $logicPath, - $this->appNamespace, - $baseLogicDirectory, - $uri, - $logicPropertyStore - ); - } - catch(TypeError $exception) { - throw new IncorrectLogicObjectType($logicPath); - } - } - - return $logicObjects; - } - - /** @param AbstractLogic[] $logicObjects */ - protected function dispatchLogicObjects( - array $logicObjects, - LogicPropertyStore $logicPropertyStore - ):void { - foreach($logicObjects as $i => $setupLogic) { - if($setupLogic instanceof ApiSetup - || $setupLogic instanceof PageSetup) { - $setupLogic->go(); - unset($logicObjects[$i]); - } - } - - foreach($logicObjects as $logic) { - $this->setLogicProperties($logic, $logicPropertyStore); - $logic->before(); - } - - foreach($logicObjects as $logic) { - $logic->handleDo(); - } - - foreach($logicObjects as $logic) { - $logic->go(); - } - - foreach($logicObjects as $logic) { - $logic->after(); - } - } - - protected function injectCsrf(View $view):?string { - if($view instanceof PageView) { - $protector = new HTMLDocumentProtector( - $view->getViewModel(), - $this->csrfProtection - ); - return $protector->protectAndInject(); - } - - return null; - } - - protected function httpErrorResponse( - ServerRequestInterface $request - ):?ResponseInterface { -// TODO: Null is returned until issue #299 is resolved (no error handling for now). - return null; - } - - protected function setLogicProperties( - AbstractLogic $logic, - LogicPropertyStore $logicPropertyStore - ):void { - if($logic instanceof PageSetup - || $logic instanceof ApiSetup) { - return; - } - - $propertyStoreReader = new LogicPropertyStoreReader( - $logicPropertyStore - ); - - foreach($propertyStoreReader as $key => $value) { - if(is_null($value)) { - continue; - } - - if(in_array($key, LogicPropertyStoreReader::FORBIDDEN_LOGIC_PROPERTIES)) { -// TODO: Throw exception (?) - continue; - } - - if(!property_exists($logic, $key)) { - continue; - } - - $logic->$key = $value; - } - } -} \ No newline at end of file diff --git a/src/Dispatch/DispatcherFactory.php b/src/Dispatch/DispatcherFactory.php deleted file mode 100644 index 2f54de16..00000000 --- a/src/Dispatch/DispatcherFactory.php +++ /dev/null @@ -1,53 +0,0 @@ -get("app.namespace"); - $dispatcher = null; - - if($router instanceof PageRouter) { - $dispatcher = new PageDispatcher($router, $appNamespace); - } - if($router instanceof ApiRouter) { - $dispatcher = new ApiDispatcher($router, $appNamespace); - } - - $dispatcher->storeInternalObjects( - $config, - $serverInfo, - $input, - $cookie, - $session, - $database, - $headers - ); - - $dispatcher->setCsrfProtection($csrfProtection); - - return $dispatcher; - } -} \ No newline at end of file diff --git a/src/Dispatch/IncorrectLogicObjectType.php b/src/Dispatch/IncorrectLogicObjectType.php deleted file mode 100644 index 993ba03b..00000000 --- a/src/Dispatch/IncorrectLogicObjectType.php +++ /dev/null @@ -1,6 +0,0 @@ -expandComponents(); - $document->extractTemplates(); - - if(!is_null($path)) { - $pathHyphens = str_replace("/", "-", $path); - $document->body->classList->add("uri-$pathHyphens"); - - $dirParts = ""; - $pathParts = explode("/", $path); - foreach($pathParts as $pathPart) { - if(empty($pathPart)) { - continue; - } - - $dirParts .= "-$pathPart"; - $document->body->classList->add("dir-$dirParts"); - } - } - - return new PageView($outputStream, $document); - } -} \ No newline at end of file diff --git a/src/FileSystem/ApplicationRootDirectoryNotSetException.php b/src/FileSystem/ApplicationRootDirectoryNotSetException.php deleted file mode 100644 index 5711758c..00000000 --- a/src/FileSystem/ApplicationRootDirectoryNotSetException.php +++ /dev/null @@ -1,6 +0,0 @@ -path = $this->getPath($basePath, $directory); - - if(is_null($this->path)) { - throw new RequiredDirectoryNotFoundException($basePath); - } - - $this->extensions = $extensions; - $this->basename = $basename; - $this->lookupBefore = $lookupBefore; - $this->lookupAfter = $lookupAfter; - $before = true; - $after = true; - - $basenamePath = $this->findInDirectory($basename)[0] ?? null; - - if($basenameMustExist) { - if(is_null($basenamePath)) { - throw new BasenameNotFoundException($basename); - } - - $basenameFile = new SplFileObject( - $basenamePath, - "r" - ); - $line = $basenameFile->getCurrentLine(); - $basenameFile = null; - - if(strstr($line, "no-")) { - if(strstr($line, "no-header")) { - $before = false; - } - if(strstr($line, "no-footer")) { - $after = false; - } - if(strstr( - $line, - "no-header-footer") - ) { - $before = false; - $after = false; - } - } - } - - $this->basenameExists = !is_null($basenamePath); - - $this->assemblyParts = $this->getAssemblyParts( - $before, - $after - ); - } - - public function __toString():string { - $string = ""; - - foreach($this->assemblyParts as $part) { - $string .= file_get_contents($part); - } - - return $string; - } - - public function basenameExists():bool { - return $this->basenameExists; - } - - protected function getAssemblyParts( - bool $before = true, - bool $after = true - ):array { - $beforeParts = []; - $afterParts = []; - - if($before) { - foreach($this->lookupBefore as $lookup) { - $beforeParts = array_merge( - $beforeParts, - $this->findInDirectory( - $lookup, - true - ) - ); - } - } - - $parts = $this->findInDirectory( - $this->basename, - false - ); - - if($after) { - foreach($this->lookupAfter as $lookup) { - $afterParts = array_merge( - $afterParts, - $this->findInDirectory( - $lookup, - true - ) - ); - } - } - -// Before parts must be in order of outer-inner nested files. -// After parts must be in order of inner-outer nested files. - usort($beforeParts, fn(string $a, string $b) - => substr_count($a, "/") > substr_count($b, "/")); - usort($afterParts, fn(string $a, string $b) - => substr_count($a, "/") < substr_count($b, "/")); - - $parts = array_merge( - $beforeParts, - $parts, - $afterParts - ); - - $parts = array_filter($parts); - $parts = array_unique($parts); - return array_values(array_filter($parts)); - } - - protected function findInDirectory( - string $basename, - bool $bubbleUp = false - ):array { - $foundPathList = []; - $appRoot = Path::getApplicationRootDirectory($this->path); - - $path = $this->path; - do { - $extensionString = implode(",", $this->extensions); - $extensionGlob = implode("", [ - "{", - $extensionString, - "}", - ]); - - $baseNamesToMatch = [ - $basename, - ]; - - $basenameFirstChar = $basename[0] ?? null; - - if($basenameFirstChar !== "_") { - $baseNamesToMatch []= "@*"; - } - - foreach($baseNamesToMatch as $baseNameToMatch) { - $glob = implode(DIRECTORY_SEPARATOR, [ - $path, - "$baseNameToMatch.$extensionGlob", - ]); - $matches = glob($glob, GLOB_BRACE); - - if(!empty($matches)) { - $foundPathList []= $matches[0]; - break; - } - } - - $path = dirname($path); - } while($bubbleUp && $path !== $appRoot && $path !== "/"); - - return $foundPathList; - } - - private function getPath(string $baseName, string $directory):?string { - $path = realpath($baseName . $directory); - -// If the path exists, simply return it. - if($path !== false) { - return $path; - } - -// Replace the path with any dynamic directories that exist. - $pathToScan = $baseName; - $subDirectoryParts = explode( - DIRECTORY_SEPARATOR, - $directory - ); - $subDirectoryParts = array_filter($subDirectoryParts); - - do { - $fileList = []; - if(is_dir($pathToScan)) { - $fileList = scandir($pathToScan); - } - - $nextDirName = array_shift($subDirectoryParts); - if(in_array($nextDirName, $fileList)) { - $pathToScan .= DIRECTORY_SEPARATOR . $nextDirName; - } - else { - $dynamicDirectory = null; - - foreach($fileList as $file) { - if($file[0] !== "@") { - continue; - } - - $dynamicDirectory = $file; - } - - if(is_null($dynamicDirectory)) { - break; - } - - $pathToScan .= DIRECTORY_SEPARATOR . $dynamicDirectory; - } - } while(!empty($subDirectoryParts)); - - if(is_dir($pathToScan)) { - return $pathToScan; - } - if(is_file($pathToScan)) { - return dirname($pathToScan); - } - - return null; - } - - public function current():string { - return $this->assemblyParts[$this->iteratorKey]; - } - - public function next():void { - $this->iteratorKey ++; - } - - public function key():int { - return $this->iteratorKey; - } - - public function valid():bool { - return isset($this->assemblyParts[$this->iteratorKey]); - } - - public function rewind():void { - $this->iteratorKey = 0; - } -} \ No newline at end of file diff --git a/src/FileSystem/BasenameNotFoundException.php b/src/FileSystem/BasenameNotFoundException.php deleted file mode 100644 index 10969e96..00000000 --- a/src/FileSystem/BasenameNotFoundException.php +++ /dev/null @@ -1,6 +0,0 @@ -directory = $directory; - } - - public function findParentContaining(string $match):?string { - $path = $this->directory; - - while(strlen($path) > 0 - && (!$this->pathIsRoot($path) - && !$this->directoryContains($path, $match))) { - $lastSlashPos = strrpos($path, DIRECTORY_SEPARATOR); - $path = substr($path, 0, $lastSlashPos); - } - - if($path === "/") { - if($match === "/" - || empty($match)) { - return $path; - } - else { - return null; - } - } - - return $path; - } - - private function pathIsRoot(string $path):bool { -// Unix root path is a simple slash. - if(DIRECTORY_SEPARATOR === "/") { - return $path === "/"; - } - -// Windows root path is X:\ - return ( - substr_count($path, DIRECTORY_SEPARATOR) === 1 - && $path[1] === ":" - ); - } - - private function directoryContains(string $directory, string $match):bool { - return file_exists(implode(DIRECTORY_SEPARATOR, [ - $directory, - $match, - ])); - } -} \ No newline at end of file diff --git a/src/FileSystem/EmptyAssemblyException.php b/src/FileSystem/EmptyAssemblyException.php deleted file mode 100644 index 327f9de7..00000000 --- a/src/FileSystem/EmptyAssemblyException.php +++ /dev/null @@ -1,6 +0,0 @@ -findParentContaining("composer.json") - ); - } - - public static function getGtRootDirectory():string { - $directoryWalker = new DirectoryWalker(__DIR__); - return self::fixPath( - $directoryWalker->findParentContaining("src") - ); - } - - public static function getWwwDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "www", - ]); - } - - public static function getDataDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "data", - ]); - } - - public static function getPageDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "page", - ]); - } - public static function getApiDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "api", - ]); - } - - public static function getAssetDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "asset", - ]); - } - - public static function getScriptDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "script", - ]); - } - - public static function getStyleDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "style", - ]); - } - - public static function getClassDirectory(string $appRoot = null):string { - $appRoot = self::defaultApplicationRoot($appRoot); - return implode(DIRECTORY_SEPARATOR, [ - self::getApplicationRootDirectory($appRoot), - "class", - ]); - } - - public static function fixPath( - string $path - ):string { - if(file_exists($path)) { - return $path; - } - -// TODO: This breaks within a "jailed" Linux user. See https://github.com/PhpGt/WebEngine/issues/260 -// Use a base directory of "getApplicationRootDirectory", and have this check for a constant -// defined in go.php? - $fixed = ""; - if(DIRECTORY_SEPARATOR === "/") { - $fixed .= DIRECTORY_SEPARATOR; - } - $path = str_replace(["/", "\\"], DIRECTORY_SEPARATOR, $path); - $pathParts = explode(DIRECTORY_SEPARATOR, $path); - - foreach($pathParts as $directory) { - $currentSearchPath = $fixed; - $currentSearchPath .= $directory; - -// If the directory exists without its path being changed, use that and continue to next child. - if(is_dir($currentSearchPath)) { - $fixed = "$currentSearchPath"; - - if(strlen($fixed) > 1) { - $fixed .= DIRECTORY_SEPARATOR; - } - continue; - } - - $iterator = new DirectoryIterator($fixed); - $foundMatch = false; - foreach($iterator as $fileInfo) { - $fileName = $fileInfo->getFilename(); - if($fileName === "." || $fileName === "..") { - continue; - } - - if(strtolower($fileName) === strtolower($directory)) { - $fixed .= $fileName . DIRECTORY_SEPARATOR; - $foundMatch = true; - break; - } - - $directoryWithHyphensParts = preg_split( - '/(?=[A-Z])/', - $directory - ); - $directoryWithHyphensParts = array_filter($directoryWithHyphensParts); - - $directoryWithHyphens = implode( - "-", - $directoryWithHyphensParts - ); - - $directoryWithHyphens = str_replace( - "_-", - "@", - $directoryWithHyphens - ); - - if(strtolower($fileName) === strtolower($directoryWithHyphens)) { - $fixed .= $fileName . DIRECTORY_SEPARATOR; - $foundMatch = true; - break; - } - } - - if(!$foundMatch) { - throw new PathNotFound($path); - } - } - - $fixed = rtrim($fixed, DIRECTORY_SEPARATOR); - return $fixed; - } - - protected static function defaultApplicationRoot(string $default = null) { - if(!is_null($default)) { - self::$appRoot = $default; - return $default; - } - - if(empty(self::$appRoot)) { - self::$appRoot = getcwd(); - - if(!is_file(implode(DIRECTORY_SEPARATOR, [ - self::$appRoot, - "vendor", - "autoload.php", - ]))) { - throw new ApplicationRootDirectoryNotSetException(); - } - } - - return self::$appRoot; - } -} \ No newline at end of file diff --git a/src/FileSystem/PathNotFound.php b/src/FileSystem/PathNotFound.php deleted file mode 100644 index c82f47bf..00000000 --- a/src/FileSystem/PathNotFound.php +++ /dev/null @@ -1,6 +0,0 @@ -getDocumentRoot()); - chdir($cwd); - - $config = ConfigFactory::createForProject( - $cwd, - implode(DIRECTORY_SEPARATOR, [ - dirname(__DIR__), - "config.default.ini", - ]) - ); - - $input = new Input($_GET, $_POST, $_FILES); - $cookie = new CookieHandler($_COOKIE); - - $sessionHandler = SessionSetup::attachHandler( - $config->get("session.handler") - ); - $sessionConfig = $config->getSection("session"); - $sessionId = $cookie[$sessionConfig["name"]]; - $sessionHandler = new Session( - $sessionHandler, - $sessionConfig, - $sessionId - ); - - $databaseSettings = new Settings( - $config->get("database.query_directory"), - $config->get("database.driver"), - $config->get("database.schema"), - $config->get("database.host"), - $config->get("database.port"), - $config->get("database.username"), - $config->get("database.password") - ); - $database = new Database($databaseSettings); - - $this->protectGlobals(); - $this->attachAutoloaders( - $server->getDocumentRoot(), - $config->getSection("app") - ); - - $request = $this->createServerRequest( - $server, - $input, - $cookie - ); - - $router = $this->createRouter( - $request, - $server->getDocumentRoot(), - $config->get("app.default_content_type") - ); - - $csrfProtection = new SessionTokenStore( - $sessionHandler->getStore( - "gt.csrf", - true - ) - ); - - if($router instanceof PageRouter) { - $csrfProtection->processAndVerify( - $input->getAll(Input::DATA_BODY) - ); - } - - try { - $dispatcher = $this->createDispatcher( - $config, - $server, - $input, - $cookie, - $sessionHandler, - $database, - $router, - $csrfProtection, - new Headers($request->getHeaders()) - ); - - $response = $this->process($request, $dispatcher); - } - catch(\Exception $exception) { - if($exception instanceof AbstractResponseStatusException) { - $code = $exception->getHttpCode(); - } - elseif($exception instanceof BasenameNotFoundException) { - $code = 404; - } - else { - $code = 500; - } - - $uri = $request->getUri(); - $dispatcher->overrideRouterUri($uri->withPath("_$code")); - try { - $response = $this->process($request, $dispatcher); - } - catch(\Exception $ignoreException) { - // TODO: Log exception here. - $response = new Response($code); - } - - $response = $response->withStatus($code); - if($exception instanceof AbstractRedirectionException) { - $response = $response->withHeader( - "Location", - $exception->getMessage() - ); - } - } - - $buffer = ob_get_clean(); - return $this->finish($response, $buffer, $render); - } - - /** - * By default, PHP passes all sensitive user information around in global variables, - * available for reading and modification in any code, including third party libraries. - * - * All global variables are replaced with objects that alert the developer of their - * protection and encapsulation through GlobalStub objects. - * - * @see https://php.gt/globals - */ - public function protectGlobals() { - // TODO: Merge whitelist from config - $whitelist = [ - "_COOKIE" => ["XDEBUG_SESSION"], - ]; - $globalsAfterRemoval = Protection::removeGlobals( - $GLOBALS, - $whitelist - ); - Protection::overrideInternals( - $globalsAfterRemoval, - $_ENV, - $_SERVER, - $_GET, - $_POST, - $_FILES, - $_COOKIE, - $_SESSION - ); - } - - public function attachAutoloaders(string $documentRoot, ConfigSection $config) { - $logicAutoloader = new Autoloader( - $config["namespace"], - $documentRoot - ); - - spl_autoload_register( - [$logicAutoloader, "autoload"], - true - ); - } - - public function createServerRequest( - ServerInfo $serverInfo, - Input $input, - CookieHandler $cookieHandler - ):ServerRequestInterface { - return RequestFactory::createServerRequest( - $serverInfo, - $input, - $cookieHandler - ); - } - - public function createRouter( - RequestInterface $request, - string $documentRoot, - string $defaultContentType - ):Router { - $factory = new RouterFactory($defaultContentType); - return $factory->create( - $request, - $documentRoot - ); - } - - public function createDispatcher( - Config $config, - ServerInfo $serverInfo, - Input $input, - CookieHandler $cookie, - Session $session, - Database $database, - Router $router, - TokenStore $csrfProtection, - Headers $headers - ):Dispatcher { - return DispatcherFactory::create( - $config, - $serverInfo, - $input, - $cookie, - $session, - $database, - $router, - $csrfProtection, - $headers - ); - } - - /** - * Process an incoming server request and return a response, optionally delegating - * response creation to a handler. - * @throws BasenameNotFoundException - */ - public function process( - ServerRequestInterface $request, - RequestHandlerInterface $handler - ):ResponseInterface { - return $handler->handle($request); - } - - /** - * The final part of the lifecycle is the finish function. - * This is where the response is finally output to the client, - * after the response headers are appended from any calls to the native - * header function. - */ - public static function finish( - ResponseInterface $response, - string $buffer = "", - bool $render = true - ):ResponseInterface { - http_response_code($response->getStatusCode()); - foreach($response->getHeaders() as $key => $value) { - header("$key: $value"); - } - - if($render) { - echo $buffer; - echo $response->getBody(); - } - - return $response; - } -} diff --git a/src/Logic/AbstractLogic.php b/src/Logic/AbstractLogic.php deleted file mode 100644 index affef476..00000000 --- a/src/Logic/AbstractLogic.php +++ /dev/null @@ -1,128 +0,0 @@ -config = $config; - $this->server = $serverInfo; - $this->input = $input; - $this->cookie = $cookieHandler; - $this->session = $session; - $this->database = $database; - $this->dynamicPath = $dynamicPath; - $this->headers = $headers; - } - - public function before() { - // This is not a required function, but it has been placed here - // so IDEs can see it when extending Logic classes. - } - - public function go() { - // This is not a required function, but it has been placed here - // so IDEs can see it when extending Logic classes. - } - - public function after() { - // This is not a required function, but it has been placed here - // so IDEs can see it when extending Logic classes. - } - - public function handleDo():void { - foreach($this->input as $key => $value) { - if($key !== "do") { - continue; - } - - $methodName = "do"; - - preg_match_all("([^-_ ]+)", $value, $matches); - foreach($matches[0] as $methodNamePart) { - $methodName .= ucfirst($methodNamePart); - } - - if(method_exists($this, $methodName)) { - $this->input->do($value)->call([$this, $methodName]); - } - } - } - - protected function reload():void { - $this->redirect($this->server->getRequestUri()); - } - - protected function redirect(string $uri, int $code = 303):void { - switch($code) { - case 301: - $exception = HttpMovedPermanently::class; - break; - case 302: - $exception = HttpFound::class; - break; - case 303: - $exception = HttpSeeOther::class; - break; - case 307: - $exception = HttpTemporaryRedirect::class; - break; - case 308: - $exception = HttpPermanentRedirect::class; - break; - default: - throw new RedirectCodeNotImplementedException($code); - } - - throw new $exception($uri, $code); - } - - protected function getDynamicPathParameter(string $parameter):?string { - return $this->dynamicPath->get($parameter); - } -} \ No newline at end of file diff --git a/src/Logic/Api.php b/src/Logic/Api.php deleted file mode 100644 index 3c702991..00000000 --- a/src/Logic/Api.php +++ /dev/null @@ -1,42 +0,0 @@ -document = $viewModel; - - parent::__construct( - $viewModel, - $config, - $serverInfo, - $input, - $cookieHandler, - $session, - $database, - $dynamicPath, - $headers - ); - } -} \ No newline at end of file diff --git a/src/Logic/ApiSetup.php b/src/Logic/ApiSetup.php deleted file mode 100644 index 87091b92..00000000 --- a/src/Logic/ApiSetup.php +++ /dev/null @@ -1,42 +0,0 @@ -logicProperty = $logicProperty; - } -} \ No newline at end of file diff --git a/src/Logic/AppAutoloader.php b/src/Logic/AppAutoloader.php new file mode 100644 index 00000000..6aa85466 --- /dev/null +++ b/src/Logic/AppAutoloader.php @@ -0,0 +1,42 @@ +classDir)) { + return; + } + + spl_autoload_register(fn(string $className) => $this->autoload($className)); + } + + private function autoload(string $className):void { + if(!str_starts_with($className, $this->namespace . "\\")) { + return; + } + + $classNameWithoutAppNamespace = substr( + $className, + strlen($this->namespace) + 1 + ); + + $phpFilePath = "./" . $this->classDir; + foreach(explode("\\", $classNameWithoutAppNamespace) as $classPart) { + $phpFilePath .= "/"; + $phpFilePath .= ucfirst($classPart); + } + + $phpFilePath .= ".php"; + if(is_file($phpFilePath)) { + require($phpFilePath); + } + } +} diff --git a/src/Logic/AutoloadedClassDoesNotExistException.php b/src/Logic/AutoloadedClassDoesNotExistException.php deleted file mode 100644 index bbea712c..00000000 --- a/src/Logic/AutoloadedClassDoesNotExistException.php +++ /dev/null @@ -1,6 +0,0 @@ -appNamespace = $appNamespace; - $this->docRoot = $docRoot; - } - - /** - * @return ?string Returns the absolute classname of the autoloaded - * class, or null if the required class isn't a Logic class. - * @throws \Gt\WebEngine\FileSystem\PathNotFound - */ - public function autoload(string $absoluteClassName):?string { - $classSuffix = $this->getClassSuffix($absoluteClassName); - if(is_null($classSuffix)) { - return null; - } - - $absoluteClassName = trim($absoluteClassName, "\\"); - if(strpos( - $absoluteClassName, - $this->appNamespace - ) !== 0) { - return null; - } - - $logicType = substr( - $absoluteClassName, - strlen($this->appNamespace) + 1 - ); - $logicType = substr( - $logicType, - 0, - strpos($logicType, "\\") - ); - - $path = $this->getPathForLogicType($logicType); - $toRemove = explode("\\", $this->appNamespace); - $toRemove []= $logicType; - - $relativeClassName = $this->getRelativeClassName( - $absoluteClassName, - ...$toRemove - ); - - $directoryPath = $this->buildDirectoryPathFromRelativeClassName( - $path, - $relativeClassName - ); - - $fileName = $this->findFileName( - $directoryPath, - $relativeClassName, - $classSuffix - ); - - $autoloadPath = implode(DIRECTORY_SEPARATOR, [ - $directoryPath, - $fileName, - ]); - - $autoloadPath = Path::fixPath($autoloadPath); - return $this->requireAndCheck($autoloadPath, $absoluteClassName); - } - - protected function requireAndCheck(string $filePath, string $className):string { - if(!is_file($filePath)) { - throw new AutoloaderException("File path is not correct for when autoloading class '$className'"); - } - require($filePath); - - if($className[0] !== "\\") { - $className = "\\" . $className; - } - return $className; - } - - protected function getClassSuffix($className):?string { - $classSuffix = null; - - foreach(self::ALLOWED_SUFFIXES as $suffix) { - if($this->classHasSuffix($className, $suffix)) { - $classSuffix = $suffix; - } - } - - return $classSuffix ; - } - - protected function classHasSuffix($className, $endsWith):bool { - $length = strlen($endsWith); - - return $length === 0 - || (substr($className, -$length) === $endsWith); - } - - protected function getPathForLogicType(string $type):string { - switch(strtolower($type)) { - case "api": - $path = Path::getApiDirectory($this->docRoot); - break; - - case "page": - $path = Path::getPageDirectory($this->docRoot); - break; - } - - return $path; - } - - protected function getRelativeClassName(string $absoluteClassName, string...$toRemove) { - $parts = explode("\\", $absoluteClassName); - foreach($toRemove as $remove) { - if($remove === $parts[0]) { - array_shift($parts); - } - } - - return implode("\\", $parts); - } - - protected function buildDirectoryPathFromRelativeClassName( - string $path, - string $relativeClassName - ):string { - $parts = explode("\\", $relativeClassName); - $partsToRemove = explode("\\", $this->appNamespace); - array_pop($parts); - - foreach($parts as $part) { - $path .= DIRECTORY_SEPARATOR . $part; - } - - if(!is_dir($path)) { -// The path of the file on-disk may not always match the class name, due to -// web-mapping vs. namespace mapping -// @see https://github.com/PhpGt/StyleGuide/blob/master/directories-files-namespaces/path-mapping.md - $path = Path::fixPath($path); - } - - return $path; - } - - protected function findFileName( - string $directoryPath, - string $relativeClassName, - string $classSuffix - ):string { - $matchingFileName = null; - - $parts = explode("\\", $relativeClassName); - $className = array_pop($parts); - $suffixPosition = strrpos( - $className, - $classSuffix - ); - $searchFileName = substr($className,0, $suffixPosition); - $searchFileName = "$searchFileName.php"; - - $subDirectoryPath = $directoryPath; - - $subDirectoryPath = str_replace( - DIRECTORY_SEPARATOR . "_", - DIRECTORY_SEPARATOR . "@", - $subDirectoryPath - ); - - $subDirectoryPath = Path::fixPath($subDirectoryPath); - - $searchFileNameLowerCase = strtolower($searchFileName); - $searchFileNameHyphenatedLowerCase = strtolower( - $this->hyphenate($searchFileName) - ); - $searchList = [ - $searchFileNameLowerCase, - $searchFileNameHyphenatedLowerCase, - str_replace("_", "@", $searchFileNameLowerCase), - str_replace("_", "@", $searchFileNameHyphenatedLowerCase), - ]; - - foreach(new DirectoryIterator($subDirectoryPath) as $fileInfo) { - if(!$fileInfo->isFile()) { - continue; - } - - $fileName = $fileInfo->getFilename(); - $fileNameLowerCase = strtolower($fileName); - if(!in_array($fileNameLowerCase, $searchList)) { - continue; - } - - $matchingFileName = $fileName; - } - - $relativeFileName = substr($subDirectoryPath, strlen($directoryPath)); - $relativeFileName = trim($relativeFileName, "\\/"); - $relativeFileName = implode(DIRECTORY_SEPARATOR, [ - $relativeFileName, - $matchingFileName, - ]); - - return $relativeFileName; - } - - protected function hyphenate(string $fileName):string { - $file = pathinfo( - $fileName, - PATHINFO_FILENAME - ); - $extension = pathinfo( - $fileName, - PATHINFO_EXTENSION - ); - - for($i = strlen($file) - 1; $i > 0; $i--) { - if(!ctype_upper($file[$i])) { - continue; - } - - $fileName = substr_replace( - $fileName, - "-", - $i, - 0 - ); - } - - return $fileName; - } -} \ No newline at end of file diff --git a/src/Logic/AutoloaderException.php b/src/Logic/AutoloaderException.php deleted file mode 100644 index a3eccb2d..00000000 --- a/src/Logic/AutoloaderException.php +++ /dev/null @@ -1,6 +0,0 @@ -keyValuePairs = $keyValuePairs; - } - - public function get(string $key):?string { - return $this->keyValuePairs[$key] ?? null; - } -} \ No newline at end of file diff --git a/src/Logic/InvalidLogicConstructorParameters.php b/src/Logic/InvalidLogicConstructorParameters.php deleted file mode 100644 index 27be8541..00000000 --- a/src/Logic/InvalidLogicConstructorParameters.php +++ /dev/null @@ -1,6 +0,0 @@ -loadLogicFile($file); + } + } + + public function invoke(string $name):void { + foreach($this->assembly as $file) { + $nsProject = (string)(new LogicProjectNamespace( + $file, + $this->appNamespace + )); + + $instance = null; + + if(class_exists($nsProject)) { + $instance = new $nsProject; + } + + if($instance) { + if(method_exists($instance, $name)) { + $this->injector->invoke( + $instance, + $name + ); + } + } + else { + $nsDefault = (string)(new LogicStreamNamespace($file)); + $fqnsDefault = LogicStreamWrapper::NAMESPACE_PREFIX . $nsDefault; + $fnReferenceArray = [ + "$fqnsDefault\\$name", + "$nsProject\\$name" + ]; + + foreach($fnReferenceArray as $fnReference) { + if(function_exists($fnReference)) { + $this->injector->invoke( + null, + $fnReference + ); + } + } + } + } + } + + private function loadLogicFile(string $file):void { + $streamPath = LogicStreamWrapper::STREAM_NAME . "://$file"; + /** @noinspection PhpIncludeInspection */ + require($streamPath); + } +} diff --git a/src/Logic/LogicFactory.php b/src/Logic/LogicFactory.php deleted file mode 100644 index 6fe89855..00000000 --- a/src/Logic/LogicFactory.php +++ /dev/null @@ -1,180 +0,0 @@ -config = $config; - } - - public function setServerInfo(ServerInfo $serverInfo):void { - $this->serverInfo = $serverInfo; - } - - public function setInput(Input $input):void { - $this->input = $input; - } - - public function setCookieHandler(CookieHandler $cookie):void { - $this->cookie = $cookie; - } - - public function setSession(Session $session):void { - $this->session = $session; - } - - public function setDatabase(Database $database):void { - $this->database = $database; - } - - public function setView(View $view):void { - $this->view = $view; - } - - public function setHeaders(Headers $headers):void { - $this->headers = $headers; - } - - public function createLogicObjectFromPath( - string $path, - string $appNamespace, - string $baseDirectory, - UriInterface $uri, - LogicPropertyStore $logicPropertyStore - ):AbstractLogic { - $path = realpath($path); - $baseDirectory = realpath($baseDirectory); - - $className = $this->getLogicClassFromPath( - $path, - $appNamespace, - $baseDirectory - ); - - $dynamicPathParameters = $this->getDynamicPathParameters( - $path, - $baseDirectory, - $uri - ); - - /** @var AbstractLogic $class */ - $class = new $className( - $this->view->getViewModel(), - $this->config, - $this->serverInfo, - $this->input, - $this->cookie, - $this->session, - $this->database, - $dynamicPathParameters, - $this->headers, - $logicPropertyStore - ); - - return $class; - } - - public function getDynamicPathParameters( - string $absolutePath, - string $baseDirectory, - UriInterface $uri - ):DynamicPath { - $uriPath = $uri->getPath(); - $relativeDirPath = str_replace( - $baseDirectory, - "", - $absolutePath - ); - $relativeDirPath = str_replace( - DIRECTORY_SEPARATOR, - "/", - $relativeDirPath - ); - $relativeDirParts = explode("/", $relativeDirPath); - $relativeDirParts = array_filter($relativeDirParts); - - $uriParts = explode("/", $uriPath); - $uriParts = array_filter($uriParts); - - $keyValuePairs = []; - foreach($relativeDirParts as $i => $part) { - $part = strtok($part, "."); - if($part[0] !== "@") { - continue; - } - - $partName = substr($part, 1); - - if(isset($uriParts[$i])) { - $keyValuePairs[$partName] = $uriParts[$i]; - } - } - - return new DynamicPath($keyValuePairs); - } - - protected function getLogicClassFromPath( - string $path, - string $appNamespace, - string $baseDirectory - ):string { - $logicTypeNamespace = null; - if($this->view instanceof ApiView) { - $logicTypeNamespace = "Api"; - } - if($this->view instanceof PageView) { - $logicTypeNamespace = "Page"; - } - $basePageNamespace = implode("\\", [ - $appNamespace, - $logicTypeNamespace, - ]); - - $logicPathRelative = substr($path, strlen($baseDirectory)); - $fullPath = $baseDirectory . $logicPathRelative; - if(is_dir($fullPath)) { - $logicPathRelative .= "/index"; - } -// The relative logic path will be the filename with page directory stripped from the left. -// /app/src/page/index.php => index.php -// /app/src/api/child/directory/thing.php => child/directory/thing.php - $className = ClassName::transformUriCharacters( - $logicPathRelative, - $basePageNamespace, - $logicTypeNamespace - ); - - $className = str_replace("@", "_", $className); - return $className; - } -} \ No newline at end of file diff --git a/src/Logic/LogicProjectNamespace.php b/src/Logic/LogicProjectNamespace.php new file mode 100644 index 00000000..a0541f2a --- /dev/null +++ b/src/Logic/LogicProjectNamespace.php @@ -0,0 +1,27 @@ +path); + $str = $this->namespacePrefix . "\\" . $str; + $str = strtok($str, "."); + $str = str_replace(["-", "@"], " ", $str); + $namespace = ""; + foreach(explode("\\", $str) as $part) { + $part = ucwords($part); + $namespace .= "\\"; + $namespace .= str_replace(" ", "", $part); + } + $namespace = trim($namespace, "\\"); + $namespace .= "Page"; + return $namespace; + } +} diff --git a/src/Logic/LogicPropertyStore.php b/src/Logic/LogicPropertyStore.php deleted file mode 100644 index 5546688f..00000000 --- a/src/Logic/LogicPropertyStore.php +++ /dev/null @@ -1,30 +0,0 @@ -logicProperties->set("someKey", 123); - * and then within another class such as IndexPage, declare a public property - * of name $someKey, and it will automatically be set to the correct value. - */ -class LogicPropertyStore { - const FORBIDDEN_LOGIC_PROPERTIES = [ - "viewModel", - "config", - "server", - "input", - "cookie", - "session", - "database", - "dynamicPath", - ]; - - protected $kvp = []; - - public function set(string $key, $value) { - $this->kvp[$key] = $value; - } -} \ No newline at end of file diff --git a/src/Logic/LogicPropertyStoreReader.php b/src/Logic/LogicPropertyStoreReader.php deleted file mode 100644 index c23a76fe..00000000 --- a/src/Logic/LogicPropertyStoreReader.php +++ /dev/null @@ -1,43 +0,0 @@ -propertyStore = $logicPropertyStore; - } - - /** @link https://php.net/manual/en/iterator.rewind.php */ - public function rewind():void { - $this->iteratorKey = 0; - $this->iteratorStrings = array_keys($this->propertyStore->kvp); - } - - /** @link https://php.net/manual/en/iterator.current.php */ - public function current() { - return $this->propertyStore->kvp[$this->key()]; - } - - /** @link https://php.net/manual/en/iterator.next.php */ - public function next():void { - $this->iteratorKey++; - } - - /** @link https://php.net/manual/en/iterator.key.php */ - public function key():?string { - return $this->iteratorStrings[$this->iteratorKey] ?? null; - } - - /** @link https://php.net/manual/en/iterator.valid.php */ - public function valid():bool { - return array_key_exists($this->key(), $this->propertyStore->kvp); - } -} \ No newline at end of file diff --git a/src/Logic/Page.php b/src/Logic/Page.php deleted file mode 100644 index a2901a9e..00000000 --- a/src/Logic/Page.php +++ /dev/null @@ -1,42 +0,0 @@ -document = $viewModel; - - parent::__construct( - $viewModel, - $config, - $serverInfo, - $input, - $cookieHandler, - $session, - $database, - $dynamicPath, - $headers - ); - } -} \ No newline at end of file diff --git a/src/Logic/PageSetup.php b/src/Logic/PageSetup.php deleted file mode 100644 index b39c581a..00000000 --- a/src/Logic/PageSetup.php +++ /dev/null @@ -1,43 +0,0 @@ -logicProperty = $logicProperty; - } -} \ No newline at end of file diff --git a/src/Logic/RedirectCodeNotImplementedException.php b/src/Logic/RedirectCodeNotImplementedException.php deleted file mode 100644 index 4697aed0..00000000 --- a/src/Logic/RedirectCodeNotImplementedException.php +++ /dev/null @@ -1,6 +0,0 @@ -config->get("database.query_directory"), + $this->config->get("database.driver"), + $this->config->get("database.schema"), + $this->config->get("database.host"), + $this->config->get("database.port"), + $this->config->get("database.username"), + $this->config->get("database.password"), + $this->config->get("database.connection_name") ?: DefaultSettings::DEFAULT_NAME, + $this->config->get("database.collation") ?: DefaultSettings::DEFAULT_COLLATION, + $this->config->get("database.charset") ?: DefaultSettings::DEFAULT_CHARSET, + ); + return new Database($dbSettings); + } + + #[LazyLoad(HTMLAttributeBinder::class)] + public function loadHTMLAttributeBinder():HTMLAttributeBinder { + return new HTMLAttributeBinder(); + } + + #[LazyLoad(HTMLAttributeCollection::class)] + public function loadHTMLAttributeCollection():HTMLAttributeCollection { + return new HTMLAttributeCollection(); + } + + #[LazyLoad(PlaceholderBinder::class)] + public function loadPlaceholderBinder():PlaceholderBinder { + return new PlaceholderBinder(); + } + + #[LazyLoad(ElementBinder::class)] + public function loadElementBinder():ElementBinder { + return new ElementBinder( + $this->container->get(HTMLAttributeBinder::class), + $this->container->get(HTMLAttributeCollection::class), + $this->container->get(PlaceholderBinder::class), + ); + } + + #[LazyLoad(TableBinder::class)] + public function loadTableBinder():TableBinder { + return new TableBinder( + $this->container->get(TemplateCollection::class), + $this->container->get(ElementBinder::class), + $this->container->get(HTMLAttributeBinder::class), + $this->container->get(HTMLAttributeCollection::class), + $this->container->get(PlaceholderBinder::class), + ); + } + + #[LazyLoad(TemplateCollection::class)] + public function loadTemplateCollection():TemplateCollection { + $document = $this->container->get(Document::class); + return new TemplateCollection($document); + } + + #[LazyLoad(ListBinder::class)] + public function loadListBinder():ListBinder { + return new ListBinder( + $this->container->get(TemplateCollection::class) + ); + } + + #[LazyLoad(DocumentBinder::class)] + public function loadDocumentBinder():DocumentBinder { + $document = $this->container->get(Document::class); + return new DocumentBinder( + $document, + iterator_to_array($this->config->getSection("view")), + $this->container->get(ElementBinder::class), + $this->container->get(PlaceholderBinder::class), + $this->container->get(TableBinder::class), + $this->container->get(ListBinder::class), + $this->container->get(TemplateCollection::class), + ); + } + + #[LazyLoad(Uri::class)] + public function loadRequestUri():UriInterface { + return $this->request->getUri(); + } +} diff --git a/src/Middleware/Lifecycle.php b/src/Middleware/Lifecycle.php new file mode 100644 index 00000000..14a1c256 --- /dev/null +++ b/src/Middleware/Lifecycle.php @@ -0,0 +1,139 @@ +createServerRequestFromGlobalState( + $_SERVER, + $_FILES, + $_GET, + $_POST, + ); + +// The handler is an individual component that processes a request and produces +// a response, as defined by PSR-7. It's where all your applications logic is +// executed - the brain of WebEngine. + $handler = new RequestHandler(); + +// The request and request handler are passed to the PSR-15 process function, +// which will return our PSR-7 HTTP Response. + $response = $this->process($request, $handler); + +// All logic will have executed at this point, so we clean the output buffer in +// case there was any accidental data echoed to the page. + $buffer = ob_get_clean(); +// Now we can finish the HTTP lifecycle by providing the HTTP response for +// outputting to the browser, along with the buffer so we can display the +// contents in a debug area. + $this->finish( + $response, + $buffer, + $timer, + $handler->getConfigSection("app") + ); + } + + /** + * Process an incoming server request and return a response, + * delegating response creation to a handler. + */ + public function process( + ServerRequestInterface $request, + RequestHandlerInterface $handler + ):ResponseInterface { + return $handler->handle($request); + } + + public function finish( + ResponseInterface $response, + string $buffer, + Timer $timer, + ConfigSection $appConfig + ):void { + http_response_code($response->getStatusCode()); + + foreach($response->getHeaders() as $key => $value) { + $stringValue = implode(", ", $value); + header("$key: $stringValue", true); + } + + $buffer = trim($buffer); + if(strlen($buffer) > 0) { + if(strstr($buffer, "\n")) { + $buffer = "\n$buffer"; + } + Log::debug("Logic output: $buffer"); + } + + $renderBufferSize = $appConfig->getInt("render_buffer_size"); + $body = $response->getBody(); + $body->rewind(); + ob_start(); + while(!$body->eof()) { + echo $body->read($renderBufferSize); + ob_flush(); + flush(); + } + +// The very last thing that's done before the script ends is to stop the Timer, +// so we know exactly how long the request-response lifecycle has taken. + $timer->stop(); + $delta = number_format($timer->getDelta(), 2); + if($delta >= $appConfig->getFloat("slow_delta")) { + Log::warning("Lifecycle end with VERY SLOW delta time: $delta seconds. https://www.php.gt/webengine/slow-delta"); + } + elseif($delta >= $appConfig->getFloat("very_slow_delta")) { + Log::notice("Lifecycle end with SLOW delta time: $delta seconds. https://www.php.gt/webengine/slow-delta"); + } + else { + Log::debug("Lifecycle end, delta time: $delta seconds."); + } + } +} diff --git a/src/Middleware/RequestHandler.php b/src/Middleware/RequestHandler.php new file mode 100644 index 00000000..99ba2b39 --- /dev/null +++ b/src/Middleware/RequestHandler.php @@ -0,0 +1,276 @@ +config = ConfigFactory::createForProject( + getcwd(), + getcwd() . "/vendor/phpgt/webengine/config.default.ini" + ); + $this->setupLogger( + $this->config->getSection("logger") + ); + + $appAutoloader = new AppAutoloader( + $this->config->get("app.namespace"), + $this->config->get("app.class_dir"), + ); + $appAutoloader->setup(); + + stream_wrapper_register( + "gt-logic-stream", + LogicStreamWrapper::class + ); + } + + public function handle( + ServerRequestInterface $request + ):ResponseInterface { +// TODO: Handle 404s. + $response = new Response(); + $requestUri = $request->getUri(); + $uriPath = $requestUri->getPath(); + +// Force trailing slashes in URLs. This is useful for consistency, but also +// helps identify that WebEngine requests do not match an actual static file, as +// file requests will never end in a slash. +// 307 is used here to preserve any POST data that may be in the request. + if(!str_ends_with($uriPath, "/")) { + return $response + ->withHeader("Location", $requestUri) + ->withStatus(307); + } + + $serviceContainer = new Container(); + $serviceContainer->set($request); + $serviceContainer->addLoaderClass( + new DefaultServiceLoader( + $this->config, + $request, + $serviceContainer + ) + ); + $serviceContainer->set($this->config); + $customServiceContainerClassName = implode("\\", [ + $this->config->get("app.namespace"), + $this->config->get("app.service_loader"), + ]); + if(class_exists($customServiceContainerClassName)) { + $constructorArgs = []; + if(is_a($customServiceContainerClassName, DefaultServiceLoader::class, true)) { + $constructorArgs = [ + $this->config, + $request, + $serviceContainer, + ]; + } + + $serviceContainer->addLoaderClass( + new $customServiceContainerClassName( + ...$constructorArgs + ) + ); + } + + $server = new ServerInfo($_SERVER); + $serviceContainer->set($server); + + $router = $this->createRouter($serviceContainer); + $router->route($request); + + $viewClass = $router->getViewClass() ?? NullView::class; + /** @var BaseView $view */ + $view = new $viewClass($response->getBody()); + + $viewAssembly = $router->getViewAssembly(); + $logicAssembly = $router->getLogicAssembly(); + + $dynamicPath = new DynamicPath( + $uriPath, + $viewAssembly, + $logicAssembly, + ); + $serviceContainer->set($dynamicPath); + + if(count($viewAssembly) === 0) { + $response = $response->withStatus(404); + } + + foreach($viewAssembly as $viewFile) { + $view->addViewFile($viewFile); + } + $viewModel = $view->createViewModel(); + $serviceContainer->set($viewModel); + +// TODO: Set a Session loader here, so the CSRF handler can use it. + + if($viewModel instanceof HTMLDocument) { + try { + $partial = new PartialContent(implode(DIRECTORY_SEPARATOR, [ + getcwd(), + $this->config->getString("view.component_directory") + ])); + $componentExpander = new ComponentExpander($viewModel, $partial); + $componentExpander->expand(); + } + catch(PartialContentDirectoryNotFoundException) {} + + try { + $partial = new PartialContent(implode(DIRECTORY_SEPARATOR, [ + getcwd(), + $this->config->getString("view.partial_directory") + ])); + + $partialExpander = new PartialExpander($viewModel, $partial); + $partialExpander->expand(); + } + catch(PartialContentDirectoryNotFoundException) {} + + $dynamicUri = $dynamicPath->getUrl("page/"); + $dynamicUri = str_replace("/", "--", $dynamicUri); + $dynamicUri = str_replace("@", "_", $dynamicUri); + $viewModel->body->classList->add("uri" . $dynamicUri); + $bodyDirClass = "dir"; + foreach(explode("--", $dynamicUri) as $i => $pathPart) { + if($i === 0) { + continue; + } + $bodyDirClass .= "--$pathPart"; + $viewModel->body->classList->add($bodyDirClass); + } + +// ini_set('session.serialize_handler', 'php_serialize'); + $sessionConfig = $this->config->getSection("session"); + $sessionId = $_COOKIE[$sessionConfig["name"]] ?? null; + $sessionHandler = SessionSetup::attachHandler( + $sessionConfig->getString("handler") + ); + $session = new Session( + $sessionHandler, + $sessionConfig, + $sessionId + ); + $serviceContainer->set($session); + +// TODO: Complete CSRF implementation - maybe use its own cookie? +// /** @var Session $session */ +// $session = $serviceContainer->get(Session::class); +// $csrfTokenStore = new SessionTokenStore($session->getStore("csrf", true)); +// +// if($request->getMethod() === "POST") { +// $csrfTokenStore->processAndVerify($_POST); +// } +// +// $protector = new HTMLDocumentProtector($viewModel, $csrfTokenStore); +// $protector->protectAndInject(); + } + +// TODO: Kill globals. + $input = new Input($_GET, $_POST, $_FILES); + $serviceContainer->set($input); + + $injector = new Injector($serviceContainer); + + $logicExecutor = new LogicExecutor( + $logicAssembly, + $injector, + $this->config->getString("app.namespace") + ); + $input->when("do")->call( + fn(InputData $data) => $logicExecutor->invoke( + "do_" . str_replace("-", "_", $data->getString("do")) + ) + ); + $logicExecutor->invoke("go"); + $logicExecutor->invoke("go_after"); + + /** @var DocumentBinder $documentBinder */ + $documentBinder = $serviceContainer->get(DocumentBinder::class); + $documentBinder->cleanDatasets(); + + $view->stream($viewModel); + return $response; + } + + public function getConfigSection(string $sectionName):ConfigSection { + return $this->config->getSection($sectionName); + } + + private function setupLogger(ConfigSection $logConfig):void { + $type = $logConfig->getString("type"); + $path = $logConfig->getString("path"); + $level = $logConfig->getString("level"); + $timestampFormat = $logConfig->getString("timestamp_format"); + $logFormat = explode("\\t", $logConfig->getString("log_format")); + $separator = $logConfig->getString("separator"); + $newLine = $logConfig->getString("newline"); + $logHandler = match($type) { + "file" => new FileHandler($path, $timestampFormat, $logFormat, $separator, $newLine), + "stream" => new StreamHandler($path), + default => new StdOutHandler() + }; + LogConfig::addHandler($logHandler, $level); + } + + private function createRouter(Container $container):BaseRouter { + $routerConfig = $this->config->getSection("router"); + $namespace = $this->config->getString("app.namespace"); + $appRouterFile = $routerConfig->getString("router_file"); + $appRouterClass = $routerConfig->getString("router_class"); + $defaultRouterFile = dirname(dirname(__DIR__)) . "/router.default.php"; + + if(file_exists($appRouterFile)) { + require($appRouterFile); + $class = "\\$namespace\\$appRouterClass"; + } + else { + require($defaultRouterFile); + $class = "\\Gt\\WebEngine\\DefaultRouter"; + } + + /** @var BaseRouter $router */ + $router = new $class($routerConfig); + $router->setContainer($container); + return $router; + } +} diff --git a/src/Refactor/DocumentStringParseException.php b/src/Refactor/DocumentStringParseException.php deleted file mode 100644 index 00e8e658..00000000 --- a/src/Refactor/DocumentStringParseException.php +++ /dev/null @@ -1,6 +0,0 @@ -type = $type; - } - - public function __toString() { - return $this->render(); - } - - protected function render():string { - if($this->type === "application/json") { - return $this->saveJSON(); - } - - return $this->saveHTML(); - } - - protected function saveJSON():string { - $json = new StdClass(); - - foreach($this->children as $child) { - $key = $child->tagName; - $json->$key = $child->nodeValue; - } - - return json_encode($json); - } - - protected function getStringValue($type, $value):string { - switch($type) { - case "bool": - case "boolean": - return $value ? "true" : "false"; - - case "object": - // TODO: Recursively load. - return "(object)"; - - case "int": - case "integer": - case "float": - case "double": - default: - return (string)$value; - } - } -} \ No newline at end of file diff --git a/src/Response/ApiResponse.php b/src/Response/ApiResponse.php deleted file mode 100644 index 14821762..00000000 --- a/src/Response/ApiResponse.php +++ /dev/null @@ -1,7 +0,0 @@ -documentRoot); - } -} \ No newline at end of file diff --git a/src/Route/PageRouter.php b/src/Route/PageRouter.php deleted file mode 100644 index 70695839..00000000 --- a/src/Route/PageRouter.php +++ /dev/null @@ -1,12 +0,0 @@ -documentRoot); - } -} \ No newline at end of file diff --git a/src/Route/Router.php b/src/Route/Router.php deleted file mode 100644 index 3e38cb19..00000000 --- a/src/Route/Router.php +++ /dev/null @@ -1,195 +0,0 @@ -request = $request; - $this->documentRoot = $documentRoot; - $this->contentType = $contentType; - - $uri = $request->getUri(); - $this->baseViewLogicPath = $this->getBaseViewLogicPath(); - $this->viewLogicPath = $this->getViewLogicPath($uri); - $this->viewLogicBasename = $this->getViewLogicBasename($uri); - } - - /** - * The base view-logic path is the absolute path on disk to where all View and Logic files - * exist, according to the current Route type. - */ - abstract public function getBaseViewLogicPath():string; - - public function redirectInvalidPaths(string $uri):void { - if(strlen($uri) > 1 - && substr($uri, -1) === "/") { - throw new HttpSeeOther(rtrim($uri, "/")); - } - - if($this->viewLogicBasename !== self::DEFAULT_BASENAME) { - return; - } - - $lastSlashPosition = strrpos($uri, "/"); - $lastPieceOfUri = substr($uri, $lastSlashPosition + 1); - - if($lastPieceOfUri !== self::DEFAULT_BASENAME) { - return; - } - - $uri = substr($uri, 0, $lastSlashPosition); - if(strlen($uri) === 0) { - $uri = "/"; - } - - throw new HttpSeeOther($uri); - } - - public function getViewAssembly():Assembly { - return new Assembly( - $this->baseViewLogicPath, - $this->viewLogicPath, - $this->viewLogicBasename, - static::VIEW_EXTENSIONS, - static::VIEW_BEFORE, - static::VIEW_AFTER - ); - } - - public function getLogicAssembly():Assembly { - return new Assembly( - $this->baseViewLogicPath, - $this->viewLogicPath, - $this->viewLogicBasename, - static::LOGIC_EXTENSIONS, - static::LOGIC_BEFORE, - static::LOGIC_AFTER - ); - } - - public function getContentType():string { - return $this->contentType; - } - - public function overrideUri(UriInterface $uri) { - $this->viewLogicPath = $this->getViewLogicPath($uri); - $this->viewLogicBasename = $this->getViewLogicBasename($uri); - } - - protected function getViewLogicBasename(UriInterface $uri):?string { - $uriPath = $uri->getPath(); - $basename = self::DEFAULT_BASENAME; - - if($uriPath === "/") { - return $basename; - } - - $absolutePath = $this->baseViewLogicPath - . str_replace( - "/", - DIRECTORY_SEPARATOR, - $uriPath - ); - - if($this->isAddressableFile($absolutePath) - || !$this->isAddressableDir($absolutePath)) { - $basename = pathinfo( - $absolutePath, - PATHINFO_BASENAME - ); - } - - return $basename; - } - - protected function isAddressableFile(string $absolutePath):bool { - $matches = glob("$absolutePath.*"); - if(!empty($matches) && is_file($matches[0])) { - return true; - } - - return $this->isDynamicFile($absolutePath); - } - - protected function isAddressableDir(string $absolutePath):bool { - if(is_dir($absolutePath)) { - return true; - } - - return $this->isDynamicDir($absolutePath); - } - - protected function isDynamicFile(string $absolutePath):bool { - if(file_exists($absolutePath)) { - return false; - } - -// TODO: Why are we only returning false here? - return false; - } - - protected function isDynamicDir(string $absolutePath):bool { - if(file_exists($absolutePath)) { - return false; - } - -// TODO: Why are we only returning false here? - return false; - } - - /** - * The view-logic sub-path is the path on disk to the directory - * containing the requested View and Logic files, - * relative to the base view-logic path. - */ - protected function getViewLogicPath(UriInterface $uri):string { - $uriPath = $uri->getPath(); - $uriPath = str_replace( - "/", - DIRECTORY_SEPARATOR, - $uriPath - ); - $absolutePath = $this->baseViewLogicPath . $uriPath; - - if(!is_dir($absolutePath)) { - $dynamicMatches = glob("$absolutePath/@*"); - foreach($dynamicMatches as $match) { - if(is_dir($match)) { - $absolutePath = $match; - break; - } - } - } - - return substr($absolutePath, strlen($this->baseViewLogicPath)); - } -} \ No newline at end of file diff --git a/src/Route/RouterFactory.php b/src/Route/RouterFactory.php deleted file mode 100644 index 1b570d3f..00000000 --- a/src/Route/RouterFactory.php +++ /dev/null @@ -1,88 +0,0 @@ - PageRouter::class, - "application/json" => ApiRouter::class, - "application/xml" => ApiRouter::class, - ]; - private string $defaultContentType; - - public function __construct(string $defaultContentType = "text/html") { - $this->defaultContentType = $defaultContentType; - } - - public function create( - RequestInterface $request, - string $documentRoot - ):Router { - $typeHeader = $request->getHeaderLine("accept"); - $type = $this->getType($typeHeader); - $routerClass = $this->getRouterClassForType($type); - - /** @var Router $router */ - $router = new $routerClass( - $request, - $documentRoot, - $type - ); - - return $router; - } - - protected function getType(string $accept = null):string { - if(empty($accept)) { - $accept = $this->defaultContentType; - } - - $negotiator = new Negotiator(); - - $priorities = self::ACCEPT_PRIORITIES; - array_unshift($priorities, $this->defaultContentType); - - /** @var Accept $acceptHeader */ - $acceptHeader = $negotiator->getBest( - $accept, - $priorities - ); - - $type = null; - if($acceptHeader) { - $type = $acceptHeader->getType(); - } - - if(empty($type)) { - throw new RoutingException("Accept header has no route: $accept"); - } - - return $type; - } - - protected function getRouterClassForType(string $type):string { - $routerClass = null; - - if(empty($type)) { - $type = $this->defaultContentType; - } - - foreach(explode(",", $type) as $singleType) { - $singleType = strtok($singleType, ";"); - if(array_key_exists($singleType, self::TYPE_MAP)) { - $routerClass = self::TYPE_MAP[$singleType]; - } - } - - return $routerClass; - } -} diff --git a/src/Route/RoutingException.php b/src/Route/RoutingException.php deleted file mode 100644 index cd5407ff..00000000 --- a/src/Route/RoutingException.php +++ /dev/null @@ -1,6 +0,0 @@ - */ + protected array $viewFileArray; + + public function __construct(StreamInterface $outputStream) { + $this->outputStream = $outputStream; + $this->viewFileArray = []; + } + + abstract public function createViewModel():mixed; + + public function addViewFile(string $fileName):void { + array_push($this->viewFileArray, $fileName); + } + + public function stream(mixed $viewModel):void { + $this->outputStream->write((string)$viewModel); + } +} diff --git a/src/View/HTMLView.php b/src/View/HTMLView.php new file mode 100644 index 00000000..a7cd8608 --- /dev/null +++ b/src/View/HTMLView.php @@ -0,0 +1,16 @@ +viewFileArray as $viewFile) { + $html .= file_get_contents($viewFile); + } + + return HTMLDocumentFactory::create($html); + } +} diff --git a/src/View/NullView.php b/src/View/NullView.php new file mode 100644 index 00000000..b1196b8d --- /dev/null +++ b/src/View/NullView.php @@ -0,0 +1,8 @@ +outputStream = $outputStream; - $this->viewModel = $viewModel; - } - - public function getViewModel() { - return $this->viewModel; - } - - public function stream():void { - $this->outputStream->write((string)$this->viewModel); - } -} \ No newline at end of file diff --git a/test/behaviour/behat.yml b/test/behaviour/behat.yml deleted file mode 100644 index 392b9387..00000000 --- a/test/behaviour/behat.yml +++ /dev/null @@ -1,7 +0,0 @@ -default: - extensions: - Behat\MinkExtension: - base_url: 'http://localhost:8080' - sessions: - default: - goutte: ~ diff --git a/test/behaviour/features/CommonLogic.feature b/test/behaviour/features/CommonLogic.feature deleted file mode 100644 index c39f266c..00000000 --- a/test/behaviour/features/CommonLogic.feature +++ /dev/null @@ -1,5 +0,0 @@ -Feature: Common Logic - As a WebEngine developer - In order to write DRY code - I want to execute common logic across multiple pages - diff --git a/test/behaviour/features/DynamicPages.feature b/test/behaviour/features/DynamicPages.feature deleted file mode 100644 index 1e79a07e..00000000 --- a/test/behaviour/features/DynamicPages.feature +++ /dev/null @@ -1,27 +0,0 @@ -Feature: Dynamic Pages - As a WebEngine developer - In order to write dynamic applications - I want to route certain requests through dynamic logic - - Scenario: Page titles with index - Given I am on the homepage - Then I should see "Base Index page" - When I follow "Go to dir" - Then I should see "Dir Index page" - When I follow "Go to nested" - Then I should see "Nested Index page" - When I follow "Go to abcdefg" - Then I should see "Dynamic page" - And I should see "Dynamic page requested: abcdefg." - When I am on "/dir/nested/test-123-behat" - Then I should see "Dynamic page requested: test-123-behat" - - Scenario: Page titles without index - Given I am on the homepage - And I follow "Go to dir" - And I follow "Go to nested without index" - Then I should see "Dynamic page" - And I should see "Dynamic page requested: index." - When I am on "/dir/nested-no-index/another-test-456" - Then I should see "Dynamic page" - Then I should see "Dynamic page requested: another-test-456" \ No newline at end of file diff --git a/test/behaviour/features/bootstrap/FeatureContext.php b/test/behaviour/features/bootstrap/FeatureContext.php deleted file mode 100644 index 703cc055..00000000 --- a/test/behaviour/features/bootstrap/FeatureContext.php +++ /dev/null @@ -1,29 +0,0 @@ -exec(); - self::$pid = self::$process->getPid(); - posix_setpgid(self::$pid, self::$pid); - chdir($cwd); - sleep(1); - } - - /** @AfterSuite */ - public static function tearDown(AfterSuiteScope $event) { - posix_kill(-self::$pid, 2); - self::$process->terminate(2); - } -} \ No newline at end of file diff --git a/test/phpunit/FileSystem/DirectoryWalkerTest.php b/test/phpunit/FileSystem/DirectoryWalkerTest.php deleted file mode 100644 index a7993638..00000000 --- a/test/phpunit/FileSystem/DirectoryWalkerTest.php +++ /dev/null @@ -1,81 +0,0 @@ - $value) { - if($value === "webengine") { - break; - } - } - $randomDirectoryCount = mt_rand($webenginePosition, $numDirectories); - $directoryListUpToParent = array_splice($directoryList, 0, $randomDirectoryCount); - $parentDirectory = implode(DIRECTORY_SEPARATOR, $directoryListUpToParent); - -// Create a directory in the $parent_path to look for: - $directoryName = $this->getRandomName(); - mkdir(implode(DIRECTORY_SEPARATOR, [ - $parentDirectory, - $directoryName, - ]), - 0775, - true - ); - $directoryWalker = new DirectoryWalker($directory); - - self::assertEquals( - $parentDirectory, - $directoryWalker->findParentContaining($directoryName) - ); - } - - public function dataProviderParentExists():array { - return $this->dataProviderParent(true); - } - - public function dataProviderParentNotExists():array { - return $this->dataProviderParent(false); - } - - protected function dataProviderParent(bool $exists, int $num = 10):array { - $tmp = Helper::getTmpDir(); - $data = []; - - for($i = 0; $i < $num; $i++) { - $directory = $tmp; - $numberOfChildren = rand(5, 25); - for($childNum = 0; $childNum < $numberOfChildren; $childNum++) { - $directory .= DIRECTORY_SEPARATOR . $this->getRandomName(); - } - - $data []= [$directory]; - } - - if($exists) { - foreach($data as $parameters) { - if(!is_dir($parameters[0])) { - mkdir($parameters[0], 0775, true); - } - } - } - - return $data; - } - - protected function getRandomName(int $maxLength = 10):string { - $lengthOfDirectoryName = rand(2, $maxLength); - return bin2hex( - random_bytes( - floor($lengthOfDirectoryName / 2) - ) - ); - } -} diff --git a/test/phpunit/FileSystem/PathTest.php b/test/phpunit/FileSystem/PathTest.php deleted file mode 100644 index 73e0e6d5..00000000 --- a/test/phpunit/FileSystem/PathTest.php +++ /dev/null @@ -1,171 +0,0 @@ -before(); - self::assertIsCallable([$testClass, "go"]); - $testClass->go(); - self::assertIsCallable([$testClass, "after"]); - $testClass->after(); - } - - public function testHandleDo() { - $viewModel = self::createMock(ObjectDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $testClass = new class(...$args) extends Api { - public $testObj; - - function testSetupInputData($testData) { - $this->input = $testData; - $this->testObj = new StdClass(); - $this->testObj->doneSomething = false; - } - - function doSomething() { - $this->testObj->doneSomething = true; - } - }; - - $testData = new class implements Iterator { - private $data = [ - "name" => "none", - "do" => "something", - ]; - private $iteratorKey = 0; - - public function current() { - $keys = array_keys($this->data); - $key = $keys[$this->iteratorKey]; - return $this->data[$key]; - } - - public function next() { - $this->iteratorKey++; - } - - public function key() { - $keys = array_keys($this->data); - return $keys[$this->iteratorKey]; - } - - public function valid() { - $keys = array_keys($this->data); - $key = $keys[$this->iteratorKey] ?? null; - return isset($this->data[$key]); - } - - public function rewind() { - $this->iteratorKey = 0; - } - - public function do() { - $caller = new class { - function call($callable) { - $callable(); - } - }; - return $caller; - } - }; - - $testClass->testSetupInputData($testData); - $testClass->handleDo(); - self::assertTrue($testClass->testObj->doneSomething); - } - - /** @runInSeparateProcess */ - public function testReload() { - $viewModel = self::createMock(ObjectDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $sut = new class(...$args) extends Api { - function doTestReload() { - $this->reload(); - } - }; - - self::expectException(HttpSeeOther::class); - $sut->doTestReload(); - } - - public function testGetDynamicPathParameter() { - $expectedPathParam = uniqid(); - - $viewModel = self::createMock(ObjectDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $dynamicPath->method("get") - ->with("testParam") - ->willReturn($expectedPathParam); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $sut = new class(...$args) extends Api { - function doTestDynamicParam($testObj) { - $testObj->message = $this->getDynamicPathParameter("testParam"); - } - }; - - $testObj = new StdClass(); - $testObj->message = null; - $sut->doTestDynamicParam($testObj); - - self::assertEquals($expectedPathParam, $testObj->message); - } -} \ No newline at end of file diff --git a/test/phpunit/Logic/AutoloaderTest.php b/test/phpunit/Logic/AutoloaderTest.php deleted file mode 100644 index 4975a726..00000000 --- a/test/phpunit/Logic/AutoloaderTest.php +++ /dev/null @@ -1,192 +0,0 @@ -autoload( - "\\Test\\App\\Page\\_CommonPage" - ); - - self::assertTrue(class_exists( - "\\Test\\App\\Page\\_CommonPage", - false - )); - } - - public function testAutoloadFindsNestedCommonPage() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "dynamic-uris", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - - $autoloader->autoload( - "\\Test\\App\\Page\\dir\\nested\\_CommonPage" - ); - - self::assertTrue(class_exists( - "\\Test\\App\\Page\\dir\\nested\\_CommonPage", - false - )); - } - - public function testAutoloadWithInvalidSuffix() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "dynamic-uris", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - $autoloader->autoload("\\Test\\App\\ExampleThing"); - self::assertFalse(class_exists( - "\\Test\\App\\ExampleThing", - false - )); - } - - public function testAutoloadOtherNamespace() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "dynamic-uris", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - $autoloader->autoload(ThisClassShouldNotBeLoadedPage::class); - self::assertFalse(class_exists( - ThisClassShouldNotBeLoadedPage::class, - false - )); - } - - public function testAutoloadFindsApiClass() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - "www", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - - $autoloader->autoload( - "\\Test\\App\\Api\\ServiceThingApi" - ); - - self::assertTrue(class_exists( - "\\Test\\App\\Api\\ServiceThingApi", - false - )); - } - - public function testAutoloadFindsDoublyNestedApiClass() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - "www", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - - $autoloader->autoload( - "\\Test\\App\\Api\\OneNest\\TwoNest\\DoublyNestedApi" - ); - - self::assertTrue(class_exists( - "\\Test\\App\\Api\\OneNest\\TwoNest\\DoublyNestedApi", - false - )); - } - - public function testAutoloadFindsDoublyNestedWrongNamedApiClassFile() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - "www", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - - self::expectException(AutoloaderException::class); - self::expectExceptionMessage("File path is not correct for when autoloading class 'Test\\App\\Api\\OneNest\\TwoNest\\WrongNameApi'"); - $autoloader->autoload( - "\\Test\\App\\Api\\OneNest\\TwoNest\\WrongNameApi" - ); - } - - public function testAutoloadFindsNestedDynamicApi() { - $docRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "dynamic-uris", - "www", - ]); - - $autoloader = new Autoloader( - "Test\\App", - realpath($docRoot) - ); - - $autoloader->autoload("\\Test\\App\\Api\\_DynamicOne\\_DynamicTwo\\_DynApi"); - self::assertTrue(class_exists( - "\\Test\\App\\Api\\_DynamicOne\\_DynamicTwo\\_DynApi", - false - )); - } -} \ No newline at end of file diff --git a/test/phpunit/Logic/ClassNameTest.php b/test/phpunit/Logic/ClassNameTest.php deleted file mode 100644 index f00d8478..00000000 --- a/test/phpunit/Logic/ClassNameTest.php +++ /dev/null @@ -1,57 +0,0 @@ - uniqid(), - "type" => uniqid(), - ]); - self::assertNull($sut->get("nothing")); - } - - public function testGetKey() { - $nameValue = uniqid(); - $typeValue = uniqid(); - $sut = new DynamicPath([ - "name" => $nameValue, - "type" => $typeValue, - ]); - self::assertEquals($nameValue, $sut->get("name")); - self::assertEquals($typeValue, $sut->get("type")); - } -} \ No newline at end of file diff --git a/test/phpunit/Logic/LogicFactoryTest.php b/test/phpunit/Logic/LogicFactoryTest.php deleted file mode 100644 index fdb64b90..00000000 --- a/test/phpunit/Logic/LogicFactoryTest.php +++ /dev/null @@ -1,161 +0,0 @@ -config = self::createMock(Config::class); - $this->serverInfo = self::createMock(ServerInfo::class); - $this->input = self::createMock(Input::class); - $this->cookie = self::createMock(CookieHandler::class); - $this->session = self::createMock(Session::class); - $this->database = self::createMock(Database::class); - $this->view = self::createMock(View::class); - $this->headers = self::createMock(Headers::class); - } - - public function testCreatePageLogicFromPathApi() { - $appNamespace = "\\Test\\App"; - $projectRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - ]); - $baseDirectory = $projectRoot . "/api"; - $path = $projectRoot . "/api/service-thing.php"; - /** @var MockObject|UriInterface $uri */ - $uri = self::createMock(Uri::class); - $logicPropertyStore = self::createMock(LogicPropertyStore::class); - - require_once($path); - - $this->view = self::createMock(ApiView::class); - - $sut = new LogicFactory(); - $this->setMocks($sut); - $logic = $sut->createLogicObjectFromPath( - $path, - $appNamespace, - $baseDirectory, - $uri, - $logicPropertyStore - ); - - self::assertInstanceOf(Api::class, $logic); - } - - public function testCreatePageLogicFromPathPage() { - $appNamespace = "\\Test\\App"; - $projectRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - ]); - $baseDirectory = $projectRoot . "/page"; - $path = $projectRoot . "/page/dir/index.php"; - /** @var MockObject|UriInterface $uri */ - $uri = self::createMock(Uri::class); - $logicPropertyStore = self::createMock(LogicPropertyStore::class); - - require_once($path); - - $this->view = self::createMock(PageView::class); - - $sut = new LogicFactory(); - $this->setMocks($sut); - $logic = $sut->createLogicObjectFromPath( - $path, - $appNamespace, - $baseDirectory, - $uri, - $logicPropertyStore - ); - - self::assertInstanceOf(Page::class, $logic); - } - - public function testCreatePageLogicFromPathPageNoIndexInUri() { - $appNamespace = "\\Test\\App"; - $projectRoot = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - "..", - "..", - "project", - "autoloading", - ]); - $baseDirectory = $projectRoot . "/page"; - $path = $projectRoot . "/page/dir"; - /** @var MockObject|UriInterface $uri */ - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/dir"); - $logicPropertyStore = self::createMock(LogicPropertyStore::class); - - /** @noinspection PhpIncludeInspection */ - require_once("$path/index.php"); - - $this->view = self::createMock(PageView::class); - - $sut = new LogicFactory(); - $this->setMocks($sut); - $logic = $sut->createLogicObjectFromPath( - $path, - $appNamespace, - $baseDirectory, - $uri, - $logicPropertyStore - ); - - self::assertInstanceOf(Page::class, $logic); - } - - private function setMocks(LogicFactory $factory) { - $factory->setConfig($this->config); - $factory->setServerInfo($this->serverInfo); - $factory->setInput($this->input); - $factory->setCookieHandler($this->cookie); - $factory->setSession($this->session); - $factory->setDatabase($this->database); - $factory->setView($this->view); - $factory->setHeaders($this->headers); - } -} diff --git a/test/phpunit/Logic/PageTest.php b/test/phpunit/Logic/PageTest.php deleted file mode 100644 index 81d34ca4..00000000 --- a/test/phpunit/Logic/PageTest.php +++ /dev/null @@ -1,212 +0,0 @@ -before(); - self::assertIsCallable([$testClass, "go"]); - $testClass->go(); - self::assertIsCallable([$testClass, "after"]); - $testClass->after(); - } - - public function testHandleDo() { - $viewModel = self::createMock(HTMLDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $testClass = new class(...$args) extends Page { - public $testObj; - - function testSetupInputData($testData) { - $this->input = $testData; - $this->testObj = new StdClass(); - $this->testObj->doneSomething = false; - } - - function doSomething() { - $this->testObj->doneSomething = true; - } - }; - - $testData = new class implements Iterator { - private $data = [ - "name" => "none", - "do" => "something", - ]; - private $iteratorKey = 0; - - public function current() { - $keys = array_keys($this->data); - $key = $keys[$this->iteratorKey]; - return $this->data[$key]; - } - - public function next() { - $this->iteratorKey++; - } - - public function key() { - $keys = array_keys($this->data); - return $keys[$this->iteratorKey]; - } - - public function valid() { - $keys = array_keys($this->data); - $key = $keys[$this->iteratorKey] ?? null; - return isset($this->data[$key]); - } - - public function rewind() { - $this->iteratorKey = 0; - } - - public function do() { - $caller = new class { - function call($callable) { - $callable(); - } - }; - return $caller; - } - }; - - $testClass->testSetupInputData($testData); - $testClass->handleDo(); - self::assertTrue($testClass->testObj->doneSomething); - } - - /** @runInSeparateProcess */ - public function testReload() { - $viewModel = self::createMock(HTMLDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $sut = new class(...$args) extends Page { - function doTestReload() { - $this->reload(); - } - }; - - self::expectException(HttpSeeOther::class); - $sut->doTestReload(); - } - - public function testGetDynamicPathParameter() { - $expectedPathParam = uniqid(); - - $viewModel = self::createMock(HTMLDocument::class); - $config = self::createMock(Config::class); - $server = self::createMock(ServerInfo::class); - $input = self::createMock(Input::class); - $cookie = self::createMock(CookieHandler::class); - $session = self::createMock(Session::class); - $database = self::createMock(Database::class); - $dynamicPath = self::createMock(DynamicPath::class); - $dynamicPath->method("get") - ->with("testParam") - ->willReturn($expectedPathParam); - $headers = self::createMock(Headers::class); - - $args = [ - $viewModel, - $config, - $server, - $input, - $cookie, - $session, - $database, - $dynamicPath, - $headers, - ]; - - $sut = new class(...$args) extends Page { - function doTestDynamicParam($testObj) { - $testObj->message = $this->getDynamicPathParameter("testParam"); - } - }; - - $testObj = new StdClass(); - $testObj->message = null; - $sut->doTestDynamicParam($testObj); - - self::assertEquals($expectedPathParam, $testObj->message); - } -} \ No newline at end of file diff --git a/test/phpunit/Logic/func_header.php b/test/phpunit/Logic/func_header.php deleted file mode 100644 index 0576d024..00000000 --- a/test/phpunit/Logic/func_header.php +++ /dev/null @@ -1,9 +0,0 @@ -method("getUri") - ->willReturn($uri); - $sut = new ApiRouter( - $request, - "", - "application/json" - ); - $path = $sut->getBaseViewLogicPath(); - self::assertEquals("/api", $path); - } - - /** - * @runInSeparateProcess - * @dataProvider dataUri - */ - public function testRedirectIndex(string $uri) { - Override::replace("header", __DIR__); - $uri = self::createMock(Uri::class); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new ApiRouter( - $request, - "", - "application/json" - ); - - $sut->redirectInvalidPaths($uri); - - $expectedHeaderCalls = []; - $lastPartOfUri = substr( - $uri, - strrpos($uri, "/") + 1 - ); - $uriNoLastPart = substr($uri, 0, strrpos($uri, "/")); - if($lastPartOfUri === "index") { - $expectedHeaderCalls []= ["Location: $uriNoLastPart", true, 303]; - } - - self::expectCallsToFunction("header", $expectedHeaderCalls); - } - - public function testGetViewAssemblyNoApiDir() { - $tmp = $this->getTmpDir("testGetViewAssemblyNoApiDir"); - touch("$tmp/composer.json"); - - $uri = self::createMock(Uri::class); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - - $sut = new ApiRouter( - $request, - $tmp, - "application/json" - ); - self::expectException(RequiredDirectoryNotFoundException::class); - $sut->getViewAssembly($uri); - } - - public function testGetViewAssembly() { - $tmp = $this->getTmpDir("testGetViewAssembly"); - touch("$tmp/composer.json"); - mkdir("$tmp/api"); - touch("$tmp/api/example.json"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/example"); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - - $sut = new ApiRouter( - $request, - $tmp, - "application/json" - ); - $assembly = $sut->getViewAssembly($uri); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".json", $assemblyPart); - } - self::assertNotNull($i); - } - - public function testGetLogicAssembly() { - $tmp = $this->getTmpDir("testGetLogicAssembly"); - touch("$tmp/composer.json"); - mkdir("$tmp/api"); - touch("$tmp/api/example.php"); - - /** @var MockObject|Uri $uri */ - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/example"); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - - $sut = new ApiRouter( - $request, - $tmp, - "application/json" - ); - $assembly = $sut->getLogicAssembly(); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".php", $assemblyPart); - } - - self::assertNotNull($i); - } - - public function testGetViewAssemblyDynamic() { - $tmp = $this->getTmpDir("testGetLogicAssemblyDynamic"); - touch("$tmp/composer.json"); - mkdir("$tmp/api"); - mkdir("$tmp/api/item"); - touch("$tmp/api/item/@itemName.json"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/item/something"); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new ApiRouter( - $request, - $tmp, - "application/json" - ); - $assembly = $sut->getViewAssembly(); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".json", $assemblyPart); - } - - self::assertNotNull($i); - } -} \ No newline at end of file diff --git a/test/phpunit/Route/PageRouterTest.php b/test/phpunit/Route/PageRouterTest.php deleted file mode 100644 index 97f331ee..00000000 --- a/test/phpunit/Route/PageRouterTest.php +++ /dev/null @@ -1,173 +0,0 @@ -method("getUri") - ->willReturn($uri); - - $sut = new PageRouter( - $request, - "", - "text/html" - ); - $path = $sut->getBaseViewLogicPath(); - self::assertEquals("/page", $path); - } - - /** - * @runInSeparateProcess - * @dataProvider dataUri - */ - public function testRedirectIndex(string $uriPath) { - Override::replace("header", __DIR__); - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn($uriPath); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new PageRouter( - $request, - "", - "text/html" - ); - $sut->redirectInvalidPaths($uri); - - $expectedHeaderCalls = []; - $lastPartOfUri = substr( - $uri, - strrpos($uri, "/") + 1 - ); - $uriNoLastPart = substr($uri, 0, strrpos($uri, "/")); - if($lastPartOfUri === "index") { - $expectedHeaderCalls []= ["Location: $uriNoLastPart", true, 303]; - } - - self::expectCallsToFunction("header", $expectedHeaderCalls); - } - - public function testGetViewAssemblyNoPageDir() { - $tmp = $this->getTmpDir("testGetViewAssemblyNoPageDir"); - touch("$tmp/composer.json"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/"); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new PageRouter( - $request, - $tmp, - "text/html" - ); - self::expectException(RequiredDirectoryNotFoundException::class); - $sut->getViewAssembly(); - } - - public function testGetViewAssembly() { - $tmp = $this->getTmpDir("testGetViewAssembly"); - touch("$tmp/composer.json"); - mkdir("$tmp/page"); - touch("$tmp/page/index.html"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/"); - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new PageRouter( - $request, - $tmp, - "text/html" - ); - $assembly = $sut->getViewAssembly(); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".html", $assemblyPart); - } - self::assertNotNull($i); - } - - public function testGetLogicAssembly() { - $tmp = $this->getTmpDir("testGetLogicAssembly"); - touch("$tmp/composer.json"); - mkdir("$tmp/page"); - touch("$tmp/page/index.php"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/"); - - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - - $sut = new PageRouter( - $request, - $tmp, - "text/html" - ); - $assembly = $sut->getLogicAssembly(); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".php", $assemblyPart); - } - - self::assertNotNull($i); - } - - public function testGetViewAssemblyDynamic() { - $tmp = $this->getTmpDir("testGetLogicAssemblyDynamic"); - touch("$tmp/composer.json"); - mkdir("$tmp/page"); - mkdir("$tmp/page/item"); - touch("$tmp/page/item/@itemName.html"); - - $uri = self::createMock(Uri::class); - $uri->method("getPath") - ->willReturn("/item/something"); - - /** @var MockObject|Request $request */ - $request = self::createMock(Request::class); - $request->method("getUri") - ->willReturn($uri); - $sut = new PageRouter( - $request, - $tmp, - "text/html" - ); - $assembly = $sut->getViewAssembly(); - - $i = null; - - foreach($assembly as $i => $assemblyPart) { - self::assertFileExists($assemblyPart); - self::assertStringEndsWith(".html", $assemblyPart); - } - - self::assertNotNull($i); - } -} \ No newline at end of file diff --git a/test/phpunit/Route/RouterFactoryTest.php b/test/phpunit/Route/RouterFactoryTest.php deleted file mode 100644 index 14f9ab28..00000000 --- a/test/phpunit/Route/RouterFactoryTest.php +++ /dev/null @@ -1,121 +0,0 @@ -method("getHeaderLine") - ->with("accept") - ->willReturn("no/matches"); - $request->method("getUri") - ->willReturn($uri); - - self::expectException(RoutingException::class); - self::expectExceptionMessage("Accept header has no route: no/matches"); - $sut = new RouterFactory(); - $sut->create($request, ""); - } - - public function testCreateEmptyAcceptHeader() { - $uri = self::createMock(Uri::class); - - $request = self::createMock(Request::class); - $request->method("getHeaderLine") - ->with("accept") - ->willReturn(""); - $request->method("getUri") - ->willReturn($uri); - -// The accept header should default to text/html if none is provided. - $sut = new RouterFactory(); - $router = $sut->create($request, ""); - self::assertInstanceOf( - PageRouter::class, - $router - ); - } - - public function testCreateWildcardAcceptHeader() { - $uri = self::createMock(Uri::class); - - $request = self::createMock(Request::class); - $request->method("getHeaderLine") - ->with("accept") - ->willReturn("*/*"); - $request->method("getUri") - ->willReturn($uri); - -// The accept header should default to text/html if */* is provided. - $sut = new RouterFactory(); - $router = $sut->create($request, ""); - self::assertInstanceOf( - PageRouter::class, - $router - ); - } - - public function testCreateWildcardAcceptHeaderWithJsonDefault() { - $uri = self::createMock(Uri::class); - - $request = self::createMock(Request::class); - $request->method("getHeaderLine") - ->with("accept") - ->willReturn("*/*"); - $request->method("getUri") - ->willReturn($uri); - -// The accept header should default to text/json if */* is provided - this is -// due to the default value in the config. - $sut = new RouterFactory("application/json"); - $router = $sut->create($request, ""); - self::assertInstanceOf( - ApiRouter::class, - $router - ); - } - - public function testCreateTextHtmlAcceptHeader() { - $uri = self::createMock(Uri::class); - $request = self::createMock(Request::class); - $request->method("getHeaderLine") - ->with("accept") - ->willReturn("text/html"); - $request->method("getUri") - ->willReturn($uri); - - $sut = new RouterFactory(); - $router = $sut->create($request, ""); - self::assertInstanceOf( - PageRouter::class, - $router - ); - } - - public function testCreateApplicationJsonHeader() { - $uri = self::createMock(Uri::class); - $request = self::createMock(Request::class); - $request->method("getHeaderLine") - ->with("accept") - ->willReturn("application/json"); - $request->method("getUri") - ->willReturn($uri); - - $sut = new RouterFactory(); - $router = $sut->create($request, ""); - self::assertInstanceOf( - ApiRouter::class, - $router - ); - } -} \ No newline at end of file diff --git a/test/phpunit/Route/RouterTestCase.php b/test/phpunit/Route/RouterTestCase.php deleted file mode 100644 index a732de1f..00000000 --- a/test/phpunit/Route/RouterTestCase.php +++ /dev/null @@ -1,31 +0,0 @@ - 0) { - $nesting = rand(1, 10); - for($n = 0; $n < $nesting; $n++) { - $uri .= uniqid("nest-") . "/"; - } - - if($i % 10 === 0) { - $uri .= "index"; - } - } - - $params []= $uri; - $data []= $params; - } - - return $data; - } -} \ No newline at end of file diff --git a/test/phpunit/Route/func_header.php b/test/phpunit/Route/func_header.php deleted file mode 100644 index 700cc09b..00000000 --- a/test/phpunit/Route/func_header.php +++ /dev/null @@ -1,9 +0,0 @@ -getViewModel() - ); - } - - public function testStream() { - $exampleViewModelString = uniqid("view-model-"); - - $outputStream = self::createMock(Stream::class); - $outputStream->expects(self::once()) - ->method("write") - ->with($exampleViewModelString); - - $viewModel = self::createMock(HTMLDocument::class); - $viewModel->expects(self::once()) - ->method("__toString") - ->willReturn($exampleViewModelString); - - $sut = new ApiView($outputStream, $viewModel); - $sut->stream(); - } -} \ No newline at end of file diff --git a/test/phpunit/View/PageViewTest.php b/test/phpunit/View/PageViewTest.php deleted file mode 100644 index 3112b23d..00000000 --- a/test/phpunit/View/PageViewTest.php +++ /dev/null @@ -1,36 +0,0 @@ -getViewModel() - ); - } - - public function testStream() { - $exampleViewModelString = uniqid("view-model-"); - - $outputStream = self::createMock(Stream::class); - $outputStream->expects(self::once()) - ->method("write") - ->with($exampleViewModelString); - - $viewModel = self::createMock(HTMLDocument::class); - $viewModel->expects(self::once()) - ->method("__toString") - ->willReturn($exampleViewModelString); - - $sut = new PageView($outputStream, $viewModel); - $sut->stream(); - } -} \ No newline at end of file diff --git a/test/phpunit/WebEngineTestCase.php b/test/phpunit/WebEngineTestCase.php deleted file mode 100644 index bbfb4833..00000000 --- a/test/phpunit/WebEngineTestCase.php +++ /dev/null @@ -1,69 +0,0 @@ -createdTmpDirs as $dir) { - $this->recursiveUnlink($dir); - } - - parent::tearDown(); - } - - public function getTmpDir(string $prefix = null):string { - if(is_null($prefix)) { - $prefix = "webengine-test-case"; - } - - $dir = implode(DIRECTORY_SEPARATOR, [ - sys_get_temp_dir(), - "phpgt", - "webengine", - uniqid($prefix . "-"), - ]); - if(!is_dir($dir)) { - mkdir($dir, 0775, true); - } - - $this->createdTmpDirs []= $dir; - - return $dir; - } - - public static function expectCallsToFunction( - string $functionName, - array $parameterCalls - ) { - self::assertEquals( - count($parameterCalls), - Override::getNumCalls($functionName) - ); - - $actualParameterCalls = Override::getCalls($functionName); - foreach($parameterCalls as $i => $expectedParam) { - self::assertEquals( - $expectedParam, - $actualParameterCalls[$i] - ); - } - } - - private function recursiveUnlink(string $path):void { - $contents = glob("$path/*"); - foreach($contents as $filePath) { - if(is_file($filePath)) { - unlink($filePath); - } - elseif(is_dir($filePath)) { - $this->recursiveUnlink($filePath); - } - } - - rmdir($path); - } -} \ No newline at end of file diff --git a/test/phpunit/phpunit.xml b/test/phpunit/phpunit.xml deleted file mode 100644 index 001d1236..00000000 --- a/test/phpunit/phpunit.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - . - - - - - - - - - - - ../../src - - - \ No newline at end of file diff --git a/test/project/autoloading/api/one-nest/two-nest/doubly-nested.php b/test/project/autoloading/api/one-nest/two-nest/doubly-nested.php deleted file mode 100644 index 05995cdf..00000000 --- a/test/project/autoloading/api/one-nest/two-nest/doubly-nested.php +++ /dev/null @@ -1,8 +0,0 @@ -=5.6.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "2.1.0", - "phpunit/phpunit": "^7" - }, - "type": "library", - "autoload": { - "psr-4": { - "WriteiniFile\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-3.0" - ], - "authors": [ - { - "name": "magicalex", - "email": "magicalex@mondedie.fr" - } - ], - "description": "Write-ini-file php library for create, remove, erase, add, and update ini file", - "homepage": "https://github.com/Magicalex/WriteIniFile", - "keywords": [ - "file", - "ini", - "write", - "write_ini_file" - ], - "time": "2019-04-24T23:14:02+00:00" - }, - { - "name": "php-http/httplug", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/b3842537338c949f2469557ef4ad4bdc47b58603", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603", - "shasum": "" - }, - "require": { - "php": "^7.0", - "php-http/promise": "^1.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2018-10-31T09:14:44+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" - }, - { - "name": "phpgt/build", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Build.git", - "reference": "2759c82cefa80d9ca13ce14090a091b6dd76798a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Build/zipball/2759c82cefa80d9ca13ce14090a091b6dd76798a", - "reference": "2759c82cefa80d9ca13ce14090a091b6dd76798a", - "shasum": "" - }, - "require": { - "composer/semver": "1.*", - "ext-json": "*", - "php": ">=7.2", - "phpgt/cli": "*", - "webmozart/glob": "4.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/build" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Build\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Client-side build system for PHP projects.", - "time": "2019-06-19T19:06:54+00:00" - }, - { - "name": "phpgt/cli", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cli.git", - "reference": "a0d3d616483fe10f9c7a66064234d680a8dd9f6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cli/zipball/a0d3d616483fe10f9c7a66064234d680a8dd9f6b", - "reference": "a0d3d616483fe10f9c7a66064234d680a8dd9f6b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.2", - "phpgt/daemon": "1.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cli\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Command line interface builder.", - "keywords": [ - "cli", - "phpgt", - "terminal", - "webengine" - ], - "time": "2019-06-14T13:44:57+00:00" - }, - { - "name": "phpgt/config", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Config.git", - "reference": "076635e33cb4979e23a23fddef17c60adb977524" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Config/zipball/076635e33cb4979e23a23fddef17c60adb977524", - "reference": "076635e33cb4979e23a23fddef17c60adb977524", - "shasum": "" - }, - "require": { - "magicalex/write-ini-file": "v2.0.1", - "php": ">=7.2.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/config-generate" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Config\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Manage configuration with ini files and environment variables.", - "time": "2019-06-17T08:16:58+00:00" - }, - { - "name": "phpgt/cookie", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cookie.git", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cookie/zipball/dd811b6f04becc7c1f8524d84ad02e4635f4a94e", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cookie\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Object oriented cookie handler.", - "time": "2019-07-17T20:11:11+00:00" - }, - { - "name": "phpgt/cron", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cron.git", - "reference": "349d478b97ae6e99d16e651b034e0198eba1e8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cron/zipball/349d478b97ae6e99d16e651b034e0198eba1e8dd", - "reference": "349d478b97ae6e99d16e651b034e0198eba1e8dd", - "shasum": "" - }, - "require": { - "dragonmantank/cron-expression": "^2.2", - "php": ">=7.2", - "phpgt/cli": "1.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/cron" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cron\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Run scripts or static functions at regular intervals.", - "time": "2019-05-31T16:39:38+00:00" - }, - { - "name": "phpgt/csrf", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Csrf.git", - "reference": "8eae62f62c49d429781422b05797ca7832e5e96b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Csrf/zipball/8eae62f62c49d429781422b05797ca7832e5e96b", - "reference": "8eae62f62c49d429781422b05797ca7832e5e96b", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/dom": "*", - "phpgt/session": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Csrf\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Fellows", - "email": "mrfellows@gmail.com", - "role": "Developer" - }, - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "role": "Developer" - } - ], - "description": "Automatic protection from Cross-Site Request Forgery.", - "time": "2019-07-08T10:45:44+00:00" - }, - { - "name": "phpgt/cssxpath", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/CssXPath.git", - "reference": "60554671449ab5068e0171116e68d05aec7c0647" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/CssXPath/zipball/60554671449ab5068e0171116e68d05aec7c0647", - "reference": "60554671449ab5068e0171116e68d05aec7c0647", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpgt/dom": "*", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\CssXPath\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Convert CSS selectors to XPath queries.", - "time": "2019-06-14T15:09:28+00:00" - }, - { - "name": "phpgt/curl", - "version": "v3.0.3", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Curl.git", - "reference": "8e9444706cc1b3ce557d1943d579654458e6fbf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Curl/zipball/8e9444706cc1b3ce557d1943d579654458e6fbf8", - "reference": "8e9444706cc1b3ce557d1943d579654458e6fbf8", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Curl\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "cURL object wrapper.", - "keywords": [ - "curl", - "curl_multi", - "http", - "interface" - ], - "time": "2019-06-20T08:40:28+00:00" - }, - { - "name": "phpgt/daemon", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Daemon.git", - "reference": "39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Daemon/zipball/39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed", - "reference": "39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Daemon\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Background script execution with cross-platform compatible streaming.", - "time": "2019-06-14T13:38:28+00:00" - }, - { - "name": "phpgt/database", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Database.git", - "reference": "dc702c85f3153364378da84d73f3b613c9d27a9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Database/zipball/dc702c85f3153364378da84d73f3b613c9d27a9a", - "reference": "dc702c85f3153364378da84d73f3b613c9d27a9a", - "shasum": "" - }, - "require": { - "ext-pdo": "*", - "php": "^7.2", - "phpgt/config": "*" - }, - "require-dev": { - "ext-sqlite3": "*", - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/db-migrate" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Database\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - }, - { - "name": "James Fellows", - "email": "james.fellows@finanscapes.com" - }, - { - "name": "Christopher Paul Shaw", - "email": "i-am-in-your-code-stealing-your-lulz@chris-shaw.com" - } - ], - "description": "Database API organisation.", - "time": "2019-02-08T12:23:01+00:00" - }, - { - "name": "phpgt/dom", - "version": "v2.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Dom.git", - "reference": "3d7070765971e3799615d64cf1cad3c24443bea2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Dom/zipball/3d7070765971e3799615d64cf1cad3c24443bea2", - "reference": "3d7070765971e3799615d64cf1cad3c24443bea2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "php": ">=7.2", - "phpgt/cssxpath": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Dom\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "homepage": "https://www.g105b.com", - "role": "Developer" - }, - { - "name": "Alvaro Guimaraes", - "homepage": "https://github.com/aguimaraes", - "role": "Developer" - }, - { - "name": "James Fellows", - "homepage": "https://github.com/j4m3s", - "role": "Developer" - }, - { - "name": "Emile Ward", - "homepage": "https://github.com/emileward", - "role": "Developer" - }, - { - "name": "Jelmer Wijnja", - "homepage": "https://github.com/Jelmergu", - "role": "Developer" - }, - { - "name": "Ognjen Petrovic", - "homepage": "https://github.com/ognjen-petrovic", - "role": "Developer" - }, - { - "name": "Jacob Bearden", - "homepage": "https://github.com/jacobbearden", - "role": "Documentation contributor" - }, - { - "name": "Jaroslav Týc", - "homepage": "https://www.jaroslavtyc.com/", - "role": "Developer" - } - ], - "description": "The modern DOM API for PHP 7 projects.", - "time": "2019-07-08T15:06:07+00:00" - }, - { - "name": "phpgt/domtemplate", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/DomTemplate.git", - "reference": "0d4ce7de83df23f459b74d682bf9c7901ea7e50a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/DomTemplate/zipball/0d4ce7de83df23f459b74d682bf9c7901ea7e50a", - "reference": "0d4ce7de83df23f459b74d682bf9c7901ea7e50a", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "phpgt/dom": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\DomTemplate\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Bind dynamic data to reusable HTML components.", - "time": "2019-07-17T20:26:54+00:00" - }, - { - "name": "phpgt/fetch", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Fetch.git", - "reference": "85aff9beb7866fa47e120046342edf9d07b52d9b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Fetch/zipball/85aff9beb7866fa47e120046342edf9d07b52d9b", - "reference": "85aff9beb7866fa47e120046342edf9d07b52d9b", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2", - "php-http/httplug": "^2.0", - "phpgt/curl": "*", - "phpgt/http": "*", - "react/event-loop": "^1.0", - "react/promise": "2.*" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Fetch\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Asynchronous HTTP client with promises for PHP 7 applications.", - "keywords": [ - "ajax", - "async", - "asynchronous", - "curl", - "curl_multi", - "fetch", - "get", - "http", - "post", - "xmlhttprequest" - ], - "time": "2019-06-20T15:02:02+00:00" - }, - { - "name": "phpgt/http", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Http.git", - "reference": "ee79f465924130301284051d418e8ba392a1a3d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Http/zipball/ee79f465924130301284051d418e8ba392a1a3d0", - "reference": "ee79f465924130301284051d418e8ba392a1a3d0", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/cookie": "*", - "phpgt/input": "*", - "psr/http-message": "^1.0.1", - "willdurand/negotiation": "^2.3" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Http\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PSR-7 HTTP message implementation.", - "time": "2019-06-19T19:37:13+00:00" - }, - { - "name": "phpgt/input", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Input.git", - "reference": "bf1d707f8a625f64c77b29126975d065fb96765b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Input/zipball/bf1d707f8a625f64c77b29126975d065fb96765b", - "reference": "bf1d707f8a625f64c77b29126975d065fb96765b", - "shasum": "" - }, - "require": { - "phpgt/http": ">=1.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Input\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Encapsulated user input.", - "time": "2019-07-08T13:43:14+00:00" - }, - { - "name": "phpgt/protectedglobal", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/ProtectedGlobal.git", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/ProtectedGlobal/zipball/3291d2e846dd2d03d585364e9b6652fa76fae64a", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a", - "shasum": "" - }, - "require": { - "php": ">7.1" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\ProtectedGlobal\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Protect against accidental use of superglobals.", - "time": "2019-06-03T15:19:50+00:00" - }, - { - "name": "phpgt/server", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Server.git", - "reference": "8e75ec38de6d14ce1c393441f3853260cb52f455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Server/zipball/8e75ec38de6d14ce1c393441f3853260cb52f455", - "reference": "8e75ec38de6d14ce1c393441f3853260cb52f455", - "shasum": "" - }, - "require": { - "phpgt/cli": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/serve" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Server\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Development HTTP server.", - "time": "2019-06-19T09:17:37+00:00" - }, - { - "name": "phpgt/session", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Session.git", - "reference": "f198c9f5fe9248272c7629b50f87ef9d3092904a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Session/zipball/f198c9f5fe9248272c7629b50f87ef9d3092904a", - "reference": "f198c9f5fe9248272c7629b50f87ef9d3092904a", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Session\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Encapsulated user sessions.", - "time": "2019-06-10T08:12:52+00:00" - }, - { - "name": "phpgt/sync", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Sync.git", - "reference": "d789fe43805bae55fceeb2690deecb84a21aad39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Sync/zipball/d789fe43805bae55fceeb2690deecb84a21aad39", - "reference": "d789fe43805bae55fceeb2690deecb84a21aad39", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/cli": "*", - "webmozart/glob": "4.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/sync" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Sync\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Synchronise two directories.", - "keywords": [ - "copy", - "file", - "files", - "filesystem", - "recursive", - "rsync", - "synchronise", - "synchronize" - ], - "time": "2019-07-17T21:08:19+00:00" - }, - { - "name": "phpgt/webengine", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/WebEngine.git", - "reference": "bd60c2e533621a1afdd836fa4bdc643c93f61df4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/WebEngine/zipball/bd60c2e533621a1afdd836fa4bdc643c93f61df4", - "reference": "bd60c2e533621a1afdd836fa4bdc643c93f61df4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-posix": "*", - "php": ">=7.2", - "phpgt/build": "*", - "phpgt/cli": "*", - "phpgt/config": "*", - "phpgt/cookie": "*", - "phpgt/cron": "*", - "phpgt/csrf": "*", - "phpgt/database": "*", - "phpgt/dom": "*", - "phpgt/domtemplate": "*", - "phpgt/fetch": "*", - "phpgt/http": "*", - "phpgt/input": "*", - "phpgt/protectedglobal": "*", - "phpgt/server": "*", - "phpgt/session": "*", - "phpgt/sync": "*", - "psr/http-server-middleware": "^1.0", - "willdurand/negotiation": "^2.3" - }, - "require-dev": { - "behat/behat": "^3.0.5", - "behat/mink-extension": "^2.3", - "behat/mink-goutte-driver": "^1.2", - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\WebEngine\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Rapid development engine.", - "keywords": [ - "Toolbox", - "framework", - "gt", - "php", - "php.gt", - "phpgt", - "prototype", - "router", - "webengine", - "webservice" - ], - "time": "2019-07-23T20:48:36+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e", - "shasum": "" - }, - "require": { - "php": "^7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "time": "2018-10-30T23:29:13+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "time": "2018-10-30T17:12:04+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", - "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "time": "2019-02-07T16:19:49+00:00" - }, - { - "name": "react/promise", - "version": "v2.7.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "time": "2019-01-07T21:25:54+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-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" - ], - "time": "2018-12-25T11:19:39+00:00" - }, - { - "name": "webmozart/glob", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/glob.git", - "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", - "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", - "shasum": "" - }, - "require": { - "php": "^5.3.3|^7.0", - "webmozart/path-util": "^2.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1", - "symfony/filesystem": "^2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Glob\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A PHP implementation of Ant's glob.", - "time": "2015-12-29T11:14:33+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.", - "time": "2015-12-17T08:42:14+00:00" - }, - { - "name": "willdurand/negotiation", - "version": "v2.3.1", - "source": { - "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Negotiation\\": "src/Negotiation" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "William Durand", - "email": "will+git@drnd.me" - } - ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", - "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" - ], - "time": "2017-05-14T17:21:12+00:00" - } - ], - "packages-dev": [ - { - "name": "behat/behat", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Behat.git", - "reference": "e4bce688be0c2029dc1700e46058d86428c63cab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/e4bce688be0c2029dc1700e46058d86428c63cab", - "reference": "e4bce688be0c2029dc1700e46058d86428c63cab", - "shasum": "" - }, - "require": { - "behat/gherkin": "^4.5.1", - "behat/transliterator": "^1.2", - "container-interop/container-interop": "^1.2", - "ext-mbstring": "*", - "php": ">=5.3.3", - "psr/container": "^1.0", - "symfony/class-loader": "~2.1||~3.0", - "symfony/config": "~2.3||~3.0||~4.0", - "symfony/console": "~2.7.40||^2.8.33||~3.3.15||^3.4.3||^4.0.3", - "symfony/dependency-injection": "~2.1||~3.0||~4.0", - "symfony/event-dispatcher": "~2.1||~3.0||~4.0", - "symfony/translation": "~2.3||~3.0||~4.0", - "symfony/yaml": "~2.1||~3.0||~4.0" - }, - "require-dev": { - "herrera-io/box": "~1.6.1", - "phpunit/phpunit": "^4.8.36|^6.3", - "symfony/process": "~2.5|~3.0|~4.0" - }, - "bin": [ - "bin/behat" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Behat": "src/", - "Behat\\Testwork": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Scenario-oriented BDD framework for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "Agile", - "BDD", - "ScenarioBDD", - "Scrum", - "StoryBDD", - "User story", - "business", - "development", - "documentation", - "examples", - "symfony", - "testing" - ], - "time": "2018-08-10T18:56:51+00:00" - }, - { - "name": "behat/gherkin", - "version": "v4.6.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Gherkin DSL parser for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ], - "time": "2019-01-16T14:22:17+00:00" - }, - { - "name": "behat/mink", - "version": "v1.7.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/Mink.git", - "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/Mink/zipball/e6930b9c74693dff7f4e58577e1b1743399f3ff9", - "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/css-selector": "~2.1|~3.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" - }, - "suggest": { - "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", - "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", - "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", - "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Browser controller/emulator abstraction for PHP", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "testing", - "web" - ], - "time": "2016-03-05T08:26:18+00:00" - }, - { - "name": "behat/mink-browserkit-driver", - "version": "1.3.3", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", - "reference": "1b9a7ce903cfdaaec5fb32bfdbb26118343662eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/1b9a7ce903cfdaaec5fb32bfdbb26118343662eb", - "reference": "1b9a7ce903cfdaaec5fb32bfdbb26118343662eb", - "shasum": "" - }, - "require": { - "behat/mink": "^1.7.1@dev", - "php": ">=5.3.6", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master", - "symfony/http-kernel": "~2.3|~3.0|~4.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Symfony2 BrowserKit driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "Mink", - "Symfony2", - "browser", - "testing" - ], - "time": "2018-05-02T09:25:31+00:00" - }, - { - "name": "behat/mink-extension", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/MinkExtension.git", - "reference": "80f7849ba53867181b7e412df9210e12fba50177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", - "reference": "80f7849ba53867181b7e412df9210e12fba50177", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.5", - "behat/mink": "^1.5", - "php": ">=5.3.2", - "symfony/config": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "behat/mink-goutte-driver": "^1.1", - "phpspec/phpspec": "^2.0" - }, - "type": "behat-extension", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com" - } - ], - "description": "Mink extension for Behat", - "homepage": "http://extensions.behat.org/mink", - "keywords": [ - "browser", - "gui", - "test", - "web" - ], - "time": "2018-02-06T15:36:30+00:00" - }, - { - "name": "behat/mink-goutte-driver", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkGoutteDriver.git", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "shasum": "" - }, - "require": { - "behat/mink": "~1.6@dev", - "behat/mink-browserkit-driver": "~1.2@dev", - "fabpot/goutte": "~1.0.4|~2.0|~3.1", - "php": ">=5.3.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Goutte driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "goutte", - "headless", - "testing" - ], - "time": "2016-03-05T09:04:22+00:00" - }, - { - "name": "behat/transliterator", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Transliterator.git", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Transliterator": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Artistic-1.0" - ], - "description": "String transliterator", - "keywords": [ - "i18n", - "slug", - "transliterator" - ], - "time": "2017-04-04T11:38:05+00:00" - }, - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14T19:40:03+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "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": "http://ocramius.github.com/" - } - ], - "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" - ], - "time": "2019-03-17T17:37:11+00:00" - }, - { - "name": "fabpot/goutte", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3f0eaf0a40181359470651f1565b3e07e3dd31b8", - "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "symfony/browser-kit": "~2.1|~3.0|~4.0", - "symfony/css-selector": "~2.1|~3.0|~4.0", - "symfony/dom-crawler": "~2.1|~3.0|~4.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.3 || ^4" - }, - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Goutte\\": "Goutte" - }, - "exclude-from-classmap": [ - "Goutte/Tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", - "keywords": [ - "scraper" - ], - "time": "2018-06-29T15:13:57+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.3.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.3-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2018-04-22T15:46:56+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2019-04-07T13:18:21+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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)", - "time": "2018-07-08T19:23:20+00:00" - }, - { - "name": "phar-io/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.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", - "time": "2018-07-08T19:19:57+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.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" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-04-30T17:48:53+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.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" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.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" - ], - "time": "2019-06-13T12:50:23+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "7.0.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.2.2" - }, - "suggest": { - "ext-xdebug": "^2.7.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "role": "lead", - "email": "sebastian@phpunit.de" - } - ], - "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" - ], - "time": "2019-07-25T05:31:54+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "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": "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" - ], - "time": "2018-09-13T20:33:42+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "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" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2019-06-07T04:22:29+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "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" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2019-07-25T05:29:42+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "8.2.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c1b8534b3730f20f58600124129197bf1183dc92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c1b8534b3730f20f58600124129197bf1183dc92", - "reference": "c1b8534b3730f20f58600124129197bf1183dc92", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2.0", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.5", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.0", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.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": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2019-07-15T06:26:24+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://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" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-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/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "shasum": "" - }, - "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "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": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2018-07-12T15:12:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" - }, - "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": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "time": "2019-02-04T06:01:07+00:00" - }, - { - "name": "sebastian/environment", - "version": "4.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-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" - ], - "time": "2019-05-05T09:05:15+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "shasum": "" - }, - "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^8.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2019-02-01T05:30:01+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-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/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-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/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" - }, - { - "name": "sebastian/type", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", - "shasum": "" - }, - "require": { - "php": "^7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "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": "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", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "symfony/browser-kit", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "a29dd02a1f3f81b9a15c7730cc3226718ddb55ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a29dd02a1f3f81b9a15c7730cc3226718ddb55ca", - "reference": "a29dd02a1f3f81b9a15c7730cc3226718ddb55ca", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/dom-crawler": "~3.4|~4.0" - }, - "require-dev": { - "symfony/css-selector": "~3.4|~4.0", - "symfony/http-client": "^4.3", - "symfony/mime": "^4.3", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "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": "Symfony BrowserKit Component", - "homepage": "https://symfony.com", - "time": "2019-06-11T15:41:59+00:00" - }, - { - "name": "symfony/class-loader", - "version": "v3.4.29", - "source": { - "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "4459eef5298dedfb69f771186a580062b8516497" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/4459eef5298dedfb69f771186a580062b8516497", - "reference": "4459eef5298dedfb69f771186a580062b8516497", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/polyfill-apcu": "~1.1" - }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "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": "Symfony ClassLoader Component", - "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" - }, - { - "name": "symfony/config", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/messenger": "~4.1", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "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": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2019-06-08T06:33:08+00:00" - }, - { - "name": "symfony/console", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "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": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v3.4.29", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b851928be349c065197fdc0832f78d85139e3903" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b851928be349c065197fdc0832f78d85139e3903", - "reference": "b851928be349c065197fdc0832f78d85139e3903", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.2" - }, - "conflict": { - "symfony/config": "<4.3", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "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": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2019-06-15T04:08:07+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "291397232a2eefb3347eaab9170409981eaad0e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/291397232a2eefb3347eaab9170409981eaad0e2", - "reference": "291397232a2eefb3347eaab9170409981eaad0e2", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "~3.4|~4.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "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": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-20T06:46:26+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "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": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2019-06-23T08:51:25+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "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" - ], - "time": "2019-06-13T11:15:36+00:00" - }, - { - "name": "symfony/translation", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.2" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/service-contracts": "^1.1.2", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "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": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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 translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-13T11:15:36+00:00" - }, - { - "name": "symfony/yaml", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2019-04-06T14:04:46+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.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", - "time": "2019-06-13T22:48:21+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "phpgt/webengine": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "ext-posix": "*" - }, - "platform-dev": [] -} diff --git a/test/project/autoloading/config.ini b/test/project/autoloading/config.ini deleted file mode 100644 index 756c43de..00000000 --- a/test/project/autoloading/config.ini +++ /dev/null @@ -1,2 +0,0 @@ -[app] -namespace=Test\App \ No newline at end of file diff --git a/test/project/autoloading/page/dir/index.php b/test/project/autoloading/page/dir/index.php deleted file mode 100644 index b3758821..00000000 --- a/test/project/autoloading/page/dir/index.php +++ /dev/null @@ -1,8 +0,0 @@ -=5.6.1" - }, - "require-dev": { - "php-coveralls/php-coveralls": "2.1.0", - "phpunit/phpunit": "^7" - }, - "type": "library", - "autoload": { - "psr-4": { - "WriteiniFile\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "GPL-3.0" - ], - "authors": [ - { - "name": "magicalex", - "email": "magicalex@mondedie.fr" - } - ], - "description": "Write-ini-file php library for create, remove, erase, add, and update ini file", - "homepage": "https://github.com/Magicalex/WriteIniFile", - "keywords": [ - "file", - "ini", - "write", - "write_ini_file" - ], - "time": "2019-04-24T23:14:02+00:00" - }, - { - "name": "php-http/httplug", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/b3842537338c949f2469557ef4ad4bdc47b58603", - "reference": "b3842537338c949f2469557ef4ad4bdc47b58603", - "shasum": "" - }, - "require": { - "php": "^7.0", - "php-http/promise": "^1.0", - "psr/http-client": "^1.0", - "psr/http-message": "^1.0" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2018-10-31T09:14:44+00:00" - }, - { - "name": "php-http/promise", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", - "shasum": "" - }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - }, - { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - } - ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], - "time": "2016-01-26T13:27:02+00:00" - }, - { - "name": "phpgt/build", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Build.git", - "reference": "2759c82cefa80d9ca13ce14090a091b6dd76798a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Build/zipball/2759c82cefa80d9ca13ce14090a091b6dd76798a", - "reference": "2759c82cefa80d9ca13ce14090a091b6dd76798a", - "shasum": "" - }, - "require": { - "composer/semver": "1.*", - "ext-json": "*", - "php": ">=7.2", - "phpgt/cli": "*", - "webmozart/glob": "4.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/build" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Build\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Client-side build system for PHP projects.", - "time": "2019-06-19T19:06:54+00:00" - }, - { - "name": "phpgt/cli", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cli.git", - "reference": "a0d3d616483fe10f9c7a66064234d680a8dd9f6b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cli/zipball/a0d3d616483fe10f9c7a66064234d680a8dd9f6b", - "reference": "a0d3d616483fe10f9c7a66064234d680a8dd9f6b", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": ">=7.2", - "phpgt/daemon": "1.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cli\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Command line interface builder.", - "keywords": [ - "cli", - "phpgt", - "terminal", - "webengine" - ], - "time": "2019-06-14T13:44:57+00:00" - }, - { - "name": "phpgt/config", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Config.git", - "reference": "076635e33cb4979e23a23fddef17c60adb977524" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Config/zipball/076635e33cb4979e23a23fddef17c60adb977524", - "reference": "076635e33cb4979e23a23fddef17c60adb977524", - "shasum": "" - }, - "require": { - "magicalex/write-ini-file": "v2.0.1", - "php": ">=7.2.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/config-generate" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Config\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Manage configuration with ini files and environment variables.", - "time": "2019-06-17T08:16:58+00:00" - }, - { - "name": "phpgt/cookie", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cookie.git", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cookie/zipball/dd811b6f04becc7c1f8524d84ad02e4635f4a94e", - "reference": "dd811b6f04becc7c1f8524d84ad02e4635f4a94e", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cookie\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Object oriented cookie handler.", - "time": "2019-07-17T20:11:11+00:00" - }, - { - "name": "phpgt/cron", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Cron.git", - "reference": "349d478b97ae6e99d16e651b034e0198eba1e8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Cron/zipball/349d478b97ae6e99d16e651b034e0198eba1e8dd", - "reference": "349d478b97ae6e99d16e651b034e0198eba1e8dd", - "shasum": "" - }, - "require": { - "dragonmantank/cron-expression": "^2.2", - "php": ">=7.2", - "phpgt/cli": "1.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/cron" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Cron\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Run scripts or static functions at regular intervals.", - "time": "2019-05-31T16:39:38+00:00" - }, - { - "name": "phpgt/csrf", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Csrf.git", - "reference": "8eae62f62c49d429781422b05797ca7832e5e96b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Csrf/zipball/8eae62f62c49d429781422b05797ca7832e5e96b", - "reference": "8eae62f62c49d429781422b05797ca7832e5e96b", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/dom": "*", - "phpgt/session": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Csrf\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "James Fellows", - "email": "mrfellows@gmail.com", - "role": "Developer" - }, - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "role": "Developer" - } - ], - "description": "Automatic protection from Cross-Site Request Forgery.", - "time": "2019-07-08T10:45:44+00:00" - }, - { - "name": "phpgt/cssxpath", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/CssXPath.git", - "reference": "60554671449ab5068e0171116e68d05aec7c0647" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/CssXPath/zipball/60554671449ab5068e0171116e68d05aec7c0647", - "reference": "60554671449ab5068e0171116e68d05aec7c0647", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpgt/dom": "*", - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\CssXPath\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Convert CSS selectors to XPath queries.", - "time": "2019-06-14T15:09:28+00:00" - }, - { - "name": "phpgt/curl", - "version": "v3.0.3", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Curl.git", - "reference": "8e9444706cc1b3ce557d1943d579654458e6fbf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Curl/zipball/8e9444706cc1b3ce557d1943d579654458e6fbf8", - "reference": "8e9444706cc1b3ce557d1943d579654458e6fbf8", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Curl\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "cURL object wrapper.", - "keywords": [ - "curl", - "curl_multi", - "http", - "interface" - ], - "time": "2019-06-20T08:40:28+00:00" - }, - { - "name": "phpgt/daemon", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Daemon.git", - "reference": "39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Daemon/zipball/39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed", - "reference": "39765ffaf95c1cfd7c03dc00eaa4d4ae0fb7a3ed", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Daemon\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Background script execution with cross-platform compatible streaming.", - "time": "2019-06-14T13:38:28+00:00" - }, - { - "name": "phpgt/database", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Database.git", - "reference": "dc702c85f3153364378da84d73f3b613c9d27a9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Database/zipball/dc702c85f3153364378da84d73f3b613c9d27a9a", - "reference": "dc702c85f3153364378da84d73f3b613c9d27a9a", - "shasum": "" - }, - "require": { - "ext-pdo": "*", - "php": "^7.2", - "phpgt/config": "*" - }, - "require-dev": { - "ext-sqlite3": "*", - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/db-migrate" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Database\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - }, - { - "name": "James Fellows", - "email": "james.fellows@finanscapes.com" - }, - { - "name": "Christopher Paul Shaw", - "email": "i-am-in-your-code-stealing-your-lulz@chris-shaw.com" - } - ], - "description": "Database API organisation.", - "time": "2019-02-08T12:23:01+00:00" - }, - { - "name": "phpgt/dom", - "version": "v2.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Dom.git", - "reference": "3d7070765971e3799615d64cf1cad3c24443bea2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Dom/zipball/3d7070765971e3799615d64cf1cad3c24443bea2", - "reference": "3d7070765971e3799615d64cf1cad3c24443bea2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "php": ">=7.2", - "phpgt/cssxpath": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Dom\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com", - "homepage": "https://www.g105b.com", - "role": "Developer" - }, - { - "name": "Alvaro Guimaraes", - "homepage": "https://github.com/aguimaraes", - "role": "Developer" - }, - { - "name": "James Fellows", - "homepage": "https://github.com/j4m3s", - "role": "Developer" - }, - { - "name": "Emile Ward", - "homepage": "https://github.com/emileward", - "role": "Developer" - }, - { - "name": "Jelmer Wijnja", - "homepage": "https://github.com/Jelmergu", - "role": "Developer" - }, - { - "name": "Ognjen Petrovic", - "homepage": "https://github.com/ognjen-petrovic", - "role": "Developer" - }, - { - "name": "Jacob Bearden", - "homepage": "https://github.com/jacobbearden", - "role": "Documentation contributor" - }, - { - "name": "Jaroslav Týc", - "homepage": "https://www.jaroslavtyc.com/", - "role": "Developer" - } - ], - "description": "The modern DOM API for PHP 7 projects.", - "time": "2019-07-08T15:06:07+00:00" - }, - { - "name": "phpgt/domtemplate", - "version": "v1.0.2", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/DomTemplate.git", - "reference": "0d4ce7de83df23f459b74d682bf9c7901ea7e50a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/DomTemplate/zipball/0d4ce7de83df23f459b74d682bf9c7901ea7e50a", - "reference": "0d4ce7de83df23f459b74d682bf9c7901ea7e50a", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "phpgt/dom": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\DomTemplate\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Bind dynamic data to reusable HTML components.", - "time": "2019-07-17T20:26:54+00:00" - }, - { - "name": "phpgt/fetch", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Fetch.git", - "reference": "85aff9beb7866fa47e120046342edf9d07b52d9b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Fetch/zipball/85aff9beb7866fa47e120046342edf9d07b52d9b", - "reference": "85aff9beb7866fa47e120046342edf9d07b52d9b", - "shasum": "" - }, - "require": { - "ext-curl": "*", - "ext-json": "*", - "php": ">=7.2", - "php-http/httplug": "^2.0", - "phpgt/curl": "*", - "phpgt/http": "*", - "react/event-loop": "^1.0", - "react/promise": "2.*" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Fetch\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Greg Bowler", - "email": "greg.bowler@g105b.com" - } - ], - "description": "Asynchronous HTTP client with promises for PHP 7 applications.", - "keywords": [ - "ajax", - "async", - "asynchronous", - "curl", - "curl_multi", - "fetch", - "get", - "http", - "post", - "xmlhttprequest" - ], - "time": "2019-06-20T15:02:02+00:00" - }, - { - "name": "phpgt/http", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Http.git", - "reference": "ee79f465924130301284051d418e8ba392a1a3d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Http/zipball/ee79f465924130301284051d418e8ba392a1a3d0", - "reference": "ee79f465924130301284051d418e8ba392a1a3d0", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/cookie": "*", - "phpgt/input": "*", - "psr/http-message": "^1.0.1", - "willdurand/negotiation": "^2.3" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Http\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PSR-7 HTTP message implementation.", - "time": "2019-06-19T19:37:13+00:00" - }, - { - "name": "phpgt/input", - "version": "v1.0.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Input.git", - "reference": "bf1d707f8a625f64c77b29126975d065fb96765b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Input/zipball/bf1d707f8a625f64c77b29126975d065fb96765b", - "reference": "bf1d707f8a625f64c77b29126975d065fb96765b", - "shasum": "" - }, - "require": { - "phpgt/http": ">=1.0" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Input\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Encapsulated user input.", - "time": "2019-07-08T13:43:14+00:00" - }, - { - "name": "phpgt/protectedglobal", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/ProtectedGlobal.git", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/ProtectedGlobal/zipball/3291d2e846dd2d03d585364e9b6652fa76fae64a", - "reference": "3291d2e846dd2d03d585364e9b6652fa76fae64a", - "shasum": "" - }, - "require": { - "php": ">7.1" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\ProtectedGlobal\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Protect against accidental use of superglobals.", - "time": "2019-06-03T15:19:50+00:00" - }, - { - "name": "phpgt/server", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Server.git", - "reference": "8e75ec38de6d14ce1c393441f3853260cb52f455" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Server/zipball/8e75ec38de6d14ce1c393441f3853260cb52f455", - "reference": "8e75ec38de6d14ce1c393441f3853260cb52f455", - "shasum": "" - }, - "require": { - "phpgt/cli": "*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/serve" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Server\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Development HTTP server.", - "time": "2019-06-19T09:17:37+00:00" - }, - { - "name": "phpgt/session", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Session.git", - "reference": "f198c9f5fe9248272c7629b50f87ef9d3092904a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Session/zipball/f198c9f5fe9248272c7629b50f87ef9d3092904a", - "reference": "f198c9f5fe9248272c7629b50f87ef9d3092904a", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Session\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Encapsulated user sessions.", - "time": "2019-06-10T08:12:52+00:00" - }, - { - "name": "phpgt/sync", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/Sync.git", - "reference": "d789fe43805bae55fceeb2690deecb84a21aad39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/Sync/zipball/d789fe43805bae55fceeb2690deecb84a21aad39", - "reference": "d789fe43805bae55fceeb2690deecb84a21aad39", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpgt/cli": "*", - "webmozart/glob": "4.*" - }, - "require-dev": { - "phpunit/phpunit": "8.*" - }, - "bin": [ - "bin/sync" - ], - "type": "library", - "autoload": { - "psr-4": { - "Gt\\Sync\\": "./src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "description": "Synchronise two directories.", - "keywords": [ - "copy", - "file", - "files", - "filesystem", - "recursive", - "rsync", - "synchronise", - "synchronize" - ], - "time": "2019-07-17T21:08:19+00:00" - }, - { - "name": "phpgt/webengine", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/PhpGt/WebEngine.git", - "reference": "bd60c2e533621a1afdd836fa4bdc643c93f61df4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PhpGt/WebEngine/zipball/bd60c2e533621a1afdd836fa4bdc643c93f61df4", - "reference": "bd60c2e533621a1afdd836fa4bdc643c93f61df4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-posix": "*", - "php": ">=7.2", - "phpgt/build": "*", - "phpgt/cli": "*", - "phpgt/config": "*", - "phpgt/cookie": "*", - "phpgt/cron": "*", - "phpgt/csrf": "*", - "phpgt/database": "*", - "phpgt/dom": "*", - "phpgt/domtemplate": "*", - "phpgt/fetch": "*", - "phpgt/http": "*", - "phpgt/input": "*", - "phpgt/protectedglobal": "*", - "phpgt/server": "*", - "phpgt/session": "*", - "phpgt/sync": "*", - "psr/http-server-middleware": "^1.0", - "willdurand/negotiation": "^2.3" - }, - "require-dev": { - "behat/behat": "^3.0.5", - "behat/mink-extension": "^2.3", - "behat/mink-goutte-driver": "^1.2", - "phpunit/phpunit": "8.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "Gt\\WebEngine\\": "./src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Rapid development engine.", - "keywords": [ - "Toolbox", - "framework", - "gt", - "php", - "php.gt", - "phpgt", - "prototype", - "router", - "webengine", - "webservice" - ], - "time": "2019-07-23T20:48:36+00:00" - }, - { - "name": "psr/http-client", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-client.git", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/496a823ef742b632934724bf769560c2a5c7c44e", - "reference": "496a823ef742b632934724bf769560c2a5c7c44e", - "shasum": "" - }, - "require": { - "php": "^7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Client\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP clients", - "homepage": "https://github.com/php-fig/http-client", - "keywords": [ - "http", - "http-client", - "psr", - "psr-18" - ], - "time": "2018-10-30T23:29:13+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "psr/http-server-handler", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-handler.git", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "reference": "aff2f80e33b7f026ec96bb42f63242dc50ffcae7", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side request handler", - "keywords": [ - "handler", - "http", - "http-interop", - "psr", - "psr-15", - "psr-7", - "request", - "response", - "server" - ], - "time": "2018-10-30T16:46:14+00:00" - }, - { - "name": "psr/http-server-middleware", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-server-middleware.git", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "reference": "2296f45510945530b9dceb8bcedb5cb84d40c5f5", - "shasum": "" - }, - "require": { - "php": ">=7.0", - "psr/http-message": "^1.0", - "psr/http-server-handler": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Server\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP server-side middleware", - "keywords": [ - "http", - "http-interop", - "middleware", - "psr", - "psr-15", - "psr-7", - "request", - "response" - ], - "time": "2018-10-30T17:12:04+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", - "reference": "a0ecac955c67b57c40fe4a1b88a7cca1b58c982d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "time": "2019-02-07T16:19:49+00:00" - }, - { - "name": "react/promise", - "version": "v2.7.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "time": "2019-01-07T21:25:54+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "82ebae02209c21113908c229e9883c419720738a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", - "reference": "82ebae02209c21113908c229e9883c419720738a", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-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" - ], - "time": "2018-12-25T11:19:39+00:00" - }, - { - "name": "webmozart/glob", - "version": "4.1.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/glob.git", - "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", - "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", - "shasum": "" - }, - "require": { - "php": "^5.3.3|^7.0", - "webmozart/path-util": "^2.2" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1", - "symfony/filesystem": "^2.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.1-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Glob\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A PHP implementation of Ant's glob.", - "time": "2015-12-29T11:14:33+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.", - "time": "2015-12-17T08:42:14+00:00" - }, - { - "name": "willdurand/negotiation", - "version": "v2.3.1", - "source": { - "type": "git", - "url": "https://github.com/willdurand/Negotiation.git", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Negotiation\\": "src/Negotiation" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "William Durand", - "email": "will+git@drnd.me" - } - ], - "description": "Content Negotiation tools for PHP provided as a standalone library.", - "homepage": "http://williamdurand.fr/Negotiation/", - "keywords": [ - "accept", - "content", - "format", - "header", - "negotiation" - ], - "time": "2017-05-14T17:21:12+00:00" - } - ], - "packages-dev": [ - { - "name": "behat/behat", - "version": "v3.5.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Behat.git", - "reference": "e4bce688be0c2029dc1700e46058d86428c63cab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/e4bce688be0c2029dc1700e46058d86428c63cab", - "reference": "e4bce688be0c2029dc1700e46058d86428c63cab", - "shasum": "" - }, - "require": { - "behat/gherkin": "^4.5.1", - "behat/transliterator": "^1.2", - "container-interop/container-interop": "^1.2", - "ext-mbstring": "*", - "php": ">=5.3.3", - "psr/container": "^1.0", - "symfony/class-loader": "~2.1||~3.0", - "symfony/config": "~2.3||~3.0||~4.0", - "symfony/console": "~2.7.40||^2.8.33||~3.3.15||^3.4.3||^4.0.3", - "symfony/dependency-injection": "~2.1||~3.0||~4.0", - "symfony/event-dispatcher": "~2.1||~3.0||~4.0", - "symfony/translation": "~2.3||~3.0||~4.0", - "symfony/yaml": "~2.1||~3.0||~4.0" - }, - "require-dev": { - "herrera-io/box": "~1.6.1", - "phpunit/phpunit": "^4.8.36|^6.3", - "symfony/process": "~2.5|~3.0|~4.0" - }, - "bin": [ - "bin/behat" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.5.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Behat": "src/", - "Behat\\Testwork": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Scenario-oriented BDD framework for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "Agile", - "BDD", - "ScenarioBDD", - "Scrum", - "StoryBDD", - "User story", - "business", - "development", - "documentation", - "examples", - "symfony", - "testing" - ], - "time": "2018-08-10T18:56:51+00:00" - }, - { - "name": "behat/gherkin", - "version": "v4.6.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Gherkin.git", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/ab0a02ea14893860bca00f225f5621d351a3ad07", - "reference": "ab0a02ea14893860bca00f225f5621d351a3ad07", - "shasum": "" - }, - "require": { - "php": ">=5.3.1" - }, - "require-dev": { - "phpunit/phpunit": "~4.5|~5", - "symfony/phpunit-bridge": "~2.7|~3|~4", - "symfony/yaml": "~2.3|~3|~4" - }, - "suggest": { - "symfony/yaml": "If you want to parse features, represented in YAML files" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Gherkin": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Gherkin DSL parser for PHP 5.3", - "homepage": "http://behat.org/", - "keywords": [ - "BDD", - "Behat", - "Cucumber", - "DSL", - "gherkin", - "parser" - ], - "time": "2019-01-16T14:22:17+00:00" - }, - { - "name": "behat/mink", - "version": "v1.7.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/Mink.git", - "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/Mink/zipball/e6930b9c74693dff7f4e58577e1b1743399f3ff9", - "reference": "e6930b9c74693dff7f4e58577e1b1743399f3ff9", - "shasum": "" - }, - "require": { - "php": ">=5.3.1", - "symfony/css-selector": "~2.1|~3.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" - }, - "suggest": { - "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)", - "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation", - "behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)", - "behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Browser controller/emulator abstraction for PHP", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "testing", - "web" - ], - "time": "2016-03-05T08:26:18+00:00" - }, - { - "name": "behat/mink-browserkit-driver", - "version": "1.3.3", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkBrowserKitDriver.git", - "reference": "1b9a7ce903cfdaaec5fb32bfdbb26118343662eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/1b9a7ce903cfdaaec5fb32bfdbb26118343662eb", - "reference": "1b9a7ce903cfdaaec5fb32bfdbb26118343662eb", - "shasum": "" - }, - "require": { - "behat/mink": "^1.7.1@dev", - "php": ">=5.3.6", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0" - }, - "require-dev": { - "mink/driver-testsuite": "dev-master", - "symfony/http-kernel": "~2.3|~3.0|~4.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Symfony2 BrowserKit driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "Mink", - "Symfony2", - "browser", - "testing" - ], - "time": "2018-05-02T09:25:31+00:00" - }, - { - "name": "behat/mink-extension", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/Behat/MinkExtension.git", - "reference": "80f7849ba53867181b7e412df9210e12fba50177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/MinkExtension/zipball/80f7849ba53867181b7e412df9210e12fba50177", - "reference": "80f7849ba53867181b7e412df9210e12fba50177", - "shasum": "" - }, - "require": { - "behat/behat": "^3.0.5", - "behat/mink": "^1.5", - "php": ">=5.3.2", - "symfony/config": "^2.7|^3.0|^4.0" - }, - "require-dev": { - "behat/mink-goutte-driver": "^1.1", - "phpspec/phpspec": "^2.0" - }, - "type": "behat-extension", - "extra": { - "branch-alias": { - "dev-master": "2.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\MinkExtension": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com" - } - ], - "description": "Mink extension for Behat", - "homepage": "http://extensions.behat.org/mink", - "keywords": [ - "browser", - "gui", - "test", - "web" - ], - "time": "2018-02-06T15:36:30+00:00" - }, - { - "name": "behat/mink-goutte-driver", - "version": "v1.2.1", - "source": { - "type": "git", - "url": "https://github.com/minkphp/MinkGoutteDriver.git", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/minkphp/MinkGoutteDriver/zipball/8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "reference": "8b9ad6d2d95bc70b840d15323365f52fcdaea6ca", - "shasum": "" - }, - "require": { - "behat/mink": "~1.6@dev", - "behat/mink-browserkit-driver": "~1.2@dev", - "fabpot/goutte": "~1.0.4|~2.0|~3.1", - "php": ">=5.3.1" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7|~3.0" - }, - "type": "mink-driver", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Behat\\Mink\\Driver\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - } - ], - "description": "Goutte driver for Mink framework", - "homepage": "http://mink.behat.org/", - "keywords": [ - "browser", - "goutte", - "headless", - "testing" - ], - "time": "2016-03-05T09:04:22+00:00" - }, - { - "name": "behat/transliterator", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/Behat/Transliterator.git", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", - "reference": "826ce7e9c2a6664c0d1f381cbb38b1fb80a7ee2c", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "chuyskywalker/rolling-curl": "^3.1", - "php-yaoi/php-yaoi": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "psr-0": { - "Behat\\Transliterator": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Artistic-1.0" - ], - "description": "String transliterator", - "keywords": [ - "i18n", - "slug", - "transliterator" - ], - "time": "2017-04-04T11:38:05+00:00" - }, - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14T19:40:03+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "a2c590166b2133a4633738648b6b064edae0814a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", - "reference": "a2c590166b2133a4633738648b6b064edae0814a", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "doctrine/coding-standard": "^6.0", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, - "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": "http://ocramius.github.com/" - } - ], - "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" - ], - "time": "2019-03-17T17:37:11+00:00" - }, - { - "name": "fabpot/goutte", - "version": "v3.2.3", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/Goutte.git", - "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/Goutte/zipball/3f0eaf0a40181359470651f1565b3e07e3dd31b8", - "reference": "3f0eaf0a40181359470651f1565b3e07e3dd31b8", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "symfony/browser-kit": "~2.1|~3.0|~4.0", - "symfony/css-selector": "~2.1|~3.0|~4.0", - "symfony/dom-crawler": "~2.1|~3.0|~4.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.3 || ^4" - }, - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "3.2-dev" - } - }, - "autoload": { - "psr-4": { - "Goutte\\": "Goutte" - }, - "exclude-from-classmap": [ - "Goutte/Tests" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "A simple PHP Web Scraper", - "homepage": "https://github.com/FriendsOfPHP/Goutte", - "keywords": [ - "scraper" - ], - "time": "2018-06-29T15:13:57+00:00" - }, - { - "name": "guzzlehttp/guzzle", - "version": "6.3.3", - "source": { - "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", - "shasum": "" - }, - "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" - }, - "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.0" - }, - "suggest": { - "psr/log": "Required for using the Log middleware" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "6.3-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "GuzzleHttp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2018-04-22T15:46:56+00:00" - }, - { - "name": "guzzlehttp/promises", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "shasum": "" - }, - "require": { - "php": ">=5.5.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" - }, - { - "name": "guzzlehttp/psr7", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", - "shasum": "" - }, - "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" - }, - "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.6-dev" - } - }, - "autoload": { - "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - }, - { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" - } - ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "psr-7", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2019-07-01T23:21:34+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", - "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "replace": { - "myclabs/deep-copy": "self.version" - }, - "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "time": "2019-04-07T13:18:21+00:00" - }, - { - "name": "phar-io/manifest", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "phar-io/version": "^2.0", - "php": "^5.6 || ^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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)", - "time": "2018-07-08T19:23:20+00:00" - }, - { - "name": "phar-io/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.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", - "time": "2018-07-08T19:19:57+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "shasum": "" - }, - "require": { - "php": ">=5.5" - }, - "require-dev": { - "phpunit/phpunit": "^4.6" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.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" - ], - "time": "2017-09-11T18:02:19+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "4.3.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", - "shasum": "" - }, - "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", - "webmozart/assert": "^1.0" - }, - "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.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": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-04-30T17:48:53+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "0.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", - "shasum": "" - }, - "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" - }, - "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.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" - } - ], - "time": "2017-07-14T14:27:02+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.8.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", - "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" - }, - "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.8.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" - ], - "time": "2019-06-13T12:50:23+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "7.0.7", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", - "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-xmlwriter": "*", - "php": "^7.2", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.1.0", - "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^4.2.2", - "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1.3" - }, - "require-dev": { - "phpunit/phpunit": "^8.2.2" - }, - "suggest": { - "ext-xdebug": "^2.7.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "role": "lead", - "email": "sebastian@phpunit.de" - } - ], - "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" - ], - "time": "2019-07-25T05:31:54+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "050bedf145a257b1ff02746c31894800e5122946" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", - "reference": "050bedf145a257b1ff02746c31894800e5122946", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "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": "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" - ], - "time": "2018-09-13T20:33:42+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "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" - ], - "time": "2015-06-21T13:50:34+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "2.1.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", - "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.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": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "time": "2019-06-07T04:22:29+00:00" - }, - { - "name": "phpunit/php-token-stream", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", - "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.0" - }, - "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" - } - ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", - "keywords": [ - "tokenizer" - ], - "time": "2019-07-25T05:29:42+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "8.2.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c1b8534b3730f20f58600124129197bf1183dc92" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c1b8534b3730f20f58600124129197bf1183dc92", - "reference": "c1b8534b3730f20f58600124129197bf1183dc92", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2.0", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.9.1", - "phar-io/manifest": "^1.0.3", - "phar-io/version": "^2.0.1", - "php": "^7.2", - "phpspec/prophecy": "^1.8.1", - "phpunit/php-code-coverage": "^7.0.5", - "phpunit/php-file-iterator": "^2.0.2", - "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1.2", - "sebastian/comparator": "^3.0.2", - "sebastian/diff": "^3.0.2", - "sebastian/environment": "^4.2.2", - "sebastian/exporter": "^3.1.0", - "sebastian/global-state": "^3.0.0", - "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0.1", - "sebastian/type": "^1.1.3", - "sebastian/version": "^2.0.1" - }, - "require-dev": { - "ext-pdo": "*" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0.0" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "8.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": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "time": "2019-07-15T06:26:24+00:00" - }, - { - "name": "psr/container", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://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" - ], - "time": "2017-02-14T16:28:37+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "time": "2019-03-08T08:55:37+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-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/", - "time": "2017-03-04T06:30:41+00:00" - }, - { - "name": "sebastian/comparator", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", - "shasum": "" - }, - "require": { - "php": "^7.1", - "sebastian/diff": "^3.0", - "sebastian/exporter": "^3.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.1" - }, - "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": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "time": "2018-07-12T15:12:46+00:00" - }, - { - "name": "sebastian/diff", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5 || ^8.0", - "symfony/process": "^2 || ^3.3 || ^4" - }, - "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": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "time": "2019-02-04T06:01:07+00:00" - }, - { - "name": "sebastian/environment", - "version": "4.2.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "require-dev": { - "phpunit/phpunit": "^7.5" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-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" - ], - "time": "2019-05-05T09:05:15+00:00" - }, - { - "name": "sebastian/exporter", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", - "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "time": "2017-04-03T13:19:02+00:00" - }, - { - "name": "sebastian/global-state", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", - "shasum": "" - }, - "require": { - "php": "^7.2", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^8.0" - }, - "suggest": { - "ext-uopz": "*" - }, - "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": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "time": "2019-02-01T05:30:01+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", - "shasum": "" - }, - "require": { - "php": "^7.0", - "sebastian/object-reflector": "^1.1.1", - "sebastian/recursion-context": "^3.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-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/", - "time": "2017-08-03T12:35:26+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "773f97c67f28de00d397be301821b06708fca0be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", - "reference": "773f97c67f28de00d397be301821b06708fca0be", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-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/", - "time": "2017-03-29T09:07:27+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", - "shasum": "" - }, - "require": { - "php": "^7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", - "shasum": "" - }, - "require": { - "php": "^7.1" - }, - "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": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2018-10-04T04:07:39+00:00" - }, - { - "name": "sebastian/type", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", - "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", - "shasum": "" - }, - "require": { - "php": "^7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.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": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "time": "2019-07-02T08:10:15+00:00" - }, - { - "name": "sebastian/version", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", - "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "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": "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", - "time": "2016-10-03T07:35:21+00:00" - }, - { - "name": "symfony/browser-kit", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "a29dd02a1f3f81b9a15c7730cc3226718ddb55ca" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a29dd02a1f3f81b9a15c7730cc3226718ddb55ca", - "reference": "a29dd02a1f3f81b9a15c7730cc3226718ddb55ca", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/dom-crawler": "~3.4|~4.0" - }, - "require-dev": { - "symfony/css-selector": "~3.4|~4.0", - "symfony/http-client": "^4.3", - "symfony/mime": "^4.3", - "symfony/process": "~3.4|~4.0" - }, - "suggest": { - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "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": "Symfony BrowserKit Component", - "homepage": "https://symfony.com", - "time": "2019-06-11T15:41:59+00:00" - }, - { - "name": "symfony/class-loader", - "version": "v3.4.29", - "source": { - "type": "git", - "url": "https://github.com/symfony/class-loader.git", - "reference": "4459eef5298dedfb69f771186a580062b8516497" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/4459eef5298dedfb69f771186a580062b8516497", - "reference": "4459eef5298dedfb69f771186a580062b8516497", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/polyfill-apcu": "~1.1" - }, - "suggest": { - "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\ClassLoader\\": "" - }, - "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": "Symfony ClassLoader Component", - "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" - }, - { - "name": "symfony/config", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9198eea354be75794a7b1064de00d9ae9ae5090f", - "reference": "9198eea354be75794a7b1064de00d9ae9ae5090f", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/messenger": "~4.1", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "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": "Symfony Config Component", - "homepage": "https://symfony.com", - "time": "2019-06-08T06:33:08+00:00" - }, - { - "name": "symfony/console", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/b592b26a24265a35172d8a2094d8b10f22b7cc39", - "reference": "b592b26a24265a35172d8a2094d8b10f22b7cc39", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3", - "symfony/process": "<3.3" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/var-dumper": "^4.3" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "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": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v3.4.29", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", - "reference": "8ca29297c29b64fb3a1a135e71cb25f67f9fdccf", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2019-01-16T09:39:14+00:00" - }, - { - "name": "symfony/dependency-injection", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b851928be349c065197fdc0832f78d85139e3903" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b851928be349c065197fdc0832f78d85139e3903", - "reference": "b851928be349c065197fdc0832f78d85139e3903", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.2" - }, - "conflict": { - "symfony/config": "<4.3", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "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": "Symfony DependencyInjection Component", - "homepage": "https://symfony.com", - "time": "2019-06-15T04:08:07+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "291397232a2eefb3347eaab9170409981eaad0e2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/291397232a2eefb3347eaab9170409981eaad0e2", - "reference": "291397232a2eefb3347eaab9170409981eaad0e2", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "masterminds/html5": "<2.6" - }, - "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "~3.4|~4.0" - }, - "suggest": { - "symfony/css-selector": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "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": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d257021c1ab28d48d24a16de79dfab445ce93398", - "reference": "d257021c1ab28d48d24a16de79dfab445ce93398", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" - }, - "conflict": { - "symfony/dependency-injection": "<3.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "^3.4|^4.0", - "symfony/service-contracts": "^1.1", - "symfony/stopwatch": "~3.4|~4.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", - "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-20T06:46:26+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", - "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "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": "Symfony Filesystem Component", - "homepage": "https://symfony.com", - "time": "2019-06-23T08:51:25+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", - "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2019-02-06T07:57:58+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "reference": "f391a00de78ec7ec8cf5cdcdae59ec7b883edb8d", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/container": "^1.0" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "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" - ], - "time": "2019-06-13T11:15:36+00:00" - }, - { - "name": "symfony/translation", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/934ab1d18545149e012aa898cf02e9f23790f7a0", - "reference": "934ab1d18545149e012aa898cf02e9f23790f7a0", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.2" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/finder": "~2.8|~3.0|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/intl": "~3.4|~4.0", - "symfony/service-contracts": "^1.1.2", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "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": "Symfony Translation Component", - "homepage": "https://symfony.com", - "time": "2019-06-13T11:03:18+00:00" - }, - { - "name": "symfony/translation-contracts", - "version": "v1.1.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "reference": "cb4b18ad7b92a26e83b65dde940fab78339e6f3c", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "symfony/translation-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - } - }, - "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 translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2019-06-13T11:15:36+00:00" - }, - { - "name": "symfony/yaml", - "version": "v4.3.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99", - "reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2019-04-06T14:04:46+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.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", - "time": "2019-06-13T22:48:21+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "phpgt/webengine": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "ext-posix": "*" - }, - "platform-dev": [] -} diff --git a/test/project/dynamic-uris/config.ini b/test/project/dynamic-uris/config.ini deleted file mode 100644 index 756c43de..00000000 --- a/test/project/dynamic-uris/config.ini +++ /dev/null @@ -1,2 +0,0 @@ -[app] -namespace=Test\App \ No newline at end of file diff --git a/test/project/dynamic-uris/page/_common.php b/test/project/dynamic-uris/page/_common.php deleted file mode 100644 index 66959e78..00000000 --- a/test/project/dynamic-uris/page/_common.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Base Common"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/_common.php b/test/project/dynamic-uris/page/dir/_common.php deleted file mode 100644 index dec33500..00000000 --- a/test/project/dynamic-uris/page/dir/_common.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Dir Common"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/index.html b/test/project/dynamic-uris/page/dir/index.html deleted file mode 100644 index 3e940b7d..00000000 --- a/test/project/dynamic-uris/page/dir/index.html +++ /dev/null @@ -1,8 +0,0 @@ -

Dir Index page

-

Go home

-

Go to nested

-

Go to nested without index

-

The following PHP has been executed:

- \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/index.php b/test/project/dynamic-uris/page/dir/index.php deleted file mode 100644 index e4b79bb9..00000000 --- a/test/project/dynamic-uris/page/dir/index.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Dir Index"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.html b/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.html deleted file mode 100644 index 4844adaa..00000000 --- a/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.html +++ /dev/null @@ -1,6 +0,0 @@ -

Dynamic page

-

Dynamic page requested: X.

-

The following PHP has been executed:

- \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.php b/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.php deleted file mode 100644 index 4c9e3dec..00000000 --- a/test/project/dynamic-uris/page/dir/nested-no-index/@dynamicPage.php +++ /dev/null @@ -1,16 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Nested Dynamic Page"); - $t->insertTemplate(); - - $this->document->bindKeyValue( - "dynamic-page", - $this->dynamicPath->get("dynamicPage") ?? "index" - ); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested-no-index/_common.php b/test/project/dynamic-uris/page/dir/nested-no-index/_common.php deleted file mode 100644 index 64036fc8..00000000 --- a/test/project/dynamic-uris/page/dir/nested-no-index/_common.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Nested Common"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested/@dynamicPage.html b/test/project/dynamic-uris/page/dir/nested/@dynamicPage.html deleted file mode 100644 index 4844adaa..00000000 --- a/test/project/dynamic-uris/page/dir/nested/@dynamicPage.html +++ /dev/null @@ -1,6 +0,0 @@ -

Dynamic page

-

Dynamic page requested: X.

-

The following PHP has been executed:

- \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested/@dynamicPage.php b/test/project/dynamic-uris/page/dir/nested/@dynamicPage.php deleted file mode 100644 index fac94464..00000000 --- a/test/project/dynamic-uris/page/dir/nested/@dynamicPage.php +++ /dev/null @@ -1,16 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Nested Dynamic Page"); - $t->insertTemplate(); - - $this->document->bindKeyValue( - "dynamic-page", - $this->dynamicPath->get("dynamicPage") - ); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested/_common.php b/test/project/dynamic-uris/page/dir/nested/_common.php deleted file mode 100644 index c8bb6d21..00000000 --- a/test/project/dynamic-uris/page/dir/nested/_common.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Nested Common"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested/index.html b/test/project/dynamic-uris/page/dir/nested/index.html deleted file mode 100644 index 4daeedad..00000000 --- a/test/project/dynamic-uris/page/dir/nested/index.html +++ /dev/null @@ -1,7 +0,0 @@ -

Nested Index page

-

Go home

-

Go to abcdefg

-

The following PHP has been executed:

- \ No newline at end of file diff --git a/test/project/dynamic-uris/page/dir/nested/index.php b/test/project/dynamic-uris/page/dir/nested/index.php deleted file mode 100644 index ae35b4ee..00000000 --- a/test/project/dynamic-uris/page/dir/nested/index.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Nested Index"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/page/index.html b/test/project/dynamic-uris/page/index.html deleted file mode 100644 index 111aec4c..00000000 --- a/test/project/dynamic-uris/page/index.html +++ /dev/null @@ -1,6 +0,0 @@ -

Base Index page

-

Go to dir

-

The following PHP has been executed:

- \ No newline at end of file diff --git a/test/project/dynamic-uris/page/index.php b/test/project/dynamic-uris/page/index.php deleted file mode 100644 index 75cec3c6..00000000 --- a/test/project/dynamic-uris/page/index.php +++ /dev/null @@ -1,11 +0,0 @@ -document->getTemplate("script-name"); - $t->bindKeyValue("script-name", "Base Index"); - $t->insertTemplate(); - } -} \ No newline at end of file diff --git a/test/project/dynamic-uris/www/.gitkeep b/test/project/dynamic-uris/www/.gitkeep deleted file mode 100644 index e69de29b..00000000