diff --git a/.github/workflows/tests81.yml b/.github/workflows/tests81.yml new file mode 100644 index 0000000..4fca6ad --- /dev/null +++ b/.github/workflows/tests81.yml @@ -0,0 +1,26 @@ +name: test + +on: push + +jobs: + phpunit: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + extensions: mbstring, intl + ini-values: post_max_size=256M, max_execution_time=180 + coverage: xdebug + tools: php-cs-fixer, phpunit + + - name: Composer dependencies + run: composer install --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist + + - name: Run Testsuite + run: vendor/bin/phpunit tests/ diff --git a/README.md b/README.md index aa29753..acaf590 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,11 @@ [![documentation](https://img.shields.io/github/workflow/status/codedredd/laravel-soap/documentation?label=docs&logo=read-the-docs&style=flat-square)](https://codedredd.github.io/laravel-soap/) ## Versions -Laravel SOAP Version | Laravel Support --------- | ------------------ -1.x | 5.6, 6.x, 7x -2.x | 8.x - +Laravel SOAP Version | Laravel Support | PHP Version +-------- | ------------------ | ------------- +1.x | 5.6, 6.x, 7x | 7.3 - 8.0 +2.x | 8.x | 7.3 - 8.0 +3.x | 8.x, 9.x | 8.0 - 8.1 ## Installation diff --git a/composer.json b/composer.json index fad4ff1..5801103 100644 --- a/composer.json +++ b/composer.json @@ -10,26 +10,30 @@ } ], "require": { - "php": ">=7.3.0", + "php": "^8.0 || 8.1", "ext-soap": "*", + "ext-bcmath": "*", + "ext-intl": "*", "ext-json": "*", "ext-dom": "*", "ext-simplexml": "*", - "illuminate/support": "^8.0", - "phpro/soap-client": "^1.4", + "illuminate/support": "^8.0 || ^9.0", + "phpro/soap-client": "^v2.1.0", "php-http/guzzle7-adapter": "^1.0", "php-http/discovery": "^1.7", "php-http/message": "^1.8", "php-http/client-common": "^2.1", - "robrichards/wse-php": "^2.0" + "robrichards/wse-php": "^2.0", + "php-soap/psr18-transport": "^1.2", + "php-soap/psr18-wsse-middleware": "^1.1", + "php-http/mock-client": "^1.5" }, "require-dev": { "symfony/var-dumper": "^5.0", - "symfony/options-resolver": "5.2.2 as 3.1.1", + "symfony/options-resolver": "^5.4.3", "phpunit/phpunit": "^9.1", - "orchestra/testbench": "^6.0", - "laminas/laminas-code": "^3.4", - "wsdl2phpgenerator/wsdl2phpgenerator": "3.4.0" + "orchestra/testbench": "^6.0 || ^7.0", + "laminas/laminas-code": "^4.5.1" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index f1f7932..714f1a5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,75 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "0513155ea81ca7ac9e6c74bfc8ef26e1", + "content-hash": "1c49a04b28c18aa4ba55c414de286d1b", "packages": [ + { + "name": "azjezz/psl", + "version": "1.9.3", + "source": { + "type": "git", + "url": "https://github.com/azjezz/psl.git", + "reference": "5c20649db277565d6a40a66edfc2bbf8dc7f19e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/azjezz/psl/zipball/5c20649db277565d6a40a66edfc2bbf8dc7f19e0", + "reference": "5c20649db277565d6a40a66edfc2bbf8dc7f19e0", + "shasum": "" + }, + "require": { + "ext-bcmath": "*", + "ext-intl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-sodium": "*", + "php": "~8.0.0 || ~8.1.0" + }, + "suggest": { + "php-standard-library/psalm-plugin": "Psalm integration" + }, + "type": "library", + "extra": { + "psalm": { + "pluginClass": "Psl\\Integration\\Psalm\\Plugin" + }, + "thanks": { + "name": "hhvm/hsl", + "url": "https://github.com/hhvm/hsl" + } + }, + "autoload": { + "files": [ + "src/bootstrap.php" + ], + "psr-4": { + "Psl\\": "src/Psl", + "Psl\\Integration\\": "integration" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "azjezz", + "email": "azjezz@protonmail.com" + } + ], + "description": "PHP Standard Library", + "support": { + "issues": "https://github.com/azjezz/psl/issues", + "source": "https://github.com/azjezz/psl/tree/1.9.3" + }, + "funding": [ + { + "url": "https://opencollective.com/php-standard-library", + "type": "open_collective" + } + ], + "time": "2021-12-10T10:34:36+00:00" + }, { "name": "brick/math", "version": "0.9.3", @@ -132,6 +199,81 @@ ], "time": "2020-10-02T12:38:20+00:00" }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.1", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/0992cc19268b259a39e86f296da5f0677841f42c", + "reference": "0992cc19268b259a39e86f296da5f0677841f42c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^3.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.1" + }, + "time": "2021-08-13T13:06:58+00:00" + }, { "name": "doctrine/inflector", "version": "2.0.4", @@ -492,33 +634,35 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.2.0", + "version": "7.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79", + "reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.8.3 || ^2.1", "php": "^7.2.5 || ^8.0", - "psr/http-client": "^1.0" + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "provide": { "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", "phpunit/phpunit": "^8.5.5 || ^9.3.5", - "psr/log": "^1.1" + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { "ext-curl": "Required for CURL handler support", @@ -528,7 +672,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.1-dev" + "dev-master": "7.4-dev" } }, "autoload": { @@ -544,19 +688,43 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, { "name": "Márk Sági-Kazár", "email": "mark.sagikazar@gmail.com", - "homepage": "https://sagikazarmark.hu" + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", @@ -570,7 +738,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.2.0" + "source": "https://github.com/guzzle/guzzle/tree/7.4.1" }, "funding": [ { @@ -582,28 +750,24 @@ "type": "github" }, { - "url": "https://github.com/alexeyshockov", - "type": "github" - }, - { - "url": "https://github.com/gmponos", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" } ], - "time": "2020-10-10T11:47:56+00:00" + "time": "2021-12-06T18:43:05+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", "shasum": "" }, "require": { @@ -615,7 +779,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "1.5-dev" } }, "autoload": { @@ -631,10 +795,25 @@ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", @@ -643,35 +822,52 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.1" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2021-10-22T20:56:57+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91" + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", - "reference": "dc960a912984efb74d0a90222870c72c87f10c91", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/089edd38f5b8abba6cb01567c2a8aaa47cec4c72", + "reference": "089edd38f5b8abba6cb01567c2a8aaa47cec4c72", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "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" + "bamarni/composer-bin-plugin": "^1.4.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.8 || ^9.3.10" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -679,30 +875,53 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "2.1-dev" } }, "autoload": { "psr-4": { "GuzzleHttp\\Psr7\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, { "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -718,9 +937,89 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.2" + "source": "https://github.com/guzzle/psr7/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2021-10-06T17:43:30+00:00" + }, + { + "name": "laminas/laminas-code", + "version": "4.5.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-code.git", + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e", + "shasum": "" }, - "time": "2021-04-26T09:17:50+00:00" + "require": { + "php": ">=7.4, <8.2" + }, + "require-dev": { + "doctrine/annotations": "^1.13.2", + "ext-phar": "*", + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^9.5.10", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.13.1" + }, + "suggest": { + "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", + "laminas/laminas-stdlib": "Laminas\\Stdlib component" + }, + "type": "library", + "autoload": { + "psr-4": { + "Laminas\\Code\\": "src/" + }, + "files": [ + "polyfill/ReflectionEnumPolyfill.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", + "homepage": "https://laminas.dev", + "keywords": [ + "code", + "laminas", + "laminasframework" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2021-12-19T18:06:55+00:00" }, { "name": "laravel/framework", @@ -956,42 +1255,52 @@ }, { "name": "league/commonmark", - "version": "1.6.7", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b" + "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/2b8185c13bc9578367a5bf901881d1c1b5bbd09b", - "reference": "2b8185c13bc9578367a5bf901881d1c1b5bbd09b", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", + "reference": "f8afb78f087777b040e0ab8a6b6ca93f6fc3f18a", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.1 || ^8.0" - }, - "conflict": { - "scrutinizer/ocular": "1.7.*" + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { - "cebe/markdown": "~1.0", - "commonmark/commonmark.js": "0.29.2", - "erusev/parsedown": "~1.0", + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "erusev/parsedown": "^1.0", "ext-json": "*", "github/gfm": "0.29.0", - "michelf/php-markdown": "~1.4", - "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan": "^0.12.90", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.2", - "scrutinizer/ocular": "^1.5", - "symfony/finder": "^4.2" + "michelf/php-markdown": "^1.4", + "phpstan/phpstan": "^0.12.88 || ^1.0.0", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" }, - "bin": [ - "bin/commonmark" - ], "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.3-dev" + } + }, "autoload": { "psr-4": { "League\\CommonMark\\": "src" @@ -1009,7 +1318,7 @@ "role": "Lead Developer" } ], - "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", @@ -1023,6 +1332,7 @@ ], "support": { "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", "issues": "https://github.com/thephpleague/commonmark/issues", "rss": "https://github.com/thephpleague/commonmark/releases.atom", "source": "https://github.com/thephpleague/commonmark" @@ -1045,26 +1355,108 @@ "type": "tidelift" } ], - "time": "2022-01-13T17:18:13+00:00" + "time": "2022-01-25T14:37:33+00:00" }, { - "name": "league/flysystem", - "version": "1.1.9", + "name": "league/config", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "url": "https://github.com/thephpleague/config.git", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/config/zipball/a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", + "reference": "a9d39eeeb6cc49d10a6e6c36f22c4c1f4a767f3e", "shasum": "" }, "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.90", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2021-08-14T12:15:32+00:00" + }, + { + "name": "league/flysystem", + "version": "1.1.9", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", + "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "league/mime-type-detection": "^1.3", + "php": "^7.2.5 || ^8.0" }, "conflict": { "league/flysystem-sftp": "<1.0.6" @@ -1197,6 +1589,262 @@ ], "time": "2021-11-21T11:48:40+00:00" }, + { + "name": "league/uri", + "version": "6.5.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri.git", + "reference": "c68ca445abb04817d740ddd6d0b3551826ef0c5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/c68ca445abb04817d740ddd6d0b3551826ef0c5a", + "reference": "c68ca445abb04817d740ddd6d0b3551826ef0c5a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/uri-interfaces": "^2.3", + "php": "^7.3 || ^8.0", + "psr/http-message": "^1.0" + }, + "conflict": { + "league/uri-schemes": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19 || ^3.0", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.22", + "phpstan/phpstan-strict-rules": "^0.12.11", + "phpunit/phpunit": "^8.0 || ^9.0", + "psr/http-factory": "^1.0" + }, + "suggest": { + "ext-fileinfo": "Needed to create Data URI from a filepath", + "ext-intl": "Needed to improve host validation", + "league/uri-components": "Needed to easily manipulate URI objects", + "psr/http-factory": "Needed to use the URI factory" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI manipulation library", + "homepage": "http://uri.thephpleague.com", + "keywords": [ + "data-uri", + "file-uri", + "ftp", + "hostname", + "http", + "https", + "middleware", + "parse_str", + "parse_url", + "psr-7", + "query-string", + "querystring", + "rfc3986", + "rfc3987", + "rfc6570", + "uri", + "uri-template", + "url", + "ws" + ], + "support": { + "docs": "https://uri.thephpleague.com", + "forum": "https://thephpleague.slack.com", + "issues": "https://github.com/thephpleague/uri/issues", + "source": "https://github.com/thephpleague/uri/tree/6.5.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-08-27T09:54:07+00:00" + }, + { + "name": "league/uri-components", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-components.git", + "reference": "c97c83e7d915cdb0163f0322a87a07df1d0d9fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-components/zipball/c97c83e7d915cdb0163f0322a87a07df1d0d9fe1", + "reference": "c97c83e7d915cdb0163f0322a87a07df1d0d9fe1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "league/uri-interfaces": "^2.3", + "php": "^7.3 || ^8.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "guzzlehttp/psr7": "^1.4.2", + "laminas/laminas-diactoros": "^2.6.0", + "league/uri": "^6.0", + "phpstan/phpstan": "^0.12.94", + "phpstan/phpstan-phpunit": "^0.12.21", + "phpstan/phpstan-strict-rules": "^0.12.10", + "phpunit/phpunit": "^9.5.8" + }, + "suggest": { + "ext-fileinfo": "Needed to create Data URI from a filepath", + "ext-gmp": "to improve handle IPV4 parsing", + "ext-intl": "to handle IDN host", + "jeremykendall/php-domain-parser": "Public Suffix and Top Level Domain parsing implemented in PHP", + "league/uri": "to allow manipulating URI objects", + "php-64bit": "to improve handle IPV4 parsing", + "psr/http-message-implementation": "to allow manipulating PSR-7 Uri objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "URI components manipulation library", + "homepage": "http://uri.thephpleague.com", + "keywords": [ + "authority", + "components", + "fragment", + "host", + "path", + "port", + "query", + "rfc3986", + "scheme", + "uri", + "url", + "userinfo" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-components/issues", + "source": "https://github.com/thephpleague/uri-components/tree/2.4.0" + }, + "funding": [ + { + "url": "https://github.com/nyamsprod", + "type": "github" + } + ], + "time": "2021-08-02T20:31:29+00:00" + }, + { + "name": "league/uri-interfaces", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/uri-interfaces.git", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.19", + "phpstan/phpstan-strict-rules": "^0.12.9", + "phpunit/phpunit": "^8.5.15 || ^9.5" + }, + "suggest": { + "ext-intl": "to use the IDNA feature", + "symfony/intl": "to use the IDNA feature via Symfony Polyfill" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Uri\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ignace Nyamagana Butera", + "email": "nyamsprod@gmail.com", + "homepage": "https://nyamsprod.com" + } + ], + "description": "Common interface for URI representation", + "homepage": "http://github.com/thephpleague/uri-interfaces", + "keywords": [ + "rfc3986", + "rfc3987", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/thephpleague/uri-interfaces/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2021-06-28T04:27:21+00:00" + }, { "name": "monolog/monolog", "version": "2.3.5", @@ -1393,92 +2041,239 @@ "time": "2022-01-21T17:08:38+00:00" }, { - "name": "opis/closure", - "version": "3.6.3", + "name": "nette/schema", + "version": "v1.2.2", "source": { "type": "git", - "url": "https://github.com/opis/closure.git", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + "url": "https://github.com/nette/schema.git", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", - "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "url": "https://api.github.com/repos/nette/schema/zipball/9a39cef03a5b34c7de64f551538cbba05c2be5df", + "reference": "9a39cef03a5b34c7de64f551538cbba05c2be5df", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0 || ^8.0" + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": ">=7.1 <8.2" }, "require-dev": { - "jeremeamia/superclosure": "^2.0", - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^0.12", + "tracy/tracy": "^2.7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.6.x-dev" + "dev-master": "1.2-dev" } }, "autoload": { - "psr-4": { - "Opis\\Closure\\": "src/" - }, - "files": [ - "functions.php" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" ], "authors": [ { - "name": "Marius Sarca", - "email": "marius.sarca@gmail.com" + "name": "David Grudl", + "homepage": "https://davidgrudl.com" }, { - "name": "Sorin Sarca", - "email": "sarca_sorin@hotmail.com" + "name": "Nette Community", + "homepage": "https://nette.org/contributors" } ], - "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", - "homepage": "https://opis.io/closure", + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", "keywords": [ - "anonymous functions", - "closure", - "function", - "serializable", - "serialization", - "serialize" + "config", + "nette" ], "support": { - "issues": "https://github.com/opis/closure/issues", - "source": "https://github.com/opis/closure/tree/3.6.3" + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.2" }, - "time": "2022-01-27T09:35:39+00:00" + "time": "2021-10-15T11:40:02+00:00" }, { - "name": "php-http/client-common", - "version": "2.5.0", + "name": "nette/utils", + "version": "v3.2.7", "source": { "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + "url": "https://github.com/nette/utils.git", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", - "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "url": "https://api.github.com/repos/nette/utils/zipball/0af4e3de4df9f1543534beab255ccf459e7a2c99", + "reference": "0af4e3de4df9f1543534beab255ccf459e7a2c99", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "php-http/httplug": "^2.0", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "php": ">=7.2 <8.2" + }, + "conflict": { + "nette/di": "<3.0.6" + }, + "require-dev": { + "nette/tester": "~2.0", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.3" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", + "ext-json": "to use Nette\\Utils\\Json", + "ext-mbstring": "to use Strings::lower() etc...", + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v3.2.7" + }, + "time": "2022-01-24T11:29:14+00:00" + }, + { + "name": "opis/closure", + "version": "3.6.3", + "source": { + "type": "git", + "url": "https://github.com/opis/closure.git", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/opis/closure/zipball/3d81e4309d2a927abbe66df935f4bb60082805ad", + "reference": "3d81e4309d2a927abbe66df935f4bb60082805ad", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0 || ^8.0" + }, + "require-dev": { + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" + } + ], + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", + "keywords": [ + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" + ], + "support": { + "issues": "https://github.com/opis/closure/issues", + "source": "https://github.com/opis/closure/tree/3.6.3" + }, + "time": "2022-01-27T09:35:39+00:00" + }, + { + "name": "php-http/client-common", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/client-common.git", + "reference": "d135751167d57e27c74de674d6a30cef2dc8e054" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/client-common/zipball/d135751167d57e27c74de674d6a30cef2dc8e054", + "reference": "d135751167d57e27c74de674d6a30cef2dc8e054", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/httplug": "^2.0", + "php-http/message": "^1.6", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", "symfony/options-resolver": "~4.0.15 || ~4.1.9 || ^4.2.1 || ^5.0 || ^6.0", "symfony/polyfill-php80": "^1.17" }, @@ -1534,16 +2329,16 @@ }, { "name": "php-http/discovery", - "version": "1.14.0", + "version": "1.14.1", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "778f722e29250c1fac0bbdef2c122fa5d038c9eb" + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/778f722e29250c1fac0bbdef2c122fa5d038c9eb", - "reference": "778f722e29250c1fac0bbdef2c122fa5d038c9eb", + "url": "https://api.github.com/repos/php-http/discovery/zipball/de90ab2b41d7d61609f504e031339776bc8c7223", + "reference": "de90ab2b41d7d61609f504e031339776bc8c7223", "shasum": "" }, "require": { @@ -1596,9 +2391,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.14.0" + "source": "https://github.com/php-http/discovery/tree/1.14.1" }, - "time": "2021-06-01T14:30:21+00:00" + "time": "2021-09-18T07:57:46+00:00" }, { "name": "php-http/guzzle7-adapter", @@ -1767,13 +2562,422 @@ "dev-master": "1.10-dev" } }, + "autoload": { + "files": [ + "src/filters.php" + ], + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], + "support": { + "issues": "https://github.com/php-http/message/issues", + "source": "https://github.com/php-http/message/tree/1.12.0" + }, + "time": "2021-08-29T09:13:12+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "support": { + "issues": "https://github.com/php-http/message-factory/issues", + "source": "https://github.com/php-http/message-factory/tree/master" + }, + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "php-http/mock-client", + "version": "1.5.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/mock-client.git", + "reference": "a797c2a9122cccafcce14773b8a24d2808a9ab44" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/mock-client/zipball/a797c2a9122cccafcce14773b8a24d2808a9ab44", + "reference": "a797c2a9122cccafcce14773b8a24d2808a9ab44", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/client-common": "^2.0", + "php-http/discovery": "^1.0", + "php-http/httplug": "^2.0", + "php-http/message-factory": "^1.0", + "psr/http-client": "^1.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "symfony/polyfill-php80": "^1.17" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0", + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "phpspec/phpspec": "^5.1 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Mock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "David de Boer", + "email": "david@ddeboer.nl" + } + ], + "description": "Mock HTTP client", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http", + "mock", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/mock-client/issues", + "source": "https://github.com/php-http/mock-client/tree/1.5.0" + }, + "time": "2021-08-25T07:01:14+00:00" + }, + { + "name": "php-http/promise", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", + "phpspec/phpspec": "^5.1.2 || ^6.2" + }, + "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": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/php-http/promise/issues", + "source": "https://github.com/php-http/promise/tree/1.1.0" + }, + "time": "2020-07-07T09:29:14+00:00" + }, + { + "name": "php-soap/engine", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-soap/engine.git", + "reference": "1d3774a9e5eaf3762cc1d399a132ac4a5a9035a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-soap/engine/zipball/1d3774a9e5eaf3762cc1d399a132ac4a5a9035a3", + "reference": "1d3774a9e5eaf3762cc1d399a132ac4a5a9035a3", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soap\\Engine\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" + } + ], + "description": "SOAP engine design", + "support": { + "issues": "https://github.com/php-soap/engine/issues", + "source": "https://github.com/php-soap/engine/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2021-11-26T10:29:38+00:00" + }, + { + "name": "php-soap/ext-soap-engine", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-soap/ext-soap-engine.git", + "reference": "74540157a453be905c7f43e4b9c3b86c83b2f787" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-soap/ext-soap-engine/zipball/74540157a453be905c7f43e4b9c3b86c83b2f787", + "reference": "74540157a453be905c7f43e4b9c3b86c83b2f787", + "shasum": "" + }, + "require": { + "azjezz/psl": "^1.9", + "ext-dom": "*", + "ext-soap": "*", + "php": "^8.0", + "php-soap/engine": "^1.1", + "php-soap/wsdl": "^1.0", + "symfony/options-resolver": "^5.3 || ^6.0" + }, + "require-dev": { + "php-soap/engine-integration-tests": "^1.1", + "php-soap/xml": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soap\\ExtSoapEngine\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" + } + ], + "description": "An ext-soap engine implementation", + "support": { + "issues": "https://github.com/php-soap/ext-soap-engine/issues", + "source": "https://github.com/php-soap/ext-soap-engine/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2022-01-28T14:10:47+00:00" + }, + { + "name": "php-soap/psr18-transport", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-soap/psr18-transport.git", + "reference": "a3ac7b877dfedd7d393588d4afe31cdc8a18cabf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-soap/psr18-transport/zipball/a3ac7b877dfedd7d393588d4afe31cdc8a18cabf", + "reference": "a3ac7b877dfedd7d393588d4afe31cdc8a18cabf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^8.0", + "php-http/client-common": "^2.3", + "php-http/discovery": "^1.12", + "php-soap/engine": "^1.0", + "php-soap/wsdl": "^1.0", + "php-soap/xml": "^1.3", + "psr/http-client-implementation": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message": "^1.0.1", + "psr/http-message-implementation": "^1.0", + "veewee/xml": "^1.2" + }, + "require-dev": { + "ext-soap": "*", + "guzzlehttp/guzzle": "^7.3", + "nyholm/psr7": "^1.3", + "php-http/mock-client": "^1.4", + "php-soap/engine-integration-tests": "^1.0", + "php-soap/ext-soap-engine": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Soap\\Psr18Transport\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" + } + ], + "description": "PSR-18 HTTP Client transport for SOAP", + "support": { + "issues": "https://github.com/php-soap/psr18-transport/issues", + "source": "https://github.com/php-soap/psr18-transport/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2022-01-28T13:01:49+00:00" + }, + { + "name": "php-soap/psr18-wsse-middleware", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-soap/psr18-wsse-middleware.git", + "reference": "a027b4d9cc3572a8cda7f1dfb458a88ec4f1354c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-soap/psr18-wsse-middleware/zipball/a027b4d9cc3572a8cda7f1dfb458a88ec4f1354c", + "reference": "a027b4d9cc3572a8cda7f1dfb458a88ec4f1354c", + "shasum": "" + }, + "require": { + "php": "^8.0", + "php-http/client-common": "^2.3", + "php-soap/engine": "^1.0", + "php-soap/psr18-transport": "^1.0", + "php-soap/xml": "^1.0", + "robrichards/wse-php": "^2.0", + "veewee/xml": "^1.0" + }, + "require-dev": { + "nyholm/psr7": "^1.3", + "php-http/mock-client": "^1.4", + "phpunit/phpunit": "^9.5", + "symfony/http-client": "^5.3" + }, + "type": "library", "autoload": { "psr-4": { - "Http\\Message\\": "src/" - }, - "files": [ - "src/filters.php" - ] + "Soap\\Psr18WsseMiddleware\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1781,50 +2985,58 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" } ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], + "description": "Adds WSSE security to your HTTP SOAP Transport", "support": { - "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.12.0" + "issues": "https://github.com/php-soap/psr18-wsse-middleware/issues", + "source": "https://github.com/php-soap/psr18-wsse-middleware/tree/v1.1.0" }, - "time": "2021-08-29T09:13:12+00:00" + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2021-11-26T11:15:08+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "php-soap/wsdl", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/php-soap/wsdl.git", + "reference": "54af50adeaae58ca06aacd25794b9aed2b0bc1c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/php-soap/wsdl/zipball/54af50adeaae58ca06aacd25794b9aed2b0bc1c3", + "reference": "54af50adeaae58ca06aacd25794b9aed2b0bc1c3", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "azjezz/psl": "^1.9", + "ext-dom": "*", + "league/uri": "^6.5", + "league/uri-components": "^2.4", + "php": "^8.0", + "php-soap/xml": "^1.2", + "symfony/console": "^5.4|^6.0", + "veewee/xml": "~1.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "require-dev": { + "phpunit/phpunit": "^9.5", + "psalm/plugin-symfony": "^3.1" }, + "bin": [ + "bin/wsdl" + ], + "type": "library", "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Soap\\Wsdl\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1833,55 +3045,49 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], + "description": "Deals with WSDLs", "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/master" + "issues": "https://github.com/php-soap/wsdl/issues", + "source": "https://github.com/php-soap/wsdl/tree/v1.2.0" }, - "time": "2015-12-19T14:08:53+00:00" + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2022-01-28T10:13:03+00:00" }, { - "name": "php-http/promise", - "version": "1.1.0", + "name": "php-soap/xml", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "url": "https://github.com/php-soap/xml.git", + "reference": "dcf466dc4f2367c9a1b2676a9ce9c08a7f2f7ae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/php-soap/xml/zipball/dcf466dc4f2367c9a1b2676a9ce9c08a7f2f7ae9", + "reference": "dcf466dc4f2367c9a1b2676a9ce9c08a7f2f7ae9", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "ext-dom": "*", + "php": "^8.0", + "veewee/xml": "^1.0" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "phpunit/phpunit": "^9.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" + "Soap\\Xml\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1890,24 +3096,22 @@ ], "authors": [ { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" - }, - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", - "keywords": [ - "promise" - ], + "description": "XML wrappers for SOAP", "support": { - "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "issues": "https://github.com/php-soap/xml/issues", + "source": "https://github.com/php-soap/xml/tree/v1.3.0" }, - "time": "2020-07-07T09:29:14+00:00" + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2022-01-28T12:41:44+00:00" }, { "name": "phpoption/phpoption", @@ -1982,70 +3186,42 @@ }, { "name": "phpro/soap-client", - "version": "v1.4.1", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/phpro/soap-client.git", - "reference": "c0985c4946c42e0af386179f6f56a5ccfe04c196" + "reference": "159d890026b8150537c11ffc85f82b6d2537ea3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpro/soap-client/zipball/c0985c4946c42e0af386179f6f56a5ccfe04c196", - "reference": "c0985c4946c42e0af386179f6f56a5ccfe04c196", + "url": "https://api.github.com/repos/phpro/soap-client/zipball/159d890026b8150537c11ffc85f82b6d2537ea3c", + "reference": "159d890026b8150537c11ffc85f82b6d2537ea3c", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-xml": "*", - "php": "^7.3 || ^8.0", + "laminas/laminas-code": "^4.4.0", + "php": "^8.0", + "php-soap/engine": "^1.0", + "php-soap/ext-soap-engine": "^1.0", + "php-soap/psr18-transport": "^1.0", "psr/event-dispatcher": "^1.0", "psr/log": "^1.0", - "symfony/console": "~4.0 || ~5.0", - "symfony/event-dispatcher": "~4.0 || ~5.0", - "symfony/filesystem": "~4.0 || ~5.0", - "symfony/options-resolver": "~4.0 || ~5.0" + "symfony/console": "~5.3 || ~6.0", + "symfony/event-dispatcher": "~5.3 || ~6.0", + "symfony/filesystem": "~5.3 || ~6.0", + "symfony/validator": "~5.3 || ~6.0" }, "require-dev": { - "ext-soap": "*", - "guzzlehttp/guzzle": "^7.2.0", - "guzzlehttp/promises": "^1.4.0", - "guzzlehttp/psr7": "^1.7.0", - "laminas/laminas-code": "^3.5.0", - "nyholm/psr7": "^1.3", - "php-http/client-common": "^2.1", - "php-http/discovery": "^1.7", - "php-http/httplug": "^2.1", - "php-http/message": "^1.8", - "php-http/message-factory": "^1.0", - "php-http/mock-client": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.2", - "php-vcr/php-vcr": "1.4.5", - "phpdocumentor/reflection-docblock": "^5.2.2", - "phpro/grumphp-shim": "~1.2.0", - "phpspec/phpspec": "~7.0", + "guzzlehttp/guzzle": "^7.4.0", + "nyholm/psr7": "^1.4", + "php-http/vcr-plugin": "^1.2", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpro/grumphp-shim": "^1.4", + "phpspec/phpspec": "~7.1", "phpspec/prophecy-phpunit": "^2.0.1", - "phpstan/phpstan": "^0.12.57", - "phpunit/phpunit": "~9.4", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0.1", - "robrichards/wse-php": "^2.0.3", - "robrichards/xmlseclibs": "^3.0", - "squizlabs/php_codesniffer": "~3.5", - "symfony/validator": "~4.0 || ~5.0" - }, - "suggest": { - "ext-soap": "If you want to use PHP's ext-soap driver.", - "php-http/client-common": "For gaining control over the HTTP layer", - "php-http/client-implementation": "For gaining control over the HTTP layer", - "php-http/discovery": "For gaining control over the HTTP layer", - "php-http/httplug": "For gaining control over the HTTP layer", - "php-http/message": "For gaining control over the HTTP layer", - "php-http/message-factory": "For gaining control over the HTTP layer", - "phpro/annotated-cache": "For caching SOAP responses", - "psr/http-message": "For gaining control over the HTTP layer", - "psr/log-implementation": "For logging SOAP requests, responses and errors", - "robrichards/wse-php": "If you want to use the WSA or WSSE middleware", - "symfony/validator": "If you easily want to validate SOAP requests / responses manually" + "phpstan/phpstan": "^1.2.0", + "phpunit/phpunit": "~9.5", + "squizlabs/php_codesniffer": "~3.6" }, "bin": [ "bin/soap-client" @@ -2072,26 +3248,26 @@ ], "support": { "issues": "https://github.com/phpro/soap-client/issues", - "source": "https://github.com/phpro/soap-client/tree/v1.4.1" + "source": "https://github.com/phpro/soap-client/tree/v2.1.0" }, - "time": "2020-12-18T13:48:49+00:00" + "time": "2022-01-06T15:36:57+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -2120,9 +3296,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/event-dispatcher", @@ -2923,21 +4099,20 @@ }, { "name": "symfony/css-selector", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e" + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e", - "reference": "b0a190285cd95cb019237851205b8140ef6e368e", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a", + "reference": "1955d595c12c111629cc814d3f2a2ff13580508a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -2969,7 +4144,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.3" + "source": "https://github.com/symfony/css-selector/tree/v6.0.3" }, "funding": [ { @@ -2985,29 +4160,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", + "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -3036,7 +4211,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0" }, "funding": [ { @@ -3052,7 +4227,7 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2021-11-01T23:48:49+00:00" }, { "name": "symfony/error-handler", @@ -3127,40 +4302,38 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d" + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dec8a9f58d20df252b9cd89f1c6c1530f747685d", - "reference": "dec8a9f58d20df252b9cd89f1c6c1530f747685d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934", + "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2", + "symfony/event-dispatcher-contracts": "^2|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<5.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/stopwatch": "^5.4|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3192,7 +4365,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3" }, "funding": [ { @@ -3208,24 +4381,24 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a" + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", - "reference": "66bea3b09be61613cd3b4043a65a8ec48cfa6d2a", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "psr/event-dispatcher": "^1" }, "suggest": { @@ -3234,7 +4407,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -3271,7 +4444,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" }, "funding": [ { @@ -3287,25 +4460,26 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2021-07-15T12:33:35+00:00" }, { "name": "symfony/filesystem", - "version": "v5.2.2", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "262d033b57c73e8b59cd6e68a45c528318b15038" + "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/262d033b57c73e8b59cd6e68a45c528318b15038", - "reference": "262d033b57c73e8b59cd6e68a45c528318b15038", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/6ae49c4fda17322171a2b8dc5f70bc6edbc498e1", + "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -3333,7 +4507,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.2.2" + "source": "https://github.com/symfony/filesystem/tree/v6.0.3" }, "funding": [ { @@ -3349,7 +4523,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T10:01:46+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/finder", @@ -3684,23 +4858,23 @@ }, { "name": "symfony/options-resolver", - "version": "v5.2.2", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce" + "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce", - "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.15" + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -3733,7 +4907,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.2.2" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" }, "funding": [ { @@ -3749,7 +4923,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T12:56:27+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4722,22 +5896,21 @@ }, { "name": "symfony/service-contracts", - "version": "v2.5.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + "reference": "d664541b99d6fb0247ec5ff32e87238582236204" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204", + "reference": "d664541b99d6fb0247ec5ff32e87238582236204", "shasum": "" }, "require": { "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" + "psr/container": "^1.1" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -4748,7 +5921,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "2.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4785,7 +5958,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.4.1" }, "funding": [ { @@ -4801,38 +5974,37 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2021-11-04T16:37:19+00:00" }, { "name": "symfony/string", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", + "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2", + "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "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" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -4871,7 +6043,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.3" + "source": "https://github.com/symfony/string/tree/v6.0.3" }, "funding": [ { @@ -4887,52 +6059,50 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/translation", - "version": "v5.4.3", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a9dd7403232c61e87e27fb306bbcd1627f245d70" + "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a9dd7403232c61e87e27fb306bbcd1627f245d70", - "reference": "a9dd7403232c61e87e27fb306bbcd1627f245d70", + "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d", + "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/translation-contracts": "^2.3|^3.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "2.3" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", "symfony/polyfill-intl-icu": "^1.21", "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/yaml": "^5.4|^6.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -4968,7 +6138,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.3" + "source": "https://github.com/symfony/translation/tree/v6.0.3" }, "funding": [ { @@ -4984,24 +6154,24 @@ "type": "tidelift" } ], - "time": "2022-01-07T00:28:17+00:00" + "time": "2022-01-07T00:29:03+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.0.2" }, "suggest": { "symfony/translation-implementation": "" @@ -5009,7 +6179,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -5046,7 +6216,115 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-07T12:43:40+00:00" + }, + { + "name": "symfony/validator", + "version": "v6.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "35f3614f605227ad16e03cab9fb9815ba05f5878" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/35f3614f605227ad16e03cab9fb9815ba05f5878", + "reference": "35f3614f605227ad16e03cab9fb9815ba05f5878", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" + }, + "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/lexer": "<1.1", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4", + "symfony/yaml": "<5.4" + }, + "require-dev": { + "doctrine/annotations": "^1.13", + "egulias/email-validator": "^2.1.10|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/yaml": "^5.4|^6.0" + }, + "suggest": { + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "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": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v6.0.3" }, "funding": [ { @@ -5062,7 +6340,7 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2022-01-26T17:23:29+00:00" }, { "name": "symfony/var-dumper", @@ -5189,22 +6467,97 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + }, + "time": "2021-12-08T09:12:39+00:00" + }, + { + "name": "veewee/xml", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/veewee/xml.git", + "reference": "5f4b53c6a6418a77891996a6302bde7779c1d46e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/veewee/xml/zipball/5f4b53c6a6418a77891996a6302bde7779c1d46e", + "reference": "5f4b53c6a6418a77891996a6302bde7779c1d46e", + "shasum": "" + }, + "require": { + "azjezz/psl": "^1.9 || ^2.0", + "ext-dom": "*", + "ext-libxml": "*", + "ext-xml": "*", + "ext-xmlreader": "*", + "ext-xmlwriter": "*", + "ext-xsl": "*", + "php": "~8.0.0 || ~8.1.0", + "webmozart/assert": "^1.10" + }, + "require-dev": { + "symfony/finder": "^5.2", + "veewee/composer-run-parallel": "^1.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "VeeWee\\Xml\\": "src/Xml" + }, + "files": [ + "src/bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" ], "authors": [ { - "name": "Tijs Verkoyen", - "email": "css_to_inline_styles@verkoyen.eu", - "role": "Developer" + "name": "Toon Verwerft", + "email": "toonverwerft@gmail.com" } ], - "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", - "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "description": "XML without worries", + "keywords": [ + "Xpath", + "array-to-xml", + "dom", + "dom-manipulation", + "reader", + "writer", + "xml", + "xml-to-array", + "xml_decode", + "xml_encode", + "xsd", + "xslt" + ], "support": { - "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "issues": "https://github.com/veewee/xml/issues", + "source": "https://github.com/veewee/xml/tree/v1.2.0" }, - "time": "2021-12-08T09:12:39+00:00" + "funding": [ + { + "url": "https://github.com/veewee", + "type": "github" + } + ], + "time": "2021-12-17T13:32:47+00:00" }, { "name": "vlucas/phpdotenv", @@ -5491,32 +6844,34 @@ }, { "name": "fakerphp/faker", - "version": "v1.14.1", + "version": "v1.19.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1" + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1", - "reference": "ed22aee8d17c7b396f74a58b1e7fefa4f90d5ef1", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", + "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", "shasum": "" }, "require": { "php": "^7.1 || ^8.0", - "psr/container": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { "fzaninotto/faker": "*" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", "symfony/phpunit-bridge": "^4.4 || ^5.2" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", @@ -5525,7 +6880,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.15-dev" + "dev-main": "v1.19-dev" } }, "autoload": { @@ -5550,9 +6905,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v.1.14.1" + "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" }, - "time": "2021-03-30T06:27:33+00:00" + "time": "2022-02-02T17:38:57+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5605,218 +6960,18 @@ }, "time": "2020-07-09T08:09:16+00:00" }, - { - "name": "laminas/laminas-code", - "version": "3.5.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "b549b70c0bb6e935d497f84f750c82653326ac77" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/b549b70c0bb6e935d497f84f750c82653326ac77", - "reference": "b549b70c0bb6e935d497f84f750c82653326ac77", - "shasum": "" - }, - "require": { - "laminas/laminas-eventmanager": "^3.3", - "laminas/laminas-zendframework-bridge": "^1.1", - "php": "^7.3 || ~8.0.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" - }, - "replace": { - "zendframework/zend-code": "^3.4.1" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4", - "ext-phar": "*", - "laminas/laminas-coding-standard": "^1.0.0", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-11-30T20:16:31+00:00" - }, - { - "name": "laminas/laminas-eventmanager", - "version": "3.3.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1940ccf30e058b2fd66f5a9d696f1b5e0027b082", - "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082", - "shasum": "" - }, - "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ^8.0" - }, - "replace": { - "zendframework/zend-eventmanager": "^3.2.1" - }, - "require-dev": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-stdlib": "^2.7.3 || ^3.0", - "phpbench/phpbench": "^0.17.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "container-interop/container-interop": "^1.1, to use the lazy listeners feature", - "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3.x-dev", - "dev-develop": "3.4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Laminas\\EventManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Trigger and listen to events within a PHP application", - "homepage": "https://laminas.dev", - "keywords": [ - "event", - "eventmanager", - "events", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-eventmanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-eventmanager/issues", - "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom", - "source": "https://github.com/laminas/laminas-eventmanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-08-25T11:10:44+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", - "reference": "6ede70583e101030bcace4dcddd648f760ddf642", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "squizlabs/php_codesniffer": "^3.5" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2020-09-14T14:23:00+00:00" - }, { "name": "mockery/mockery", - "version": "1.4.3", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea" + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea", - "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea", + "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", "shasum": "" }, "require": { @@ -5873,9 +7028,9 @@ ], "support": { "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.4.3" + "source": "https://github.com/mockery/mockery/tree/1.5.0" }, - "time": "2021-02-24T09:51:49+00:00" + "time": "2022-01-20T13:18:17+00:00" }, { "name": "myclabs/deep-copy", @@ -5894,6 +7049,9 @@ "require": { "php": "^7.1 || ^8.0" }, + "replace": { + "myclabs/deep-copy": "self.version" + }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", @@ -5990,25 +7148,25 @@ }, { "name": "orchestra/testbench", - "version": "v6.18.0", + "version": "v6.24.1", "source": { "type": "git", "url": "https://github.com/orchestral/testbench.git", - "reference": "022e72b16f56a35254c343e57a306564d20d85b2" + "reference": "7b6a225851f6c148a80e241af5cbd833c83e572c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/022e72b16f56a35254c343e57a306564d20d85b2", - "reference": "022e72b16f56a35254c343e57a306564d20d85b2", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/7b6a225851f6c148a80e241af5cbd833c83e572c", + "reference": "7b6a225851f6c148a80e241af5cbd833c83e572c", "shasum": "" }, "require": { - "laravel/framework": "^8.25", - "mockery/mockery": "^1.4.2", - "orchestra/testbench-core": "^6.22", + "laravel/framework": "^8.75", + "mockery/mockery": "^1.4.4", + "orchestra/testbench-core": "^6.28.1", "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^8.4 || ^9.3.3", - "spatie/laravel-ray": "^1.18" + "phpunit/phpunit": "^8.5.21 || ^9.5.10", + "spatie/laravel-ray": "^1.26.2" }, "type": "library", "extra": { @@ -6039,7 +7197,7 @@ ], "support": { "issues": "https://github.com/orchestral/testbench/issues", - "source": "https://github.com/orchestral/testbench/tree/v6.18.0" + "source": "https://github.com/orchestral/testbench/tree/v6.24.1" }, "funding": [ { @@ -6051,20 +7209,20 @@ "type": "liberapay" } ], - "time": "2021-05-25T04:04:31+00:00" + "time": "2022-02-08T12:57:17+00:00" }, { "name": "orchestra/testbench-core", - "version": "v6.22.0", + "version": "v6.28.1", "source": { "type": "git", "url": "https://github.com/orchestral/testbench-core.git", - "reference": "43a44c90e2fcd4e204057d59294ea5c241d994f7" + "reference": "e66074e825e21b40b3433703dc3f76f2bfebebe0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/43a44c90e2fcd4e204057d59294ea5c241d994f7", - "reference": "43a44c90e2fcd4e204057d59294ea5c241d994f7", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/e66074e825e21b40b3433703dc3f76f2bfebebe0", + "reference": "e66074e825e21b40b3433703dc3f76f2bfebebe0", "shasum": "" }, "require": { @@ -6074,20 +7232,20 @@ "vlucas/phpdotenv": "^5.1" }, "require-dev": { - "laravel/framework": "^8.26", + "laravel/framework": "^8.75", "laravel/laravel": "8.x-dev", - "mockery/mockery": "^1.4.2", + "mockery/mockery": "^1.4.4", "orchestra/canvas": "^6.1", - "phpunit/phpunit": "^8.4 || ^9.3.3 || ^10.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10 || ^10.0", "spatie/laravel-ray": "^1.7.1", "symfony/process": "^5.0" }, "suggest": { - "laravel/framework": "Required for testing (^8.26).", - "mockery/mockery": "Allow using Mockery for testing (^1.4.2).", + "laravel/framework": "Required for testing (^8.75).", + "mockery/mockery": "Allow using Mockery for testing (^1.4.4).", "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^6.0).", "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^6.0).", - "phpunit/phpunit": "Allow using PHPUnit for testing (^8.4|^9.3.3)." + "phpunit/phpunit": "Allow using PHPUnit for testing (^8.5.21|^9.5.10|^10.0)." }, "bin": [ "testbench" @@ -6099,6 +7257,9 @@ } }, "autoload": { + "files": [ + "src/helpers.php" + ], "psr-4": { "Orchestra\\Testbench\\": "src/" } @@ -6138,7 +7299,7 @@ "type": "liberapay" } ], - "time": "2021-05-25T03:25:38+00:00" + "time": "2022-02-08T12:50:35+00:00" }, { "name": "phar-io/manifest", @@ -6899,6 +8060,59 @@ ], "time": "2022-01-24T07:33:35+00:00" }, + { + "name": "pimple/pimple", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], + "support": { + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + }, + "time": "2021-10-28T11:13:42+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.1", @@ -7405,16 +8619,16 @@ }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "19c519631c5a511b7ed0ad64a6713fdb3fd25fe4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/19c519631c5a511b7ed0ad64a6713fdb3fd25fe4", + "reference": "19c519631c5a511b7ed0ad64a6713fdb3fd25fe4", "shasum": "" }, "require": { @@ -7457,7 +8671,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.4" }, "funding": [ { @@ -7465,7 +8679,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-10T07:01:19+00:00" }, { "name": "sebastian/lines-of-code", @@ -7865,16 +9079,16 @@ }, { "name": "spatie/backtrace", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "9b4df807fb65aaa8006dcd7a7ccdef8fb4bb002e" + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/9b4df807fb65aaa8006dcd7a7ccdef8fb4bb002e", - "reference": "9b4df807fb65aaa8006dcd7a7ccdef8fb4bb002e", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", + "reference": "4ee7d41aa5268107906ea8a4d9ceccde136dbd5b", "shasum": "" }, "require": { @@ -7911,7 +9125,7 @@ ], "support": { "issues": "https://github.com/spatie/backtrace/issues", - "source": "https://github.com/spatie/backtrace/tree/1.2.0" + "source": "https://github.com/spatie/backtrace/tree/1.2.1" }, "funding": [ { @@ -7923,38 +9137,39 @@ "type": "other" } ], - "time": "2021-05-19T12:49:10+00:00" + "time": "2021-11-09T10:57:15+00:00" }, { "name": "spatie/laravel-ray", - "version": "1.18.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ray.git", - "reference": "4795633baffc7a1778e2be4a35f90a137f88ee7d" + "reference": "96e51dfbbb6fe108d6c0430b8a644ec6cf581583" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/4795633baffc7a1778e2be4a35f90a137f88ee7d", - "reference": "4795633baffc7a1778e2be4a35f90a137f88ee7d", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/96e51dfbbb6fe108d6c0430b8a644ec6cf581583", + "reference": "96e51dfbbb6fe108d6c0430b8a644ec6cf581583", "shasum": "" }, "require": { "ext-json": "*", - "illuminate/contracts": "^7.20|^8.19", - "illuminate/database": "^7.20|^8.19", - "illuminate/queue": "^7.20|^8.19", - "illuminate/support": "^7.20|^8.19", + "illuminate/contracts": "^7.20|^8.19|^9.0", + "illuminate/database": "^7.20|^8.19|^9.0", + "illuminate/queue": "^7.20|^8.19|^9.0", + "illuminate/support": "^7.20|^8.19|^9.0", "php": "^7.3|^8.0", "spatie/backtrace": "^1.0", - "spatie/ray": "^1.21.2", - "symfony/stopwatch": "4.2|^5.1", - "zbateson/mail-mime-parser": "^1.3.1" + "spatie/ray": "^1.33", + "symfony/stopwatch": "4.2|^5.1|^6.0", + "zbateson/mail-mime-parser": "^1.3.1|^2.0" }, "require-dev": { - "facade/ignition": "^2.5", - "laravel/framework": "^7.20|^8.19", - "orchestra/testbench-core": "^5.0|^6.0", + "guzzlehttp/guzzle": "^7.3", + "laravel/framework": "^7.20|^8.19|^9.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0", + "phpstan/phpstan": "^0.12.93", "phpunit/phpunit": "^9.3", "spatie/phpunit-snapshot-assertions": "^4.2" }, @@ -7991,7 +9206,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-ray/issues", - "source": "https://github.com/spatie/laravel-ray/tree/1.18.0" + "source": "https://github.com/spatie/laravel-ray/tree/1.29.1" }, "funding": [ { @@ -8003,24 +9218,24 @@ "type": "other" } ], - "time": "2021-05-23T09:58:54+00:00" + "time": "2022-02-09T12:59:05+00:00" }, { "name": "spatie/macroable", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/spatie/macroable.git", - "reference": "7a99549fc001c925714b329220dea680c04bfa48" + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/macroable/zipball/7a99549fc001c925714b329220dea680c04bfa48", - "reference": "7a99549fc001c925714b329220dea680c04bfa48", + "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072", + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^8.0" }, "require-dev": { "phpunit/phpunit": "^8.0|^9.3" @@ -8051,22 +9266,22 @@ ], "support": { "issues": "https://github.com/spatie/macroable/issues", - "source": "https://github.com/spatie/macroable/tree/1.0.1" + "source": "https://github.com/spatie/macroable/tree/2.0.0" }, - "time": "2020-11-03T10:15:05+00:00" + "time": "2021-03-26T22:39:02+00:00" }, { "name": "spatie/ray", - "version": "1.22.1", + "version": "1.33.2", "source": { "type": "git", "url": "https://github.com/spatie/ray.git", - "reference": "e82408b78b1391eaee6c962b13c37e80080dc15a" + "reference": "28f6bd88e2db0fada88a7999c8ee0aad69f56192" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/e82408b78b1391eaee6c962b13c37e80080dc15a", - "reference": "e82408b78b1391eaee6c962b13c37e80080dc15a", + "url": "https://api.github.com/repos/spatie/ray/zipball/28f6bd88e2db0fada88a7999c8ee0aad69f56192", + "reference": "28f6bd88e2db0fada88a7999c8ee0aad69f56192", "shasum": "" }, "require": { @@ -8076,25 +9291,25 @@ "ramsey/uuid": "^3.0|^4.1", "spatie/backtrace": "^1.1", "spatie/macroable": "^1.0|^2.0", - "symfony/stopwatch": "^4.0|^5.1", - "symfony/var-dumper": "^4.2|^5.1" + "symfony/stopwatch": "^4.0|^5.1|^6.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0" }, "require-dev": { - "illuminate/support": "6.x|^8.18", + "illuminate/support": "6.x|^8.18|^9.0", "nesbot/carbon": "^2.43", + "phpstan/phpstan": "^0.12.92", "phpunit/phpunit": "^9.5", - "rector/rector": "^0.9.16", "spatie/phpunit-snapshot-assertions": "^4.2", "spatie/test-time": "^1.2" }, "type": "library", "autoload": { - "psr-4": { - "Spatie\\Ray\\": "src" - }, "files": [ "src/helpers.php" - ] + ], + "psr-4": { + "Spatie\\Ray\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8116,7 +9331,7 @@ ], "support": { "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.22.1" + "source": "https://github.com/spatie/ray/tree/1.33.2" }, "funding": [ { @@ -8128,25 +9343,25 @@ "type": "other" } ], - "time": "2021-04-28T09:47:47+00:00" + "time": "2022-02-02T15:16:13+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.2.7", + "version": "v6.0.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "d99310c33e833def36419c284f60e8027d359678" + "reference": "6835045bb9f00fa4486ea4f1bcaf623be761556f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d99310c33e833def36419c284f60e8027d359678", - "reference": "d99310c33e833def36419c284f60e8027d359678", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/6835045bb9f00fa4486ea4f1bcaf623be761556f", + "reference": "6835045bb9f00fa4486ea4f1bcaf623be761556f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1.0|^2" + "php": ">=8.0.2", + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -8174,7 +9389,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.3.0-BETA1" + "source": "https://github.com/symfony/stopwatch/tree/v6.0.3" }, "funding": [ { @@ -8190,32 +9405,32 @@ "type": "tidelift" } ], - "time": "2021-03-29T15:28:41+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/yaml", - "version": "v5.2.9", + "version": "v5.4.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "d23115e4a3d50520abddccdbec9514baab1084c8" + "reference": "e80f87d2c9495966768310fc531b487ce64237a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/d23115e4a3d50520abddccdbec9514baab1084c8", - "reference": "d23115e4a3d50520abddccdbec9514baab1084c8", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", + "reference": "e80f87d2c9495966768310fc531b487ce64237a2", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -8249,7 +9464,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.2.9" + "source": "https://github.com/symfony/yaml/tree/v5.4.3" }, "funding": [ { @@ -8265,7 +9480,7 @@ "type": "tidelift" } ], - "time": "2021-05-16T13:07:46+00:00" + "time": "2022-01-26T16:32:32+00:00" }, { "name": "theseer/tokenizer", @@ -8317,85 +9532,30 @@ ], "time": "2021-07-28T10:34:58+00:00" }, - { - "name": "wsdl2phpgenerator/wsdl2phpgenerator", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://github.com/wsdl2phpgenerator/wsdl2phpgenerator.git", - "reference": "558c8a66677c117de2db5f5a4ae7f327c4b67f67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/wsdl2phpgenerator/wsdl2phpgenerator/zipball/558c8a66677c117de2db5f5a4ae7f327c4b67f67", - "reference": "558c8a66677c117de2db5f5a4ae7f327c4b67f67", - "shasum": "" - }, - "require": { - "ext-soap": "*", - "php": ">=5.3.0", - "symfony/options-resolver": "~2.6|~3.0", - "symfony/polyfill-iconv": "^1.2" - }, - "require-dev": { - "kasperg/phing-github": "0.2.*", - "phing/phing": "~2.7", - "php-vcr/php-vcr": "1.2 - 1.2.7|^1.3.1", - "php-vcr/phpunit-testlistener-vcr": "~1.1.2", - "phpunit/phpunit": "~4.4", - "psr/log": "~1.0", - "symfony/yaml": "~2.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Wsdl2PhpGenerator\\": [ - "src/", - "lib/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Simple class library for generating php classes from a wsdl file.", - "keywords": [ - "soap", - "wsdl" - ], - "support": { - "issues": "https://github.com/wsdl2phpgenerator/wsdl2phpgenerator/issues", - "source": "https://github.com/wsdl2phpgenerator/wsdl2phpgenerator/tree/3.4.0" - }, - "time": "2016-10-30T21:02:36+00:00" - }, { "name": "zbateson/mail-mime-parser", - "version": "1.3.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/zbateson/mail-mime-parser.git", - "reference": "706964d904798b8c22d63f62f0ec5f5bc84e30d9" + "reference": "038d5043a54ee198ed96ab5fd39f16231272b32e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/706964d904798b8c22d63f62f0ec5f5bc84e30d9", - "reference": "706964d904798b8c22d63f62f0ec5f5bc84e30d9", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/038d5043a54ee198ed96ab5fd39f16231272b32e", + "reference": "038d5043a54ee198ed96ab5fd39f16231272b32e", "shasum": "" }, "require": { - "guzzlehttp/psr7": "^1.0", + "guzzlehttp/psr7": "^1.7.0|^2.0", "php": ">=5.4", + "pimple/pimple": "^3.0", "zbateson/mb-wrapper": "^1.0.1", - "zbateson/stream-decorators": "^1.0.4" + "zbateson/stream-decorators": "^1.0.6" }, "require-dev": { - "jms/serializer": "^1.1", "mikey179/vfsstream": "^1.6.0", - "phing/phing": "^2.15.0", - "phpdocumentor/phpdocumentor": "^2.9.0", - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5" + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8.2" }, "suggest": { "ext-iconv": "For best support/performance", @@ -8443,20 +9603,20 @@ "type": "github" } ], - "time": "2020-12-02T21:55:45+00:00" + "time": "2022-01-25T18:18:17+00:00" }, { "name": "zbateson/mb-wrapper", - "version": "1.0.1", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/zbateson/mb-wrapper.git", - "reference": "721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d" + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d", - "reference": "721b3dfbf7ab75fee5ac60a542d7923ffe59ef6d", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", + "reference": "bfd45fb3e2a8cf4c496b2c3ebd63b5f815721498", "shasum": "" }, "require": { @@ -8465,7 +9625,7 @@ "symfony/polyfill-mbstring": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5" + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" }, "suggest": { "ext-iconv": "For best support/performance", @@ -8502,7 +9662,7 @@ ], "support": { "issues": "https://github.com/zbateson/mb-wrapper/issues", - "source": "https://github.com/zbateson/mb-wrapper/tree/1.0.1" + "source": "https://github.com/zbateson/mb-wrapper/tree/1.1.1" }, "funding": [ { @@ -8510,29 +9670,29 @@ "type": "github" } ], - "time": "2020-10-21T22:14:27+00:00" + "time": "2021-11-22T21:59:45+00:00" }, { "name": "zbateson/stream-decorators", - "version": "1.0.4", + "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/zbateson/stream-decorators.git", - "reference": "6f54738dfecc65e1d5bfb855035836748083a6dd" + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/6f54738dfecc65e1d5bfb855035836748083a6dd", - "reference": "6f54738dfecc65e1d5bfb855035836748083a6dd", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/3403c4323bd1cd15fe54348b031b26b064c706af", + "reference": "3403c4323bd1cd15fe54348b031b26b064c706af", "shasum": "" }, "require": { - "guzzlehttp/psr7": "^1.0.0", + "guzzlehttp/psr7": "^1.7.0|^2.0", "php": ">=5.4", "zbateson/mb-wrapper": "^1.0.0" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.7 || ^6.5 || ^7.5" + "sanmai/phpunit-legacy-adapter": "^6.3 || ^8" }, "type": "library", "autoload": { @@ -8563,7 +9723,7 @@ ], "support": { "issues": "https://github.com/zbateson/stream-decorators/issues", - "source": "https://github.com/zbateson/stream-decorators/tree/master" + "source": "https://github.com/zbateson/stream-decorators/tree/1.0.6" }, "funding": [ { @@ -8571,28 +9731,23 @@ "type": "github" } ], - "time": "2020-08-10T18:59:43+00:00" - } - ], - "aliases": [ - { - "package": "symfony/options-resolver", - "version": "5.2.2.0", - "alias": "3.1.1", - "alias_normalized": "3.1.1.0" + "time": "2021-07-08T19:01:59+00:00" } ], + "aliases": [], "minimum-stability": "dev", "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.3.0", + "php": "^8.0 || 8.1", "ext-soap": "*", + "ext-bcmath": "*", + "ext-intl": "*", "ext-json": "*", "ext-dom": "*", "ext-simplexml": "*" }, "platform-dev": [], - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.0.0" } diff --git a/src/Client/Request.php b/src/Client/Request.php index 4279139..f1f5964 100644 --- a/src/Client/Request.php +++ b/src/Client/Request.php @@ -2,27 +2,25 @@ namespace CodeDredd\Soap\Client; -use CodeDredd\Soap\Xml\SoapXml; use CodeDredd\Soap\Xml\XMLSerializer; use Illuminate\Support\Arr; use Illuminate\Support\Str; +use Psr\Http\Message\RequestInterface; +use Soap\Psr18Transport\HttpBinding\SoapActionDetector; +use Soap\Xml\Locator\SoapBodyLocator; +use VeeWee\Xml\Dom\Document; /** * Class Request. */ class Request { - /** - * The underlying PSR request. - * - * @var \Psr\Http\Message\RequestInterface - */ - protected $request; + protected RequestInterface $request; /** * Create a new request instance. * - * @param \Psr\Http\Message\RequestInterface $request + * @param RequestInterface $request * @return void */ public function __construct($request) @@ -32,47 +30,32 @@ public function __construct($request) /** * Get the soap action for soap 1.1 and 1.2. - * - * @return string */ public function action(): string { - $contentType = $this->request->getHeaderLine('Content-Type'); - $soapAction = $this->request->getHeaderLine('SOAPAction'); - if (empty($soapAction)) { - return Str::of($contentType)->afterLast('action=')->remove('"'); - } - - return $this->request->getHeaderLine('SOAPAction'); + return Str::remove('"', SoapActionDetector::detectFromRequest($this->request)); } - /** - * @return \Psr\Http\Message\RequestInterface - */ - public function getRequest() + public function getRequest(): RequestInterface { return $this->request; } /** * Return complete xml request body. - * - * @return string */ - public function xmlContent() + public function xmlContent(): string { return $this->request->getBody()->getContents(); } /** * Return request arguments. - * - * @return array */ public function arguments(): array { - $xml = SoapXml::fromString($this->xmlContent()); - $arguments = Arr::first(XMLSerializer::domNodeToArray($xml->getBody())); + $doc = Document::fromXmlString($this->xmlContent()); + $arguments = Arr::first(XMLSerializer::domNodeToArray($doc->locate(new SoapBodyLocator()))); return $arguments ?? []; } diff --git a/src/Commands/MakeClientCommand.php b/src/Commands/MakeClientCommand.php index 1273b9e..60503ae 100644 --- a/src/Commands/MakeClientCommand.php +++ b/src/Commands/MakeClientCommand.php @@ -41,24 +41,25 @@ public function __construct() public function handle() { [$wsdl, $configName] = $this->getWsdlAndConfigName(); - $service = $this->getGeneratorService($wsdl); - - $client = new Client($service, $configName); - if ($this->option('dry-run')) { - echo $client->getCode(); - } else { - $client->save(); - } +// $service = $this->getGeneratorService($wsdl); +// +// $client = new Client($service, $configName); +// if ($this->option('dry-run')) { +// echo $client->getCode(); +// } else { +// $client->save(); +// } } public function getGeneratorService($wsdl, Command $commandInstance = null) { $commandInstance = $commandInstance ?? $this; $commandInstance->line('Loading wsdl configuration ...'); - $generator = new Generator(); - $generator->setConfigByWsdl($wsdl, $this->output); - - return $generator->getService(); + // Refactor code generation +// $generator = new Generator(); +// $generator->setConfigByWsdl($wsdl, $this->output); +// +// return $generator->getService(); } public function getWsdlAndConfigName(Command $commandInstance = null) diff --git a/src/Commands/MakeValidationCommand.php b/src/Commands/MakeValidationCommand.php index de019c5..38e376f 100644 --- a/src/Commands/MakeValidationCommand.php +++ b/src/Commands/MakeValidationCommand.php @@ -39,17 +39,17 @@ public function __construct() */ public function handle() { - $clientCommand = new MakeClientCommand(); - [$wsdl, $configName] = $clientCommand->getWsdlAndConfigName($this); - $service = $clientCommand->getGeneratorService($wsdl, $this); - - $generateAllClassMaps = $this->confirm('Do you want to generate for every client method a validation?'); - $methods = collect($service->getOperations()); - $validationClasses = $methods->keys()->toArray(); - if (! $generateAllClassMaps) { - $validationClasses = Arr::wrap($this->anticipate('Which method do you want to generate?', $methods->keys()->toArray())); - } - $validationCode = new Validation($service, $configName, $this->option('dry-run')); - $validationCode->generateValidationFiles($validationClasses); +// $clientCommand = new MakeClientCommand(); +// [$wsdl, $configName] = $clientCommand->getWsdlAndConfigName($this); +// $service = $clientCommand->getGeneratorService($wsdl, $this); +// +// $generateAllClassMaps = $this->confirm('Do you want to generate for every client method a validation?'); +// $methods = collect($service->getOperations()); +// $validationClasses = $methods->keys()->toArray(); +// if (! $generateAllClassMaps) { +// $validationClasses = Arr::wrap($this->anticipate('Which method do you want to generate?', $methods->keys()->toArray())); +// } +// $validationCode = new Validation($service, $configName, $this->option('dry-run')); +// $validationCode->generateValidationFiles($validationClasses); } } diff --git a/src/Driver/ExtSoap/AbusedClient.php b/src/Driver/ExtSoap/AbusedClient.php deleted file mode 100644 index 4e4764d..0000000 --- a/src/Driver/ExtSoap/AbusedClient.php +++ /dev/null @@ -1,92 +0,0 @@ -resolve($options); - parent::__construct($wsdl, $options); - } - - public static function createFromOptions(ExtSoapOptions $options): self - { - return new self($options->getWsdl(), $options->getOptions()); - } - - public function __doRequest($request, $location, $action, $version, $oneWay = 0) - { - $xml = SoapXml::fromString($request); - $action = $action ?? $xml->getBody()->firstChild->localName; - $this->storedRequest = new SoapRequest($request, $location, $action, $version, (int) $oneWay); - - return $this->storedResponse ? $this->storedResponse->getResponse() : ''; - } - - public function collectRequest(): SoapRequest - { - if (! $this->storedRequest) { - throw new \RuntimeException('No request has been registered yet.'); - } - - return $this->storedRequest; - } - - public function registerResponse(SoapResponse $response) - { - $this->storedResponse = $response; - } - - public function cleanUpTemporaryState() - { - $this->storedRequest = null; - $this->storedResponse = null; - } - - public function __getLastRequest(): string - { - return $this->__last_request; - } - - public function __getLastResponse(): string - { - return $this->__last_response; - } -} diff --git a/src/Driver/ExtSoap/ExtSoapDecoder.php b/src/Driver/ExtSoap/ExtSoapDecoder.php deleted file mode 100644 index 236e5b2..0000000 --- a/src/Driver/ExtSoap/ExtSoapDecoder.php +++ /dev/null @@ -1,40 +0,0 @@ -client = $client; - $this->argumentsGenerator = $argumentsGenerator; - } - - public function decode(string $method, SoapResponse $response) - { - $this->client->registerResponse($response); - try { - $decoded = $this->client->__soapCall($method, $this->argumentsGenerator->generateForSoapCall($method)); - } finally { - $this->client->cleanUpTemporaryState(); - } - - return $decoded; - } -} diff --git a/src/Driver/ExtSoap/ExtSoapDriver.php b/src/Driver/ExtSoap/ExtSoapDriver.php deleted file mode 100644 index 95c91b9..0000000 --- a/src/Driver/ExtSoap/ExtSoapDriver.php +++ /dev/null @@ -1,90 +0,0 @@ -client = $client; - $this->encoder = $encoder; - $this->decoder = $decoder; - $this->metadata = $metadata; - } - - public static function createFromOptions(ExtSoapOptions $options): self - { - $client = AbusedClient::createFromOptions($options); - - return self::createFromClient( - $client, - MetadataFactory::manipulated(new ExtSoapMetadata($client), $options->getMetadataOptions()) - ); - } - - public static function createFromClient(AbusedClient $client, MetadataInterface $metadata = null): self - { - $metadata = $metadata ?? MetadataFactory::lazy(new ExtSoapMetadata($client)); - - return new self( - $client, - new ExtSoapEncoder($client), - new ExtSoapDecoder($client, new DummyMethodArgumentsGenerator($metadata)), - $metadata - ); - } - - public function decode(string $method, SoapResponse $response) - { - return $this->decoder->decode($method, $response); - } - - public function encode(string $method, array $arguments): SoapRequest - { - return $this->encoder->encode($method, $arguments); - } - - public function getMetadata(): MetadataInterface - { - return $this->metadata; - } - - public function getClient(): AbusedClient - { - return $this->client; - } -} diff --git a/src/Driver/ExtSoap/ExtSoapEncoder.php b/src/Driver/ExtSoap/ExtSoapEncoder.php deleted file mode 100644 index 3258f28..0000000 --- a/src/Driver/ExtSoap/ExtSoapEncoder.php +++ /dev/null @@ -1,33 +0,0 @@ -client = $client; - } - - public function encode(string $method, array $arguments): SoapRequest - { - try { - $this->client->__soapCall($method, $arguments); - $encoded = $this->client->collectRequest(); - } finally { - $this->client->cleanUpTemporaryState(); - } - - return $encoded; - } -} diff --git a/src/Driver/ExtSoap/ExtSoapEngineFactory.php b/src/Driver/ExtSoap/ExtSoapEngineFactory.php index 6dba192..01ba91c 100644 --- a/src/Driver/ExtSoap/ExtSoapEngineFactory.php +++ b/src/Driver/ExtSoap/ExtSoapEngineFactory.php @@ -5,19 +5,22 @@ namespace CodeDredd\Soap\Driver\ExtSoap; use CodeDredd\Soap\Faker\EngineFaker; -use Phpro\SoapClient\Soap\Driver\ExtSoap\ExtSoapOptions; -use Phpro\SoapClient\Soap\Engine\Engine; -use Phpro\SoapClient\Soap\Handler\HandlerInterface; +use Soap\Engine\SimpleEngine; +use Soap\Engine\Transport; +use Soap\ExtSoapEngine\ExtSoapDriver; +use Soap\ExtSoapEngine\ExtSoapOptions; class ExtSoapEngineFactory { public static function fromOptionsWithHandler( ExtSoapOptions $options, - HandlerInterface $handler, + Transport $transport, $withMocking = false - ) { + ): EngineFaker|SimpleEngine { $driver = ExtSoapDriver::createFromOptions($options); + if ($withMocking) { + } - return $withMocking ? new EngineFaker($driver, $handler, $options) : new Engine($driver, $handler); + return $withMocking ? new EngineFaker($driver, $transport, $options) : new SimpleEngine($driver, $transport); } } diff --git a/src/Driver/ExtSoap/ExtSoapMetadata.php b/src/Driver/ExtSoap/ExtSoapMetadata.php deleted file mode 100644 index 4156308..0000000 --- a/src/Driver/ExtSoap/ExtSoapMetadata.php +++ /dev/null @@ -1,50 +0,0 @@ -abusedClient = $abusedClient; - } - - public function getMethods(): MethodCollection - { - return (new MethodsParser($this->getXsdTypes()))->parse($this->abusedClient); - } - - public function getTypes(): TypeCollection - { - return (new TypesParser($this->getXsdTypes()))->parse($this->abusedClient); - } - - private function getXsdTypes(): XsdTypeCollection - { - if (null === $this->xsdTypes) { - $this->xsdTypes = XsdTypesParser::default()->parse($this->abusedClient); - } - - return $this->xsdTypes; - } -} diff --git a/src/Driver/ExtSoap/Metadata/MethodsParser.php b/src/Driver/ExtSoap/Metadata/MethodsParser.php deleted file mode 100644 index a0ef35f..0000000 --- a/src/Driver/ExtSoap/Metadata/MethodsParser.php +++ /dev/null @@ -1,90 +0,0 @@ -xsdTypes = $xsdTypes; - } - - public function parse(AbusedClient $abusedClient): MethodCollection - { - return new MethodCollection(...array_map( - function (string $methodString) { - return $this->parseMethodFromString($methodString); - }, - $abusedClient->__getFunctions() - )); - } - - private function parseMethodFromString(string $methodString): Method - { - $methodString = $this->transformListResponseToArray($methodString); - - return new Method( - $this->parseName($methodString), - $this->parseParameters($methodString), - $this->parseReturnType($methodString) - ); - } - - private function transformListResponseToArray(string $methodString): string - { - return preg_replace('/^list\(([^\)]*)\)(.*)/i', 'array$2', $methodString); - } - - /** - * @return Parameter[] - */ - private function parseParameters(string $methodString): array - { - preg_match('/\((.*)\)/', $methodString, $properties); - if (! $properties[1]) { - return []; - } - - $parameters = preg_split('/,\s?/', $properties[1]); - - return array_map( - function (string $parameter): Parameter { - [$type, $name] = explode(' ', trim($parameter)); - - return new Parameter( - ltrim($name, '$'), - $this->xsdTypes->fetchByNameWithFallback($type) - ); - }, - $parameters - ); - } - - private function parseName(string $methodString): string - { - preg_match('/^\w+ (?P\w+)/', $methodString, $matches); - - return (string) $matches['name']; - } - - private function parseReturnType(string $methodString): XsdType - { - preg_match('/^(?P\w+)/', $methodString, $matches); - - return $this->xsdTypes->fetchByNameWithFallback((string) $matches['returnType']); - } -} diff --git a/src/Driver/ExtSoap/Metadata/TypesParser.php b/src/Driver/ExtSoap/Metadata/TypesParser.php deleted file mode 100644 index fac2f16..0000000 --- a/src/Driver/ExtSoap/Metadata/TypesParser.php +++ /dev/null @@ -1,54 +0,0 @@ -xsdTypes = $xsdTypes; - } - - public function parse(AbusedClient $abusedClient): TypeCollection - { - $collection = new TypeCollection(); - $soapTypes = $abusedClient->__getTypes(); - foreach ($soapTypes as $soapType) { - $properties = []; - $lines = explode("\n", $soapType); - if (! preg_match('/struct (?P.*) {/', $lines[0], $matches)) { - continue; - } - $xsdType = XsdType::create($matches['typeName']); - - foreach (array_slice($lines, 1) as $line) { - if ($line === '}') { - continue; - } - preg_match('/\s* (?P.*) (?P.*);/', $line, $matches); - $properties[] = new Property( - $matches['propertyName'], - $this->xsdTypes->fetchByNameWithFallback($matches['propertyType']) - ); - } - - $collection->add(new Type($xsdType, $properties)); - } - - return $collection; - } -} diff --git a/src/Driver/ExtSoap/Metadata/XsdTypesParser.php b/src/Driver/ExtSoap/Metadata/XsdTypesParser.php deleted file mode 100644 index 616d903..0000000 --- a/src/Driver/ExtSoap/Metadata/XsdTypesParser.php +++ /dev/null @@ -1,59 +0,0 @@ -visitors = $visitors; - } - - public static function default(): self - { - return new self( - new ListVisitor(), - new UnionVisitor(), - new SimpleTypeVisitor() - ); - } - - public function parse(AbusedClient $abusedClient): XsdTypeCollection - { - $collection = new XsdTypeCollection(); - $soapTypes = $abusedClient->__getTypes(); - foreach ($soapTypes as $soapType) { - if ($type = $this->detectXsdType($soapType)) { - $collection->add($type); - } - } - - return $collection; - } - - private function detectXsdType(string $soapType): ?XsdType - { - foreach ($this->visitors as $visitor) { - if ($type = $visitor($soapType)) { - return $type; - } - } - - return null; - } -} diff --git a/src/Facades/Soap.php b/src/Facades/Soap.php index 94f7a08..c2fe237 100644 --- a/src/Facades/Soap.php +++ b/src/Facades/Soap.php @@ -15,7 +15,7 @@ * @method static \CodeDredd\Soap\SoapClient byConfig(string $setup = '') * @method static \CodeDredd\Soap\SoapClient withOptions(array $options) * @method static \CodeDredd\Soap\SoapClient withHeaders(array $options) - * @method static \CodeDredd\Soap\SoapClient withHandlerOptions(array $options) + * @method static \CodeDredd\Soap\SoapClient withGuzzleClientOptions(array $options) * @method static \CodeDredd\Soap\SoapClient withWsse(array $config) * @method static \CodeDredd\Soap\SoapClient withWsa() * @method static \CodeDredd\Soap\SoapClient withRemoveEmptyNodes() diff --git a/src/Faker/EngineFaker.php b/src/Faker/EngineFaker.php index 7a755c8..4f9f0fb 100644 --- a/src/Faker/EngineFaker.php +++ b/src/Faker/EngineFaker.php @@ -5,78 +5,42 @@ namespace CodeDredd\Soap\Faker; use CodeDredd\Soap\Xml\XMLSerializer; -use Phpro\SoapClient\Soap\Driver\ExtSoap\ExtSoapOptions; -use Phpro\SoapClient\Soap\Engine\DriverInterface; -use Phpro\SoapClient\Soap\Engine\EngineInterface; -use Phpro\SoapClient\Soap\Engine\Metadata\MetadataInterface; -use Phpro\SoapClient\Soap\Handler\HandlerInterface; -use Phpro\SoapClient\Soap\HttpBinding\LastRequestInfo; -use Phpro\SoapClient\Soap\HttpBinding\SoapRequest; +use Soap\Engine\Driver; +use Soap\Engine\Engine; +use Soap\Engine\HttpBinding\SoapRequest; +use Soap\Engine\Metadata\Metadata; +use Soap\Engine\Transport; +use Soap\ExtSoapEngine\ExtSoapOptions; /** * Class EngineFaker. */ -class EngineFaker implements EngineInterface +class EngineFaker implements Engine { - /** - * @var DriverInterface - */ - private $driver; + private Driver $driver; + private Transport $transport; + private ExtSoapOptions $options; - /** - * @var HandlerInterface - */ - private $handler; - - /** - * @var ExtSoapOptions - */ - private $options; - - /** - * EngineFaker constructor. - * - * @param DriverInterface $driver - * @param HandlerInterface $handler - * @param ExtSoapOptions $options - */ public function __construct( - DriverInterface $driver, - HandlerInterface $handler, + Driver $driver, + Transport $transport, ExtSoapOptions $options ) { $this->driver = $driver; - $this->handler = $handler; + $this->transport = $transport; $this->options = $options; } - /** - * @return MetadataInterface - */ - public function getMetadata(): MetadataInterface - { - return $this->driver->getMetadata(); - } - - /** - * @param string $method - * @param array $arguments - * @return mixed - */ public function request(string $method, array $arguments) { - $options = $this->options->getOptions(); - $request = new SoapRequest(XMLSerializer::arrayToSoapXml($arguments), $this->options->getWsdl(), $method, $options['soap_version'] ?? SOAP_1_1); - $response = $this->handler->request($request); + $request = new SoapRequest(XMLSerializer::arrayToSoapXml($arguments), $this->options->getWsdl(), $method, $this->options->getOptions()['soap_version'] ?? SOAP_1_1); + $response = $this->transport->request($request); - return json_decode($response->getResponse()); + return json_decode($response->getPayload()); } - /** - * @return LastRequestInfo - */ - public function collectLastRequestInfo(): LastRequestInfo + public function getMetadata(): Metadata { - return $this->handler->collectLastRequestInfo(); + return $this->driver->getMetadata(); } } diff --git a/src/Handler/HttPlugHandle.php b/src/Handler/HttPlugHandle.php deleted file mode 100644 index ef89679..0000000 --- a/src/Handler/HttPlugHandle.php +++ /dev/null @@ -1,107 +0,0 @@ -client = $client; - $this->converter = $converter; - $this->lastRequestInfoCollector = $lastRequestInfoCollector; - $this->requestHeaders = $requestHeaders; - } - - public static function createWithDefaultClient(): HttPlugHandle - { - return self::createForClient(HttpClientDiscovery::find()); - } - - public static function createForClient(Client $client, $requestHeaders = []): HttPlugHandle - { - return new self( - $client, - new Psr7Converter( - MessageFactoryDiscovery::find(), - StreamFactoryDiscovery::find() - ), - new CollectLastRequestInfoMiddleware(), - $requestHeaders - ); - } - - public function addMiddleware(MiddlewareInterface $middleware) - { - $this->middlewares[$middleware->getName()] = $middleware; - } - - public function request(SoapRequest $request): SoapResponse - { - $client = new PluginClient( - $this->client, - array_merge( - array_values($this->middlewares), - [$this->lastRequestInfoCollector] - ) - ); - - $psr7Request = $this->converter->convertSoapRequest($request, $this->requestHeaders); - $psr7Response = $client->sendRequest($psr7Request); - - return $this->converter->convertSoapResponse($psr7Response); - } - - public function getClient(): Client - { - return $this->client; - } - - public function collectLastRequestInfo(): LastRequestInfo - { - return $this->lastRequestInfoCollector->collectLastRequestInfo(); - } -} diff --git a/src/HttpBinding/Builder/Psr7RequestBuilder.php b/src/HttpBinding/Builder/Psr7RequestBuilder.php deleted file mode 100644 index 5def12e..0000000 --- a/src/HttpBinding/Builder/Psr7RequestBuilder.php +++ /dev/null @@ -1,244 +0,0 @@ -messageFactory = $messageFactory; - $this->streamFactory = $streamFactory; - } - - /** - * @return RequestInterface - * - * @throws RequestException - */ - public function getHttpRequest(): RequestInterface - { - $this->validate(); - - try { - $request = $this->messageFactory - ->createRequest($this->httpMethod, $this->endpoint) - ->withBody($this->prepareMessage()); - $headers = array_merge($this->prepareHeaders(), $this->headers); - - foreach ($headers as $name => $value) { - $request = $request->withHeader($name, $value); - } - } catch (\InvalidArgumentException $e) { - throw new RequestException($e->getMessage(), $e->getCode(), $e); - } - - return $request; - } - - /** - * @param string $endpoint - */ - public function setEndpoint(string $endpoint) - { - $this->endpoint = $endpoint; - } - - /** - * @param array $headers - */ - public function setHeaders(array $headers) - { - $this->headers = $headers; - } - - /** - * Mark as SOAP 1.1. - */ - public function isSOAP11() - { - $this->soapVersion = self::SOAP11; - } - - /** - * Mark as SOAP 1.2. - */ - public function isSOAP12() - { - $this->soapVersion = self::SOAP12; - } - - /** - * @param string $soapAction - */ - public function setSoapAction(string $soapAction) - { - $this->soapAction = $soapAction; - } - - /** - * @param string $content - */ - public function setSoapMessage(string $content) - { - $this->soapMessage = $this->streamFactory->createStream($content); - $this->hasSoapMessage = true; - } - - /** - * @param string $method - */ - public function setHttpMethod(string $method) - { - $this->httpMethod = $method; - } - - /** - * @return void - * - * @throws \Phpro\SoapClient\Exception\RequestException - */ - private function validate() - { - if (! $this->endpoint) { - throw new RequestException('There is no endpoint specified.'); - } - - if (! $this->hasSoapMessage && $this->httpMethod === 'POST') { - throw new RequestException('There is no SOAP message specified.'); - } - - /** - * SOAP 1.1 only defines HTTP binding with POST method. - * - * @link https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383527 - */ - if ($this->soapVersion === self::SOAP11 && $this->httpMethod !== 'POST') { - throw new RequestException('You cannot use the POST method with SOAP 1.1.'); - } - - /** - * SOAP 1.2 only defines HTTP binding with POST and GET methods. - * - * @link https://www.w3.org/TR/2007/REC-soap12-part0-20070427/#L10309 - */ - if ($this->soapVersion === self::SOAP12 && ! in_array($this->httpMethod, ['GET', 'POST'])) { - throw new RequestException('Invalid SOAP method specified for SOAP 1.2. Expeted: GET or POST.'); - } - } - - /** - * @return array - */ - private function prepareHeaders(): array - { - if ($this->soapVersion === self::SOAP11) { - return $this->prepareSoap11Headers(); - } - - return $this->prepareSoap12Headers(); - } - - /** - * @link https://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383526 - * - * @return array - */ - private function prepareSoap11Headers(): array - { - $headers = []; - $headers['Content-Length'] = (string) $this->soapMessage->getSize(); - $headers['SOAPAction'] = $this->soapAction; - $headers['Content-Type'] = 'text/xml; charset="utf-8"'; - - return $headers; - } - - /** - * SOAPAction header is removed in SOAP 1.2 and now expressed as a value of - * an (optional) "action" parameter of the "application/soap+xml" media type. - * - * @link https://www.w3.org/TR/soap12-part0/#L4697 - * - * @return array - */ - private function prepareSoap12Headers(): array - { - $headers = []; - if ($this->httpMethod !== 'POST') { - $headers['Accept'] = 'application/soap+xml'; - - return $headers; - } - - $headers['Content-Length'] = (string) $this->soapMessage->getSize(); - $headers['Content-Type'] = 'application/soap+xml; charset="utf-8"'.'; action="'.$this->soapAction.'"'; - - return $headers; - } - - /** - * @return StreamInterface - */ - private function prepareMessage(): StreamInterface - { - if ($this->httpMethod === 'POST') { - return $this->soapMessage; - } - - return $this->streamFactory->createStream(''); - } -} diff --git a/src/HttpBinding/Converter/Psr7Converter.php b/src/HttpBinding/Converter/Psr7Converter.php deleted file mode 100644 index d675ad2..0000000 --- a/src/HttpBinding/Converter/Psr7Converter.php +++ /dev/null @@ -1,62 +0,0 @@ -messageFactory = $messageFactory; - $this->streamFactory = $streamFactory; - } - - /** - * @param SoapRequest $request - * @param array $requestHeaders - * @return RequestInterface - */ - public function convertSoapRequest(SoapRequest $request, $requestHeaders = []): RequestInterface - { - $builder = new Psr7RequestBuilder($this->messageFactory, $this->streamFactory); - - $request->isSOAP11() ? $builder->isSOAP11() : $builder->isSOAP12(); - $builder->setEndpoint($request->getLocation()); - $builder->setSoapAction($request->getAction()); - $builder->setSoapMessage($request->getRequest()); - $builder->setHeaders($requestHeaders); - - return $builder->getHttpRequest(); - } - - /** - * @param ResponseInterface $response - * @return SoapResponse - */ - public function convertSoapResponse(ResponseInterface $response): SoapResponse - { - return new SoapResponse( - (string) $response->getBody() - ); - } -} diff --git a/src/Middleware/CisDhlMiddleware.php b/src/Middleware/CisDhlMiddleware.php index 2b2159d..9316bb7 100644 --- a/src/Middleware/CisDhlMiddleware.php +++ b/src/Middleware/CisDhlMiddleware.php @@ -2,13 +2,20 @@ namespace CodeDredd\Soap\Middleware; +use Http\Client\Common\Plugin; use Http\Promise\Promise; -use Phpro\SoapClient\Middleware\Middleware; -use Phpro\SoapClient\Xml\SoapXml; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; +use Soap\Psr18Transport\Xml\XmlMessageManipulator; +use Soap\Xml\Builder\SoapHeader; +use Soap\Xml\Builder\SoapHeaders; +use Soap\Xml\Manipulator\PrependSoapHeaders; +use function VeeWee\Xml\Dom\Builder\children; +use function VeeWee\Xml\Dom\Builder\namespaced_element; +use function VeeWee\Xml\Dom\Builder\value; +use VeeWee\Xml\Dom\Document; -class CisDhlMiddleware extends Middleware +class CisDhlMiddleware implements Plugin { /** * @var string @@ -36,34 +43,29 @@ public function getName(): string return 'cis_dhl_middleware'; } - /** - * @param callable $handler - * @param RequestInterface $request - * @return Promise - */ - public function beforeRequest(callable $handler, RequestInterface $request): Promise + public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise { - $xml = SoapXml::fromStream($request->getBody()); - $xml->registerNamespace('cis', 'http://dhl.de/webservice/cisbase'); - $envelope = $xml->xpath('/soap:Envelope')->item(0); - - $domDoc = $xml->getXmlDocument(); - $domDoc->documentElement->setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:cis', self::CIS_NS); - - $header = $domDoc->createElementNS('http://schemas.xmlsoap.org/soap/envelope/', 'SOAP-ENV:Header'); - $cisAuth = $domDoc->createElementNS(self::CIS_NS, 'cis:Authentification'); - - $envelope->insertBefore($header, $envelope->firstChild); + return $next( + (new XmlMessageManipulator)( + $request, + function (Document $document) { + $builder = new SoapHeaders( + new SoapHeader( + self::CIS_NS, + 'cis:Authentification', + children( + namespaced_element(self::CIS_NS, 'user', value($this->user)), + namespaced_element(self::CIS_NS, 'signature', value($this->signature)) + ) + ) + ); - if (! empty($this->user) && ! empty($this->signature)) { - $cisUser = $domDoc->createElementNS(self::CIS_NS, 'cis:user', $this->user); - $cisSig = $domDoc->createElementNS(self::CIS_NS, 'cis:signature', $this->signature); - $cisAuth->appendChild($cisUser); - $cisAuth->appendChild($cisSig); - } - $header->appendChild($cisAuth); + $headers = $document->build($builder); - return $handler($request->withBody($xml->toStream())); + return $document->manipulate(new PrependSoapHeaders(...$headers)); + } + ) + ); } /** diff --git a/src/Middleware/WsseMiddleware.php b/src/Middleware/WsseMiddleware.php index 20f4bec..727dc1c 100644 --- a/src/Middleware/WsseMiddleware.php +++ b/src/Middleware/WsseMiddleware.php @@ -2,75 +2,30 @@ namespace CodeDredd\Soap\Middleware; +use Http\Client\Common\Plugin; use Http\Promise\Promise; -use Phpro\SoapClient\Middleware\Middleware; -use Phpro\SoapClient\Xml\SoapXml; use Psr\Http\Message\RequestInterface; use Psr\Http\Message\ResponseInterface; use RobRichards\WsePhp\WSSESoap; use RobRichards\XMLSecLibs\XMLSecurityKey; +use Soap\Psr18Transport\Xml\XmlMessageManipulator; +use VeeWee\Xml\Dom\Document; -class WsseMiddleware extends Middleware +class WsseMiddleware implements Plugin { - /** - * @var string - */ - private $privateKeyFile; - - /** - * @var string - */ - private $publicKeyFile; - - /** - * @var string - */ - private $serverCertificateFile = ''; - - /** - * @var int - */ - private $timestamp = 3600; - - /** - * @var bool - */ - private $signAllHeaders = false; - - /** - * @var string - */ - private $digitalSignMethod = XMLSecurityKey::RSA_SHA1; - - /** - * @var string - */ - private $userTokenName = ''; - - /** - * @var string - */ - private $userTokenPassword = ''; - - /** - * @var bool - */ - private $userTokenDigest = false; - - /** - * @var bool - */ - private $encrypt = false; - - /** - * @var bool - */ - private $mustUnderstand = true; - - /** - * @var bool - */ - private $serverCertificateHasSubjectKeyIdentifier = true; + private string $privateKeyFile; + private string $publicKeyFile; + private string $serverCertificateFile = ''; + private int $timestamp = 3600; + private bool $signAllHeaders = false; + private string $digitalSignMethod = XMLSecurityKey::RSA_SHA1; + private string $userTokenName = ''; + private string $userTokenPassword = ''; + private bool $userTokenDigest = false; + private bool $encrypt = false; + private bool $hasUserToken = false; + private bool $serverCertificateHasSubjectKeyIdentifier = true; + private bool $mustUnderstand = true; public function __construct(array $properties) { @@ -129,45 +84,56 @@ public function withServerCertificateHasSubjectKeyIdentifier(bool $hasSubjectKey return $this; } - public function beforeRequest(callable $handler, RequestInterface $request): Promise + public function handleRequest(RequestInterface $request, callable $next, callable $first): Promise { - $xml = SoapXml::fromStream($request->getBody()); - $wsse = new WSSESoap($xml->getXmlDocument(), $this->mustUnderstand); - - // Prepare the WSSE soap class: - $wsse->signAllHeaders = $this->signAllHeaders; - $wsse->addTimestamp($this->timestamp); - - // Add a user token if this is configured. - if (! empty($this->userTokenName) && ! empty($this->userTokenPassword)) { - $wsse->addUserToken($this->userTokenName, $this->userTokenPassword, $this->userTokenDigest); - } - - if (! empty($this->privateKeyFile) && ! empty($this->publicKeyFile)) { - // Create new XMLSec Key using the dsigType and type is private key - $key = new XMLSecurityKey($this->digitalSignMethod, ['type' => 'private']); - $key->loadKey($this->privateKeyFile, true); - $wsse->signSoapDoc($key); - // Add certificate (BinarySecurityToken) to the message - $token = $wsse->addBinaryToken(file_get_contents($this->publicKeyFile)); - // Attach token pointer to Signature: - $wsse->attachTokentoSig($token); - } - - // Add end-to-end encryption if configured: - if ($this->encrypt) { - $key = new XMLSecurityKey(XMLSecurityKey::AES256_CBC); - $key->generateSessionKey(); - $siteKey = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, ['type' => 'public']); - $siteKey->loadKey($this->serverCertificateFile, true, true); - $wsse->encryptSoapDoc($siteKey, $key, [ - 'KeyInfo' => [ - 'X509SubjectKeyIdentifier' => $this->serverCertificateHasSubjectKeyIdentifier, - ], - ]); - } + return $this->beforeRequest($next, $request)->then( + fn (ResponseInterface $response): ResponseInterface => $this->afterResponse($response) + ); + } - $request = $request->withBody($xml->toStream()); + public function beforeRequest(callable $handler, RequestInterface $request): Promise + { + $request = (new XmlMessageManipulator())( + $request, + function (Document $xml) { + $wsse = new WSSESoap($xml->toUnsafeDocument(), $this->mustUnderstand); + + // Prepare the WSSE soap class: + $wsse->signAllHeaders = $this->signAllHeaders; + $wsse->addTimestamp($this->timestamp); + + // Add a user token if this is configured. + if ($this->hasUserToken) { + $wsse->addUserToken($this->userTokenName, $this->userTokenPassword, $this->userTokenDigest); + } + + if (! empty($this->privateKeyFile) && ! empty($this->publicKeyFile)) { + // Add certificate (BinarySecurityToken) to the message + $token = $wsse->addBinaryToken(file_get_contents($this->publicKeyFile)); + + // Create new XMLSec Key using the dsigType and type is private key + $key = new XMLSecurityKey($this->digitalSignMethod, ['type' => 'private']); + $key->loadKey($this->privateKeyFile, true); + $wsse->signSoapDoc($key); + + // Attach token pointer to Signature: + $wsse->attachTokentoSig($token); + } + + // Add end-to-end encryption if configured: + if ($this->encrypt) { + $key = new XMLSecurityKey(XMLSecurityKey::AES256_CBC); + $key->generateSessionKey(); + $siteKey = new XMLSecurityKey(XMLSecurityKey::RSA_OAEP_MGF1P, ['type' => 'public']); + $siteKey->loadKey($this->serverCertificateFile, true, true); + $wsse->encryptSoapDoc($siteKey, $key, [ + 'KeyInfo' => [ + 'X509SubjectKeyIdentifier' => $this->serverCertificateHasSubjectKeyIdentifier, + ], + ]); + } + } + ); return $handler($request); } @@ -178,21 +144,23 @@ public function afterResponse(ResponseInterface $response): ResponseInterface return $response; } - $xml = SoapXml::fromStream($response->getBody()); - $wsse = new WSSESoap($xml->getXmlDocument()); - $wsse->decryptSoapDoc( - $xml->getXmlDocument(), - [ - 'keys' => [ - 'private' => [ - 'key' => $this->privateKeyFile, - 'isFile' => true, - 'isCert' => false, - ], - ], - ] + return (new XmlMessageManipulator())( + $response, + function (Document $xml) { + $wsse = new WSSESoap($xml->toUnsafeDocument()); + $wsse->decryptSoapDoc( + $xml->toUnsafeDocument(), + [ + 'keys' => [ + 'private' => [ + 'key' => $this->privateKeyFile, + 'isFile' => true, + 'isCert' => false, + ], + ], + ] + ); + } ); - - return $response->withBody($xml->toStream()); } } diff --git a/src/SoapClient.php b/src/SoapClient.php index 6ab0e35..485e1c9 100644 --- a/src/SoapClient.php +++ b/src/SoapClient.php @@ -7,26 +7,31 @@ use CodeDredd\Soap\Driver\ExtSoap\ExtSoapEngineFactory; use CodeDredd\Soap\Exceptions\NotFoundConfigurationException; use CodeDredd\Soap\Exceptions\SoapException; -use CodeDredd\Soap\Handler\HttPlugHandle; use CodeDredd\Soap\Middleware\CisDhlMiddleware; use CodeDredd\Soap\Middleware\WsseMiddleware; use GuzzleHttp\Client; use GuzzleHttp\HandlerStack; +use Http\Client\Common\PluginClient; use Http\Client\Exception\HttpException; use Illuminate\Contracts\Validation\Validator; +use Illuminate\Support\Arr; use Illuminate\Support\Str; use Illuminate\Support\Traits\Macroable; -use Phpro\SoapClient\Middleware\BasicAuthMiddleware; -use Phpro\SoapClient\Middleware\RemoveEmptyNodesMiddleware; -use Phpro\SoapClient\Middleware\WsaMiddleware; -use Phpro\SoapClient\Soap\Driver\ExtSoap\ExtSoapOptions; -use Phpro\SoapClient\Soap\Engine\EngineInterface; -use Phpro\SoapClient\Soap\Handler\HandlerInterface; use Phpro\SoapClient\Type\ResultInterface; use Phpro\SoapClient\Type\ResultProviderInterface; -use Phpro\SoapClient\Util\XmlFormatter; -use Phpro\SoapClient\Wsdl\Provider\LocalWsdlProvider; -use Phpro\SoapClient\Wsdl\Provider\WsdlProviderInterface; +use Psr\Http\Client\ClientInterface; +use Soap\Engine\Engine; +use Soap\Engine\Transport; +use Soap\ExtSoapEngine\AbusedClient; +use Soap\ExtSoapEngine\ExtSoapOptions; +use Soap\ExtSoapEngine\Transport\TraceableTransport; +use Soap\ExtSoapEngine\Wsdl\PassThroughWsdlProvider; +use Soap\ExtSoapEngine\Wsdl\WsdlProvider; +use Soap\Psr18Transport\Middleware\RemoveEmptyNodesMiddleware; +use Soap\Psr18Transport\Psr18Transport; +use Soap\Psr18Transport\Wsdl\Psr18Loader; +use Soap\Psr18WsseMiddleware\WsaMiddleware; +use Soap\Wsdl\Loader\FlatteningLoader; /** * Class SoapClient. @@ -37,76 +42,41 @@ class SoapClient __call as macroCall; } - /** - * @var EngineInterface - */ - protected $engine; + protected ClientInterface $client; - /** - * @var array - */ - protected $options = []; + protected PluginClient $pluginClient; - /** - * @var ExtSoapOptions - */ - protected $extSoapOptions; + protected Engine $engine; - /** - * @var HttPlugHandle - */ - protected $handler; + protected array $options = []; - /** - * @var array - */ - protected $handlerOptions = []; + protected ExtSoapOptions $extSoapOptions; - /** - * @var string - */ - protected $wsdl = ''; + protected TraceableTransport $transport; - /** - * @var bool - */ - protected $isClientBuilded = false; + protected array $guzzleClientOptions = []; - /** - * @var array - */ - protected $middlewares = []; + protected string $wsdl = ''; - /** - * @var SoapFactory|null - */ - protected $factory; + protected bool $isClientBuilded = false; - /** - * @var WsdlProviderInterface - */ - protected $wsdlProvider; + protected array $middlewares = []; - /** - * The request cookies. - * - * @var array - */ - protected $cookies; + protected SoapFactory|null $factory; + + protected FlatteningLoader|WsdlProvider $wsdlProvider; + + protected array $cookies; /** * The callbacks that should execute before the request is sent. - * - * @var array */ - protected $beforeSendingCallbacks; + protected \Illuminate\Support\Collection $beforeSendingCallbacks; /** * The stub callables that will handle requests. - * - * @var \Illuminate\Support\Collection|null */ - protected $stubCallbacks; + protected \Illuminate\Support\Collection|null $stubCallbacks; /** * Create a new Soap Client instance. @@ -117,38 +87,51 @@ class SoapClient public function __construct(SoapFactory $factory = null) { $this->factory = $factory; - $this->setHandler(); - $this->wsdlProvider = LocalWsdlProvider::create(); + $this->client = new Client($this->guzzleClientOptions); + $this->pluginClient = new PluginClient($this->client, $this->middlewares); + $this->wsdlProvider = new FlatteningLoader(Psr18Loader::createForClient($this->pluginClient)); $this->beforeSendingCallbacks = collect([ function (Request $request, array $options) { - $this->cookies = $options['cookies']; + $this->cookies = Arr::wrap($options['cookies']); }, ]); } - /** - * @param HandlerInterface|null $handler - * @return $this - */ - protected function setHandler(HandlerInterface $handler = null) + public function refreshWsdlProvider() { - $this->handler = $handler ?? HttPlugHandle::createForClient( - new Client($this->handlerOptions), - $this->handlerOptions['headers'] ?? [] - ); - $this->addMiddleware(); + $this->wsdlProvider = new FlatteningLoader(Psr18Loader::createForClient($this->pluginClient)); return $this; } - /** - * Adds middleware to the handler. - */ - protected function addMiddleware() + public function refreshPluginClient(): static { - foreach ($this->middlewares as $middleware) { - $this->handler->addMiddleware($middleware); - } +// if ($this->factory->isRecording()) { +// $this->client = new \Http\Mock\Client(Psr17FactoryDiscovery::findResponseFactory()); +// } + $this->pluginClient = new PluginClient($this->client, $this->middlewares); + + return $this; + } + + public function getPluginClient(): PluginClient + { + return $this->pluginClient; + } + + protected function setTransport(Transport $handler = null): static + { + $soapClient = AbusedClient::createFromOptions( + ExtSoapOptions::defaults($this->wsdl, $this->options) + ); + $transport = $handler ?? Psr18Transport::createForClient($this->pluginClient); + + $this->transport = $handler ?? new TraceableTransport( + $soapClient, + $transport + ); + + return $this; } /** @@ -159,31 +142,34 @@ protected function addMiddleware() */ public function withHeaders(array $headers) { - return $this->withHandlerOptions(array_merge_recursive($this->options, [ + return $this->withGuzzleClientOptions(array_merge_recursive($this->options, [ 'headers' => $headers, ])); } - public function getHandler(): HttPlugHandle + public function getTransport(): TraceableTransport + { + return $this->transport; + } + + public function getClient(): Client { - return $this->handler; + return $this->client; } /** * @param $options * @return $this */ - public function withHandlerOptions($options) + public function withGuzzleClientOptions($options) { - $this->handlerOptions = array_merge_recursive($this->handlerOptions, $options); + $this->guzzleClientOptions = array_merge_recursive($this->guzzleClientOptions, $options); + $this->client = new Client($this->guzzleClientOptions); - return $this->setHandler(); + return $this; } - /** - * @return EngineInterface - */ - public function getEngine() + public function getEngine(): Engine { return $this->engine; } @@ -194,7 +180,7 @@ public function getEngine() public function withRemoveEmptyNodes() { $this->middlewares = array_merge_recursive($this->middlewares, [ - 'empty_nodes' => new RemoveEmptyNodesMiddleware(), + new RemoveEmptyNodesMiddleware(), ]); return $this; @@ -211,8 +197,10 @@ public function withBasicAuth($username, ?string $password = null) ['username' => $username, 'password' => $password] = $username; } - $this->middlewares = array_merge_recursive($this->middlewares, [ - 'basic' => new BasicAuthMiddleware($username, $password), + $this->withHeaders([ + 'Authorization' => sprintf('Basic %s', base64_encode( + sprintf('%s:%s', $username, $password) + )), ]); return $this; @@ -230,7 +218,7 @@ public function withCisDHLAuth($user, ?string $signature = null) } $this->middlewares = array_merge_recursive($this->middlewares, [ - 'dhl' => new CisDhlMiddleware($user, $signature), + new CisDhlMiddleware($user, $signature), ]); return $this; @@ -242,7 +230,7 @@ public function withCisDHLAuth($user, ?string $signature = null) public function withWsa() { $this->middlewares = array_merge_recursive($this->middlewares, [ - 'wsa' => new WsaMiddleware(), + new WsaMiddleware(), ]); return $this; @@ -255,7 +243,7 @@ public function withWsa() public function withWsse($options) { $this->middlewares = array_merge_recursive($this->middlewares, [ - 'wsse' => new WsseMiddleware($options), + new WsseMiddleware($options), ]); return $this; @@ -346,6 +334,7 @@ public function call(string $method, $arguments = []): Response if (! $this->isClientBuilded) { $this->buildClient(); } + $this->refreshEngine(); if ($arguments instanceof Validator) { if ($arguments->fails()) { return $this->failedValidation($arguments); @@ -387,10 +376,9 @@ public function call(string $method, $arguments = []): Response public function buildClient(string $setup = '') { $this->byConfig($setup); - $this->withHandlerOptions([ + $this->withGuzzleClientOptions([ 'handler' => $this->buildHandlerStack(), ]); - $this->refreshEngine(); $this->isClientBuilded = true; return $this; @@ -535,24 +523,24 @@ public function buildStubHandler() */ protected function refreshEngine() { + $this->refreshPluginClient(); + $this->setTransport(); $this->refreshExtSoapOptions(); $this->engine = ExtSoapEngineFactory::fromOptionsWithHandler( $this->extSoapOptions, - $this->handler, + $this->transport, $this->factory->isRecording() ); + $this->refreshWsdlProvider(); return $this; } protected function refreshExtSoapOptions() { - if ($this->factory->isRecording()) { - $this->baseWsdl($this->factory->getFakeWsdl()); - } $this->extSoapOptions = ExtSoapOptions::defaults($this->wsdl, $this->options); if ($this->factory->isRecording()) { - $this->wsdlProvider->provide($this->factory->getFakeWsdl()); + $this->wsdlProvider = new PassThroughWsdlProvider(); $this->extSoapOptions->withWsdlProvider($this->wsdlProvider); } } diff --git a/src/SoapFactory.php b/src/SoapFactory.php index fdc2dcc..f65b60c 100644 --- a/src/SoapFactory.php +++ b/src/SoapFactory.php @@ -60,7 +60,7 @@ class SoapFactory public function __construct() { $this->stubCallbacks = collect(); - $this->fakeWsdlLocation = __DIR__.'/Faker/fake.wsdl'; +// $this->fakeWsdlLocation = __DIR__.'/Faker/fake.wsdl'; } /** diff --git a/src/SoapServiceProvider.php b/src/SoapServiceProvider.php index 57abce7..3f81def 100644 --- a/src/SoapServiceProvider.php +++ b/src/SoapServiceProvider.php @@ -30,7 +30,7 @@ public function register() ); $this->registerService(); - $this->registerCommands(); +// $this->registerCommands(); } /** diff --git a/src/Types/Generator.php b/src/Types/Generator.php index c41754c..6492b6c 100644 --- a/src/Types/Generator.php +++ b/src/Types/Generator.php @@ -3,14 +3,8 @@ namespace CodeDredd\Soap\Types; use Illuminate\Console\OutputStyle; -use Wsdl2PhpGenerator\ArrayType; -use Wsdl2PhpGenerator\ComplexType; -use Wsdl2PhpGenerator\Config; -use Wsdl2PhpGenerator\Enum; -use Wsdl2PhpGenerator\Operation; -use Wsdl2PhpGenerator\Pattern; - -class Generator extends \Wsdl2PhpGenerator\Generator + +class Generator { /** * @var Service diff --git a/tests/Fixtures/CustomSoapClient.php b/tests/Fixtures/CustomSoapClient.php index 5c36dac..198f443 100644 --- a/tests/Fixtures/CustomSoapClient.php +++ b/tests/Fixtures/CustomSoapClient.php @@ -9,7 +9,7 @@ class CustomSoapClient extends SoapClient public function buildClient(string $setup = '') { $this->baseWsdl(__DIR__.'/Wsdl/weather.wsdl'); - $this->withHandlerOptions([ + $this->withGuzzleClientOptions([ 'handler' => $this->buildHandlerStack(), ]); $this->refreshEngine(); diff --git a/tests/Unit/Commands/MakeClientCommandTest.php b/tests/Unit/Commands/MakeClientCommandTest.php index 0762871..abe996b 100644 --- a/tests/Unit/Commands/MakeClientCommandTest.php +++ b/tests/Unit/Commands/MakeClientCommandTest.php @@ -8,6 +8,7 @@ class MakeClientCommandTest extends TestCase { public function testConsoleCommand() { + $this->markTestSkipped('wsdl2Php package has been removed. Needs refactoring'); $this->artisan('soap:make:client --dry-run') ->expectsQuestion('Please type the wsdl or the name of your client configuration if u have defined one in the config "soap.php"', 'laravel_soap'); } diff --git a/tests/Unit/Commands/MakeValidationCommandTest.php b/tests/Unit/Commands/MakeValidationCommandTest.php index e49f7f7..f6d669d 100644 --- a/tests/Unit/Commands/MakeValidationCommandTest.php +++ b/tests/Unit/Commands/MakeValidationCommandTest.php @@ -8,6 +8,7 @@ class MakeValidationCommandTest extends TestCase { public function testConsoleCommand() { + $this->markTestSkipped('wsdl2Php package has been removed. Needs refactoring'); $this->artisan('soap:make:validation --dry-run') ->expectsQuestion('Please type the wsdl or the name of your client configuration if u have defined one in the config "soap.php"', 'laravel_soap') ->expectsConfirmation('Do you want to generate for every client method a validation?', 'no') diff --git a/tests/Unit/Middleware/CisDhlMiddlewareTest.php b/tests/Unit/Middleware/CisDhlMiddlewareTest.php index fa64d3c..fd28c9e 100644 --- a/tests/Unit/Middleware/CisDhlMiddlewareTest.php +++ b/tests/Unit/Middleware/CisDhlMiddlewareTest.php @@ -2,19 +2,22 @@ namespace CodeDredd\Soap\Tests\Unit\Middleware; +use CodeDredd\Soap\Client\Request; use CodeDredd\Soap\Facades\Soap; use CodeDredd\Soap\Tests\TestCase; +use Illuminate\Support\Str; class CisDhlMiddlewareTest extends TestCase { public function testCisDHLMiddleware() { Soap::fake(); - $client = Soap::withCisDHLAuth('test', 'dhl')->baseWsdl('https://laravel-soap.wsdl'); - $response = $client->call('Get_User'); - $lastRequest = $client->getEngine()->collectLastRequestInfo()->getLastRequest(); + $client = Soap::withCisDHLAuth('test', 'dhl')->baseWsdl(dirname(__DIR__, 2).'/Fixtures/Wsdl/weather.wsdl'); + $response = $client->call('GetWeatherInformation'); + Soap::assertSent(function (Request $request) { + return Str::contains($request->xmlContent(), 'ok()); - self::assertStringContainsString('', $lastRequest); } } diff --git a/tests/Unit/SoapClientTest.php b/tests/Unit/SoapClientTest.php index 5b879ed..1a3f92b 100644 --- a/tests/Unit/SoapClientTest.php +++ b/tests/Unit/SoapClientTest.php @@ -10,6 +10,7 @@ use CodeDredd\Soap\Tests\Fixtures\CustomSoapClient; use CodeDredd\Soap\Tests\TestCase; use GuzzleHttp\RedirectMiddleware; +use Illuminate\Support\Str; class SoapClientTest extends TestCase { @@ -22,44 +23,44 @@ public function testSimpleCall() { Soap::fake(); Soap::assertNothingSent(); - $response = Soap::baseWsdl('https://laravel-soap.wsdl') - ->call('Get_Users'); + $response = Soap::baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl') + ->call('GetWeatherInformation'); self::assertTrue($response->ok()); Soap::assertSent(function (Request $request) { - return $request->action() === 'Get_Users'; + return $request->action() === 'GetWeatherInformation'; }); Soap::assertNotSent(function (Request $request) { - return $request->action() === 'Get_User'; + return $request->action() === 'GetCityWeatherByZIPSoapOut'; }); - Soap::assertActionCalled('Get_Users'); + Soap::assertActionCalled('GetWeatherInformation'); } public function testMagicCallByConfig() { Soap::fake(); - $response = Soap::buildClient('laravel_soap')->Get_User(); + $response = Soap::buildClient('laravel_soap')->GetWeatherInformation(); self::assertTrue($response->ok()); } public function testWsseWithWsaCall() { Soap::fake(); - $client = Soap::baseWsdl('https://laravel-soap.wsdl')->withWsse([ + $client = Soap::baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl')->withWsse([ 'userTokenName' => 'Test', 'userTokenPassword' => 'passwordTest', 'mustUnderstand' => false, ])->withWsa(); - $response = $client->Get_User(); - $lastRequestInfo = $client->getEngine()->collectLastRequestInfo(); - self::assertStringNotContainsString('mustUnderstand', $lastRequestInfo->getLastRequest()); -// dd($client->debugLastSoapRequest()); + $response = $client->GetWeatherInformation(); + Soap::assertSent(function (Request $request) { + return ! Str::contains($request->xmlContent(), 'mustUnderstand'); + }); self::assertTrue($response->ok()); } public function testArrayAccessResponse() { Soap::fakeSequence()->push('test'); - $response = Soap::buildClient('laravel_soap')->Get_User()['response']; + $response = Soap::buildClient('laravel_soap')->GetWeatherInformation()['response']; self::assertEquals('test', $response); } @@ -114,7 +115,7 @@ public function testSoapFake($action, $fake, $exspected) return Soap::response($item); })->all(); Soap::fake($fake); - $response = Soap::baseWsdl('https://laravel-soap.wsdl') + $response = Soap::baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl') ->call($action); self::assertEquals($exspected, $response->json()); } @@ -122,7 +123,7 @@ public function testSoapFake($action, $fake, $exspected) public function soapActionProvider(): array { $fakeResponse = [ - 'Get_Users' => [ + 'GetWeatherInformation' => [ 'Response_Data' => [ 'Users' => [ [ @@ -132,28 +133,31 @@ public function soapActionProvider(): array ], ], ], - 'Get_Post' => 'Test', + 'GetCityForecastByZIP' => 'Test', ]; return [ - 'without_fake_array' => ['Get_User', null, null], - 'with_fake_array_wrong_method' => ['Get_User', $fakeResponse, null], - 'with_fake_array' => ['Get_Users', $fakeResponse, $fakeResponse['Get_Users']], - 'with_fake_string' => ['Get_Post', $fakeResponse, ['response' => 'Test']], + 'without_fake_array' => ['GetCityWeatherByZIP', null, null], + 'with_fake_array_wrong_method' => ['GetCityWeatherByZIP', $fakeResponse, null], + 'with_fake_array' => ['GetWeatherInformation', $fakeResponse, $fakeResponse['GetWeatherInformation']], + 'with_fake_string' => ['GetCityForecastByZIP', $fakeResponse, ['response' => 'Test']], ]; } public function testSoapOptions(): void { Soap::fake(); - $client = Soap::withOptions(['soap_version' => SOAP_1_2])->baseWsdl('https://laravel-soap.wsdl'); - $response = $client->call('Get_User'); - $lastRequestInfo = $client->getEngine()->collectLastRequestInfo(); - + $client = Soap::withOptions(['soap_version' => SOAP_1_2]) + ->baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl'); + $response = $client->call('GetWeatherInformation'); self::assertTrue($response->ok()); - self::assertStringContainsString('application/soap+xml; charset="utf-8', - $lastRequestInfo->getLastRequestHeaders()); - Soap::assertActionCalled('Get_User'); + Soap::assertSent(function (Request $request) { + return Str::contains( + $request->getRequest()->getHeaderLine('Content-Type'), + 'application/soap+xml; charset="utf-8"' + ); + }); + Soap::assertActionCalled('GetWeatherInformation'); } public function testRealSoapCall(): void @@ -185,24 +189,24 @@ public function testRealSoapCall(): void public function testSoapWithDifferentHeaders($header, $exspected): void { Soap::fake(); - $client = Soap::withHeaders($header)->baseWsdl('https://laravel-soap.wsdl'); - $response = $client->call('Get_User'); - $lastRequestInfo = $client->getEngine()->collectLastRequestInfo(); - + $client = Soap::withHeaders($header)->baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl'); + $response = $client->call('GetWeatherInformation'); + Soap::assertSent(function (Request $request) use ($exspected) { + return $request->getRequest()->getHeaderLine('test') === $exspected; + }); self::assertTrue($response->ok()); - self::assertStringContainsString($exspected, $lastRequestInfo->getLastRequestHeaders()); - Soap::assertActionCalled('Get_User'); + Soap::assertActionCalled('GetWeatherInformation'); } public function soapHeaderProvider(): array { $header = [ - 'Content-Type' => 'application/soap+xml; charset="utf-8"', + 'test' => 'application/soap+xml; charset="utf-8"', ]; return [ - 'without_header' => [[], 'text/xml; charset="utf-8"'], - 'with_header' => [$header, $header['Content-Type']], + 'without_header' => [[], ''], + 'with_header' => [$header, $header['test']], ]; } @@ -219,11 +223,11 @@ public function testSoapClientClassMayBeCustomized(): void public function testHandlerOptions(): void { Soap::fake(); - $client = Soap::baseWsdl('https://laravel-soap.wsdl'); - $response = $client->call('Get_User'); + $client = Soap::baseWsdl(dirname(__DIR__, 1).'/Fixtures/Wsdl/weather.wsdl'); + $response = $client->call('GetWeatherInformation'); self::assertTrue($response->ok()); - self::assertEquals(true, $client->getHandler()->getClient()->getConfig()['verify']); - $client = $client->withHandlerOptions([ + self::assertEquals(true, $client->getClient()->getConfig()['verify']); + $client = $client->withGuzzleClientOptions([ 'allow_redirects' => RedirectMiddleware::$defaultSettings, 'http_errors' => true, 'decode_content' => true, @@ -231,8 +235,8 @@ public function testHandlerOptions(): void 'cookies' => false, 'idn_conversion' => false, ]); - $response = $client->call('Get_User'); + $response = $client->call('GetWeatherInformation'); self::assertTrue($response->ok()); - self::assertEquals(false, $client->getHandler()->getClient()->getConfig()['verify']); + self::assertEquals(false, $client->getClient()->getConfig()['verify']); } } diff --git a/tests/Unit/Xml/SoapXmlTest.php b/tests/Unit/Xml/SoapXmlTest.php deleted file mode 100644 index d8569d6..0000000 --- a/tests/Unit/Xml/SoapXmlTest.php +++ /dev/null @@ -1,24 +0,0 @@ -provide($file); - $engine = ExtSoapEngineFactory::fromOptions( - ExtSoapOptions::defaults($file, []) - ->withWsdlProvider($provider) - ->disableWsdlCache() - ); - self::assertNotEmpty($engine->getMetadata()->getMethods()); - } -} diff --git a/tests/Unit/Xml/XmlSerializerTest.php b/tests/Unit/Xml/XmlSerializerTest.php index 3e20798..7896cc2 100644 --- a/tests/Unit/Xml/XmlSerializerTest.php +++ b/tests/Unit/Xml/XmlSerializerTest.php @@ -3,7 +3,6 @@ namespace CodeDredd\Soap\Tests\Unit\Xml; use CodeDredd\Soap\Tests\TestCase; -use CodeDredd\Soap\Xml\SoapXml; use CodeDredd\Soap\Xml\XMLSerializer; class XmlSerializerTest extends TestCase @@ -29,12 +28,4 @@ public function testArrayToSoapXml() self::assertXmlStringEqualsXmlString($this->xml, $soapXml); } - - public function testDomNodeToArray() - { - $xmlDocument = SoapXml::fromString($this->xml); - $xmlBodyAsArray = XMLSerializer::domNodeToArray($xmlDocument->getBody()); - - self::assertEquals($this->array, $xmlBodyAsArray); - } }