From 739cb7790d32cddda01bee37175ae97c7d91dfb8 Mon Sep 17 00:00:00 2001 From: Anuj Kumar Date: Thu, 3 Aug 2023 12:34:13 +0530 Subject: [PATCH 1/6] Implemented changes for the php upgradation --- .github/workflows/build.yml | 5 +- composer.json | 56 +- composer.lock | 3375 ++++++++++------- config/routes/dev/twig.yaml | 2 +- phpstan.neon | 9 + phpunit.xml.dist | 1 + src/Command/AlertingCommand.php | 7 +- src/Command/PaymentRefundCommand.php | 17 +- src/Command/PaymentSplitCommand.php | 11 +- src/Command/PaymentValidationCommand.php | 10 +- src/Command/SellerMonitorKYCStatusCommand.php | 84 +- src/Command/SellerOnboardingCommand.php | 16 +- src/Command/SellerSettlementCommand.php | 25 +- src/Controller/AccountMappingByOperator.php | 17 +- src/Controller/SellerOnboardingRefreshUrl.php | 16 +- src/Controller/StripeWebhookEndpoint.php | 75 +- src/DTO/AccountMappingDTO.php | 3 + src/Entity/AccountMapping.php | 25 +- src/Entity/Config.php | 27 +- src/Entity/MiraklOrder.php | 18 +- src/Entity/MiraklPendingDebit.php | 7 +- src/Entity/MiraklPendingRefund.php | 6 +- src/Entity/MiraklProductOrder.php | 8 +- src/Entity/MiraklServiceOrder.php | 9 +- src/Entity/MiraklServicePendingDebit.php | 2 +- src/Entity/MiraklServicePendingRefund.php | 1 + src/Entity/MiraklShop.php | 4 +- src/Entity/PaymentMapping.php | 64 +- src/Entity/StripePayout.php | 33 +- src/Entity/StripeRefund.php | 49 +- src/Entity/StripeTransfer.php | 44 +- src/EventListener/ExceptionSubscriber.php | 11 +- src/EventListener/OverrideDefaultHost.php | 7 +- .../SendFailedMessageToAlertingQueue.php | 8 +- .../SendFailedOperationToAlertingQueue.php | 10 +- src/Factory/EmailFactory.php | 2 - src/Factory/StripePayoutFactory.php | 77 +- src/Factory/StripeRefundFactory.php | 77 +- src/Factory/StripeTransferFactory.php | 167 +- src/Handler/CancelPendingPaymentHandler.php | 3 +- src/Handler/CapturePendingPaymentHandler.php | 2 +- .../OperatorHttpNotificationFailedHandler.php | 6 +- .../OperatorHttpNotificationHandler.php | 4 +- src/Handler/ProcessPayoutHandler.php | 7 +- src/Handler/ProcessRefundHandler.php | 14 +- src/Handler/ProcessTransferHandler.php | 7 +- src/Handler/UpdateAccountLoginLinkHandler.php | 2 +- src/Handler/UpdateKYCStatusHandler.php | 14 +- src/Handler/ValidateMiraklOrderHandler.php | 7 +- src/Kernel.php | 22 +- src/Message/CancelPendingPaymentMessage.php | 3 - src/Message/CapturePendingPaymentMessage.php | 6 - src/Message/ProcessTransferMessage.php | 2 +- src/Message/ValidateMiraklOrderMessage.php | 3 - src/Migrations/Version20200921102036.php | 4 +- src/Migrations/Version20200929091654.php | 4 +- src/Migrations/Version20200929100110.php | 4 +- src/Migrations/Version20201013152713.php | 4 +- src/Migrations/Version20201016122853.php | 4 +- src/Migrations/Version20201127154506.php | 19 +- src/Migrations/Version20201207112134.php | 23 +- src/Migrations/Version20201214162347.php | 4 +- src/Migrations/Version20201216133324.php | 4 +- src/Migrations/Version20201601191812.php | 4 +- src/Migrations/Version20210128111936.php | 4 +- src/Migrations/Version20210209195048.php | 4 +- src/Migrations/Version20210427180838.php | 4 +- src/Migrations/Version20221031140741.php | 4 +- src/Monolog/Handler/SymfonyMailerHandler.php | 17 +- src/Repository/AccountMappingRepository.php | 13 +- src/Repository/ConfigRepository.php | 6 +- src/Repository/PaymentMappingRepository.php | 15 +- src/Repository/StripePayoutRepository.php | 12 +- src/Repository/StripeRefundRepository.php | 8 +- src/Repository/StripeTransferRepository.php | 35 +- src/Security/TokenAuthenticator.php | 13 +- src/Service/ConfigService.php | 44 +- src/Service/MiraklClient.php | 121 +- src/Service/PaymentRefundService.php | 12 +- src/Service/PaymentSplitService.php | 9 +- src/Service/SellerOnboardingService.php | 53 +- src/Service/SellerSettlementService.php | 11 +- src/Service/StripeClient.php | 70 +- src/Validator/MiraklShopId.php | 3 +- src/Validator/MiraklShopIdValidator.php | 4 +- symfony.lock | 574 +-- tests/Command/AlertingCommandTest.php | 13 +- tests/Command/PaymentRefundCommandTest.php | 6 +- .../Controller/StripeWebhookEndpointTest.php | 2 +- .../Handler/SymfonyMailerHandlerTest.php | 22 +- tests/ObjectManager.php | 13 + tests/bootstrap.php | 15 + 92 files changed, 2841 insertions(+), 2827 deletions(-) create mode 100644 tests/ObjectManager.php create mode 100644 tests/bootstrap.php diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 089f84cf..bd36137a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -2,13 +2,14 @@ name: build on: push: + workflow_dispatch: pull_request: - + jobs: build: strategy: matrix: - php-versions: [7.4] + php-versions: [8.1.12] runs-on: ubuntu-latest diff --git a/composer.json b/composer.json index 334881ea..def63de3 100644 --- a/composer.json +++ b/composer.json @@ -11,9 +11,9 @@ "type": "project", "license": "MIT", "require": { - "php": "^7.3", + "php": "^8.0", "antishov/doctrine-extensions-bundle": "^1.4", - "api-platform/core": "2.7.*", + "api-platform/core": "2.6.*", "doctrine/annotations": "^1.0", "doctrine/doctrine-bundle": "^2.5", "doctrine/doctrine-migrations-bundle": "^2.0", @@ -22,39 +22,39 @@ "nelmio/cors-bundle": "^2.2", "phpdocumentor/reflection-docblock": "^5.3", "sensio/framework-extra-bundle": "^5.4", - "shivas/versioning-bundle": "^3.2", - "stripe/stripe-php": "7.75.*", - "symfony/asset": "4.4.*", - "symfony/console": "4.4.*", - "symfony/dotenv": "4.4.*", - "symfony/expression-language": "4.4.*", + "shivas/versioning-bundle": "^4.0", + "stripe/stripe-php": "^10.15", + "symfony/asset": "5.4.*", + "symfony/console": "5.4.*", + "symfony/dotenv": "5.4.*", + "symfony/expression-language": "5.4.*", "symfony/flex": "^1.3.1", - "symfony/framework-bundle": "4.4.*", - "symfony/http-client": "4.4.*", - "symfony/mailer": "4.4.*", - "symfony/messenger": "4.4.*", + "symfony/framework-bundle": "5.4.*", + "symfony/http-client": "5.4.*", + "symfony/mailer": "5.4.*", + "symfony/messenger": "5.4.*", "symfony/monolog-bundle": "^3.4", - "symfony/property-access": "4.4.*", - "symfony/property-info": "4.4.*", - "symfony/proxy-manager-bridge": "4.4.*", - "symfony/security-bundle": "4.4.*", - "symfony/serializer": "4.4.*", - "symfony/twig-bundle": "4.4.*", - "symfony/validator": "4.4.*", - "symfony/yaml": "4.4.*" + "symfony/property-access": "5.4.*", + "symfony/property-info": "5.4.*", + "symfony/proxy-manager-bridge": "5.4.*", + "symfony/security-bundle": "5.4.*", + "symfony/serializer": "5.4.*", + "symfony/twig-bundle": "5.4.*", + "symfony/validator": "5.4.*", + "symfony/yaml": "5.4.*" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.*", "hautelook/alice-bundle": "2.9.*", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-doctrine": "^0.12", - "phpstan/phpstan-symfony": "^0.12", - "symfony/browser-kit": "4.4.*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-doctrine": "^1.3", + "phpstan/phpstan-symfony": "^1.3", + "symfony/browser-kit": "5.4.*", "symfony/maker-bundle": "^1.13", - "symfony/phpunit-bridge": "4.4.*", - "symfony/stopwatch": "^4.4", - "symfony/web-profiler-bundle": "^4.4" + "symfony/phpunit-bridge": "5.4.*", + "symfony/stopwatch": "^5.4", + "symfony/web-profiler-bundle": "^5.4" }, "config": { "preferred-install": { @@ -102,7 +102,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "4.4.*" + "require": "5.4.*" } } } diff --git a/composer.lock b/composer.lock index 350a7788..98d52085 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "eaed0882fc1f343fd9b045447db6afcb", + "content-hash": "56e5b7a9236f32b0ff345d7a827c9b58", "packages": [ { "name": "antishov/doctrine-extensions-bundle", @@ -86,24 +86,24 @@ }, { "name": "api-platform/core", - "version": "v2.7.10", + "version": "v2.6.8", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "c1fb7dba1b02b438b9db68b8f5c967ba4d0f485f" + "reference": "ff3aab5b196709c721960c0bb4f1d52759af737d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/c1fb7dba1b02b438b9db68b8f5c967ba4d0f485f", - "reference": "c1fb7dba1b02b438b9db68b8f5c967ba4d0f485f", + "url": "https://api.github.com/repos/api-platform/core/zipball/ff3aab5b196709c721960c0bb4f1d52759af737d", + "reference": "ff3aab5b196709c721960c0bb4f1d52759af737d", "shasum": "" }, "require": { "doctrine/inflector": "^1.0 || ^2.0", + "fig/link-util": "^1.0", "php": ">=7.1", "psr/cache": "^1.0 || ^2.0 || ^3.0", "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0", "symfony/http-foundation": "^4.4 || ^5.1 || ^6.0", "symfony/http-kernel": "^4.4 || ^5.1 || ^6.0", "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1 || ^6.0", @@ -116,8 +116,7 @@ "doctrine/common": "<2.7", "doctrine/dbal": "<2.10", "doctrine/mongodb-odm": "<2.2", - "doctrine/persistence": "<1.3", - "elasticsearch/elasticsearch": ">=8.0" + "doctrine/persistence": "<1.3" }, "require-dev": { "behat/behat": "^3.1", @@ -131,7 +130,7 @@ "doctrine/mongodb-odm": "^2.2", "doctrine/mongodb-odm-bundle": "^4.0", "doctrine/orm": "^2.6.4", - "elasticsearch/elasticsearch": "^7.11.0", + "elasticsearch/elasticsearch": "^6.0 || ^7.0", "friends-of-behat/mink-browserkit-driver": "^1.3.1", "friends-of-behat/mink-extension": "^2.2", "friends-of-behat/symfony-extension": "^2.1", @@ -140,7 +139,6 @@ "justinrainbow/json-schema": "^5.2.1", "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.1", "phpdocumentor/type-resolver": "^0.3 || ^0.4 || ^1.4", - "phpspec/prophecy": "^1.10", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.1", "phpstan/phpstan-doctrine": "^1.0", @@ -149,7 +147,7 @@ "psr/log": "^1.0 || ^2.0 || ^3.0", "ramsey/uuid": "^3.7 || ^4.0", "ramsey/uuid-doctrine": "^1.4", - "soyuka/contexts": "^3.3.6", + "soyuka/contexts": "dev-main", "soyuka/stubs-mongodb": "^1.0", "symfony/asset": "^3.4 || ^4.4 || ^5.1 || ^6.0", "symfony/browser-kit": "^4.4 || ^5.1 || ^6.0", @@ -167,8 +165,6 @@ "symfony/form": "^3.4 || ^4.4 || ^5.1 || ^6.0", "symfony/framework-bundle": "^4.4 || ^5.1 || ^6.0", "symfony/http-client": "^4.4 || ^5.1 || ^6.0", - "symfony/intl": "^4.4 || ^5.3 || ^6.0", - "symfony/maker-bundle": "^1.24", "symfony/mercure-bundle": "*", "symfony/messenger": "^4.4 || ^5.1 || ^6.0", "symfony/phpunit-bridge": "^5.4 || ^6.0", @@ -185,6 +181,7 @@ "suggest": { "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", "elasticsearch/elasticsearch": "To support Elasticsearch.", + "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.", "ocramius/package-versions": "To display the API Platform's version in the debug bar.", "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.", "psr/cache-implementation": "To use metadata caching.", @@ -192,8 +189,6 @@ "symfony/cache": "To have metadata caching when using Symfony integration.", "symfony/config": "To load XML configuration files.", "symfony/expression-language": "To use authorization features.", - "symfony/http-client": "To use the HTTP cache invalidation system.", - "symfony/messenger": "To support messenger integration.", "symfony/security": "To use authorization features.", "symfony/twig-bundle": "To use the Swagger UI integration.", "symfony/uid": "To support Symfony UUID/ULID identifiers.", @@ -203,18 +198,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.7.x-dev" + "dev-main": "2.6.x-dev" }, "symfony": { "require": "^3.4 || ^4.4 || ^5.1 || ^6.0" } }, "autoload": { - "files": [ - "src/deprecation.php" - ], "psr-4": { - "ApiPlatform\\": "src/" + "ApiPlatform\\Core\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -243,7 +235,7 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v2.7.10" + "source": "https://github.com/api-platform/core/tree/v2.6.8" }, "funding": [ { @@ -251,7 +243,74 @@ "type": "tidelift" } ], - "time": "2023-02-28T10:01:31+00:00" + "time": "2022-01-11T10:29:54+00:00" + }, + { + "name": "beberlei/assert", + "version": "v3.3.2", + "source": { + "type": "git", + "url": "https://github.com/beberlei/assert.git", + "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", + "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "php": "^7.0 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": ">=6.0.0", + "yoast/phpunit-polyfills": "^0.1.0" + }, + "suggest": { + "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles" + }, + "type": "library", + "autoload": { + "files": [ + "lib/Assert/functions.php" + ], + "psr-4": { + "Assert\\": "lib/Assert" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de", + "role": "Lead Developer" + }, + { + "name": "Richard Quadling", + "email": "rquadling@gmail.com", + "role": "Collaborator" + } + ], + "description": "Thin assertion library for input validation in business models.", + "keywords": [ + "assert", + "assertion", + "validation" + ], + "support": { + "issues": "https://github.com/beberlei/assert/issues", + "source": "https://github.com/beberlei/assert/tree/v3.3.2" + }, + "time": "2021-12-16T21:41:27+00:00" }, { "name": "behat/transliterator", @@ -377,32 +436,35 @@ }, { "name": "doctrine/annotations", - "version": "1.13.3", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", "vimeo/psalm": "^4.10" }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + }, "type": "library", "autoload": { "psr-4": { @@ -444,9 +506,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.3" }, - "time": "2022-07-02T10:48:51+00:00" + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/cache", @@ -813,25 +875,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -850,43 +916,43 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.7.0", + "version": "2.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6" + "reference": "22d53b2c5ad03929628fb4a928b01135585b7179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d2088fc50494e4e7441fecca54732245a613eeb6", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/22d53b2c5ad03929628fb4a928b01135585b7179", + "reference": "22d53b2c5ad03929628fb4a928b01135585b7179", "shasum": "" }, "require": { "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2|^3", + "doctrine/dbal": "^2.13.1 || ^3.3.2", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/config": "^4.4.3 || ^5.4 || ^6.0", + "symfony/console": "^4.4 || ^5.4 || ^6.0", + "symfony/dependency-injection": "^4.4.18 || ^5.4 || ^6.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^4.4.22 || ^5.4 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.10|>=3.0", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/orm": "<2.11 || >=3.0", + "twig/twig": "<1.34 || >=2.0,<2.4" }, "require-dev": { "doctrine/coding-standard": "^9.0", @@ -895,16 +961,16 @@ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", "psalm/plugin-phpunit": "^0.16.1", "psalm/plugin-symfony": "^3", - "psr/log": "^1.1.4|^2.0|^3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1", + "symfony/property-info": "^4.4 || ^5.4 || ^6.0", + "symfony/proxy-manager-bridge": "^4.4 || ^5.4 || ^6.0", + "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.0", + "symfony/validator": "^4.4 || ^5.4 || ^6.0", + "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.7" }, "suggest": { @@ -950,7 +1016,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.2" }, "funding": [ { @@ -966,7 +1032,7 @@ "type": "tidelift" } ], - "time": "2022-06-10T10:55:26+00:00" + "time": "2022-12-07T12:07:11+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1051,34 +1117,35 @@ }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1122,7 +1189,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -1138,7 +1205,7 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", @@ -1233,30 +1300,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -1283,7 +1350,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -1299,35 +1366,37 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1359,7 +1428,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -1375,7 +1444,7 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "doctrine/migrations", @@ -1475,51 +1544,52 @@ }, { "name": "doctrine/orm", - "version": "2.13.3", + "version": "2.15.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "e750360bd52b080c4cbaaee1b48b80f7dc873b36" + "reference": "bf449bef7ddc47e62c22f9a06dacc1736abe1c0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/e750360bd52b080c4cbaaee1b48b80f7dc873b36", - "reference": "e750360bd52b080c4cbaaee1b48b80f7dc873b36", + "url": "https://api.github.com/repos/doctrine/orm/zipball/bf449bef7ddc47e62c22f9a06dacc1736abe1c0b", + "reference": "bf449bef7ddc47e62c22f9a06dacc1736abe1c0b", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/annotations": "<1.13 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0.2 || ^10.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.8.5", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.14", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.1", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.27.0" + "vimeo/psalm": "4.30.0 || 5.11.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1569,45 +1639,45 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.13.3" + "source": "https://github.com/doctrine/orm/tree/2.15.2" }, - "time": "2022-10-07T06:37:17+00:00" + "time": "2023-06-01T09:35:50+00:00" }, { "name": "doctrine/persistence", - "version": "2.5.4", + "version": "2.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "830c2ba42093e0e428eca37568ab36bd8008bc17" + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/830c2ba42093e0e428eca37568ab36bd8008bc17", - "reference": "830c2ba42093e0e428eca37568ab36bd8008bc17", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/e36f22765f4d10a7748228babbf73da5edfeed3c", + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1 || ^2", "php": "^7.1 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.0 || >=2.0", + "doctrine/annotations": "<1.0 || >=3.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.0", - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^9 || ^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "~1.4.10 || 1.5.0", + "phpstan/phpstan": "~1.4.10 || 1.9.4", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.22.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { @@ -1657,7 +1727,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.5.4" + "source": "https://github.com/doctrine/persistence/tree/2.5.7" }, "funding": [ { @@ -1673,7 +1743,7 @@ "type": "tidelift" } ], - "time": "2022-08-06T22:06:57+00:00" + "time": "2023-02-03T15:51:16+00:00" }, { "name": "doctrine/sql-formatter", @@ -1729,27 +1799,26 @@ }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^4.30" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1757,7 +1826,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -1785,7 +1854,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" }, "funding": [ { @@ -1793,26 +1862,87 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-01-14T14:17:03+00:00" + }, + { + "name": "fig/link-util", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link-util.git", + "reference": "10e52348a2e9ad4581f2bf3e16458f0861a88c6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/10e52348a2e9ad4581f2bf3e16458f0861a88c6a", + "reference": "10e52348a2e9ad4581f2bf3e16458f0861a88c6a", + "shasum": "" + }, + "require": { + "php": ">=8.0.0", + "psr/link": "^1.1.0 | ^2.0.0" + }, + "provide": { + "psr/link-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^2.3.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common utility implementations for HTTP links", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "issues": "https://github.com/php-fig/link-util/issues", + "source": "https://github.com/php-fig/link-util/tree/1.2.0" + }, + "time": "2021-03-11T23:09:19+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.12", + "version": "v1.0.16", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7" + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -1823,7 +1953,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -1863,7 +1993,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" }, "funding": [ { @@ -1875,32 +2005,33 @@ "type": "tidelift" } ], - "time": "2022-05-05T09:31:05+00:00" + "time": "2023-05-24T07:17:17+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v3.9.0", + "version": "v3.11.1", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "d869cf11f12995b27fa6486ec2a860cc76c46988" + "reference": "ae4bdf0d567e06b6bb1902a560ee78961b230953" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/d869cf11f12995b27fa6486ec2a860cc76c46988", - "reference": "d869cf11f12995b27fa6486ec2a860cc76c46988", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/ae4bdf0d567e06b6bb1902a560ee78961b230953", + "reference": "ae4bdf0d567e06b6bb1902a560ee78961b230953", "shasum": "" }, "require": { "behat/transliterator": "~1.2", - "doctrine/annotations": "^1.13", - "doctrine/collections": "^1.0", + "doctrine/annotations": "^1.13 || ^2.0", + "doctrine/collections": "^1.2 || ^2.0", "doctrine/common": "^2.13 || ^3.0", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1.2 || ^2.0", "doctrine/persistence": "^2.2 || ^3.0", "php": "^7.2 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/cache": "^4.4 || ^5.3 || ^6.0" + "symfony/cache": "^4.4 || ^5.3 || ^6.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0" }, "conflict": { "doctrine/cache": "<1.11", @@ -1917,7 +2048,7 @@ "doctrine/orm": "^2.10.2", "friendsofphp/php-cs-fixer": "^3.4.0,<3.10", "nesbot/carbon": "^2.55", - "phpstan/phpstan": "^1.1", + "phpstan/phpstan": "^1.9", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^8.5 || ^9.5", @@ -1933,7 +2064,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.10-dev" + "dev-main": "3.12-dev" } }, "autoload": { @@ -1959,16 +2090,18 @@ "email": "david@liip.ch" } ], - "description": "Doctrine2 behavioral extensions", + "description": "Doctrine behavioral extensions", "homepage": "http://gediminasm.org/", "keywords": [ "Blameable", "behaviors", - "doctrine2", + "doctrine", "extensions", "gedmo", "loggable", "nestedset", + "odm", + "orm", "sluggable", "sortable", "timestampable", @@ -1979,36 +2112,36 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.9.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.11.1", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, - "time": "2022-09-22T02:37:53+00:00" + "time": "2023-02-20T19:24:07+00:00" }, { "name": "laminas/laminas-code", - "version": "4.7.0", + "version": "4.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "0337d9265bc2e6376babad8c511500821620cb30" + "reference": "169123b3ede20a9193480c53de2a8194f8c073ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/0337d9265bc2e6376babad8c511500821620cb30", - "reference": "0337d9265bc2e6376babad8c511500821620cb30", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/169123b3ede20a9193480c53de2a8194f8c073ec", + "reference": "169123b3ede20a9193480c53de2a8194f8c073ec", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { - "doctrine/annotations": "^1.13.2", + "doctrine/annotations": "^2.0.0", "ext-phar": "*", "laminas/laminas-coding-standard": "^2.3.0", "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.13.1" + "phpunit/phpunit": "^10.0.9", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.7.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -2016,9 +2149,6 @@ }, "type": "library", "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -2048,55 +2178,71 @@ "type": "community_bridge" } ], - "time": "2022-09-13T10:33:30+00:00" + "time": "2023-05-14T12:05:38+00:00" }, { "name": "monolog/monolog", - "version": "1.27.1", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^0.12.91", + "phpunit/phpunit": "^8.5.14", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -2110,11 +2256,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -2122,7 +2268,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -2134,24 +2280,24 @@ "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "nelmio/api-doc-bundle", - "version": "v4.10.1", + "version": "v4.11.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioApiDocBundle.git", - "reference": "b42ac43bebe0dc3372e9feb0ef0a43ae3cfbb349" + "reference": "d40c4eb0c090675f3685f75712af331f02924462" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/b42ac43bebe0dc3372e9feb0ef0a43ae3cfbb349", - "reference": "b42ac43bebe0dc3372e9feb0ef0a43ae3cfbb349", + "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/d40c4eb0c090675f3685f75712af331f02924462", + "reference": "d40c4eb0c090675f3685f75712af331f02924462", "shasum": "" }, "require": { - "doctrine/annotations": "^1.11", + "doctrine/annotations": "^1.11|^2.0", "ext-json": "*", "php": ">=7.2", "phpdocumentor/reflection-docblock": "^3.1|^4.0|^5.0", @@ -2244,35 +2390,36 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioApiDocBundle/issues", - "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.10.1" + "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.11.1" }, - "time": "2022-09-28T20:10:51+00:00" + "time": "2023-02-01T07:18:39+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.2.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0" + "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", - "reference": "0ee5ee30b0ee08ea122d431ae6e0ddeb87f035c0", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/185d2c0ae50a3f0b628790170164d5f1c5b7c281", + "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281", "shasum": "" }, "require": { - "symfony/framework-bundle": "^4.3 || ^5.0 || ^6.0" + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0" }, "require-dev": { "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.3 || ^5.0 || ^6.0" + "symfony/phpunit-bridge": "^4.4 || ^5.4 || ^6.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -2305,35 +2452,39 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.2.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.3.1" }, - "time": "2021-12-01T09:34:27+00:00" + "time": "2023-02-16T08:49:29+00:00" }, { "name": "nikolaposa/version", - "version": "3.2.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/nikolaposa/version.git", - "reference": "7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a" + "reference": "0aada6b801962c084ae465f7569397dc2186b6a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikolaposa/version/zipball/7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a", - "reference": "7ff2bbf2fe6a47efe47832d6198924e99b4a4f5a", + "url": "https://api.github.com/repos/nikolaposa/version/zipball/0aada6b801962c084ae465f7569397dc2186b6a7", + "reference": "0aada6b801962c084ae465f7569397dc2186b6a7", "shasum": "" }, "require": { - "php": "^7.2.0" + "beberlei/assert": "^3.2", + "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.0", - "phpunit/phpunit": "^6.0 || ^7.0" + "friendsofphp/php-cs-fixer": "^2.17", + "phpstan/phpstan": "^0.12.10", + "phpstan/phpstan-beberlei-assert": "^0.12.2", + "phpstan/phpstan-phpunit": "^0.12.6", + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -2362,9 +2513,9 @@ ], "support": { "issues": "https://github.com/nikolaposa/version/issues", - "source": "https://github.com/nikolaposa/version/tree/master" + "source": "https://github.com/nikolaposa/version/tree/4.1.0" }, - "time": "2019-08-11T08:31:54+00:00" + "time": "2020-12-12T10:47:10+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2478,25 +2629,33 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.7.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", + "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2522,26 +2681,73 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.2" + }, + "time": "2023-05-30T18:13:47+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.22.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", + "reference": "ec58baf7b3c7f1c81b3b00617c953249fb8cf30c", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.22.0" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2023-06-01T12:35:21+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -2561,7 +2767,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -2571,9 +2777,9 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/2.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:23:37+00:00" }, { "name": "psr/container", @@ -2624,21 +2830,71 @@ "time": "2021-11-05T16:50:12+00:00" }, { - "name": "psr/link", + "name": "psr/event-dispatcher", "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/link", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -2662,6 +2918,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -2671,9 +2928,9 @@ "rest" ], "support": { - "source": "https://github.com/php-fig/link/tree/master" + "source": "https://github.com/php-fig/link/tree/1.1.1" }, - "time": "2016-10-28T16:06:13+00:00" + "time": "2021-03-11T22:59:13+00:00" }, { "name": "psr/log", @@ -2803,38 +3060,41 @@ "issues": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues", "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v5.6.1" }, + "abandoned": "Symfony", "time": "2020-08-25T19:10:18+00:00" }, { "name": "shivas/versioning-bundle", - "version": "3.2.4", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/shivas/versioning-bundle.git", - "reference": "f17c797bdd651a714f2b114a61db60eb2cbeee4f" + "reference": "427969bce2f139e1f7234d14efcd8cd0083d896c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shivas/versioning-bundle/zipball/f17c797bdd651a714f2b114a61db60eb2cbeee4f", - "reference": "f17c797bdd651a714f2b114a61db60eb2cbeee4f", + "url": "https://api.github.com/repos/shivas/versioning-bundle/zipball/427969bce2f139e1f7234d14efcd8cd0083d896c", + "reference": "427969bce2f139e1f7234d14efcd8cd0083d896c", "shasum": "" }, "require": { - "nikolaposa/version": "^2.2 || ^3", - "php": "^7.1", - "symfony/console": "^3.4 || ^4 || ^5", - "symfony/framework-bundle": "^3.4 || ^4 || ^5", - "symfony/process": "^3.4 || ^4 || ^5" + "nikolaposa/version": "^4", + "php": "^7.2 || ^8", + "symfony/console": "^3.4 || ^4 || ^5 || ^6", + "symfony/framework-bundle": "^3.4 || ^4 || ^5 || ^6", + "symfony/process": "^3.4 || ^4 || ^5 || ^6" }, "require-dev": { - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^7 || ^8", - "symfony/phpunit-bridge": "^5" + "mikey179/vfsstream": "^2", + "nyholm/symfony-bundle-test": "1.x-dev", + "phpunit/phpunit": "^8.5.27", + "symfony/phpunit-bridge": "^5 || ^6", + "twig/twig": "^2 || ^3" }, "type": "symfony-bundle", "autoload": { "psr-4": { - "Shivas\\VersioningBundle\\": "" + "Shivas\\VersioningBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2858,23 +3118,23 @@ ], "support": { "issues": "https://github.com/shivas/versioning-bundle/issues", - "source": "https://github.com/shivas/versioning-bundle/tree/3.2.4", + "source": "https://github.com/shivas/versioning-bundle/tree/4.0.2", "wiki": "https://github.com/shivas/versioning-bundle/wiki" }, - "time": "2021-02-14T16:16:33+00:00" + "time": "2022-07-10T17:39:01+00:00" }, { "name": "stripe/stripe-php", - "version": "v7.75.0", + "version": "v10.15.0", "source": { "type": "git", "url": "https://github.com/stripe/stripe-php.git", - "reference": "d377a667cd789b99ccab768441a5a2160cc4ea80" + "reference": "d0e48cc85e1aa54cbff3644d1979a4a4c3fdd7bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stripe/stripe-php/zipball/d377a667cd789b99ccab768441a5a2160cc4ea80", - "reference": "d377a667cd789b99ccab768441a5a2160cc4ea80", + "url": "https://api.github.com/repos/stripe/stripe-php/zipball/d0e48cc85e1aa54cbff3644d1979a4a4c3fdd7bf", + "reference": "d0e48cc85e1aa54cbff3644d1979a4a4c3fdd7bf", "shasum": "" }, "require": { @@ -2884,11 +3144,11 @@ "php": ">=5.6.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.17.1", - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5.7", - "squizlabs/php_codesniffer": "^3.3", - "symfony/process": "~3.4" + "friendsofphp/php-cs-fixer": "3.5.0", + "php-coveralls/php-coveralls": "^2.5", + "phpstan/phpstan": "^1.2", + "phpunit/phpunit": "^5.7 || ^9.0", + "squizlabs/php_codesniffer": "^3.3" }, "type": "library", "extra": { @@ -2920,39 +3180,39 @@ ], "support": { "issues": "https://github.com/stripe/stripe-php/issues", - "source": "https://github.com/stripe/stripe-php/tree/v7.75.0" + "source": "https://github.com/stripe/stripe-php/tree/v10.15.0" }, - "time": "2021-02-22T14:31:21+00:00" + "time": "2023-06-08T21:47:46+00:00" }, { - "name": "symfony/asset", - "version": "v4.4.46", + "name": "symfony/amqp-messenger", + "version": "v5.4.22", "source": { "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "6ef0f9f352f90c469e8b363ebc038d81a7198873" + "url": "https://github.com/symfony/amqp-messenger.git", + "reference": "6343af983ba7460f7ea984aacb95d1ed382f6e40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/6ef0f9f352f90c469e8b363ebc038d81a7198873", - "reference": "6ef0f9f352f90c469e8b363ebc038d81a7198873", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/6343af983ba7460f7ea984aacb95d1ed382f6e40", + "reference": "6343af983ba7460f7ea984aacb95d1ed382f6e40", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.3|^6.0" }, "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/http-foundation": "" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "library", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { - "Symfony\\Component\\Asset\\": "" + "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2972,10 +3232,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v4.4.46" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.22" }, "funding": [ { @@ -2991,36 +3251,111 @@ "type": "tidelift" } ], - "time": "2022-08-30T22:05:24+00:00" + "time": "2023-03-10T09:58:14+00:00" }, { - "name": "symfony/cache", - "version": "v4.4.46", + "name": "symfony/asset", + "version": "v5.4.21", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "f59de59d747fbb55c9bd148c092de4e52b2054c8" + "url": "https://github.com/symfony/asset.git", + "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/f59de59d747fbb55c9bd148c092de4e52b2054c8", - "reference": "f59de59d747fbb55c9bd148c092de4e52b2054c8", + "url": "https://api.github.com/repos/symfony/asset/zipball/1504b6773c6b90118f9871e90a67833b5d1dca3c", + "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/dbal": "<2.7", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4|>=5.0", + "symfony/http-foundation": "<5.3" + }, + "require-dev": { + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/http-foundation": "" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "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": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v5.4.21" + }, + "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": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/cache", + "version": "v5.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/983c79ff28612cdfd66d8e44e1a06e5afc87e107", + "reference": "983c79ff28612cdfd66d8e44e1a06e5afc87e107", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" + }, + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" }, "provide": { @@ -3031,14 +3366,15 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.7|^3.0", + "doctrine/dbal": "^2.13.1|^3.0", "predis/predis": "^1.1", "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -3070,7 +3406,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v4.4.46" + "source": "https://github.com/symfony/cache/tree/v5.4.23" }, "funding": [ { @@ -3086,7 +3422,7 @@ "type": "tidelift" } ], - "time": "2022-09-06T07:28:32+00:00" + "time": "2023-04-21T15:38:51+00:00" }, { "name": "symfony/cache-contracts", @@ -3169,16 +3505,16 @@ }, { "name": "symfony/config", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "9bd60843443cda9638efdca7c41eb82ed0026179" + "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/9bd60843443cda9638efdca7c41eb82ed0026179", - "reference": "9bd60843443cda9638efdca7c41eb82ed0026179", + "url": "https://api.github.com/repos/symfony/config/zipball/2a6b1111d038adfa15d52c0871e540f3b352d1e4", + "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4", "shasum": "" }, "require": { @@ -3228,7 +3564,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.19" + "source": "https://github.com/symfony/config/tree/v5.4.21" }, "funding": [ { @@ -3244,47 +3580,50 @@ "type": "tidelift" } ], - "time": "2023-01-08T13:23:55+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/console", - "version": "v4.4.45", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "28b77970939500fb04180166a1f716e75a871ef8" + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/28b77970939500fb04180166a1f716e75a871ef8", - "reference": "28b77970939500fb04180166a1f716e75a871ef8", + "url": "https://api.github.com/repos/symfony/console/zipball/560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", + "reference": "560fc3ed7a43e6d30ea94a07d77f9a60b8ed0fb8", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -3317,76 +3656,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/v4.4.45" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-08-17T14:50:19+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.44", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/1a692492190773c5310bc7877cb590c04c2f05be", - "reference": "1a692492190773c5310bc7877cb590c04c2f05be", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "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" - } + "keywords": [ + "cli", + "command-line", + "console", + "terminal" ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.44" + "source": "https://github.com/symfony/console/tree/v5.4.24" }, "funding": [ { @@ -3402,21 +3679,20 @@ "type": "tidelift" } ], - "abandoned": "symfony/error-handler", - "time": "2022-07-28T16:29:46+00:00" + "time": "2023-05-26T05:13:16+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.20", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "8185ed0df129005a26715902f1a53bad0fe67102" + "reference": "4645e032d0963fb614969398ca28e47605b1a7da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8185ed0df129005a26715902f1a53bad0fe67102", - "reference": "8185ed0df129005a26715902f1a53bad0fe67102", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4645e032d0963fb614969398ca28e47605b1a7da", + "reference": "4645e032d0963fb614969398ca28e47605b1a7da", "shasum": "" }, "require": { @@ -3476,7 +3752,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.20" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.24" }, "funding": [ { @@ -3492,29 +3768,29 @@ "type": "tidelift" } ], - "time": "2023-01-27T11:08:11+00:00" + "time": "2023-05-05T14:42:55+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3543,7 +3819,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.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -3559,65 +3835,71 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v4.4.46", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "49a19ea3ce2508077fb9a2bf9adfbed3485aada6" + "reference": "1eeb02bcad51cb99ab3b73bc83adf80f9b1a75cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/49a19ea3ce2508077fb9a2bf9adfbed3485aada6", - "reference": "49a19ea3ce2508077fb9a2bf9adfbed3485aada6", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/1eeb02bcad51cb99ab3b73bc83adf80f9b1a75cf", + "reference": "1eeb02bcad51cb99ab3b73bc83adf80f9b1a75cf", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3|^2|^3", - "php": ">=7.1.3", + "doctrine/persistence": "^2|^3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.7", + "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.6.3", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", + "doctrine/orm": "<2.7.4", + "symfony/cache": "<5.4", + "symfony/dependency-injection": "<4.4", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" + "symfony/security-bundle": "<5", + "symfony/security-core": "<5.3", + "symfony/validator": "<5.2" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", + "doctrine/annotations": "^1.10.4|^2", + "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.7|^3.0", - "doctrine/orm": "^2.6.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.41|^5.0.11", - "symfony/http-kernel": "^4.3.7", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/orm": "^2.7.4", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^5.2|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -3653,7 +3935,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.46" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.24" }, "funding": [ { @@ -3669,27 +3951,102 @@ "type": "tidelift" } ], - "time": "2022-09-06T11:08:20+00:00" + "time": "2023-05-25T13:05:00+00:00" + }, + { + "name": "symfony/doctrine-messenger", + "version": "v5.4.23", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-messenger.git", + "reference": "1667cc4d3b2741ada859f76743d25936d3617909" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/1667cc4d3b2741ada859f76743d25936d3617909", + "reference": "1667cc4d3b2741ada859f76743d25936d3617909", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/messenger": "^5.1|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" + }, + "conflict": { + "doctrine/dbal": "<2.13", + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13|^3.0", + "doctrine/persistence": "^1.3|^2|^3", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" + }, + "type": "symfony-messenger-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Doctrine Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.23" + }, + "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": "2023-04-18T08:26:30+00:00" }, { "name": "symfony/dotenv", - "version": "v4.4.37", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" + "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", - "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3", + "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/process": "^3.4.2|^4.0|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -3722,7 +4079,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.4.37" + "source": "https://github.com/symfony/dotenv/tree/v5.4.22" }, "funding": [ { @@ -3738,32 +4095,35 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2023-03-09T20:36:58+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.44", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291" + "reference": "c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/be731658121ef2d8be88f3a1ec938148a9237291", - "reference": "be731658121ef2d8be88f3a1ec938148a9237291", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946", + "reference": "c1b9be3b8a6f60f720bec28c4ffb6fb5b00a8946", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -3790,7 +4150,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.44" + "source": "https://github.com/symfony/error-handler/tree/v5.4.24" }, "funding": [ { @@ -3806,43 +4166,44 @@ "type": "tidelift" } ], - "time": "2022-07-28T16:29:46+00:00" + "time": "2023-05-02T16:13:31+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "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/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3874,7 +4235,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/v4.4.44" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.22" }, "funding": [ { @@ -3890,33 +4251,30 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-03-17T11:31:58+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.13", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/1d5cd762abaa6b2a4169d3e77610193a7157129e", - "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { - "php": ">=7.1.3" - }, - "suggest": { - "psr/event-dispatcher": "", - "symfony/event-dispatcher-implementation": "" + "php": ">=8.1", + "psr/event-dispatcher": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3953,7 +4311,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -3969,26 +4327,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:41:36+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/expression-language", - "version": "v4.4.44", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "13f0e1fd96066299eb39c87473446805fcf57c41" + "reference": "501589522b844b8eecf012c133f0404f0eef77ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/13f0e1fd96066299eb39c87473446805fcf57c41", - "reference": "13f0e1fd96066299eb39c87473446805fcf57c41", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", + "reference": "501589522b844b8eecf012c133f0404f0eef77ac", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2" + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { @@ -4016,7 +4374,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v4.4.44" + "source": "https://github.com/symfony/expression-language/tree/v5.4.21" }, "funding": [ { @@ -4032,20 +4390,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.19", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8" + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/648bfaca6a494f3e22378123bcee2894045dc9d8", - "reference": "648bfaca6a494f3e22378123bcee2894045dc9d8", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", "shasum": "" }, "require": { @@ -4080,7 +4438,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.19" + "source": "https://github.com/symfony/filesystem/tree/v5.4.23" }, "funding": [ { @@ -4096,24 +4454,25 @@ "type": "tidelift" } ], - "time": "2023-01-14T19:14:44+00:00" + "time": "2023-03-02T11:38:35+00:00" }, { "name": "symfony/finder", - "version": "v4.4.44", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f" + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/66bd787edb5e42ff59d3523f623895af05043e4f", - "reference": "66bd787edb5e42ff59d3523f623895af05043e4f", + "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", + "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -4142,7 +4501,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.44" + "source": "https://github.com/symfony/finder/tree/v5.4.21" }, "funding": [ { @@ -4158,20 +4517,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:35:46+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/flex", - "version": "v1.19.3", + "version": "v1.20.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "ab0453b16029e131c112df1a76e59eb2a47e1f67" + "reference": "49059a10127ac8270957e116a2251ae535d202ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/ab0453b16029e131c112df1a76e59eb2a47e1f67", - "reference": "ab0453b16029e131c112df1a76e59eb2a47e1f67", + "url": "https://api.github.com/repos/symfony/flex/zipball/49059a10127ac8270957e116a2251ae535d202ac", + "reference": "49059a10127ac8270957e116a2251ae535d202ac", "shasum": "" }, "require": { @@ -4207,7 +4566,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.19.3" + "source": "https://github.com/symfony/flex/tree/v1.20.0" }, "funding": [ { @@ -4223,99 +4582,103 @@ "type": "tidelift" } ], - "time": "2022-08-07T09:39:08+00:00" + "time": "2023-05-26T16:25:26+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.4.46", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "479e327f05eb12cf6a899ba94ceac57cf0f31bfa" + "reference": "c06a56a47817d29318aaace1c655cbde16c998e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/479e327f05eb12cf6a899ba94ceac57cf0f31bfa", - "reference": "479e327f05eb12cf6a899ba94ceac57cf0f31bfa", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c06a56a47817d29318aaace1c655cbde16c998e8", + "reference": "c06a56a47817d29318aaace1c655cbde16c998e8", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4.11|~5.0.11|^5.1.3", - "symfony/dependency-injection": "^4.4.38|^5.0.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.5|^6.0.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4.12|^5.1.4" + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.4.21", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/asset": "<5.3", + "symfony/console": "<5.2.5", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", - "symfony/messenger": "<4.4", + "symfony/mailer": "<5.2", + "symfony/messenger": "<5.4", "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", + "symfony/property-access": "<5.3", + "symfony/property-info": "<4.4", + "symfony/security-csrf": "<5.3", + "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.3", + "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", + "symfony/validator": "<5.2", "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" + "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "doctrine/annotations": "^1.13.1|^2", + "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2|^3", - "paragonie/sodium_compat": "^1.8", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.4.42|^5.4.9", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.4|^5.2", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.10|^3.0" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -4353,7 +4716,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.4.46" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.24" }, "funding": [ { @@ -4369,44 +4732,51 @@ "type": "tidelift" } ], - "time": "2022-09-18T09:39:21+00:00" + "time": "2023-05-25T13:05:00+00:00" }, { "name": "symfony/http-client", - "version": "v4.4.46", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "095274039721d26d23225d7b7ba441423b1b2413" + "reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/095274039721d26d23225d7b7ba441423b1b2413", - "reference": "095274039721d26d23225d7b7ba441423b1b2413", + "url": "https://api.github.com/repos/symfony/http-client/zipball/9e89ac4c9dfe29f4ed2b10a36e62720286632ad6", + "reference": "9e89ac4c9dfe29f4ed2b10a36e62720286632ad6", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^1.1.10|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.4", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1|2.0" + "symfony/http-client-implementation": "2.4" }, "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/http-kernel": "^4.4.13", - "symfony/process": "^4.2|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -4433,8 +4803,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.46" + "source": "https://github.com/symfony/http-client/tree/v5.4.24" }, "funding": [ { @@ -4450,7 +4823,7 @@ "type": "tidelift" } ], - "time": "2022-09-04T17:31:03+00:00" + "time": "2023-05-07T13:11:28+00:00" }, { "name": "symfony/http-client-contracts", @@ -4532,16 +4905,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.4.21", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "3bb6ee5582366c4176d5ce596b380117c8200bbf" + "reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3bb6ee5582366c4176d5ce596b380117c8200bbf", - "reference": "3bb6ee5582366c4176d5ce596b380117c8200bbf", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3c59f97f6249ce552a44f01b93bfcbd786a954f5", + "reference": "3c59f97f6249ce552a44f01b93bfcbd786a954f5", "shasum": "" }, "require": { @@ -4588,7 +4961,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.21" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.24" }, "funding": [ { @@ -4604,61 +4977,69 @@ "type": "tidelift" } ], - "time": "2023-02-17T21:35:35+00:00" + "time": "2023-05-19T07:21:23+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.50", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef" + "reference": "f38b722e1557eb3f487d351b48f5a1279b50e9d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/aa6df6c045f034aa13ac752fc234bb300b9488ef", - "reference": "aa6df6c045f034aa13ac752fc234bb300b9488ef", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f38b722e1557eb3f487d351b48f5a1279b50e9d1", + "reference": "f38b722e1557eb3f487d351b48f5a1279b50e9d1", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -4692,79 +5073,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.50" - }, - "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": "2023-02-01T08:01:31+00:00" - }, - { - "name": "symfony/inflector", - "version": "v5.4.21", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "d56964e2b19253ba331a829c20d911dd27aa61b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/d56964e2b19253ba331a829c20d911dd27aa61b6", - "reference": "d56964e2b19253ba331a829c20d911dd27aa61b6", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.3.10|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Converts words between their singular and plural forms (English only)", - "homepage": "https://symfony.com", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" - ], - "support": { - "source": "https://github.com/symfony/inflector/tree/v5.4.21" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.24" }, "funding": [ { @@ -4780,45 +5089,39 @@ "type": "tidelift" } ], - "abandoned": "EnglishInflector from the String component", - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-05-27T08:06:30+00:00" }, { "name": "symfony/mailer", - "version": "v4.4.46", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "877cfb31a1589dcfee525ce82475f76ef20fbb30" + "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/877cfb31a1589dcfee525ce82475f76ef20fbb30", - "reference": "877cfb31a1589dcfee525ce82475f76ef20fbb30", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6330cd465dfd8b7a07515757a1c37069075f7b0b", + "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", - "php": ">=7.1.3", + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=7.2.5", + "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^4.3", - "symfony/mime": "^4.4.21|^5.2.6", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/http-kernel": "<4.4", - "symfony/sendgrid-mailer": "<4.4" + "symfony/http-kernel": "<4.4" }, "require-dev": { - "symfony/amazon-mailer": "^4.4|^5.0", - "symfony/google-mailer": "^4.4|^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/mailchimp-mailer": "^4.4|^5.0", - "symfony/mailgun-mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/postmark-mailer": "^4.4|^5.0", - "symfony/sendgrid-mailer": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -4846,7 +5149,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v4.4.46" + "source": "https://github.com/symfony/mailer/tree/v5.4.22" }, "funding": [ { @@ -4862,48 +5165,50 @@ "type": "tidelift" } ], - "time": "2022-08-27T06:29:57+00:00" + "time": "2023-03-10T10:15:32+00:00" }, { "name": "symfony/messenger", - "version": "v4.4.46", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "feec27d605ec69ea89ca075f93443dc1205bfda9" + "reference": "75e57d48758d43127377d1310970882446ec7d91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/feec27d605ec69ea89ca075f93443dc1205bfda9", - "reference": "feec27d605ec69ea89ca075f93443dc1205bfda9", + "url": "https://api.github.com/repos/symfony/messenger/zipball/75e57d48758d43127377d1310970882446ec7d91", + "reference": "75e57d48758d43127377d1310970882446ec7d91", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/polyfill-php80": "^1.16" + "symfony/amqp-messenger": "^5.1|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/polyfill-php80": "^1.16", + "symfony/redis-messenger": "^5.1|^6.0" }, "conflict": { - "doctrine/dbal": "<2.7", - "doctrine/persistence": "<1.3", - "symfony/event-dispatcher": "<4.3", + "symfony/event-dispatcher": "<4.4", "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4" + "symfony/http-kernel": "<4.4", + "symfony/serializer": "<5.0" }, "require-dev": { - "doctrine/dbal": "^2.7|^3.0", - "doctrine/persistence": "^1.3|^2|^3", "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4.19|^4.1.8|^5.0", - "symfony/event-dispatcher": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/serializer": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0" + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0" }, "suggest": { "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." @@ -4934,7 +5239,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v4.4.46" + "source": "https://github.com/symfony/messenger/tree/v5.4.24" }, "funding": [ { @@ -4950,20 +5255,20 @@ "type": "tidelift" } ], - "time": "2022-09-19T08:41:12+00:00" + "time": "2023-05-12T08:59:19+00:00" }, { "name": "symfony/mime", - "version": "v5.4.13", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd" + "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", - "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", + "url": "https://api.github.com/repos/symfony/mime/zipball/ae0a1032a450a3abf305ee44fc55ed423fbf16e3", + "reference": "ae0a1032a450a3abf305ee44fc55ed423fbf16e3", "shasum": "" }, "require": { @@ -4977,15 +5282,16 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.14|>=6.0,<6.0.14|>=6.1,<6.1.6" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/serializer": "^5.4.14|~6.0.14|^6.1.6" }, "type": "library", "autoload": { @@ -5017,7 +5323,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.13" + "source": "https://github.com/symfony/mime/tree/v5.4.23" }, "funding": [ { @@ -5033,38 +5339,42 @@ "type": "tidelift" } ], - "time": "2022-09-01T18:18:29+00:00" + "time": "2023-04-19T09:49:13+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.4.43", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471" + "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/ad09c9980b912e757c4ecd8363cebf3039d1d471", - "reference": "ad09c9980b912e757c4ecd8363cebf3039d1d471", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/34be6f0695e4187dbb832a05905fb4c6581ac39a", + "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1", - "php": ">=7.1.3", - "symfony/http-kernel": "^4.3", + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "symfony/console": "<3.4", - "symfony/http-foundation": "<3.4" + "symfony/console": "<4.4", + "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/security-core": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -5097,7 +5407,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.43" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.22" }, "funding": [ { @@ -5113,7 +5423,7 @@ "type": "tidelift" } ], - "time": "2022-06-16T12:12:11+00:00" + "time": "2023-03-06T21:29:33+00:00" }, { "name": "symfony/monolog-bundle", @@ -5198,20 +5508,22 @@ }, { "name": "symfony/options-resolver", - "version": "v4.4.44", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "583f56160f716dd435f1cd721fd14b548f4bb510" + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/583f56160f716dd435f1cd721fd14b548f4bb510", - "reference": "583f56160f716dd435f1cd721fd14b548f4bb510", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -5245,7 +5557,80 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.44" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + }, + "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": "2023-02-14T08:03:56+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "7ce4529b2b2ea7de3b6f344a1a41f58201999180" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/7ce4529b2b2ea7de3b6f344a1a41f58201999180", + "reference": "7ce4529b2b2ea7de3b6f344a1a41f58201999180", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/security-core": "<5.3" + }, + "require-dev": { + "symfony/console": "^5.3|^6.0", + "symfony/security-core": "^5.3|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v5.4.21" }, "funding": [ { @@ -5261,7 +5646,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -5917,20 +6302,20 @@ }, { "name": "symfony/process", - "version": "v4.4.44", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/process/zipball/e3c46cc5689c8782944274bb30702106ecbe3b64", + "reference": "e3c46cc5689c8782944274bb30702106ecbe3b64", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -5959,7 +6344,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/process/tree/v5.4.24" }, "funding": [ { @@ -5975,29 +6360,30 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-05-17T11:26:05+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.44", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358" + "reference": "ffee082889586b5718347b291e04071f4d07b38f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/d49682f6f0764df725c95128213a38f7e0a9f358", - "reference": "d49682f6f0764df725c95128213a38f7e0a9f358", + "url": "https://api.github.com/repos/symfony/property-access/zipball/ffee082889586b5718347b291e04071f4d07b38f", + "reference": "ffee082889586b5718347b291e04071f4d07b38f", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -6035,11 +6421,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.44" + "source": "https://github.com/symfony/property-access/tree/v5.4.22" }, "funding": [ { @@ -6055,38 +6441,40 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2023-03-14T14:59:20+00:00" }, { "name": "symfony/property-info", - "version": "v4.4.49", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "971cf46634e44d93d2174cf004555b69b19c9487" + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/971cf46634e44d93d2174cf004555b69b19c9487", - "reference": "971cf46634e44d93d2174cf004555b69b19c9487", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php80": "^1.16", + "symfony/string": "^5.1|^6.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/serializer": "^3.4|^4.0|^5.0" + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { "phpdocumentor/reflection-docblock": "To use the PHPDoc", @@ -6128,7 +6516,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v4.4.49" + "source": "https://github.com/symfony/property-info/tree/v5.4.24" }, "funding": [ { @@ -6144,35 +6532,102 @@ "type": "tidelift" } ], - "time": "2022-11-15T11:00:03+00:00" + "time": "2023-05-15T20:11:03+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v4.4.39", + "version": "v5.4.21", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/a4cf96f3acfa252503a216bea877478f9621c7c0", + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0", + "shasum": "" + }, + "require": { + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.2.5", + "symfony/dependency-injection": "^5.0|^6.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "symfony/config": "^4.4|^5.0|^6.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\ProxyManager\\": "" + }, + "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 integration for ProxyManager with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.21" + }, + "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": "2023-02-16T09:33:00+00:00" + }, + { + "name": "symfony/redis-messenger", + "version": "v5.4.23", "source": { "type": "git", - "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1" + "url": "https://github.com/symfony/redis-messenger.git", + "reference": "d9c0a6d7e3e925817f1ce7ec7416cc0e29b331e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/66c4de1f6fc16371c06762d6b7fafab2308a15a1", - "reference": "66c4de1f6fc16371c06762d6b7fafab2308a15a1", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/d9c0a6d7e3e925817f1ce7ec7416cc0e29b331e1", + "reference": "d9c0a6d7e3e925817f1ce7ec7416cc0e29b331e1", "shasum": "" }, "require": { - "friendsofphp/proxy-manager-lts": "^1.0.2", - "php": ">=7.1.3", - "symfony/dependency-injection": "^4.0|^5.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.1|^6.0" }, "require-dev": { - "symfony/config": "^3.4|^4.0|^5.0" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { - "Symfony\\Bridge\\ProxyManager\\": "" + "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6192,10 +6647,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides integration for ProxyManager with various Symfony components", + "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.39" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.23" }, "funding": [ { @@ -6211,42 +6666,43 @@ "type": "tidelift" } ], - "time": "2022-02-25T10:38:15+00:00" + "time": "2023-04-18T09:57:31+00:00" }, { "name": "symfony/routing", - "version": "v4.4.44", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae" + "reference": "c2ac11eb34947999b7c38fb4c835a57306907e6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f7751fd8b60a07f3f349947a309b5bdfce22d6ae", - "reference": "f7751fd8b60a07f3f349947a309b5bdfce22d6ae", + "url": "https://api.github.com/repos/symfony/routing/zipball/c2ac11eb34947999b7c38fb4c835a57306907e6d", + "reference": "c2ac11eb34947999b7c38fb4c835a57306907e6d", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^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/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", @@ -6284,7 +6740,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.44" + "source": "https://github.com/symfony/routing/tree/v5.4.22" }, "funding": [ { @@ -6300,59 +6756,65 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-03-14T14:59:20+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.4.50", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "076fd2088ada33d760758d98ff07ddedbf567946" + "reference": "36eddff8266126de032ab528417ad13eb43f6cb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/076fd2088ada33d760758d98ff07ddedbf567946", - "reference": "076fd2088ada33d760758d98ff07ddedbf567946", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/36eddff8266126de032ab528417ad13eb43f6cb5", + "reference": "36eddff8266126de032ab528417ad13eb43f6cb5", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4", - "symfony/security-csrf": "^4.2|^5.0", - "symfony/security-guard": "^4.2|^5.0", - "symfony/security-http": "^4.4.50" + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-guard": "^5.3", + "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" }, "conflict": { - "symfony/browser-kit": "<4.2", - "symfony/console": "<3.4", + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<4.4", + "symfony/ldap": "<5.1", "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", "autoload": { @@ -6380,7 +6842,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v4.4.50" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.22" }, "funding": [ { @@ -6396,42 +6858,48 @@ "type": "tidelift" } ], - "time": "2023-01-24T10:39:54+00:00" + "time": "2023-03-10T10:02:45+00:00" }, { "name": "symfony/security-core", - "version": "v4.4.48", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "423ccb332784b236dfe6c5f396d0ac49db57c914" + "reference": "a801d525c7545332e2ddf7f52c163959354b1650" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/423ccb332784b236dfe6c5f396d0ac49db57c914", - "reference": "423ccb332784b236dfe6c5f396d0ac49db57c914", + "url": "https://api.github.com/repos/symfony/security-core/zipball/a801d525c7545332e2ddf7f52c163959354b1650", + "reference": "a801d525c7545332e2ddf7f52c163959354b1650", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "symfony/service-contracts": "^1.1.6|^2|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/event-dispatcher": "<4.4", + "symfony/http-foundation": "<5.3", "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.3" + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" }, "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.0|^2.0", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -6467,7 +6935,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v4.4.48" + "source": "https://github.com/symfony/security-core/tree/v5.4.22" }, "funding": [ { @@ -6483,20 +6951,20 @@ "type": "tidelift" } ], - "time": "2022-10-22T05:50:33+00:00" + "time": "2023-03-10T10:02:45+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.4.19", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "892dc11b003c0d3da377264bb3d5f178cb894944" + "reference": "776a538e5f20fb560a182f790979c71455694203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/892dc11b003c0d3da377264bb3d5f178cb894944", - "reference": "892dc11b003c0d3da377264bb3d5f178cb894944", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/776a538e5f20fb560a182f790979c71455694203", + "reference": "776a538e5f20fb560a182f790979c71455694203", "shasum": "" }, "require": { @@ -6539,7 +7007,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.19" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.21" }, "funding": [ { @@ -6555,26 +7023,27 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/security-guard", - "version": "v4.4.46", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "f199eb1b19db11ce254b891580728c45a7ccacfd" + "reference": "62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/f199eb1b19db11ce254b891580728c45a7ccacfd", - "reference": "f199eb1b19db11ce254b891580728c45a7ccacfd", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa", + "reference": "62d064b1ee682e4617f4c5ddc0d31f73e1a7ecaa", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/security-core": "^3.4.22|^4.2.3|^5.0", - "symfony/security-http": "^4.4.1" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^5.3" }, "require-dev": { "psr/log": "^1|^2|^3" @@ -6605,7 +7074,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v4.4.46" + "source": "https://github.com/symfony/security-guard/tree/v5.4.22" }, "funding": [ { @@ -6621,38 +7090,44 @@ "type": "tidelift" } ], - "time": "2022-09-23T06:06:49+00:00" + "time": "2023-03-06T21:29:33+00:00" }, { "name": "symfony/security-http", - "version": "v4.4.50", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "7fa4a0cac16f02cb534a6e9adcdb17385f94004f" + "reference": "6791856229cc605834d169091981e4eae77dad45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/7fa4a0cac16f02cb534a6e9adcdb17385f94004f", - "reference": "7fa4a0cac16f02cb534a6e9adcdb17385f94004f", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6791856229cc605834d169091981e4eae77dad45", + "reference": "6791856229cc605834d169091981e4eae77dad45", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4.8" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5" }, "conflict": { - "symfony/event-dispatcher": ">=5", - "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" + "symfony/event-dispatcher": "<4.3", + "symfony/security-bundle": "<5.3", + "symfony/security-csrf": "<4.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", @@ -6684,7 +7159,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v4.4.50" + "source": "https://github.com/symfony/security-http/tree/v5.4.23" }, "funding": [ { @@ -6700,56 +7175,65 @@ "type": "tidelift" } ], - "time": "2023-01-24T10:39:54+00:00" + "time": "2023-04-21T11:34:27+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.47", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6e01d63c55657930a6de03d6e36aae50af98888d" + "reference": "12535bb7b1d3b53802bf18d61a98bb1145fabcdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6e01d63c55657930a6de03d6e36aae50af98888d", - "reference": "6e01d63c55657930a6de03d6e36aae50af98888d", + "url": "https://api.github.com/repos/symfony/serializer/zipball/12535bb7b1d3b53802bf18d61a98bb1145fabcdb", + "reference": "12535bb7b1d3b53802bf18d61a98bb1145fabcdb", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.3.13", + "symfony/uid": "<5.3", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.36|^5.3.13", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "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/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.3.13|^6.0", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping.", "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", "symfony/property-access": "For using the ObjectNormalizer.", "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", @@ -6778,7 +7262,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.47" + "source": "https://github.com/symfony/serializer/tree/v5.4.24" }, "funding": [ { @@ -6794,7 +7278,7 @@ "type": "tidelift" } ], - "time": "2022-09-19T08:38:33+00:00" + "time": "2023-05-12T08:37:35+00:00" }, { "name": "symfony/service-contracts", @@ -6881,24 +7365,21 @@ }, { "name": "symfony/stopwatch", - "version": "v4.4.46", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "757660703fbd139eea0001b759c6c3bf5bc3ea52" + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/757660703fbd139eea0001b759c6c3bf5bc3ea52", - "reference": "757660703fbd139eea0001b759c6c3bf5bc3ea52", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/service-contracts": "^1.0|^2" - }, - "require-dev": { - "symfony/polyfill-php72": "~1.5" + "php": ">=7.2.5", + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -6926,7 +7407,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v4.4.46" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" }, "funding": [ { @@ -6942,20 +7423,20 @@ "type": "tidelift" } ], - "time": "2022-09-28T12:53:24+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/string", - "version": "v5.4.21", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f" + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/edac10d167b78b1d90f46a80320d632de0bd9f2f", - "reference": "edac10d167b78b1d90f46a80320d632de0bd9f2f", + "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", "shasum": "" }, "require": { @@ -7012,7 +7493,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.21" + "source": "https://github.com/symfony/string/tree/v5.4.22" }, "funding": [ { @@ -7028,7 +7509,7 @@ "type": "tidelift" } ], - "time": "2023-02-22T08:00:55+00:00" + "time": "2023-03-14T06:11:53+00:00" }, { "name": "symfony/translation-contracts", @@ -7110,56 +7591,61 @@ }, { "name": "symfony/twig-bridge", - "version": "v4.4.45", + "version": "v5.4.22", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "7d6e6dbb1c029f4131e6e479ebd535a9a3633481" + "reference": "e5b174464f68be6876046db3ad6e217d9a7dbbac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/7d6e6dbb1c029f4131e6e479ebd535a9a3633481", - "reference": "7d6e6dbb1c029f4131e6e479ebd535a9a3633481", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e5b174464f68be6876046db3ad6e217d9a7dbbac", + "reference": "e5b174464f68be6876046db3ad6e217d9a7dbbac", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/console": "<3.4", - "symfony/form": "<4.4", - "symfony/http-foundation": "<4.3", - "symfony/translation": "<4.2", - "symfony/workflow": "<4.3" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<5.3", + "symfony/form": "<5.4.21|>=6,<6.2.7", + "symfony/http-foundation": "<5.3", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4.17", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.3|^5.0", + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^3.0|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2.1|^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.2|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -7175,7 +7661,6 @@ "symfony/security-csrf": "For using the CsrfExtension", "symfony/security-http": "For using the LogoutUrlExtension", "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", "symfony/translation": "For using the TranslationExtension", "symfony/var-dumper": "For using the DumpExtension", "symfony/web-link": "For using the WebLinkExtension", @@ -7207,7 +7692,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v4.4.45" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.22" }, "funding": [ { @@ -7223,51 +7708,52 @@ "type": "tidelift" } ], - "time": "2022-08-03T09:58:25+00:00" + "time": "2023-03-31T08:28:44+00:00" }, { "name": "symfony/twig-bundle", - "version": "v4.4.41", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff" + "reference": "875d0edfc8df7505c1993419882c4071fc28c477" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/164c1edc69f2c7ee337323efc78a8a8a263f45ff", - "reference": "164c1edc69f2c7ee337323efc78a8a8a263f45ff", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/875d0edfc8df7505c1993419882c4071fc28c477", + "reference": "875d0edfc8df7505c1993419882c4071fc28c477", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/twig-bridge": "^5.3|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<4.1", - "symfony/framework-bundle": "<4.4", - "symfony/translation": "<4.2" + "symfony/dependency-injection": "<5.3", + "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", + "symfony/translation": "<5.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.2.5|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/web-link": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -7295,7 +7781,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v4.4.41" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.21" }, "funding": [ { @@ -7311,63 +7797,69 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:19:55+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/validator", - "version": "v4.4.46", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994" + "reference": "47794a3cb530e01593ecad9856ba80f5c011e36b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/51d06a00a7a8e9c45b91735932040b9f1df2c994", - "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994", + "url": "https://api.github.com/repos/symfony/validator/zipball/47794a3cb530e01593ecad9856ba80f5c011e36b", + "reference": "47794a3cb530e01593ecad9856ba80f5c011e36b", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", "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", + "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", @@ -7401,7 +7893,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.46" + "source": "https://github.com/symfony/validator/tree/v5.4.24" }, "funding": [ { @@ -7417,20 +7909,20 @@ "type": "tidelift" } ], - "time": "2022-09-15T12:26:05+00:00" + "time": "2023-05-25T13:05:00+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.21", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6c5ac3a1be8b849d59a1a77877ee110e1b55eb74" + "reference": "8e12706bf9c68a2da633f23bfdc15b4dce5970b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6c5ac3a1be8b849d59a1a77877ee110e1b55eb74", - "reference": "6c5ac3a1be8b849d59a1a77877ee110e1b55eb74", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/8e12706bf9c68a2da633f23bfdc15b4dce5970b3", + "reference": "8e12706bf9c68a2da633f23bfdc15b4dce5970b3", "shasum": "" }, "require": { @@ -7439,7 +7931,6 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { @@ -7490,7 +7981,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.21" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.24" }, "funding": [ { @@ -7506,28 +7997,27 @@ "type": "tidelift" } ], - "time": "2023-02-23T10:00:28+00:00" + "time": "2023-05-25T13:05:00+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.4.19", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2a1d06fcf2b30829d6c01dae8e6e188424d1f8f6" + "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2a1d06fcf2b30829d6c01dae8e6e188424d1f8f6", - "reference": "2a1d06fcf2b30829d6c01dae8e6e188424d1f8f6", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350", + "reference": "db5416d04269f2827d8c54331ba4cfa42620d350", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/var-dumper": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -7560,10 +8050,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.19" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.0" }, "funding": [ { @@ -7579,20 +8071,20 @@ "type": "tidelift" } ], - "time": "2023-01-12T16:39:29+00:00" + "time": "2023-04-21T08:48:44+00:00" }, { "name": "symfony/web-link", - "version": "v5.2.12", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "3d1f4a0318314c63c363f5d49de15d54780b2079" + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/3d1f4a0318314c63c363f5d49de15d54780b2079", - "reference": "3d1f4a0318314c63c363f5d49de15d54780b2079", + "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", "shasum": "" }, "require": { @@ -7601,14 +8093,13 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/http-kernel": "<4.4" + "symfony/http-kernel": "<5.3" }, "provide": { "psr/link-implementation": "1.0" }, "require-dev": { - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/http-kernel": "^5.3|^6.0" }, "suggest": { "symfony/http-kernel": "" @@ -7651,7 +8142,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.2.12" + "source": "https://github.com/symfony/web-link/tree/v5.4.21" }, "funding": [ { @@ -7667,35 +8158,39 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:38:00+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.45", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" + "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -7722,7 +8217,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.45" + "source": "https://github.com/symfony/yaml/tree/v5.4.23" }, "funding": [ { @@ -7738,20 +8233,20 @@ "type": "tidelift" } ], - "time": "2022-08-02T15:47:23+00:00" + "time": "2023-04-23T19:33:36+00:00" }, { "name": "twig/twig", - "version": "v3.4.3", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", + "reference": "7e7d5839d4bec168dfeef0ac66d5c5a2edbabffd", "shasum": "" }, "require": { @@ -7760,15 +8255,10 @@ "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "psr/container": "^1.0", + "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -7802,7 +8292,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + "source": "https://github.com/twigphp/Twig/tree/v3.6.1" }, "funding": [ { @@ -7814,7 +8304,7 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:42:51+00:00" + "time": "2023-06-08T12:52:13+00:00" }, { "name": "webmozart/assert", @@ -7932,23 +8422,24 @@ }, { "name": "zircote/swagger-php", - "version": "4.4.9", + "version": "4.7.10", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "0c1cdd31e8cfeb7116c54696aafdab9c778070fd" + "reference": "6d2f0fcc46bf9043877de8656a9ea95331155522" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/0c1cdd31e8cfeb7116c54696aafdab9c778070fd", - "reference": "0c1cdd31e8cfeb7116c54696aafdab9c778070fd", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/6d2f0fcc46bf9043877de8656a9ea95331155522", + "reference": "6d2f0fcc46bf9043877de8656a9ea95331155522", "shasum": "" }, "require": { - "doctrine/annotations": "^1.7", + "doctrine/annotations": "^1.7 || ^2.0", "ext-json": "*", "php": ">=7.2", "psr/log": "^1.1 || ^2.0 || ^3.0", + "symfony/deprecation-contracts": "^2 || ^3", "symfony/finder": ">=2.2", "symfony/yaml": ">=3.3" }, @@ -8003,38 +8494,38 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/4.4.9" + "source": "https://github.com/zircote/swagger-php/tree/4.7.10" }, - "time": "2022-09-11T20:51:43+00:00" + "time": "2023-04-28T00:56:39+00:00" } ], "packages-dev": [ { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -8062,7 +8553,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -8078,7 +8569,7 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", @@ -8163,27 +8654,27 @@ }, { "name": "composer/xdebug-handler", - "version": "2.0.5", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { @@ -8209,7 +8700,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -8225,42 +8716,42 @@ "type": "tidelift" } ], - "time": "2022-02-24T20:20:32+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.5.3", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42" + "reference": "4af35dadbfcf4b00abb2a217c4c8c8800cf5fcf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ba37bfb776de763c5bf04a36d074cd5f5a083c42", - "reference": "ba37bfb776de763c5bf04a36d074cd5f5a083c42", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/4af35dadbfcf4b00abb2a217c4c8c8800cf5fcf4", + "reference": "4af35dadbfcf4b00abb2a217c4c8c8800cf5fcf4", "shasum": "" }, "require": { - "doctrine/common": "^2.13|^3.0", - "doctrine/persistence": "^1.3.3|^2.0|^3.0", + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0", "php": "^7.2 || ^8.0" }, "conflict": { "doctrine/dbal": "<2.13", + "doctrine/orm": "<2.12", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^11.0", "doctrine/dbal": "^2.13 || ^3.0", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.7.0", + "doctrine/orm": "^2.12", "ext-sqlite3": "*", - "jangregor/phpstan-prophecy": "^1", "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5", + "phpunit/phpunit": "^8.5 || ^9.5 || ^10.0", "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10" + "vimeo/psalm": "^4.10 || ^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -8271,7 +8762,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -8291,7 +8782,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.3" + "source": "https://github.com/doctrine/data-fixtures/tree/1.6.6" }, "funding": [ { @@ -8307,24 +8798,24 @@ "type": "tidelift" } ], - "time": "2022-04-19T10:01:44+00:00" + "time": "2023-04-20T13:08:54+00:00" }, { "name": "fakerphp/faker", - "version": "v1.20.0", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b" + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/37f751c67a5372d4e26353bd9384bc03744ec77b", - "reference": "37f751c67a5372d4e26353bd9384bc03744ec77b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -8335,7 +8826,8 @@ "bamarni/composer-bin-plugin": "^1.4.1", "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", @@ -8347,7 +8839,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.20-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -8372,58 +8864,59 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.20.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" }, - "time": "2022-07-20T13:12:54+00:00" + "time": "2023-06-12T08:44:38+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.4.0", + "version": "v3.14.2", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "14f0541651841b63640e7aafad041ad55dc7aa88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", - "reference": "47177af1cfb9dab5d1cc4daf91b7179c2efe7fad", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/14f0541651841b63640e7aafad041ad55dc7aa88", + "reference": "14f0541651841b63640e7aafad041ad55dc7aa88", "shasum": "" }, "require": { - "composer/semver": "^3.2", - "composer/xdebug-handler": "^2.0", - "doctrine/annotations": "^1.12", + "composer/semver": "^3.3", + "composer/xdebug-handler": "^3.0.3", + "doctrine/annotations": "^1.14.2 || ^2", + "doctrine/lexer": "^2", "ext-json": "*", "ext-tokenizer": "*", - "php": "^7.2.5 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^4.4.20 || ^5.1.3 || ^6.0", - "symfony/event-dispatcher": "^4.4.20 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.4.20 || ^5.0 || ^6.0", - "symfony/finder": "^4.4.20 || ^5.0 || ^6.0", - "symfony/options-resolver": "^4.4.20 || ^5.0 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.23", - "symfony/polyfill-php81": "^1.23", - "symfony/process": "^4.4.20 || ^5.0 || ^6.0", - "symfony/stopwatch": "^4.4.20 || ^5.0 || ^6.0" + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0", + "symfony/console": "^5.4 || ^6.0", + "symfony/event-dispatcher": "^5.4 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/options-resolver": "^5.4 || ^6.0", + "symfony/polyfill-mbstring": "^1.27", + "symfony/polyfill-php80": "^1.27", + "symfony/polyfill-php81": "^1.27", + "symfony/process": "^5.4 || ^6.0", + "symfony/stopwatch": "^5.4 || ^6.0" }, "require-dev": { "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.8", - "php-coveralls/php-coveralls": "^2.5.2", + "keradus/cli-executor": "^2.0", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.5.3", "php-cs-fixer/accessible-object": "^1.1", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^8.5.21 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^5.2.4 || ^6.0", - "symfony/yaml": "^4.4.20 || ^5.0 || ^6.0" + "phpspec/prophecy": "^1.16", + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "phpunitgoodpractices/polyfill": "^1.6", + "phpunitgoodpractices/traits": "^1.9.2", + "symfony/phpunit-bridge": "^6.2.3", + "symfony/yaml": "^5.4 || ^6.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -8454,8 +8947,8 @@ ], "description": "A tool to automatically fix PHP code style", "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.4.0" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.14.2" }, "funding": [ { @@ -8463,7 +8956,7 @@ "type": "github" } ], - "time": "2021-12-11T16:25:08+00:00" + "time": "2023-01-29T23:47:01+00:00" }, { "name": "hautelook/alice-bundle", @@ -8539,16 +9032,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -8586,7 +9079,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -8594,40 +9087,44 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nelmio/alice", - "version": "v3.9.0", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/nelmio/alice.git", - "reference": "5a5bf0593131290e3709dbbd48829b23ea4d0d93" + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/alice/zipball/5a5bf0593131290e3709dbbd48829b23ea4d0d93", - "reference": "5a5bf0593131290e3709dbbd48829b23ea4d0d93", + "url": "https://api.github.com/repos/nelmio/alice/zipball/a020c0767e10dbb7bf1c193e16e94710691133d9", + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9", "shasum": "" }, "require": { "fakerphp/faker": "^1.10", "myclabs/deep-copy": "^1.10", - "php": "^7.4 || ^8.0", - "sebastian/comparator": "^3.0 || ^4.0", - "symfony/property-access": "^4.4 || ^5.2", - "symfony/yaml": "^4.4 || ^5.2" + "php": "^8.1", + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0", + "symfony/property-access": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "conflict": { - "symfony/framework-bundle": "<4.4 || >=5.0.0,<5.2.0" + "symfony/framework-bundle": "<5.4.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "phpspec/prophecy": "^1.6", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.3", - "symfony/phpunit-bridge": "^5.1.3", - "symfony/var-dumper": "^4.4 || ^5.2" + "symfony/config": "^5.4 || ^6.0", + "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", + "symfony/var-dumper": "^5.4 || ^6.0" }, "suggest": { "theofidry/alice-data-fixtures": "Wrapper for Alice to provide a persistence layer." @@ -8676,7 +9173,7 @@ ], "support": { "issues": "https://github.com/nelmio/alice/issues", - "source": "https://github.com/nelmio/alice/tree/v3.9.0" + "source": "https://github.com/nelmio/alice/tree/3.12.2" }, "funding": [ { @@ -8684,20 +9181,20 @@ "type": "github" } ], - "time": "2021-10-12T16:09:54+00:00" + "time": "2023-02-13T11:17:55+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.1", + "version": "v4.15.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", - "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", + "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", "shasum": "" }, "require": { @@ -8738,87 +9235,33 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" - }, - "time": "2022-09-04T07:30:47+00:00" - }, - { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "sebastian/diff v3 backport support for PHP 5.6+", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v2.0.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" }, - "abandoned": true, - "time": "2020-10-14T08:32:19+00:00" + "time": "2023-05-19T20:20:00+00:00" }, { "name": "phpstan/extension-installer", - "version": "1.1.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/phpstan/extension-installer.git", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051" + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/66c7adc9dfa38b6b5838a9fb728b68a7d8348051", - "reference": "66c7adc9dfa38b6b5838a9fb728b68a7d8348051", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/f45734bfb9984c6c56c4486b71230355f066a58a", + "reference": "f45734bfb9984c6c56c4486b71230355f066a58a", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": ">=0.11.6" + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0" }, "require-dev": { - "composer/composer": "^1.8", - "phing/phing": "^2.16.3", + "composer/composer": "^2.0", "php-parallel-lint/php-parallel-lint": "^1.2.0", - "phpstan/phpstan-strict-rules": "^0.11 || ^0.12" + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" }, "type": "composer-plugin", "extra": { @@ -8836,26 +9279,26 @@ "description": "Composer plugin for automatic installation of PHPStan extensions", "support": { "issues": "https://github.com/phpstan/extension-installer/issues", - "source": "https://github.com/phpstan/extension-installer/tree/1.1.0" + "source": "https://github.com/phpstan/extension-installer/tree/1.3.1" }, - "time": "2020-12-13T13:06:13+00:00" + "time": "2023-05-24T08:59:17+00:00" }, { "name": "phpstan/phpstan", - "version": "0.12.99", + "version": "1.10.19", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + "reference": "af5a296ff02610c1bfb4ddfac9fd4a08657b9046" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/af5a296ff02610c1bfb4ddfac9fd4a08657b9046", + "reference": "af5a296ff02610c1bfb4ddfac9fd4a08657b9046", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -8865,11 +9308,6 @@ "phpstan.phar" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, "autoload": { "files": [ "bootstrap.php" @@ -8880,9 +9318,16 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, "funding": [ { @@ -8893,34 +9338,30 @@ "url": "https://github.com/phpstan", "type": "github" }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, { "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", "type": "tidelift" } ], - "time": "2021-09-12T20:09:55+00:00" + "time": "2023-06-14T15:26:58+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "0.12.44", + "version": "1.3.40", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "5fe9a9b15707d9bc5178fa7cf0899e904d112ccd" + "reference": "f741919a720af6f84249abc62befeb15eee7bc88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5fe9a9b15707d9bc5178fa7cf0899e904d112ccd", - "reference": "5fe9a9b15707d9bc5178fa7cf0899e904d112ccd", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f741919a720af6f84249abc62befeb15eee7bc88", + "reference": "f741919a720af6f84249abc62befeb15eee7bc88", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.85" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10.12" }, "conflict": { "doctrine/collections": "<1.0", @@ -8930,25 +9371,27 @@ "doctrine/persistence": "<1.3" }, "require-dev": { + "composer/semver": "^3.3.2", "doctrine/annotations": "^1.11.0", "doctrine/collections": "^1.6", "doctrine/common": "^2.7 || ^3.0", - "doctrine/dbal": "^2.13.1", + "doctrine/dbal": "^2.13.8 || ^3.3.3", + "doctrine/lexer": "^1.2.1", "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.9.1", - "doctrine/persistence": "^1.1 || ^2.0", + "doctrine/orm": "^2.11.0", + "doctrine/persistence": "^1.3.8 || ^2.2.1", + "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", + "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5", - "ramsey/uuid-doctrine": "^1.5.0" + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5.10", + "ramsey/uuid-doctrine": "^1.5.0", + "symfony/cache": "^4.4.35" }, "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, "phpstan": { "includes": [ "extension.neon", @@ -8968,49 +9411,51 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/0.12.44" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.40" }, - "time": "2021-09-01T06:46:16+00:00" + "time": "2023-05-11T11:26:04+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "0.12.44", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "c1627fce5b505b3f53d9d4fbd4d7963603305f98" + "reference": "7332b90dfc291ac5b4b83fbca2081936faa1e3f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/c1627fce5b505b3f53d9d4fbd4d7963603305f98", - "reference": "c1627fce5b505b3f53d9d4fbd4d7963603305f98", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/7332b90dfc291ac5b4b83fbca2081936faa1e3f9", + "reference": "7332b90dfc291ac5b4b83fbca2081936faa1e3f9", "shasum": "" }, "require": { "ext-simplexml": "*", - "php": "^7.1 || ^8.0", - "phpstan/phpstan": "^0.12.98" + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.18" }, "conflict": { "symfony/framework-bundle": "<3.0" }, "require-dev": { + "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^0.12.16", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5", - "symfony/config": "^4.2 || ^5.0", - "symfony/console": "^4.0 || ^5.0", - "symfony/framework-bundle": "^4.4 || ^5.0", - "symfony/http-foundation": "^4.0 || ^5.0", - "symfony/messenger": "^4.2 || ^5.0", - "symfony/serializer": "^4.0 || ^5.0" + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^8.5.29 || ^9.5", + "psr/container": "1.0 || 1.1.1", + "symfony/config": "^5.4 || ^6.1", + "symfony/console": "^5.4 || ^6.1", + "symfony/dependency-injection": "^5.4 || ^6.1", + "symfony/form": "^5.4 || ^6.1", + "symfony/framework-bundle": "^5.4 || ^6.1", + "symfony/http-foundation": "^5.4 || ^6.1", + "symfony/messenger": "^5.4", + "symfony/polyfill-php80": "^1.24", + "symfony/serializer": "^5.4" }, "type": "phpstan-extension", "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - }, "phpstan": { "includes": [ "extension.neon", @@ -9037,9 +9482,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/0.12.44" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.2" }, - "time": "2021-09-02T12:14:11+00:00" + "time": "2023-05-16T12:46:15+00:00" }, { "name": "sebastian/comparator", @@ -9117,16 +9562,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -9171,7 +9616,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -9179,7 +9624,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/exporter", @@ -9260,16 +9705,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -9308,10 +9753,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -9319,32 +9764,32 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "symfony/browser-kit", - "version": "v4.4.44", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb" + "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", - "reference": "2a1ff40723ef6b29c8229a860a9c8f815ad7dbbb", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a866ca7e396f15d7efb6d74a8a7d364d4e05b704", + "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -9375,7 +9820,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.44" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.21" }, "funding": [ { @@ -9391,24 +9836,25 @@ "type": "tidelift" } ], - "time": "2022-07-25T12:56:14+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.45", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5" + "reference": "4a286c916b74ecfb6e2caf1aa31d3fe2a34b7e08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4b8daf6c56801e6d664224261cb100b73edc78a5", - "reference": "4b8daf6c56801e6d664224261cb100b73edc78a5", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4a286c916b74ecfb6e2caf1aa31d3fe2a34b7e08", + "reference": "4a286c916b74ecfb6e2caf1aa31d3fe2a34b7e08", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -9418,7 +9864,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -9449,7 +9895,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.45" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.23" }, "funding": [ { @@ -9465,45 +9911,50 @@ "type": "tidelift" } ], - "time": "2022-08-03T12:57:57+00:00" + "time": "2023-04-08T21:20:19+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.39.1", + "version": "v1.49.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "30c8ac13511f6df7bc9ac088f31d7a48ce6433c6" + "reference": "ce1d424f76bbb377f1956cc7641e8e2eafe81cde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/30c8ac13511f6df7bc9ac088f31d7a48ce6433c6", - "reference": "30c8ac13511f6df7bc9ac088f31d7a48ce6433c6", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/ce1d424f76bbb377f1956cc7641e8e2eafe81cde", + "reference": "ce1d424f76bbb377f1956cc7641e8e2eafe81cde", "shasum": "" }, "require": { - "doctrine/inflector": "^1.2|^2.0", + "doctrine/inflector": "^2.0", "nikic/php-parser": "^4.11", - "php": ">=7.1.3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "php": ">=8.0", + "symfony/config": "^5.4.7|^6.0", + "symfony/console": "^5.4.7|^6.0", + "symfony/dependency-injection": "^5.4.7|^6.0", "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" + "symfony/filesystem": "^5.4.7|^6.0", + "symfony/finder": "^5.4.3|^6.0", + "symfony/framework-bundle": "^5.4.7|^6.0", + "symfony/http-kernel": "^5.4.7|^6.0", + "symfony/process": "^5.4.7|^6.0" + }, + "conflict": { + "doctrine/doctrine-bundle": "<2.4", + "doctrine/orm": "<2.10", + "symfony/doctrine-bridge": "<5.4" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^1.12.3|^2.0", - "doctrine/orm": "^2.3", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4|^5.0|^6.0", + "doctrine/doctrine-bundle": "^2.4", + "doctrine/orm": "^2.10.0", + "symfony/http-client": "^5.4.7|^6.0", + "symfony/phpunit-bridge": "^5.4.17|^6.0", "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.7|^6.0", + "symfony/yaml": "^5.4.3|^6.0", "twig/twig": "^2.0|^3.0" }, "type": "symfony-bundle", @@ -9537,7 +9988,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.39.1" + "source": "https://github.com/symfony/maker-bundle/tree/v1.49.0" }, "funding": [ { @@ -9553,30 +10004,31 @@ "type": "tidelift" } ], - "time": "2022-09-13T18:14:36+00:00" + "time": "2023-06-07T13:10:14+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v4.4.44", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "03ee09e2a8d6c3a7d2502c5e47d1468b06583b95" + "reference": "1572c5b7cad812bdf0414d89a32a33a2dafb38ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/03ee09e2a8d6c3a7d2502c5e47d1468b06583b95", - "reference": "03ee09e2a8d6c3a7d2502c5e47d1468b06583b95", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/1572c5b7cad812bdf0414d89a32a33a2dafb38ba", + "reference": "1572c5b7cad812bdf0414d89a32a33a2dafb38ba", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=7.1.3", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" + "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0" + "symfony/error-handler": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" @@ -9619,7 +10071,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.44" + "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.23" }, "funding": [ { @@ -9635,42 +10087,43 @@ "type": "tidelift" } ], - "time": "2022-07-27T16:05:11+00:00" + "time": "2023-04-18T09:42:03+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v4.4.44", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "346128217ae50ac62d32b2d42257b90598dc9fc2" + "reference": "42dbb751c0363d75a3697775e662d6f21f3d8b83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/346128217ae50ac62d32b2d42257b90598dc9fc2", - "reference": "346128217ae50ac62d32b2d42257b90598dc9fc2", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/42dbb751c0363d75a3697775e662d6f21f3d8b83", + "reference": "42dbb751c0363d75a3697775e662d6f21f3d8b83", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.3|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/form": "<4.3", - "symfony/messenger": "<4.2" + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -9698,7 +10151,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.44" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.24" }, "funding": [ { @@ -9714,25 +10167,25 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2023-05-02T16:38:36+00:00" }, { "name": "theofidry/alice-data-fixtures", - "version": "1.5.2", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/theofidry/AliceDataFixtures.git", - "reference": "1ba759af51bb74887c14ab3fd1309b90f388dc88" + "reference": "798ea2b5b8c6b2b938470d5330dc4beee77f4aff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/1ba759af51bb74887c14ab3fd1309b90f388dc88", - "reference": "1ba759af51bb74887c14ab3fd1309b90f388dc88", + "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/798ea2b5b8c6b2b938470d5330dc4beee77f4aff", + "reference": "798ea2b5b8c6b2b938470d5330dc4beee77f4aff", "shasum": "" }, "require": { - "nelmio/alice": "^3.5", - "php": "^7.4 || ^8.0", + "nelmio/alice": "^3.10", + "php": "^8.1", "psr/log": "^1 || ^2 || ^3", "webmozart/assert": "^1.10" }, @@ -9741,7 +10194,7 @@ "doctrine/persistence": "<2.0", "illuminate/database": "<8.12", "ocramius/proxy-manager": "<2.1", - "symfony/framework-bundle": "<4.4 || >5.0,<5.4", + "symfony/framework-bundle": "<5.4", "zendframework/zend-code": "<3.3.1" }, "require-dev": { @@ -9800,7 +10253,7 @@ ], "support": { "issues": "https://github.com/theofidry/AliceDataFixtures/issues", - "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.5.2" + "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.6.0" }, "funding": [ { @@ -9808,7 +10261,7 @@ "type": "github" } ], - "time": "2022-07-02T09:00:35+00:00" + "time": "2022-07-03T13:30:00+00:00" } ], "aliases": [], @@ -9817,7 +10270,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3" + "php": "^8.0" }, "platform-dev": [], "plugin-api-version": "2.3.0" diff --git a/config/routes/dev/twig.yaml b/config/routes/dev/twig.yaml index f4ee8396..bcbbf13d 100644 --- a/config/routes/dev/twig.yaml +++ b/config/routes/dev/twig.yaml @@ -1,3 +1,3 @@ _errors: - resource: '@TwigBundle/Resources/config/routing/errors.xml' + resource: '@FrameworkBundle/Resources/config/routing/errors.xml' prefix: /_error diff --git a/phpstan.neon b/phpstan.neon index ef628a1f..0e4c4dfa 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,7 +1,13 @@ parameters: + excludePaths: + - 'src/Migrations/Version20201127154506.php' + - 'src/Migrations/Version20201207112134.php' + - 'src/Kernel.php' + - vendor/ reportUnmatchedIgnoredErrors: false checkGenericClassInNonGenericObjectType: false inferPrivatePropertyTypeFromConstructor: true + treatPhpDocTypesAsCertain: false ignoreErrors: - '#Call to static method createFromThrowable\(\)#' - '#typehint#' @@ -10,3 +16,6 @@ parameters: - '#on Psr\\Log\\LoggerInterface\|null#' universalObjectCratesClasses: - Stripe\StripeObject + doctrine: + objectManagerLoader: tests/ObjectManager.php + diff --git a/phpunit.xml.dist b/phpunit.xml.dist index d468fd03..6d62f159 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -21,6 +21,7 @@ + diff --git a/src/Command/AlertingCommand.php b/src/Command/AlertingCommand.php index 87c4fa01..a67921e1 100644 --- a/src/Command/AlertingCommand.php +++ b/src/Command/AlertingCommand.php @@ -2,12 +2,12 @@ namespace App\Command; -use App\Entity\StripeRefund; use App\Entity\StripePayout; +use App\Entity\StripeRefund; use App\Entity\StripeTransfer; use App\Repository\StripePayoutRepository; -use App\Repository\StripeTransferRepository; use App\Repository\StripeRefundRepository; +use App\Repository\StripeTransferRepository; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use Symfony\Bridge\Twig\Mime\TemplatedEmail; @@ -81,6 +81,7 @@ public function execute(InputInterface $input, OutputInterface $output): ?int if (0 === count($failedTransfers) && 0 === count($failedPayouts) && 0 === count($failedRefunds)) { $this->logger->info('Exiting'); $this->logger->info('job succeeded'); + return 0; } @@ -88,6 +89,7 @@ public function execute(InputInterface $input, OutputInterface $output): ?int return [$transfer->getId(), $transfer->getMiraklId(), $transfer->getAmount(), $transfer->getStatus(), $transfer->getType(), $transfer->getStatusReason()]; }; $transferTable = new Table($output); + $transferTable ->setHeaderTitle('Failed transfers') ->setHeaders(['Internal ID', 'Mirakl ID', 'Amount', 'Status', 'Type', 'Reason']) @@ -134,6 +136,7 @@ public function execute(InputInterface $input, OutputInterface $output): ?int $this->mailer->send($email); $this->logger->info('Email sent'); $this->logger->info('job succeeded'); + return 0; } } diff --git a/src/Command/PaymentRefundCommand.php b/src/Command/PaymentRefundCommand.php index 6cf478ec..9f4c3ed7 100644 --- a/src/Command/PaymentRefundCommand.php +++ b/src/Command/PaymentRefundCommand.php @@ -2,13 +2,10 @@ namespace App\Command; -use App\Entity\StripeRefund; use App\Message\ProcessRefundMessage; use App\Message\ProcessTransferMessage; -use App\Repository\StripeRefundRepository; use App\Service\MiraklClient; use App\Service\PaymentRefundService; -use Doctrine\DBAL\Exception\UniqueConstraintViolationException; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use Symfony\Component\Console\Command\Command; @@ -47,11 +44,6 @@ class PaymentRefundCommand extends Command implements LoggerAwareInterface */ private $paymentRefundService; - /** - * @var StripeRefundRepository - */ - private $stripeRefundRepository; - public function __construct( MessageBusInterface $bus, MiraklClient $miraklClient, @@ -83,15 +75,17 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int } $this->logger->info('job succeeded'); + return 0; } - private function processBacklog() + private function processBacklog(): void { - $this->logger->info("Processing backlog."); + $this->logger->info('Processing backlog.'); $backlog = $this->paymentRefundService->getRetriableTransfers(); if (empty($backlog)) { - $this->logger->info("No backlog."); + $this->logger->info('No backlog.'); + return; } @@ -107,6 +101,7 @@ private function processPendingRefunds(string $orderType): void $orderRefunds = $this->miraklClient->$method(); if (empty($orderRefunds)) { $this->logger->info("No $orderType pending refund."); + return; } diff --git a/src/Command/PaymentSplitCommand.php b/src/Command/PaymentSplitCommand.php index 87937267..0936bc23 100644 --- a/src/Command/PaymentSplitCommand.php +++ b/src/Command/PaymentSplitCommand.php @@ -80,16 +80,18 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int } $this->logger->info('job succeeded'); + return 0; } - private function processBacklog(string $orderType) + private function processBacklog(string $orderType): void { $this->logger->info("Processing $orderType backlog."); $method = "getRetriable{$orderType}Transfers"; $backlog = $this->paymentSplitService->$method(); if (empty($backlog)) { - $this->logger->info("No backlog."); + $this->logger->info('No backlog.'); + return; } @@ -108,7 +110,7 @@ private function processBacklog(string $orderType) } } - private function processNewOrders(string $orderType) + private function processNewOrders(string $orderType): void { $method = "get{$orderType}PaymentSplitCheckpoint"; $checkpoint = $this->configService->$method() ?? ''; @@ -124,6 +126,7 @@ private function processNewOrders(string $orderType) if (empty($orders)) { $this->logger->info("No new $orderType order."); + return; } @@ -164,7 +167,7 @@ private function dispatchTransfers(array $transfers): void private function getServiceOrdersPendingDebits(array $orders, string $orderType): array { - if ($orderType == MiraklClient::ORDER_TYPE_SERVICE) { + if (MiraklClient::ORDER_TYPE_SERVICE == $orderType) { return $this->miraklClient->listServicePendingDebitsByOrderIds(array_keys($orders)); } else { return []; diff --git a/src/Command/PaymentValidationCommand.php b/src/Command/PaymentValidationCommand.php index 8a161727..ff2f1698 100644 --- a/src/Command/PaymentValidationCommand.php +++ b/src/Command/PaymentValidationCommand.php @@ -48,7 +48,7 @@ public function __construct( parent::__construct(); } - protected function configure() + protected function configure(): void { $this ->setDescription('Validate pending order whose payment can be captured') @@ -75,12 +75,10 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int } $this->logger->info('job succeeded'); + return 0; } - /** - * @param array $ordersByCommercialId - */ protected function validateOrders(array $ordersByCommercialId): void { // get stripe known payment intent or charge for pending order @@ -94,6 +92,7 @@ protected function validateOrders(array $ordersByCommercialId): void if (empty($readyForValidation)) { $this->logger->info('No mirakl order to validate'); + return; } @@ -103,9 +102,6 @@ protected function validateOrders(array $ordersByCommercialId): void )); } - /** - * @param array $paymentMappings - */ protected function capturePayments(array $paymentMappings): void { // List all orders using the provided commercial IDs diff --git a/src/Command/SellerMonitorKYCStatusCommand.php b/src/Command/SellerMonitorKYCStatusCommand.php index 417bfb88..b4bb32af 100644 --- a/src/Command/SellerMonitorKYCStatusCommand.php +++ b/src/Command/SellerMonitorKYCStatusCommand.php @@ -2,6 +2,7 @@ namespace App\Command; +use App\Entity\AccountMapping; use App\Repository\AccountMappingRepository; use App\Service\ConfigService; use App\Service\MiraklClient; @@ -35,11 +36,17 @@ class SellerMonitorKYCStatusCommand extends Command implements LoggerAwareInterf */ private $bus; + public function getBus(): mixed + { + return $this->bus; + } + /** * @var AccountMappingRepository */ private $accountMappingRepository; - public function setAccountMappingRepository(AccountMappingRepository $accountMappingRepository) + + public function setAccountMappingRepository(AccountMappingRepository $accountMappingRepository): void { $this->accountMappingRepository = $accountMappingRepository; } @@ -49,18 +56,22 @@ public function setAccountMappingRepository(AccountMappingRepository $accountMap */ private $configService; + public function getConfigService(): mixed + { + return $this->configService; + } + /** * @var MiraklClient */ private $miraklClient; - /** * @var StripeClient */ private $stripeClient; - public function setStripeClient(StripeClient $stripeClient) + public function setStripeClient(StripeClient $stripeClient): void { $this->stripeClient = $stripeClient; } @@ -71,7 +82,8 @@ public function setStripeClient(StripeClient $stripeClient) * @var MailerInterface */ private $mailer; - public function setMailer(MailerInterface $mailer) + + public function setMailer(MailerInterface $mailer): void { $this->mailer = $mailer; } @@ -80,7 +92,8 @@ public function setMailer(MailerInterface $mailer) * @var string */ private $technicalEmailFrom; - public function setTechnicalEmailFrom(string $email) + + public function setTechnicalEmailFrom(string $email): void { $this->technicalEmailFrom = $email; } @@ -89,7 +102,8 @@ public function setTechnicalEmailFrom(string $email) * @var string */ private $technicalEmail; - public function setTechnicalEmail(string $email) + + public function setTechnicalEmail(string $email): void { $this->technicalEmail = $email; } @@ -127,7 +141,7 @@ public function __construct( protected function execute(InputInterface $input, OutputInterface $output): ?int { $this->logger->info('starting'); - echo "process start"; + echo 'process start'; $stripeAccts = $this->stripeClient->retrieveAllAccounts(); @@ -135,8 +149,7 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int $accountsInDB = $this->accountMappingRepository->findAll(); - - $mirakl_update_shop_kyc_reqs=[]; + $mirakl_update_shop_kyc_reqs = []; $kycRequiredAccountDets = []; @@ -147,94 +160,87 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int $dbAccount = $this->findAccount($st_acc->id, $accountsInDB); - if ($kyc_disabled_status != '' && $dbAccount!=null) { + if ('' != $kyc_disabled_status && null != $dbAccount) { $dbAccount->setIgnored(true); $this->accountMappingRepository->persistAndFlush($dbAccount); $account_link = $this->stripeClient->createAccountLink($st_acc->id, 'https://dashboard.stripe.com', 'https://dashboard.stripe.com'); - - $mirakl_update_shop_kyc_reqs[]=['shop_id' => $dbAccount->getMiraklShopId(), - 'kyc' => ['status' => $kyc_disabled_status,'reason' => "STRIPE CONNECT ACCOUNT DISABLEMENT" ], - 'shop_additional_fields' => [['code' => $this->customFieldCode, 'value' => $account_link->url]] + $mirakl_update_shop_kyc_reqs[] = ['shop_id' => $dbAccount->getMiraklShopId(), + 'kyc' => ['status' => $kyc_disabled_status, 'reason' => 'STRIPE CONNECT ACCOUNT DISABLEMENT'], + 'shop_additional_fields' => [['code' => $this->customFieldCode, 'value' => $account_link->url]], ]; - $kycRequiredAccountDets[] = ['id'=>$dbAccount->getId(),'shop_id' => $dbAccount->getMiraklShopId(), - 'connect_account_id'=> $st_acc->id,'reason'=> $kyc_disabled_status ]; - } elseif ($kyc_disabled_status == '' && $dbAccount!=null && $dbAccount->getIgnored()) { + $kycRequiredAccountDets[] = ['id' => $dbAccount->getId(), 'shop_id' => $dbAccount->getMiraklShopId(), + 'connect_account_id' => $st_acc->id, 'reason' => $kyc_disabled_status]; + } elseif ('' == $kyc_disabled_status && null != $dbAccount && $dbAccount->getIgnored()) { $dbAccount->setIgnored(false); $this->accountMappingRepository->persistAndFlush($dbAccount); $account_link = $this->stripeClient->createLoginLink($st_acc->id); - $mirakl_update_shop_kyc_reqs[]=['shop_id' => $dbAccount->getMiraklShopId(), - 'kyc' => ['status' => 'APPROVED','reason' => "KYC aaproved" ], - 'shop_additional_fields' => [['code' => $this->customFieldCode, 'value' => $account_link->url]] + $mirakl_update_shop_kyc_reqs[] = ['shop_id' => $dbAccount->getMiraklShopId(), + 'kyc' => ['status' => 'APPROVED', 'reason' => 'KYC aaproved'], + 'shop_additional_fields' => [['code' => $this->customFieldCode, 'value' => $account_link->url]], ]; } } echo $this->mirakl_shop_kyc_disable; - if ($this->mirakl_shop_kyc_disable && count($mirakl_update_shop_kyc_reqs) > 0) { $this->miraklClient->updateShopKycStatusWithReason($mirakl_update_shop_kyc_reqs); } // print_r($kycRequiredAccountDets); - if (count($kycRequiredAccountDets)>0) { + if (count($kycRequiredAccountDets) > 0) { $email = (new TemplatedEmail()) ->from($this->technicalEmailFrom) ->to($this->technicalEmail) ->subject('[Stripe-Mirakl] KYC Required') ->htmlTemplate('emails/kycRequired.html.twig') ->context([ - 'kycRequiredAccounts' => $kycRequiredAccountDets + 'kycRequiredAccounts' => $kycRequiredAccountDets, ]); $this->mailer->send($email); } - - - $this->logger->info('job succeeded'); - echo "process end"; + echo 'process end'; + return 0; } - - private function findAccount($stripeId, $accountsInDB) + private function findAccount(string $stripeId, array $accountsInDB): ?AccountMapping { foreach ($accountsInDB as $acc) { - if ($stripeId == (string)$acc->getStripeAccountId()) { + if ($stripeId == (string) $acc->getStripeAccountId()) { return $acc; } } + return null; } - private function getKYCStatus(Account $stripeAccount): string { $requirements = $stripeAccount->requirements; - if (count($requirements[self::CURRENTLY_DUE]) > 0) { + if (isset($requirements[self::CURRENTLY_DUE]) && count((array) $requirements[self::CURRENTLY_DUE]) > 0) { return self::KYC_STATUS_PENDING_SUBMISSION; } - if (count($requirements[self::PENDING_VERIFICATION]) > 0) { + if (isset($requirements[self::PENDING_VERIFICATION]) && count((array) $requirements[self::PENDING_VERIFICATION]) > 0) { return self::KYC_STATUS_PENDING_APPROVAL; } - - if ( - $requirements[self::DISABLED_REASON] !== '' - && strpos($requirements[self::DISABLED_REASON], 'rejected') === 0 - ) { + $disabledReason = isset($requirements[self::DISABLED_REASON]) ? ''.$requirements[self::DISABLED_REASON] : ''; + if (isset($requirements[self::DISABLED_REASON]) && '' !== $requirements[self::DISABLED_REASON] + && 0 === strpos($disabledReason, 'rejected')) { return self::KYC_STATUS_REFUSED; } - if ($requirements[self::DISABLED_REASON] !== '' && $requirements[self::DISABLED_REASON] !== null) { + if (isset($requirements[self::DISABLED_REASON]) && '' !== $requirements[self::DISABLED_REASON] && null !== $requirements[self::DISABLED_REASON]) { return self::KYC_STATUS_PENDING_APPROVAL; } diff --git a/src/Command/SellerOnboardingCommand.php b/src/Command/SellerOnboardingCommand.php index e95e584c..13a3bc91 100644 --- a/src/Command/SellerOnboardingCommand.php +++ b/src/Command/SellerOnboardingCommand.php @@ -53,7 +53,7 @@ public function __construct( parent::__construct(); } - protected function configure() + protected function configure(): void { $this->addArgument('delay', InputArgument::OPTIONAL, 'Deprecated argument kept for backward compatibility. Will be removed in future versions.'); } @@ -66,10 +66,11 @@ protected function execute(InputInterface $input, OutputInterface $output): ?int } $this->logger->info('job succeeded'); + return 0; } - private function processUpdatedShops() + private function processUpdatedShops(): void { $checkpoint = $this->configService->getSellerOnboardingCheckpoint() ?? ''; $this->logger->info("Processing recently updated shops, checkpoint: $checkpoint."); @@ -81,7 +82,8 @@ private function processUpdatedShops() } if (empty($shops)) { - $this->logger->info("No shop recently updated."); + $this->logger->info('No shop recently updated.'); + return; } @@ -94,14 +96,14 @@ private function processUpdatedShops() } catch (ApiErrorException $e) { $this->logger->error(sprintf('Could not create Stripe Account: %s.', $e->getMessage()), [ 'shopId' => $shopId, - 'stripeErrorCode' => $e->getStripeCode() + 'stripeErrorCode' => $e->getStripeCode(), ]); continue; } $ignoredShop = $this->sellerOnboardingService->isShopIgnored($shop); if ($accountMapping->getIgnored() !== $ignoredShop) { - $this->logger->info("Shop $shopId is now ignored=" . var_export($ignoredShop, true)); + $this->logger->info("Shop $shopId is now ignored=".var_export($ignoredShop, true)); $this->sellerOnboardingService->updateAccountMappingIgnored($accountMapping, $ignoredShop); } @@ -120,13 +122,13 @@ private function processUpdatedShops() $message = $e->getResponse()->getContent(false); $this->logger->error(sprintf('Could not add AccountLink to Mirakl Shop: %s.', $message), [ 'shopId' => $shopId, - 'accountId' => $accountMapping->getStripeAccountId() + 'accountId' => $accountMapping->getStripeAccountId(), ]); } catch (ApiErrorException $e) { $this->logger->error(sprintf('Could not create Stripe AccountLink: %s.', $e->getMessage()), [ 'shopId' => $shopId, 'accountId' => $accountMapping->getStripeAccountId(), - 'stripeErrorCode' => $e->getStripeCode() + 'stripeErrorCode' => $e->getStripeCode(), ]); } } diff --git a/src/Command/SellerSettlementCommand.php b/src/Command/SellerSettlementCommand.php index 4fabd739..f009daf4 100644 --- a/src/Command/SellerSettlementCommand.php +++ b/src/Command/SellerSettlementCommand.php @@ -3,8 +3,8 @@ namespace App\Command; use App\Exception\InvalidArgumentException; -use App\Message\ProcessTransferMessage; use App\Message\ProcessPayoutMessage; +use App\Message\ProcessTransferMessage; use App\Service\ConfigService; use App\Service\MiraklClient; use App\Service\SellerSettlementService; @@ -55,11 +55,14 @@ public function __construct( parent::__construct(); } - protected function configure() + protected function configure(): void { $this->addArgument('mirakl_shop_id', InputArgument::OPTIONAL); } + /** + * @return int + */ protected function execute(InputInterface $input, OutputInterface $output) { $this->logger->info('starting'); @@ -68,6 +71,7 @@ protected function execute(InputInterface $input, OutputInterface $output) if (is_numeric($shopId)) { $this->processProvidedShopId((int) $shopId); $this->logger->info('job succeeded'); + return 0; } @@ -78,10 +82,11 @@ protected function execute(InputInterface $input, OutputInterface $output) $this->processNewInvoices(); $this->logger->info('job succeeded'); + return 0; } - private function processProvidedShopId(int $shopId) + private function processProvidedShopId(int $shopId): void { $this->logger->info('Executing provided shop', ['shop_id' => $shopId]); $invoices = $this->miraklClient->listInvoicesByShopId($shopId); @@ -95,13 +100,14 @@ private function processProvidedShopId(int $shopId) ); } - private function processBacklog() + private function processBacklog(): void { $this->logger->info('Executing backlog'); $retriableTransfers = $this->sellerSettlementService->getRetriableTransfers(); $retriablePayouts = $this->sellerSettlementService->getRetriablePayouts(); if (empty($retriableTransfers) && empty($retriablePayouts)) { $this->logger->info('No backlog'); + return; } @@ -118,7 +124,7 @@ private function processBacklog() $this->dispatchPayouts($payouts); } - private function getFirstInvoiceDate(array $transfersByInvoiceId, array $payouts) + private function getFirstInvoiceDate(array $transfersByInvoiceId, array $payouts): string { $createdDates = array_map( function ($o) { @@ -128,13 +134,14 @@ function ($o) { ); sort($createdDates); + return MiraklClient::getStringFromDatetime(current($createdDates)); } - private function processNewInvoices() + private function processNewInvoices(): void { $checkpoint = $this->configService->getSellerSettlementCheckpoint() ?? ''; - $this->logger->info('Executing for recent invoices, checkpoint: ' . $checkpoint); + $this->logger->info('Executing for recent invoices, checkpoint: '.$checkpoint); if ($checkpoint) { $invoices = $this->miraklClient->listInvoicesByDate($checkpoint); } else { @@ -143,6 +150,7 @@ private function processNewInvoices() if (empty($invoices)) { $this->logger->info('No new invoice'); + return; } @@ -156,7 +164,7 @@ private function processNewInvoices() $checkpoint = $this->updateCheckpoint($invoices, $checkpoint); $this->configService->setSellerSettlementCheckpoint($checkpoint); - $this->logger->info('Setting new checkpoint: ' . $checkpoint); + $this->logger->info('Setting new checkpoint: '.$checkpoint); } // Return the last valid date_created or the current checkpoint @@ -166,6 +174,7 @@ private function updateCheckpoint(array $invoices, ?string $checkpoint): ?string foreach ($invoices as $invoice) { try { MiraklClient::getDatetimeFromString($invoice['date_created']); + return $invoice['date_created']; } catch (InvalidArgumentException $e) { // Shouldn't happen, see MiraklClient::getDatetimeFromString diff --git a/src/Controller/AccountMappingByOperator.php b/src/Controller/AccountMappingByOperator.php index ada6a5a4..496bb16e 100644 --- a/src/Controller/AccountMappingByOperator.php +++ b/src/Controller/AccountMappingByOperator.php @@ -7,9 +7,9 @@ use App\Repository\AccountMappingRepository; use App\Service\StripeClient; use Nelmio\ApiDocBundle\Annotation\Security; +use OpenApi\Annotations as OA; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; -use OpenApi\Annotations as OA; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -62,6 +62,7 @@ public function __construct( * name="ids", * in="body", * description="Mirakl and Stripe Ids to map", + * * @OA\Schema( * type="object", * example={"miraklShopId": 1, "stripeUserId": "12345"} @@ -86,8 +87,11 @@ public function __construct( * response=409, * description="The provided Mirakl Shop ID or Stripe User Id is already mapped", * ) + * * @OA\Tag(name="AccountMapping") + * * @Security(name="Bearer") + * * @Route("/api/mappings", methods={"POST"}, name="create_mapping_manually") */ public function createMapping(Request $request): Response @@ -107,9 +111,14 @@ public function createMapping(Request $request): Response $mapping = new AccountMapping(); $mapping->setMiraklShopId($miraklShopId); $mapping->setStripeAccountId($stripeUserId); - $mapping->setPayinEnabled($stripeAccount->payouts_enabled); - $mapping->setPayoutEnabled($stripeAccount->charges_enabled); - $mapping->setDisabledReason($stripeAccount->requirements['disabled_reason']); + $mapping->setPayinEnabled((bool) $stripeAccount->payouts_enabled); + $mapping->setPayoutEnabled((bool) $stripeAccount->charges_enabled); + + if (isset($stripeAccount->requirements['disabled_reason'])) { + /** @var string $disabledReasonData */ + $disabledReasonData = $stripeAccount->requirements['disabled_reason']; + $mapping->setDisabledReason($disabledReasonData); + } $this->accountMappingRepository->persistAndFlush($mapping); diff --git a/src/Controller/SellerOnboardingRefreshUrl.php b/src/Controller/SellerOnboardingRefreshUrl.php index 7b55fd8a..b038ba9e 100644 --- a/src/Controller/SellerOnboardingRefreshUrl.php +++ b/src/Controller/SellerOnboardingRefreshUrl.php @@ -5,9 +5,9 @@ use App\Repository\AccountMappingRepository; use App\Service\SellerOnboardingService; use App\Service\StripeClient; +use OpenApi\Annotations as OA; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; -use OpenApi\Annotations as OA; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; @@ -40,11 +40,21 @@ class SellerOnboardingRefreshUrl extends AbstractController implements LoggerAwa */ private $serializer; + public function getSerializer(): mixed + { + return $this->serializer; + } + /** * @var ValidatorInterface */ private $validator; + public function getValidator(): mixed + { + return $this->validator; + } + public function __construct( AccountMappingRepository $accountMappingRepository, SellerOnboardingService $sellerOnboardingService, @@ -70,10 +80,10 @@ public function __construct( * response=400, * description="Bad request", * ) + * * @OA\Tag(name="Internal (Stripe Only)") + * * @Route("/api/public/onboarding/refresh", methods={"GET"}, name="onboarding_refresh") - * @param Request $request - * @return Response */ public function onboardingRefresh(Request $request): Response { diff --git a/src/Controller/StripeWebhookEndpoint.php b/src/Controller/StripeWebhookEndpoint.php index 01d3f940..7af21ab3 100644 --- a/src/Controller/StripeWebhookEndpoint.php +++ b/src/Controller/StripeWebhookEndpoint.php @@ -7,10 +7,10 @@ use App\Repository\AccountMappingRepository; use App\Repository\PaymentMappingRepository; use App\Service\StripeClient; +use OpenApi\Annotations as OA; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use Stripe\Event; -use OpenApi\Annotations as OA; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -30,7 +30,7 @@ class StripeWebhookEndpoint extends AbstractController implements LoggerAwareInt public const DEPRECATED_EVENT_TYPES = [ 'payment_intent.created', 'payment_intent.succeeded', - 'payment_intent.amount_capturable_updated' + 'payment_intent.amount_capturable_updated', ]; /** @@ -97,11 +97,12 @@ public function __construct( * response=400, * description="Bad request", * ) + * * @OA\Post(deprecated=true) + * * @OA\Tag(name="Webhook") + * * @Route("/api/public/webhook", methods={"POST"}, name="handle_stripe_webhook") - * @param Request $request - * @return Response */ public function handleStripeWebhookDeprecated(Request $request): Response { @@ -121,14 +122,18 @@ public function handleStripeWebhookDeprecated(Request $request): Response * ) * * @OA\Tag(name="Sellers Webhook") + * * @Route("/api/public/webhook/sellers", methods={"POST"}, name="handle_stripe_seller_webhook") - * @param Request $request - * @return Response */ public function handleStripeSellerWebhook(Request $request): Response { $signatureHeader = $request->headers->get('stripe-signature') ?? ''; - $payload = $request->getContent() ?? ''; + $payload = $request->getContent(); + if ($payload) { + $payload = $request->getContent(); + } else { + $payload = ''; + } return $this->handleStripeWebhook($payload, $signatureHeader, $this->webhookSellerSecret); } @@ -144,23 +149,36 @@ public function handleStripeSellerWebhook(Request $request): Response * response=400, * description="Bad request", * ) + * * @OA\Tag(name="Operator Webhook") + * * @Route("/api/public/webhook/operator", methods={"POST"}, name="handle_stripe_operator_webhook") - * @param Request $request - * @return Response */ public function handleStripeOperatorWebhook(Request $request): Response { $signatureHeader = $request->headers->get('stripe-signature') ?? ''; - $payload = $request->getContent() ?? ''; + $payload = $request->getContent(); + if ($payload) { + $payload = $request->getContent(); + } else { + $payload = ''; + } return $this->handleStripeWebhook($payload, $signatureHeader, $this->webhookOperatorSecret); } - protected function handleStripeWebhook($payload, string $signatureHeader, string $webhookSecret): Response + protected function handleStripeWebhook(string $payload, string $signatureHeader, string $webhookSecret): Response { try { + $eventType = ''; $event = $this->stripeClient->webhookConstructEvent($payload, $signatureHeader, $webhookSecret); + if (isset($event['type'])) { + $eventType = $event['type']; + if (!is_array($eventType)) { + $eventType = (array) $eventType; + } + $eventType = implode('', $eventType); + } } catch (\UnexpectedValueException $e) { $this->logger->error('Invalid payload.'); @@ -174,12 +192,13 @@ protected function handleStripeWebhook($payload, string $signatureHeader, string if (in_array($event['type'], self::DEPRECATED_EVENT_TYPES)) { return new Response(sprintf( 'The event type %s is no longer required and can be removed in the webhook settings.', - $event['type'] + $eventType ), Response::HTTP_OK); } if (!in_array($event['type'], self::HANDLED_EVENT_TYPES)) { - $this->logger->error(sprintf('Unhandled event type %s.', $event['type'])); + $this->logger->error(sprintf('Unhandled event type %s.', (bool) $event['type'])); + return new Response('Unhandled event type', Response::HTTP_BAD_REQUEST); } @@ -204,8 +223,6 @@ protected function handleStripeWebhook($payload, string $signatureHeader, string } /** - * @param Event $event - * @return string * @throws \Exception */ private function handleAccountEvent(Event $event): string @@ -215,11 +232,13 @@ private function handleAccountEvent(Event $event): string $accountMapping = $this->accountMappingRepository->findOneByStripeAccountId($stripeAccount['id']); if (null === $accountMapping) { $this->logger->info(sprintf('Ignoring account.updated event for non-Mirakl Stripe account: %s', $stripeAccount['id'])); + return 'Ignoring account.updated event for non-Mirakl Stripe account.'; } if (!$stripeAccount['details_submitted']) { $this->logger->info(sprintf('Ignoring account.updated event until details are submitted for account: %s', $stripeAccount['id'])); + return 'Ignoring account.updated event until details are submitted for account.'; } @@ -236,8 +255,6 @@ private function handleAccountEvent(Event $event): string } /** - * @param Event $event - * @return string * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException */ @@ -271,7 +288,6 @@ private function handleChargeEvent(Event $event): string $message = 'Payment mapping updated.'; } - $this->paymentMappingRepository->flush(); return $message; @@ -282,14 +298,19 @@ private function handleChargeEvent(Event $event): string */ private function findMiraklCommercialOrderId(\Stripe\Charge $charge): ?string { - if (isset($charge['metadata'][$this->metadataCommercialOrderId])) { - if ('' === $charge['metadata'][$this->metadataCommercialOrderId]) { + if (isset($charge->metadata[$this->metadataCommercialOrderId])) { + if ('' === $charge->metadata[$this->metadataCommercialOrderId]) { $message = sprintf('%s is empty in Charge metadata.', $this->metadataCommercialOrderId); $this->logger->error($message); throw new \Exception($message, Response::HTTP_BAD_REQUEST); } + $metadataCommercialOrderId = $charge->metadata[$this->metadataCommercialOrderId]; - return $charge['metadata'][$this->metadataCommercialOrderId]; + if (!is_array($metadataCommercialOrderId)) { + $metadataCommercialOrderId = (array) $metadataCommercialOrderId; + } + + return implode('', $metadataCommercialOrderId); } // Fallback to linked payment intent to see if it contains the metadata @@ -298,15 +319,19 @@ private function findMiraklCommercialOrderId(\Stripe\Charge $charge): ?string if (is_string($paymentIntent)) { $paymentIntent = $this->stripeClient->paymentIntentRetrieve($paymentIntent); } - - if (isset($paymentIntent['metadata'][$this->metadataCommercialOrderId])) { - if ('' === $paymentIntent['metadata'][$this->metadataCommercialOrderId]) { + if (isset($paymentIntent->metadata[$this->metadataCommercialOrderId])) { + if ('' === $paymentIntent->metadata[$this->metadataCommercialOrderId]) { $message = sprintf('%s is empty in PaymentIntent.', $this->metadataCommercialOrderId); $this->logger->error($message); throw new \Exception($message, Response::HTTP_BAD_REQUEST); } + $metadataCommercialOrderId = $paymentIntent->metadata[$this->metadataCommercialOrderId]; + + if (!is_array($metadataCommercialOrderId)) { + $metadataCommercialOrderId = (array) $metadataCommercialOrderId; + } - return $paymentIntent['metadata'][$this->metadataCommercialOrderId]; + return implode('', $metadataCommercialOrderId); } } diff --git a/src/DTO/AccountMappingDTO.php b/src/DTO/AccountMappingDTO.php index 88b3fff9..0ce0846c 100644 --- a/src/DTO/AccountMappingDTO.php +++ b/src/DTO/AccountMappingDTO.php @@ -8,13 +8,16 @@ class AccountMappingDTO { /** * @var int + * * @App\Validator\MiraklShopId() + * * @Assert\NotNull */ private $miraklShopId; /** * @var string + * * @Assert\NotNull */ private $stripeUserId; diff --git a/src/Entity/AccountMapping.php b/src/Entity/AccountMapping.php index afab74a7..a8cf1e26 100644 --- a/src/Entity/AccountMapping.php +++ b/src/Entity/AccountMapping.php @@ -16,63 +16,68 @@ * "delete"={"path"="/mappings/{id}", "requirements"={"id"="\d+"}}, * } * ) + * * @ORM\Entity(repositoryClass="App\Repository\AccountMappingRepository") */ class AccountMapping { /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\Column(type="integer", unique=true) */ - private $miraklShopId; + private int $miraklShopId; /** * @ORM\Column(type="string", length=255, unique=true) */ - private $stripeAccountId; + private string $stripeAccountId; /** * @ORM\Column(type="string", length=255, nullable=true) */ - private $onboardingToken; + private ?string $onboardingToken = null; /** * @ORM\Column(type="boolean", options={"default" : false}) */ - private $payoutEnabled = false; + private bool $payoutEnabled = false; /** * @ORM\Column(type="boolean", options={"default" : false}) */ - private $payinEnabled = false; + private bool $payinEnabled = false; /** * @ORM\Column(type="boolean", options={"default" : false}) */ - private $ignored = false; + private bool $ignored = false; /** * @ORM\Column(type="string", length=255, nullable=true) */ - private $disabledReason; + private ?string $disabledReason; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="create") */ - private $creationDatetime; + private \DateTimeInterface $creationDatetime; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="update") */ - private $modificationDatetime; + private \DateTimeInterface $modificationDatetime; public function getId(): int { diff --git a/src/Entity/Config.php b/src/Entity/Config.php index 545af0e4..83b92b8a 100644 --- a/src/Entity/Config.php +++ b/src/Entity/Config.php @@ -17,20 +17,22 @@ class Config /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\Column(name="`key`", type="string", unique=true) */ - private $key; + private string $key; /** * @ORM\Column(type="string", nullable=true) */ - private $value; + private ?string $value = null; public static function getAvailableKeys(): array { @@ -42,26 +44,16 @@ public static function getAvailableKeys(): array ]; } - /** - * @return int - */ public function getId(): int { return $this->id; } - /** - * @return string - */ public function getKey(): string { return $this->key; } - /** - * @param string $key - * @return self - */ public function setKey(string $key): self { if (!in_array($key, self::getAvailableKeys())) { @@ -69,24 +61,19 @@ public function setKey(string $key): self } $this->key = $key; + return $this; } - /** - * @return string|null - */ public function getValue(): ?string { return $this->value; } - /** - * @param string|null $value - * @return self - */ public function setValue(?string $value): self { $this->value = $value; + return $this; } } diff --git a/src/Entity/MiraklOrder.php b/src/Entity/MiraklOrder.php index c31d9f97..aa9fe654 100644 --- a/src/Entity/MiraklOrder.php +++ b/src/Entity/MiraklOrder.php @@ -4,7 +4,7 @@ abstract class MiraklOrder { - protected $order; + protected array $order; public function __construct(array $order) { @@ -22,22 +22,38 @@ public function getCreationDateAsDateTime(): \DateTime } abstract public function getId(): string; + abstract public function getCommercialId(): string; + abstract public function getCreationDate(): string; + abstract public function getState(): string; + abstract public function getShopId(): int; + abstract public function getCustomerId(): string; + abstract public function getTransactionNumber(): string; abstract public function isValidated(): bool; + abstract public function isTaxIncluded(): bool; + abstract public function isPaid(): bool; + abstract public function isAborted(): bool; + abstract public function getAmountDue(): float; + abstract public function getAbortedAmount(): float; + abstract public function getOperatorCommission(): float; + abstract public function getRefundedOperatorCommission(StripeRefund $refund): float; + abstract public function getRefundedTax(StripeRefund $refund): float; + abstract public function getCurrency(): string; + abstract public function getOrderTaxTotal(): float; } diff --git a/src/Entity/MiraklPendingDebit.php b/src/Entity/MiraklPendingDebit.php index e20155c9..e6124419 100644 --- a/src/Entity/MiraklPendingDebit.php +++ b/src/Entity/MiraklPendingDebit.php @@ -4,7 +4,7 @@ abstract class MiraklPendingDebit { - protected $order; + protected array $order; public function __construct(array $order) { @@ -17,11 +17,16 @@ public function getOrder(): array } abstract public function getOrderId(): string; + abstract public function getCommercialId(): string; + abstract public function getCustomerId(): string; + abstract public function getTransactionNumber(): ?string; abstract public function isPaid(): bool; + abstract public function getAmountDue(): float; + abstract public function getCurrency(): string; } diff --git a/src/Entity/MiraklPendingRefund.php b/src/Entity/MiraklPendingRefund.php index 60dceb46..4cd59849 100644 --- a/src/Entity/MiraklPendingRefund.php +++ b/src/Entity/MiraklPendingRefund.php @@ -4,7 +4,7 @@ abstract class MiraklPendingRefund { - protected $order; + protected array $order; public function __construct(array $order) { @@ -17,10 +17,14 @@ public function getOrder(): array } abstract public function getId(): string; + abstract public function getOrderId(): string; + abstract public function getCommercialId(): string; + abstract public function getOrderLineId(): ?string; abstract public function getAmount(): float; + abstract public function getCurrency(): string; } diff --git a/src/Entity/MiraklProductOrder.php b/src/Entity/MiraklProductOrder.php index 65ef67f4..eba75378 100644 --- a/src/Entity/MiraklProductOrder.php +++ b/src/Entity/MiraklProductOrder.php @@ -45,13 +45,13 @@ public function isValidated(): bool 'STAGING', 'WAITING_ACCEPTANCE', 'WAITING_DEBIT', - 'WAITING_DEBIT_PAYMENT' + 'WAITING_DEBIT_PAYMENT', ]); } public function isTaxIncluded(): bool { - return isset($this->order['order_tax_mode']) && $this->order['order_tax_mode'] === 'TAX_INCLUDED'; + return isset($this->order['order_tax_mode']) && 'TAX_INCLUDED' === $this->order['order_tax_mode']; } public function isPaid(): bool @@ -130,6 +130,7 @@ public function getRefundedTax(StripeRefund $refund): float foreach ($line['refunds'] as $orderRefund) { if ($refund->getMiraklRefundId() === $orderRefund['id']) { $tax = $this->getRefundLineTaxes($orderRefund); + return $tax; } } @@ -150,7 +151,6 @@ protected function getRefundLineTaxes(array $refundLine): float return $taxes; } - public function getCurrency(): string { return $this->order['currency_iso_code']; @@ -193,6 +193,7 @@ public function getOrderTaxTotal(): float $amount += $this->getOrderLineOrderTaxes($orderLine); } } + return $amount; } @@ -203,6 +204,7 @@ protected function getOrderLineOrderTaxes(array $orderLine): float foreach ($allTaxes as $tax) { $taxes += (float) $tax['amount']; } + return $taxes; } } diff --git a/src/Entity/MiraklServiceOrder.php b/src/Entity/MiraklServiceOrder.php index c52de15b..82a7e33b 100644 --- a/src/Entity/MiraklServiceOrder.php +++ b/src/Entity/MiraklServiceOrder.php @@ -45,13 +45,13 @@ public function isValidated(): bool 'WAITING_SCORING', 'WAITING_ACCEPTANCE', 'WAITING_DEBIT', - 'WAITING_DEBIT_PAYMENT' + 'WAITING_DEBIT_PAYMENT', ]); } public function isTaxIncluded(): bool { - return isset($this->order['order_tax_mode']) && $this->order['order_tax_mode'] === 'TAX_INCLUDED'; + return isset($this->order['order_tax_mode']) && 'TAX_INCLUDED' === $this->order['order_tax_mode']; } public function isPaid(): bool @@ -114,7 +114,7 @@ public function getRefundedTax(StripeRefund $refund): float foreach ($this->order['refunds'] as $orderRefund) { if ($refund->getMiraklRefundId() === $orderRefund['id']) { if ($refund->getMiraklRefundId() === $orderRefund['id']) { - return $this->getRefundLineTaxes($orderRefund);//$orderRefund['commission_total_amount']; + return $this->getRefundLineTaxes($orderRefund); // $orderRefund['commission_total_amount']; } } } @@ -130,7 +130,6 @@ protected function getRefundLineTaxes(array $refundLine): float $taxes += (float) $tax['amount']; } - return $taxes; } @@ -148,6 +147,7 @@ public function getOrderTaxTotal(): float $taxes += (float) $tax['amount']; } } + return $taxes; } @@ -158,6 +158,7 @@ protected function getOrderLineOrderTaxes(array $orderLine): float foreach ($allTaxes as $tax) { $taxes += (float) $tax['amount']; } + return $taxes; } } diff --git a/src/Entity/MiraklServicePendingDebit.php b/src/Entity/MiraklServicePendingDebit.php index 32dd48dd..9a32cd5a 100644 --- a/src/Entity/MiraklServicePendingDebit.php +++ b/src/Entity/MiraklServicePendingDebit.php @@ -26,7 +26,7 @@ public function getTransactionNumber(): ?string public function isPaid(): bool { - return $this->order['state'] === 'OK'; + return 'OK' === $this->order['state']; } public function getAmountDue(): float diff --git a/src/Entity/MiraklServicePendingRefund.php b/src/Entity/MiraklServicePendingRefund.php index 4da64b37..48155c96 100644 --- a/src/Entity/MiraklServicePendingRefund.php +++ b/src/Entity/MiraklServicePendingRefund.php @@ -17,6 +17,7 @@ public function getOrderId(): string public function getCommercialId(): string { $orderId = $this->getOrderId(); + return substr($orderId, 0, strrpos($orderId, '-') ?: strlen($orderId)); } diff --git a/src/Entity/MiraklShop.php b/src/Entity/MiraklShop.php index f3f70868..e0deedfc 100644 --- a/src/Entity/MiraklShop.php +++ b/src/Entity/MiraklShop.php @@ -4,7 +4,7 @@ class MiraklShop { - protected $shop; + protected array $shop; public function __construct(array $shop) { @@ -26,7 +26,7 @@ public function getLastUpdatedDate(): string return $this->shop['last_updated_date']; } - public function getCustomFieldValue($code): ?string + public function getCustomFieldValue(string $code): ?string { foreach ($this->shop['shop_additional_fields'] as $field) { if ($field['code'] === $code) { diff --git a/src/Entity/PaymentMapping.php b/src/Entity/PaymentMapping.php index cc050c2d..51a330d1 100644 --- a/src/Entity/PaymentMapping.php +++ b/src/Entity/PaymentMapping.php @@ -16,84 +16,73 @@ class PaymentMapping /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\Column(type="string", nullable=true) */ - private $miraklCommercialOrderId; + private ?string $miraklCommercialOrderId; /** * @ORM\Column(type="string", unique=true) */ - private $stripeChargeId; + private string $stripeChargeId; /** * @ORM\Column(type="string") */ - private $status = self::TO_CAPTURE; + private string $status = self::TO_CAPTURE; /** * @ORM\Column(type="integer", nullable=true) */ - private $stripeAmount; + private ?int $stripeAmount; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="create") */ - private $creationDatetime; + private \DateTimeInterface $creationDatetime; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="update") */ - private $modificationDatetime; + private \DateTimeInterface $modificationDatetime; - /** - * @return int - */ public function getId(): int { return $this->id; } - /** - * @return string|null - */ public function getMiraklCommercialOrderId(): ?string { return $this->miraklCommercialOrderId; } - /** - * @param string|null $miraklCommercialOrderId - * @return self - */ public function setMiraklCommercialOrderId(?string $miraklCommercialOrderId): self { $this->miraklCommercialOrderId = $miraklCommercialOrderId; + return $this; } - /** - * @return string - */ public function getStripeChargeId(): string { return $this->stripeChargeId; } - /** - * @param string $stripeChargeId - * @return self - */ public function setStripeChargeId(string $stripeChargeId): self { $this->stripeChargeId = $stripeChargeId; + return $this; } @@ -119,15 +108,15 @@ public static function getAvailableStatus() /** * @param string $status - * @return self */ public function setStatus($status): self { - if (!in_array($status, self::getAvailableStatus(), true)) { + if (!in_array($status, (array) self::getAvailableStatus(), true)) { throw new \InvalidArgumentException('Invalid payment status'); } $this->status = $status; + return $this; } @@ -147,21 +136,15 @@ public function cancel() return $this->setStatus(self::CANCELED); } - /** - * @return int - */ - public function getStripeAmount(): int + public function getStripeAmount(): ?int { return $this->stripeAmount; } - /** - * @param int $stripeAmount - * @return self - */ public function setStripeAmount(int $stripeAmount): self { $this->stripeAmount = $stripeAmount; + return $this; } @@ -173,31 +156,22 @@ public function getCreationDatetime() return $this->creationDatetime; } - /** - * @param \DateTimeInterface $creationDatetime - * @return self - */ public function setCreationDatetime(\DateTimeInterface $creationDatetime): self { $this->creationDatetime = $creationDatetime; + return $this; } - /** - * @return \DateTimeInterface|null - */ public function getModificationDatetime(): ?\DateTimeInterface { return $this->modificationDatetime; } - /** - * @param \DateTimeInterface $modificationDatetime - * @return self - */ public function setModificationDatetime(\DateTimeInterface $modificationDatetime): self { $this->modificationDatetime = $modificationDatetime; + return $this; } } diff --git a/src/Entity/StripePayout.php b/src/Entity/StripePayout.php index fd889a8b..aa7e4fdc 100644 --- a/src/Entity/StripePayout.php +++ b/src/Entity/StripePayout.php @@ -15,6 +15,7 @@ * "get"={"path"="/payouts/{id}", "requirements"={"id"="\d+"}}, * } * ) + * * @ORM\Entity(repositoryClass="App\Repository\StripePayoutRepository") */ class StripePayout @@ -35,62 +36,66 @@ class StripePayout /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\ManyToOne(targetEntity="AccountMapping") */ - private $accountMapping; + private ?AccountMapping $accountMapping; /** * @ORM\Column(type="integer", nullable=true) */ - private $amount = 0; + private ?int $amount = 0; /** * @ORM\Column(type="string", nullable=true) */ - private $currency; + private ?string $currency; /** * @ORM\Column(type="integer", unique=true) */ - private $miraklInvoiceId; + private int $miraklInvoiceId; /** * @ORM\Column(type="string", nullable=true) */ - private $payoutId; + private ?string $payoutId = null; /** * @ORM\Column(type="string") */ - private $status; + private string $status; /** * @ORM\Column(type="string", length=1024, nullable=true) */ - private $statusReason; + private ?string $statusReason = null; /** * @ORM\Column(type="datetime", nullable=true) */ - private $miraklCreatedDate; + private ?\DateTimeInterface $miraklCreatedDate; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="create") */ - private $creationDatetime; + private \DateTimeInterface $creationDatetime; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="update") */ - private $modificationDatetime; + private \DateTimeInterface $modificationDatetime; public static function getAvailableStatus(): array { @@ -145,7 +150,7 @@ public function setAccountMapping(AccountMapping $accountMapping): self return $this; } - public function getAmount(): int + public function getAmount(): ?int { return $this->amount; } @@ -157,7 +162,7 @@ public function setAmount(int $amount): self return $this; } - public function getCurrency(): string + public function getCurrency(): ?string { return $this->currency; } @@ -220,7 +225,7 @@ public function setStatusReason(?string $statusReason): self return $this; } - public function getMiraklCreatedDate(): \DateTimeInterface + public function getMiraklCreatedDate(): ?\DateTimeInterface { return $this->miraklCreatedDate; } diff --git a/src/Entity/StripeRefund.php b/src/Entity/StripeRefund.php index e4c49936..67a07bf0 100644 --- a/src/Entity/StripeRefund.php +++ b/src/Entity/StripeRefund.php @@ -16,6 +16,7 @@ * "get"={"path"="/refunds/{id}", "requirements"={"id"="\d+"}}, * } * ) + * * @ORM\Entity(repositoryClass="App\Repository\StripeRefundRepository") */ class StripeRefund @@ -43,82 +44,86 @@ class StripeRefund /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\Column(name="type", type="string") */ - private $type; + private string $type; /** * @ORM\Column(type="integer") */ - private $amount; + private int $amount; /** * @ORM\Column(type="string") */ - private $currency; + private string $currency; /** * @ORM\Column(type="string", unique=true) */ - private $miraklRefundId; + private string $miraklRefundId; /** * @ORM\Column(type="string", nullable=true) */ - private $miraklCommercialOrderId; + private ?string $miraklCommercialOrderId; /** * @ORM\Column(type="string") */ - private $miraklOrderId; + private string $miraklOrderId; /** * @ORM\Column(type="string", nullable=true) */ - private $miraklOrderLineId; + private ?string $miraklOrderLineId; /** * @ORM\Column(type="string", nullable=true) */ - private $transactionId; + private ?string $transactionId = null; /** * @ORM\Column(type="string", nullable=true) */ - private $stripeRefundId; + private ?string $stripeRefundId = null; /** * @ORM\Column(type="string") */ - private $status; + private string $status; /** * @ORM\Column(type="string", length=1024, nullable=true) */ - private $statusReason; + private ?string $statusReason = null; /** * @ORM\Column(type="datetime", nullable=true) */ - private $miraklValidationTime; + private ?\DateTimeInterface $miraklValidationTime = null; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="create") */ - private $creationDatetime; + private \DateTimeInterface $creationDatetime; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="update") */ - private $modificationDatetime; + private \DateTimeInterface $modificationDatetime; public static function getAvailableStatus(): array { @@ -127,14 +132,14 @@ public static function getAvailableStatus(): array self::REFUND_ABORTED, self::REFUND_PENDING, self::REFUND_FAILED, - self::REFUND_CREATED + self::REFUND_CREATED, ]; } public static function getInvalidStatus(): array { return [ - self::REFUND_FAILED + self::REFUND_FAILED, ]; } @@ -142,7 +147,7 @@ public static function getRetriableStatus(): array { return [ self::REFUND_FAILED, - self::REFUND_ON_HOLD + self::REFUND_ON_HOLD, ]; } @@ -150,7 +155,7 @@ public static function getAvailableTypes(): array { return [ self::REFUND_PRODUCT_ORDER, - self::REFUND_SERVICE_ORDER + self::REFUND_SERVICE_ORDER, ]; } @@ -265,12 +270,14 @@ public function getMiraklOrderLineId() } /** - * @param mixed $miraklOrderLineId + * @param string $miraklOrderLineId + * * @return StripeRefund */ - public function setMiraklOrderLineId($miraklOrderLineId) + public function setMiraklOrderLineId(string|null $miraklOrderLineId) { $this->miraklOrderLineId = $miraklOrderLineId; + return $this; } diff --git a/src/Entity/StripeTransfer.php b/src/Entity/StripeTransfer.php index 5f775846..7ef4d0d9 100644 --- a/src/Entity/StripeTransfer.php +++ b/src/Entity/StripeTransfer.php @@ -2,8 +2,8 @@ namespace App\Entity; -use ApiPlatform\Core\Annotation\ApiResource; use ApiPlatform\Core\Annotation\ApiFilter; +use ApiPlatform\Core\Annotation\ApiResource; use ApiPlatform\Core\Bridge\Doctrine\Orm\Filter\SearchFilter; use App\Exception\InvalidArgumentException; use Doctrine\ORM\Mapping as ORM; @@ -19,13 +19,17 @@ * "get"={"path"="/transfers/{id}", "requirements"={"id"="\d+"}}, * } * ) + * * @ApiFilter(SearchFilter::class, properties={"miraklId":"exact" }) + * * @ORM\Table( * uniqueConstraints={ + * * @UniqueConstraint(name="transfer", * columns={"type", "mirakl_id"}) * } * ) + * * @ORM\Entity(repositoryClass="App\Repository\StripeTransferRepository") */ class StripeTransfer @@ -67,72 +71,76 @@ class StripeTransfer /** * @ORM\Id() + * * @ORM\GeneratedValue() + * * @ORM\Column(type="integer") */ - private $id; + private int $id; /** * @ORM\Column(name="mirakl_id", type="string") */ - private $miraklId; + private string $miraklId; /** * @ORM\Column(name="type", type="string") */ - private $type; + private string $type; /** * @ORM\ManyToOne(targetEntity="AccountMapping") */ - private $accountMapping; + private ?AccountMapping $accountMapping; /** * @ORM\Column(type="string", nullable=true) */ - private $transferId; + private ?string $transferId = null; /** * @ORM\Column(type="string", nullable=true) */ - private $transactionId; + private ?string $transactionId = null; /** * @ORM\Column(type="integer", nullable=true) */ - private $amount; + private ?int $amount; /** * @ORM\Column(type="string") */ - private $status; + private string $status; /** * @ORM\Column(type="string", length=1024, nullable=true) */ - private $statusReason; + private ?string $statusReason = null; /** * @ORM\Column(type="string", nullable=true) */ - private $currency; + private ?string $currency; /** * @ORM\Column(type="datetime", nullable=true) */ - private $miraklCreatedDate; + private ?\DateTimeInterface $miraklCreatedDate = null; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="create") */ - private $creationDatetime; + private \DateTimeInterface $creationDatetime; /** * @ORM\Column(type="datetime", options={"default": "CURRENT_TIMESTAMP"}) + * * @Gedmo\Timestampable(on="update") */ - private $modificationDatetime; + private \DateTimeInterface $modificationDatetime; public static function getAvailableStatus(): array { @@ -232,9 +240,9 @@ public function setType(string $type): self return $this; } - public function getAccountMapping(): ?AccountMapping + public function getAccountMapping(): AccountMapping|null { - return $this->accountMapping; + return $this->accountMapping ?? null; } public function setAccountMapping(AccountMapping $accountMapping): self @@ -288,9 +296,7 @@ public function getStatus(): string public function setStatus(string $status): self { if (!in_array($status, self::getAvailableStatus())) { - throw new InvalidArgumentException( - 'Invalid order status. Input was: ' . $status - ); + throw new InvalidArgumentException('Invalid order status. Input was: '.$status); } $this->status = $status; diff --git a/src/EventListener/ExceptionSubscriber.php b/src/EventListener/ExceptionSubscriber.php index 484647b5..5ce6b99e 100644 --- a/src/EventListener/ExceptionSubscriber.php +++ b/src/EventListener/ExceptionSubscriber.php @@ -2,17 +2,17 @@ namespace App\EventListener; +use Doctrine\DBAL\Exception\UniqueConstraintViolationException; use Stripe\Exception\PermissionException; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\Event\ExceptionEvent; -use Doctrine\DBAL\Exception\UniqueConstraintViolationException; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\Serializer\Exception\NotEncodableValueException; class ExceptionSubscriber implements EventSubscriberInterface { - public function onKernelException(ExceptionEvent $event) + public function onKernelException(ExceptionEvent $event): void { $e = $event->getThrowable(); if ($e instanceof NotEncodableValueException) { @@ -31,6 +31,9 @@ public function onKernelException(ExceptionEvent $event) } } + /** + * @return string[] + */ public static function getSubscribedEvents() { return [ diff --git a/src/EventListener/OverrideDefaultHost.php b/src/EventListener/OverrideDefaultHost.php index 3cc90496..59c17a72 100644 --- a/src/EventListener/OverrideDefaultHost.php +++ b/src/EventListener/OverrideDefaultHost.php @@ -25,13 +25,16 @@ public function __construct(RouterInterface $router, string $baseHostOverride) $this->baseHostOverride = $baseHostOverride; } - public function onKernelRequest(RequestEvent $event) + public function onKernelRequest(RequestEvent $event): void { - if ($event->isMasterRequest() && '' !== $this->baseHostOverride) { + if ($event->isMainRequest() && '' !== $this->baseHostOverride) { $this->router->getContext()->setHost($this->baseHostOverride); } } + /** + * @return array[] + */ public static function getSubscribedEvents() { return [ diff --git a/src/EventListener/SendFailedMessageToAlertingQueue.php b/src/EventListener/SendFailedMessageToAlertingQueue.php index ca3476e1..d0316edc 100644 --- a/src/EventListener/SendFailedMessageToAlertingQueue.php +++ b/src/EventListener/SendFailedMessageToAlertingQueue.php @@ -6,7 +6,6 @@ use App\Message\NotificationFailedMessage; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; -use Symfony\Component\Debug\Exception\FlattenException; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent; use Symfony\Component\Messenger\Exception\HandlerFailedException; @@ -16,7 +15,7 @@ class SendFailedMessageToAlertingQueue implements EventSubscriberInterface, Logg { use LoggerAwareTrait; - private const NOTIY_OF_FAILED_WEBHOOK = 'operator_http_notification_failed'; + // private const NOTIY_OF_FAILED_WEBHOOK = 'operator_http_notification_failed'; /** * @var MessageBusInterface */ @@ -33,7 +32,7 @@ public function __construct(MessageBusInterface $messageBus, bool $endpointDownM $this->endpointDownMailNotification = $endpointDownMailNotification; } - public function onMessageFailed(WorkerMessageFailedEvent $event) + public function onMessageFailed(WorkerMessageFailedEvent $event): void { if (!$this->endpointDownMailNotification || $event->willRetry()) { return; @@ -52,6 +51,9 @@ public function onMessageFailed(WorkerMessageFailedEvent $event) $this->messageBus->dispatch(new NotificationFailedMessage($throwable, $envelope->getMessage())); } + /** + * @return array[] + */ public static function getSubscribedEvents() { return [ diff --git a/src/EventListener/SendFailedOperationToAlertingQueue.php b/src/EventListener/SendFailedOperationToAlertingQueue.php index 6af083f4..19dd8914 100644 --- a/src/EventListener/SendFailedOperationToAlertingQueue.php +++ b/src/EventListener/SendFailedOperationToAlertingQueue.php @@ -3,11 +3,11 @@ namespace App\EventListener; use App\Entity\StripePayout; -use App\Entity\StripeTransfer; use App\Entity\StripeRefund; +use App\Entity\StripeTransfer; use App\Message\PayoutFailedMessage; -use App\Message\TransferFailedMessage; use App\Message\RefundFailedMessage; +use App\Message\TransferFailedMessage; use Doctrine\Persistence\Event\LifecycleEventArgs; use Symfony\Component\Messenger\MessageBusInterface; @@ -23,17 +23,17 @@ public function __construct(MessageBusInterface $bus) $this->bus = $bus; } - public function postPersist(LifecycleEventArgs $args) + public function postPersist(LifecycleEventArgs $args): void { $this->dispatchFailedOperation($args); } - public function postUpdate(LifecycleEventArgs $args) + public function postUpdate(LifecycleEventArgs $args): void { $this->dispatchFailedOperation($args); } - private function dispatchFailedOperation(LifecycleEventArgs $args) + private function dispatchFailedOperation(LifecycleEventArgs $args): void { $entity = $args->getObject(); if ($entity instanceof StripePayout && in_array($entity->getStatus(), StripePayout::getInvalidStatus())) { diff --git a/src/Factory/EmailFactory.php b/src/Factory/EmailFactory.php index 8daf01df..a03c1d63 100644 --- a/src/Factory/EmailFactory.php +++ b/src/Factory/EmailFactory.php @@ -22,8 +22,6 @@ public function __construct(string $fromEmail, string $toEmail, string $subject) /** * Creates an Email template that will be used to send the log message. - * - * @return Email */ public function createMessage(): Email { diff --git a/src/Factory/StripePayoutFactory.php b/src/Factory/StripePayoutFactory.php index 0543de32..358082d6 100644 --- a/src/Factory/StripePayoutFactory.php +++ b/src/Factory/StripePayoutFactory.php @@ -19,20 +19,12 @@ class StripePayoutFactory implements LoggerAwareInterface */ private $accountMappingRepository; - /** - * @var MiraklClient - */ - public function __construct( AccountMappingRepository $accountMappingRepository ) { $this->accountMappingRepository = $accountMappingRepository; } - /** - * @param array $invoice - * @return StripePayout - */ public function createFromInvoice(array $invoice, MiraklClient $mclient): StripePayout { $payout = new StripePayout(); @@ -44,11 +36,6 @@ public function createFromInvoice(array $invoice, MiraklClient $mclient): Stripe return $this->updateFromInvoice($payout, $invoice, $mclient); } - /** - * @param StripePayout $payout - * @param array $invoice - * @return StripePayout - */ public function updateFromInvoice(StripePayout $payout, array $invoice, MiraklClient $mclient): StripePayout { // Payout already created @@ -71,7 +58,7 @@ public function updateFromInvoice(StripePayout $payout, array $invoice, MiraklCl ); } catch (InvalidArgumentException $e) { switch ($e->getCode()) { - // Problem is final, let's abort + // Problem is final, let's abort case 10: return $this->abortPayout($payout, $e->getMessage()); // Problem is just temporary, let's put on hold @@ -84,97 +71,65 @@ public function updateFromInvoice(StripePayout $payout, array $invoice, MiraklCl return $payout->setStatus(StripePayout::PAYOUT_PENDING); } - /** - * @param int $shopId - * @return AccountMapping - */ private function getAccountMapping(int $shopId): AccountMapping { if (!$shopId) { - throw new InvalidArgumentException( - StripePayout::PAYOUT_STATUS_REASON_NO_SHOP_ID, - 10 - ); + throw new InvalidArgumentException(StripePayout::PAYOUT_STATUS_REASON_NO_SHOP_ID, 10); } $mapping = $this->accountMappingRepository->findOneBy([ - 'miraklShopId' => $shopId + 'miraklShopId' => $shopId, ]); if (!$mapping) { - throw new InvalidArgumentException(sprintf( - StripePayout::PAYOUT_STATUS_REASON_SHOP_NOT_READY, - $shopId - ), 20); + throw new InvalidArgumentException(sprintf(StripePayout::PAYOUT_STATUS_REASON_SHOP_NOT_READY, $shopId), 20); } if (!$mapping->getPayoutEnabled()) { - throw new InvalidArgumentException(sprintf( - StripePayout::PAYOUT_STATUS_REASON_SHOP_PAYOUT_DISABLED, - $shopId - ), 20); + throw new InvalidArgumentException(sprintf(StripePayout::PAYOUT_STATUS_REASON_SHOP_PAYOUT_DISABLED, $shopId), 20); } return $mapping; } - /** - * @param array $invoice - * @return int - */ private function getInvoiceAmount(array $invoice, MiraklClient $mclient): int { $amount = $invoice['summary']['amount_transferred'] ?? 0; - $transactions = $mclient->getTransactionsForInvoce($invoice['invoice_id']); - $total_tax = $this->findTotalOrderTax($transactions); + $transactions = $mclient->getTransactionsForInvoce($invoice['invoice_id']); + $total_tax = $this->findTotalOrderTax($transactions); $amount = $amount - $total_tax; $amount = gmp_intval((string) ($amount * 100)); if ($amount <= 0) { - throw new InvalidArgumentException(sprintf( - StripePayout::PAYOUT_STATUS_REASON_INVALID_AMOUNT, - $amount - )); + throw new InvalidArgumentException(sprintf(StripePayout::PAYOUT_STATUS_REASON_INVALID_AMOUNT, $amount)); } return $amount; } - /** - * @param StripePayout $payout - * @param string $reason - * @return StripePayout - */ private function putPayoutOnHold(StripePayout $payout, string $reason): StripePayout { $this->logger->info( - 'Payout on hold: ' . $reason, + 'Payout on hold: '.$reason, ['invoice_id' => $payout->getMiraklInvoiceId()] ); $payout->setStatusReason($reason); + return $payout->setStatus(StripePayout::PAYOUT_ON_HOLD); } - /** - * @param StripePayout $payout - * @param string $reason - * @return StripePayout - */ private function abortPayout(StripePayout $payout, string $reason): StripePayout { $this->logger->info( - 'Payout aborted: ' . $reason, + 'Payout aborted: '.$reason, ['invoice_id' => $payout->getMiraklInvoiceId()] ); $payout->setStatusReason($reason); + return $payout->setStatus(StripePayout::PAYOUT_ABORTED); } - /** - * @param StripePayout $payout - * @return StripePayout - */ private function markPayoutAsCreated(StripePayout $payout): StripePayout { $this->logger->info( @@ -183,17 +138,19 @@ private function markPayoutAsCreated(StripePayout $payout): StripePayout ); $payout->setStatusReason(null); + return $payout->setStatus(StripePayout::PAYOUT_CREATED); } - private function findTotalOrderTax($transactions) + private function findTotalOrderTax(array $transactions): float { - $taxes=0; + $taxes = 0; foreach ($transactions as $trx) { - if ($trx['type']=='ORDER_AMOUNT_TAX') { + if ('ORDER_AMOUNT_TAX' == $trx['type']) { $taxes += (float) $trx['amount']; } } + return $taxes; } } diff --git a/src/Factory/StripeRefundFactory.php b/src/Factory/StripeRefundFactory.php index c82080e0..6dd39f10 100644 --- a/src/Factory/StripeRefundFactory.php +++ b/src/Factory/StripeRefundFactory.php @@ -2,14 +2,12 @@ namespace App\Factory; -use App\Entity\AccountMapping; use App\Entity\MiraklPendingRefund; use App\Entity\MiraklServicePendingRefund; use App\Entity\StripeRefund; use App\Exception\InvalidArgumentException; use App\Repository\PaymentMappingRepository; use App\Repository\StripeTransferRepository; -use App\Service\MiraklClient; use App\Service\StripeClient; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; @@ -45,10 +43,6 @@ public function __construct( $this->stripeClient = $stripeClient; } - /** - * @param MiraklPendingRefund $pendingRefund - * @return StripeRefund - */ public function createFromOrderRefund(MiraklPendingRefund $pendingRefund): StripeRefund { if (is_a($pendingRefund, MiraklServicePendingRefund::class)) { @@ -69,10 +63,6 @@ public function createFromOrderRefund(MiraklPendingRefund $pendingRefund): Strip return $this->updateRefund($refund); } - /** - * @param StripeRefund $refund - * @return StripeRefund - */ public function updateRefund(StripeRefund $refund): StripeRefund { // Find charge ID @@ -99,7 +89,7 @@ public function updateRefund(StripeRefund $refund): StripeRefund ); } catch (InvalidArgumentException $e) { switch ($e->getCode()) { - // Problem is final, let's abort + // Problem is final, let's abort case 10: return $this->abortRefund($refund, $e->getMessage()); // Problem is just temporary, let's put on hold @@ -112,10 +102,6 @@ public function updateRefund(StripeRefund $refund): StripeRefund return $refund->setStatus(StripeRefund::REFUND_PENDING); } - /** - * @param StripeRefund $refund - * @return string - */ private function findTransactionId(StripeRefund $refund): string { // Check for a transfer from the payment split workflow @@ -139,15 +125,9 @@ private function findTransactionId(StripeRefund $refund): string } } - throw new InvalidArgumentException( - StripeRefund::REFUND_STATUS_REASON_NO_CHARGE_ID - ); + throw new InvalidArgumentException(StripeRefund::REFUND_STATUS_REASON_NO_CHARGE_ID); } - /** - * @param string $trid - * @return void - */ private function checkTransactionStatus(string $trid): void { // Transaction number is a PaymentIntent @@ -159,18 +139,12 @@ private function checkTransactionStatus(string $trid): void $ch = $pi->charges->data[0] ?? null; assert($ch instanceof Charge); $this->checkChargeStatus($ch); + return; case 'canceled': - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_CANCELED, - $trid - ), 10); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_CANCELED, $trid), 10); default: - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, - $trid, - $pi->status - ), 20); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, $trid, $pi->status), 20); } } @@ -178,57 +152,35 @@ private function checkTransactionStatus(string $trid): void if (0 === strpos($trid, 'ch_') || 0 === strpos($trid, 'py_')) { $ch = $this->stripeClient->chargeRetrieve($trid); $this->checkChargeStatus($ch); + return; } } - /** - * @param Charge $ch - * @return void - */ private function checkChargeStatus(Charge $ch): void { switch ($ch->status) { case 'succeeded': if (false === $ch->captured) { - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, - $ch->id, - $ch->status . ' (not captured)' - ), 20); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, $ch->id, $ch->status.' (not captured)'), 20); } if (true === $ch->refunded) { - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_CANCELED, - $ch->id - ), 10); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_CANCELED, $ch->id), 10); } return; case 'failed': - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_FAILED, - $ch->id - ), 10); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_FAILED, $ch->id), 10); default: - throw new InvalidArgumentException(sprintf( - StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, - $ch->id, - $ch->status - ), 20); + throw new InvalidArgumentException(sprintf(StripeRefund::REFUND_STATUS_REASON_PAYMENT_NOT_READY, $ch->id, $ch->status), 20); } } - /** - * @param StripeRefund $refund - * @param string $reason - * @return StripeRefund - */ private function putRefundOnHold(StripeRefund $refund, string $reason): StripeRefund { $this->logger->info( - 'Refund on hold: ' . $reason, + 'Refund on hold: '.$reason, ['refund_id' => $refund->getMiraklRefundId()] ); @@ -237,15 +189,10 @@ private function putRefundOnHold(StripeRefund $refund, string $reason): StripeRe ->setStatusReason(substr($reason, 0, 1024)); } - /** - * @param StripeRefund $refund - * @param string $reason - * @return StripeRefund - */ private function abortRefund(StripeRefund $refund, string $reason): StripeRefund { $this->logger->info( - 'Refund aborted: ' . $reason, + 'Refund aborted: '.$reason, ['refund_id' => $refund->getMiraklRefundId()] ); diff --git a/src/Factory/StripeTransferFactory.php b/src/Factory/StripeTransferFactory.php index 771f7171..ff7ab52c 100644 --- a/src/Factory/StripeTransferFactory.php +++ b/src/Factory/StripeTransferFactory.php @@ -5,9 +5,9 @@ use App\Entity\AccountMapping; use App\Entity\MiraklOrder; use App\Entity\MiraklPendingDebit; +use App\Entity\MiraklPendingRefund; use App\Entity\MiraklProductOrder; use App\Entity\MiraklServiceOrder; -use App\Entity\MiraklPendingRefund; use App\Entity\StripeRefund; use App\Entity\StripeTransfer; use App\Exception\InvalidArgumentException; @@ -58,6 +58,7 @@ class StripeTransferFactory implements LoggerAwareInterface private $stripeTaxAccount; private $taxOrderPostfix; + public function __construct( AccountMappingRepository $accountMappingRepository, PaymentMappingRepository $paymentMappingRepository, @@ -78,10 +79,6 @@ public function __construct( $this->taxOrderPostfix = $taxOrderPostfix; } - /** - * @param MiraklOrder $order - * @return StripeTransfer - */ public function createFromOrder(MiraklOrder $order, MiraklPendingDebit $pendingDebit = null): StripeTransfer { if (is_a($order, MiraklServiceOrder::class)) { @@ -114,12 +111,7 @@ public function createFromOrderForTax(MiraklOrder $order, MiraklPendingDebit $pe return $this->updateFromOrder($transfer, $order, $pendingDebit, true); } - /** - * @param StripeTransfer $transfer - * @param MiraklOrder $order - * @return StripeTransfer - */ - public function updateFromOrder(StripeTransfer $transfer, MiraklOrder $order, MiraklPendingDebit $pendingDebit = null, $isForTax = false): StripeTransfer + public function updateFromOrder(StripeTransfer $transfer, MiraklOrder $order, MiraklPendingDebit $pendingDebit = null, bool $isForTax = false): StripeTransfer { // Transfer already created if ($transfer->getTransferId()) { @@ -128,13 +120,12 @@ public function updateFromOrder(StripeTransfer $transfer, MiraklOrder $order, Mi // Shop must have a Stripe account try { - - //account mapping for the original shop + // account mapping for the original shop $shop_accountMapping = $this->getAccountMapping($order->getShopId()); if ($isForTax) { $taxAccountMapping = $this->getAccountMappingByAccountId($this->stripeTaxAccount); - }; + } if (!$isForTax) { $accountMapping = $shop_accountMapping; @@ -149,6 +140,7 @@ public function updateFromOrder(StripeTransfer $transfer, MiraklOrder $order, Mi if ($shop_accountMapping->getIgnored()) { $shopId = $shop_accountMapping->getMiraklShopId(); + return $this->ignoreTransfer($transfer, "Shop $shopId is ignored"); } @@ -249,10 +241,6 @@ public function updateFromOrder(StripeTransfer $transfer, MiraklOrder $order, Mi return $transfer->setStatus(StripeTransfer::TRANSFER_PENDING); } - /** - * @param MiraklPendingRefund $orderRefund - * @return StripeTransfer - */ public function createFromOrderRefund(MiraklPendingRefund $orderRefund): StripeTransfer { $transfer = new StripeTransfer(); @@ -271,11 +259,7 @@ public function createFromOrderRefundForTax(MiraklPendingRefund $orderRefund): S return $this->updateOrderRefundTransfer($transfer, true); } - /** - * @param StripeTransfer $transfer - * @return StripeTransfer - */ - public function updateOrderRefundTransfer(StripeTransfer $transfer, $isForTax = false): StripeTransfer + public function updateOrderRefundTransfer(StripeTransfer $transfer, bool $isForTax = false): StripeTransfer { // Transfer already reversed if ($transfer->getTransferId()) { @@ -285,7 +269,7 @@ public function updateOrderRefundTransfer(StripeTransfer $transfer, $isForTax = // Check corresponding StripeRefund $refund = null; try { - $refund = $this->findRefundFromRefundId(str_replace($this->taxOrderPostfix, "", $transfer->getMiraklId())); + $refund = $this->findRefundFromRefundId(str_replace($this->taxOrderPostfix, '', $transfer->getMiraklId())); // Fetch transfer to be reversed $orderIds = [$refund->getMiraklOrderId()]; @@ -345,11 +329,6 @@ public function updateOrderRefundTransfer(StripeTransfer $transfer, $isForTax = return $transfer->setStatus(StripeTransfer::TRANSFER_PENDING); } - /** - * @param array $invoice - * @param string $type - * @return StripeTransfer - */ public function createFromInvoice(array $invoice, string $type): StripeTransfer { $transfer = new StripeTransfer(); @@ -368,12 +347,6 @@ public function createFromInvoice(array $invoice, string $type): StripeTransfer return $this->updateFromInvoice($transfer, $invoice, $type); } - /** - * @param StripeTransfer $transfer - * @param array $invoice - * @param string $type - * @return StripeTransfer - */ public function updateFromInvoice(StripeTransfer $transfer, array $invoice, string $type): StripeTransfer { // Transfer already created @@ -407,17 +380,10 @@ public function updateFromInvoice(StripeTransfer $transfer, array $invoice, stri return $transfer->setStatus(StripeTransfer::TRANSFER_PENDING); } - /** - * @param int $shopId - * @return AccountMapping - */ private function getAccountMapping(int $shopId): AccountMapping { if (!$shopId) { - throw new InvalidArgumentException( - StripeTransfer::TRANSFER_STATUS_REASON_NO_SHOP_ID, - 10 - ); + throw new InvalidArgumentException(StripeTransfer::TRANSFER_STATUS_REASON_NO_SHOP_ID, 10); } $mapping = $this->accountMappingRepository->findOneBy([ @@ -425,19 +391,12 @@ private function getAccountMapping(int $shopId): AccountMapping ]); if (!$mapping) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_SHOP_NOT_READY, - $shopId - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_SHOP_NOT_READY, $shopId), 20); } return $mapping; } - /** - * @param string $trid - * @return string|null - */ private function getSourceTransactionId(string $trid): ?string { $transactionId = null; @@ -453,16 +412,9 @@ private function getSourceTransactionId(string $trid): ?string } break; case 'canceled': - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_CANCELED, - $trid - ), 10); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_CANCELED, $trid), 10); default: - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, - $trid, - $pi->status - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, $trid, $pi->status), 20); } } elseif (0 === strpos($trid, 'ch_') || 0 === strpos($trid, 'py_')) { // Transaction number is a Charge @@ -473,48 +425,26 @@ private function getSourceTransactionId(string $trid): ?string return $transactionId; } - /** - * @param Charge $ch - * @return string - */ private function getSourceTransactionIdFromCharge(Charge $ch): string { switch ($ch->status) { case 'succeeded': if (false === $ch->captured) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, - $ch->id, - $ch->status . ' (not captured)' - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, $ch->id, $ch->status.' (not captured)'), 20); } if (true === $ch->refunded) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_CANCELED, - $ch->id - ), 10); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_CANCELED, $ch->id), 10); } return $ch->id; case 'failed': - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_FAILED, - $ch->id - ), 10); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_FAILED, $ch->id), 10); default: - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, - $ch->id, - $ch->status - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_PAYMENT_NOT_READY, $ch->id, $ch->status), 20); } } - /** - * @param string $refundId - * @return StripeRefund - */ private function findRefundFromRefundId(string $refundId): StripeRefund { $refund = current($this->stripeRefundRepository->findRefundsByRefundIds( @@ -522,10 +452,7 @@ private function findRefundFromRefundId(string $refundId): StripeRefund )); if (!$refund) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_REFUND_NOT_FOUND, - $refundId - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_REFUND_NOT_FOUND, $refundId), 20); } switch ($refund->getStatus()) { @@ -533,52 +460,33 @@ private function findRefundFromRefundId(string $refundId): StripeRefund // Perfect return $refund; case StripeRefund::REFUND_ABORTED: - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_ORDER_REFUND_ABORTED, - $refundId - ), 10); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_ORDER_REFUND_ABORTED, $refundId), 10); default: - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_REFUND_NOT_VALIDATED, - $refundId - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_REFUND_NOT_VALIDATED, $refundId), 20); } } - /** - * @param array $invoice - * @param string $type - * @return int - */ private function getInvoiceAmount(array $invoice, string $type): int { static $typeToKey = [ StripeTransfer::TRANSFER_SUBSCRIPTION => 'total_subscription_incl_tax', StripeTransfer::TRANSFER_EXTRA_CREDITS => 'total_other_credits_incl_tax', - StripeTransfer::TRANSFER_EXTRA_INVOICES => 'total_other_invoices_incl_tax' + StripeTransfer::TRANSFER_EXTRA_INVOICES => 'total_other_invoices_incl_tax', ]; $amount = $invoice['summary'][$typeToKey[$type]] ?? 0; $amount = abs(gmp_intval((string) ($amount * 100))); if ($amount <= 0) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_INVALID_AMOUNT, - $amount - )); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_INVALID_AMOUNT, $amount)); } return $amount; } - /** - * @param StripeTransfer $transfer - * @param string $reason - * @return StripeTransfer - */ private function putTransferOnHold(StripeTransfer $transfer, string $reason): StripeTransfer { $this->logger->info( - 'Transfer on hold: ' . $reason, + 'Transfer on hold: '.$reason, ['order_id' => $transfer->getMiraklId()] ); @@ -587,15 +495,10 @@ private function putTransferOnHold(StripeTransfer $transfer, string $reason): St ->setStatusReason(substr($reason, 0, 1024)); } - /** - * @param StripeTransfer $transfer - * @param string $reason - * @return StripeTransfer - */ private function abortTransfer(StripeTransfer $transfer, string $reason): StripeTransfer { $this->logger->info( - 'Transfer aborted: ' . $reason, + 'Transfer aborted: '.$reason, ['order_id' => $transfer->getMiraklId()] ); @@ -604,14 +507,10 @@ private function abortTransfer(StripeTransfer $transfer, string $reason): Stripe ->setStatusReason(substr($reason, 0, 1024)); } - /** - * @param StripeTransfer $transfer - * @return StripeTransfer - */ private function ignoreTransfer(StripeTransfer $transfer, string $reason): StripeTransfer { $this->logger->info( - 'Transfer ignored: ' . $reason, + 'Transfer ignored: '.$reason, ['order_id' => $transfer->getMiraklId()] ); @@ -620,10 +519,6 @@ private function ignoreTransfer(StripeTransfer $transfer, string $reason): Strip ->setStatusReason(substr($reason, 0, 1024)); } - /** - * @param StripeTransfer $transfer - * @return StripeTransfer - */ private function markTransferAsCreated(StripeTransfer $transfer): StripeTransfer { $this->logger->info( @@ -636,26 +531,16 @@ private function markTransferAsCreated(StripeTransfer $transfer): StripeTransfer ->setStatusReason(null); } - /** - * @param string $stripeAccountId - * @return AccountMapping - */ private function getAccountMappingByAccountId(string $stripeAccountId): AccountMapping { if (!$stripeAccountId) { - throw new InvalidArgumentException( - StripeTransfer::TRANSFER_STATUS_REASON_NO_ACCOUNT_ID, - 10 - ); + throw new InvalidArgumentException(StripeTransfer::TRANSFER_STATUS_REASON_NO_ACCOUNT_ID, 10); } $mapping = $this->accountMappingRepository->findOneByStripeAccountId($stripeAccountId); if (!$mapping) { - throw new InvalidArgumentException(sprintf( - StripeTransfer::TRANSFER_STATUS_REASON_ACCOUNT_NOT_FOUND, - $stripeAccountId - ), 20); + throw new InvalidArgumentException(sprintf(StripeTransfer::TRANSFER_STATUS_REASON_ACCOUNT_NOT_FOUND, $stripeAccountId), 20); } return $mapping; diff --git a/src/Handler/CancelPendingPaymentHandler.php b/src/Handler/CancelPendingPaymentHandler.php index 62a8cefa..c54ce81f 100644 --- a/src/Handler/CancelPendingPaymentHandler.php +++ b/src/Handler/CancelPendingPaymentHandler.php @@ -4,7 +4,6 @@ use App\Entity\PaymentMapping; use App\Message\CancelPendingPaymentMessage; -use App\Message\CapturePendingPaymentMessage; use App\Repository\PaymentMappingRepository; use App\Service\StripeClient; use Psr\Log\LoggerAwareInterface; @@ -34,7 +33,7 @@ public function __construct( $this->paymentMappingRepository = $paymentMappingRepository; } - public function __invoke(CancelPendingPaymentMessage $message) + public function __invoke(CancelPendingPaymentMessage $message): void { $paymentMapping = $this->paymentMappingRepository->findOneBy([ 'id' => $message->getPaymentMappingId(), diff --git a/src/Handler/CapturePendingPaymentHandler.php b/src/Handler/CapturePendingPaymentHandler.php index 401a3e6a..123d03c9 100644 --- a/src/Handler/CapturePendingPaymentHandler.php +++ b/src/Handler/CapturePendingPaymentHandler.php @@ -33,7 +33,7 @@ public function __construct( $this->paymentMappingRepository = $paymentMappingRepository; } - public function __invoke(CapturePendingPaymentMessage $message) + public function __invoke(CapturePendingPaymentMessage $message): void { $paymentMapping = $this->paymentMappingRepository->findOneBy([ 'id' => $message->getPaymentMappingId(), diff --git a/src/Handler/OperatorHttpNotificationFailedHandler.php b/src/Handler/OperatorHttpNotificationFailedHandler.php index f71ec6f1..421edbb6 100644 --- a/src/Handler/OperatorHttpNotificationFailedHandler.php +++ b/src/Handler/OperatorHttpNotificationFailedHandler.php @@ -58,7 +58,7 @@ public function __construct( $this->lastNotificationDateTime = null; } - public function __invoke(NotificationFailedMessage $message) + public function __invoke(NotificationFailedMessage $message): void { if (!$this->shouldNotify()) { $this->logger->info('Endpoint unreachable, skipping mail notification to avoid flood'); @@ -85,7 +85,7 @@ public function __invoke(NotificationFailedMessage $message) $this->mailer->send($email); } - private function updateLastNotificationDateTime() + private function updateLastNotificationDateTime(): void { $now = \DateTime::createFromFormat('U', (string) time()); assert(false !== $now); @@ -93,7 +93,7 @@ private function updateLastNotificationDateTime() $this->lastNotificationDateTime = $now; } - private function shouldNotify() + private function shouldNotify(): bool { if (!$this->lastNotificationDateTime) { $this->updateLastNotificationDateTime(); diff --git a/src/Handler/OperatorHttpNotificationHandler.php b/src/Handler/OperatorHttpNotificationHandler.php index b9a245c3..d182c58b 100644 --- a/src/Handler/OperatorHttpNotificationHandler.php +++ b/src/Handler/OperatorHttpNotificationHandler.php @@ -5,8 +5,8 @@ use App\Message\AccountUpdateMessage; use App\Message\NotifiableMessageInterface; use App\Message\PayoutFailedMessage; -use App\Message\TransferFailedMessage; use App\Message\RefundFailedMessage; +use App\Message\TransferFailedMessage; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; use Symfony\Component\Messenger\Handler\MessageSubscriberInterface; @@ -32,7 +32,7 @@ public function __construct(HttpClientInterface $client, string $operatorNotific $this->operatorNotificationUrl = $operatorNotificationUrl; } - public function __invoke(NotifiableMessageInterface $message) + public function __invoke(NotifiableMessageInterface $message): void { if (empty($this->operatorNotificationUrl)) { return; diff --git a/src/Handler/ProcessPayoutHandler.php b/src/Handler/ProcessPayoutHandler.php index ee374e5e..5f0a40f3 100644 --- a/src/Handler/ProcessPayoutHandler.php +++ b/src/Handler/ProcessPayoutHandler.php @@ -5,7 +5,6 @@ use App\Entity\StripePayout; use App\Message\ProcessPayoutMessage; use App\Repository\StripePayoutRepository; -use App\Service\MiraklClient; use App\Service\StripeClient; use Psr\Log\LoggerAwareInterface; use Psr\Log\LoggerAwareTrait; @@ -34,7 +33,7 @@ public function __construct( $this->stripePayoutRepository = $stripePayoutRepository; } - public function __invoke(ProcessPayoutMessage $message) + public function __invoke(ProcessPayoutMessage $message): void { $payout = $this->stripePayoutRepository->findOneBy([ 'id' => $message->getStripePayoutId(), @@ -45,8 +44,8 @@ public function __invoke(ProcessPayoutMessage $message) $accountMapping = $payout->getAccountMapping(); try { $response = $this->stripeClient->createPayout( - $payout->getCurrency(), - $payout->getAmount(), + (string) $payout->getCurrency(), + (int) $payout->getAmount(), $accountMapping->getStripeAccountId(), [ 'miraklShopId' => $accountMapping->getMiraklShopId(), diff --git a/src/Handler/ProcessRefundHandler.php b/src/Handler/ProcessRefundHandler.php index 3a280c91..75a95ad7 100644 --- a/src/Handler/ProcessRefundHandler.php +++ b/src/Handler/ProcessRefundHandler.php @@ -43,10 +43,10 @@ public function __construct( $this->stripeRefundRepository = $stripeRefundRepository; } - public function __invoke(ProcessRefundMessage $message) + public function __invoke(ProcessRefundMessage $message): void { $refund = $this->stripeRefundRepository->findOneBy([ - 'id' => $message->getStripeRefundId() + 'id' => $message->getStripeRefundId(), ]); assert(null !== $refund && null !== $refund->getTransactionId()); assert(StripeRefund::REFUND_CREATED !== $refund->getStatus()); @@ -69,7 +69,7 @@ public function __invoke(ProcessRefundMessage $message) 'amount' => $refund->getAmount() / 100, 'currency_code' => strtoupper($refund->getCurrency()), 'state' => 'OK', - 'transaction_number' => $refund->getStripeRefundId() + 'transaction_number' => $refund->getStripeRefundId(), ]]); } else { $this->miraklClient->validateProductPendingRefunds([[ @@ -77,7 +77,7 @@ public function __invoke(ProcessRefundMessage $message) 'amount' => $refund->getAmount() / 100, 'currency_iso_code' => strtoupper($refund->getCurrency()), 'payment_status' => 'OK', - 'transaction_number' => $refund->getStripeRefundId() + 'transaction_number' => $refund->getStripeRefundId(), ]]); } @@ -89,7 +89,7 @@ public function __invoke(ProcessRefundMessage $message) sprintf('Could not create refund in Stripe: %s.', $e->getMessage()), [ 'miraklRefundId' => $refund->getMiraklRefundId(), - 'miraklOrderId' => $refund->getMiraklOrderId() + 'miraklOrderId' => $refund->getMiraklOrderId(), ] ); @@ -101,7 +101,7 @@ public function __invoke(ProcessRefundMessage $message) [ 'stripeRefundId' => $refund->getStripeRefundId(), 'miraklRefundId' => $refund->getMiraklRefundId(), - 'miraklOrderId' => $refund->getMiraklOrderId() + 'miraklOrderId' => $refund->getMiraklOrderId(), ] ); @@ -113,7 +113,7 @@ public function __invoke(ProcessRefundMessage $message) sprintf('Could not validate refund in Mirakl: %s.', $message), [ 'miraklRefundId' => $refund->getMiraklRefundId(), - 'miraklOrderId' => $refund->getMiraklOrderId() + 'miraklOrderId' => $refund->getMiraklOrderId(), ] ); diff --git a/src/Handler/ProcessTransferHandler.php b/src/Handler/ProcessTransferHandler.php index 3cf8f72b..b84e567f 100644 --- a/src/Handler/ProcessTransferHandler.php +++ b/src/Handler/ProcessTransferHandler.php @@ -3,7 +3,6 @@ namespace App\Handler; use App\Entity\StripeTransfer; -use App\Exception\InvalidArgumentException; use App\Message\ProcessTransferMessage; use App\Repository\StripeTransferRepository; use App\Service\StripeClient; @@ -34,10 +33,10 @@ public function __construct( $this->stripeTransferRepository = $stripeTransferRepository; } - public function __invoke(ProcessTransferMessage $message) + public function __invoke(ProcessTransferMessage $message): void { $transfer = $this->stripeTransferRepository->findOneBy([ - 'id' => $message->getStripeTransferId() + 'id' => $message->getStripeTransferId(), ]); assert(null !== $transfer); assert(StripeTransfer::TRANSFER_CREATED !== $transfer->getStatus()); @@ -100,7 +99,7 @@ public function __invoke(ProcessTransferMessage $message) $message = sprintf('Could not create Stripe Transfer: %s.', $e->getMessage()); $this->logger->error($message, [ 'miraklId' => $transfer->getMiraklId(), - 'stripeErrorCode' => $e->getStripeCode() + 'stripeErrorCode' => $e->getStripeCode(), ]); $transfer->setStatus(StripeTransfer::TRANSFER_FAILED); diff --git a/src/Handler/UpdateAccountLoginLinkHandler.php b/src/Handler/UpdateAccountLoginLinkHandler.php index 72dbf0d6..43a3594a 100644 --- a/src/Handler/UpdateAccountLoginLinkHandler.php +++ b/src/Handler/UpdateAccountLoginLinkHandler.php @@ -30,7 +30,7 @@ public function __construct(AccountMappingRepository $accountMappingRepository, $this->sellerOnboardingService = $sellerOnboardingService; } - public function __invoke(AccountUpdateMessage $message) + public function __invoke(AccountUpdateMessage $message): void { $messagePayload = $message->getContent()['payload']; $accountMapping = $this->accountMappingRepository->findOneByStripeAccountId($messagePayload['stripeUserId']); diff --git a/src/Handler/UpdateKYCStatusHandler.php b/src/Handler/UpdateKYCStatusHandler.php index 479f1b15..3b4a89ae 100644 --- a/src/Handler/UpdateKYCStatusHandler.php +++ b/src/Handler/UpdateKYCStatusHandler.php @@ -40,7 +40,7 @@ public function __construct(MiraklClient $miraklClient, StripeClient $stripeClie $this->stripeClient = $stripeClient; } - public function __invoke(AccountUpdateMessage $message) + public function __invoke(AccountUpdateMessage $message): void { $messagePayload = $message->getContent()['payload']; $this->logger->info('Received Stripe `account.updated` webhook. Updating KYC status.', $messagePayload); @@ -61,22 +61,22 @@ private function getKYCStatus(Account $stripeAccount): string { $requirements = $stripeAccount->requirements; - if (count($requirements[self::CURRENTLY_DUE]) > 0) { + if (isset($requirements[self::CURRENTLY_DUE]) && count((array) $requirements[self::CURRENTLY_DUE]) > 0) { return self::KYC_STATUS_PENDING_SUBMISSION; } - if (count($requirements[self::PENDING_VERIFICATION]) > 0) { + if (isset($requirements[self::PENDING_VERIFICATION]) && count((array) $requirements[self::PENDING_VERIFICATION]) > 0) { return self::KYC_STATUS_PENDING_APPROVAL; } - + $disabledReason = isset($requirements[self::DISABLED_REASON]) ? ''.$requirements[self::DISABLED_REASON] : ''; if ( - $requirements[self::DISABLED_REASON] !== '' - && strpos($requirements[self::DISABLED_REASON], 'rejected') === 0 + isset($requirements[self::DISABLED_REASON]) && '' !== $requirements[self::DISABLED_REASON] + && 0 === strpos($disabledReason, 'rejected') ) { return self::KYC_STATUS_REFUSED; } - if ($requirements[self::DISABLED_REASON] !== '' && $requirements[self::DISABLED_REASON] !== null) { + if (isset($requirements[self::DISABLED_REASON]) && '' !== $requirements[self::DISABLED_REASON] && null !== $requirements[self::DISABLED_REASON]) { return self::KYC_STATUS_PENDING_APPROVAL; } diff --git a/src/Handler/ValidateMiraklOrderHandler.php b/src/Handler/ValidateMiraklOrderHandler.php index a06972b3..d3dd3331 100644 --- a/src/Handler/ValidateMiraklOrderHandler.php +++ b/src/Handler/ValidateMiraklOrderHandler.php @@ -17,14 +17,13 @@ class ValidateMiraklOrderHandler implements MessageHandlerInterface, LoggerAware */ private $miraklClient; - public function __construct( MiraklClient $miraklClient ) { $this->miraklClient = $miraklClient; } - public function __invoke(ValidateMiraklOrderMessage $message) + public function __invoke(ValidateMiraklOrderMessage $message): void { $ordersByCommercialId = $message->getOrders(); @@ -42,12 +41,12 @@ public function __invoke(ValidateMiraklOrderMessage $message) 'customer_id' => $order->getCustomerId(), 'order_id' => $order->getOrderId(), 'payment_status' => 'OK', - 'transaction_number' => $paymentMappings[$commercialId]->getStripeChargeId() + 'transaction_number' => $paymentMappings[$commercialId]->getStripeChargeId(), ]; } } - $this->logger->info('Validate ' . count($orders) . ' Mirakl order(s)'); + $this->logger->info('Validate '.count($orders).' Mirakl order(s)'); $this->miraklClient->validateProductPendingDebits($orders); } } diff --git a/src/Kernel.php b/src/Kernel.php index 101ea404..785b0bef 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -17,7 +17,7 @@ class Kernel extends BaseKernel public function registerBundles(): iterable { - $contents = require $this->getProjectDir() . '/config/bundles.php'; + $contents = require $this->getProjectDir().'/config/bundles.php'; foreach ($contents as $class => $envs) { if ($envs[$this->environment] ?? $envs['all'] ?? false) { yield new $class(); @@ -32,22 +32,22 @@ public function getProjectDir(): string protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void { - $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php')); + $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); $container->setParameter('container.dumper.inline_class_loader', true); - $confDir = $this->getProjectDir() . '/config'; + $confDir = $this->getProjectDir().'/config'; - $loader->load($confDir . '/{packages}/*' . self::CONFIG_EXTS, 'glob'); - $loader->load($confDir . '/{packages}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, 'glob'); - $loader->load($confDir . '/{services}' . self::CONFIG_EXTS, 'glob'); - $loader->load($confDir . '/{services}_' . $this->environment . self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); } protected function configureRoutes(RouteCollectionBuilder $routes): void { - $confDir = $this->getProjectDir() . '/config'; + $confDir = $this->getProjectDir().'/config'; - $routes->import($confDir . '/{routes}/' . $this->environment . '/**/*' . self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir . '/{routes}' . self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); + $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); } } diff --git a/src/Message/CancelPendingPaymentMessage.php b/src/Message/CancelPendingPaymentMessage.php index ff32e393..b2faca6a 100644 --- a/src/Message/CancelPendingPaymentMessage.php +++ b/src/Message/CancelPendingPaymentMessage.php @@ -14,9 +14,6 @@ public function __construct(int $paymentMappingId) $this->paymentMappingId = $paymentMappingId; } - /** - * @return int - */ public function getPaymentMappingId(): int { return $this->paymentMappingId; diff --git a/src/Message/CapturePendingPaymentMessage.php b/src/Message/CapturePendingPaymentMessage.php index 50bbb4c1..57b7340c 100644 --- a/src/Message/CapturePendingPaymentMessage.php +++ b/src/Message/CapturePendingPaymentMessage.php @@ -20,17 +20,11 @@ public function __construct(int $paymentMappingId, int $amount) $this->amount = $amount; } - /** - * @return int - */ public function getPaymentMappingId(): int { return $this->paymentMappingId; } - /** - * @return int - */ public function getAmount(): int { return $this->amount; diff --git a/src/Message/ProcessTransferMessage.php b/src/Message/ProcessTransferMessage.php index 2e40f96a..e293dfd2 100644 --- a/src/Message/ProcessTransferMessage.php +++ b/src/Message/ProcessTransferMessage.php @@ -14,7 +14,7 @@ public function __construct(int $stripeTransferId) $this->stripeTransferId = $stripeTransferId; } - public function getStripeTransferId() + public function getStripeTransferId(): int { return $this->stripeTransferId; } diff --git a/src/Message/ValidateMiraklOrderMessage.php b/src/Message/ValidateMiraklOrderMessage.php index ef7f4f47..0a975458 100644 --- a/src/Message/ValidateMiraklOrderMessage.php +++ b/src/Message/ValidateMiraklOrderMessage.php @@ -22,9 +22,6 @@ public function __construct(array $orders, array $paymentMappings) $this->paymentMappings = $paymentMappings; } - /** - * @return array - */ public function getOrders(): array { return $this->orders; diff --git a/src/Migrations/Version20200921102036.php b/src/Migrations/Version20200921102036.php index 4f6e5055..0db82e40 100644 --- a/src/Migrations/Version20200921102036.php +++ b/src/Migrations/Version20200921102036.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SEQUENCE stripe_payment_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE TABLE stripe_payment (id INT NOT NULL, mirakl_order_id VARCHAR(255) DEFAULT NULL, stripe_payment_id VARCHAR(255) NOT NULL, status VARCHAR(255) NOT NULL, creation_datetime TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, modification_datetime TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY(id))'); @@ -26,7 +26,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SCHEMA public'); $this->addSql('DROP SEQUENCE stripe_payment_id_seq CASCADE'); diff --git a/src/Migrations/Version20200929091654.php b/src/Migrations/Version20200929091654.php index 677e794e..f4016b22 100644 --- a/src/Migrations/Version20200929091654.php +++ b/src/Migrations/Version20200929091654.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE mirakl_refund_id_seq RENAME TO stripe_refund_id_seq;'); $this->addSql('ALTER TABLE mirakl_refund RENAME TO stripe_refund;'); @@ -25,7 +25,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE stripe_refund_id_seq RENAME TO mirakl_refund_id_seq;'); $this->addSql('ALTER TABLE stripe_refund RENAME TO mirakl_refund;'); diff --git a/src/Migrations/Version20200929100110.php b/src/Migrations/Version20200929100110.php index bdddd4e0..a7ef1f48 100644 --- a/src/Migrations/Version20200929100110.php +++ b/src/Migrations/Version20200929100110.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE mirakl_stripe_mapping_id_seq RENAME TO account_mapping_id_seq;'); $this->addSql('ALTER TABLE mirakl_stripe_mapping RENAME TO account_mapping;'); @@ -39,7 +39,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE account_mapping_id_seq RENAME TO mirakl_stripe_mapping_id_seq;'); $this->addSql('ALTER TABLE account_mapping RENAME TO mirakl_stripe_mapping;'); diff --git a/src/Migrations/Version20201013152713.php b/src/Migrations/Version20201013152713.php index 89d49c76..20262577 100644 --- a/src/Migrations/Version20201013152713.php +++ b/src/Migrations/Version20201013152713.php @@ -16,14 +16,14 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_refund ADD commission INT DEFAULT 0'); } public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SCHEMA public'); $this->addSql('ALTER TABLE stripe_refund DROP commission'); diff --git a/src/Migrations/Version20201016122853.php b/src/Migrations/Version20201016122853.php index 10207db3..f1380697 100644 --- a/src/Migrations/Version20201016122853.php +++ b/src/Migrations/Version20201016122853.php @@ -16,14 +16,14 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_refund ADD mirakl_order_line_id VARCHAR(255)'); } public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SCHEMA public'); $this->addSql('ALTER TABLE stripe_refund DROP mirakl_order_line_id'); diff --git a/src/Migrations/Version20201127154506.php b/src/Migrations/Version20201127154506.php index 8544bfc2..d36240d2 100644 --- a/src/Migrations/Version20201127154506.php +++ b/src/Migrations/Version20201127154506.php @@ -6,7 +6,7 @@ use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; -use Shivas\VersioningBundle\Service\VersionManager; +use Shivas\VersioningBundle\Service\VersionManagerInterface; use Stripe\Stripe; use Symfony\Component\DependencyInjection\ContainerAwareInterface; use Symfony\Component\DependencyInjection\ContainerInterface; @@ -29,13 +29,12 @@ public function getDescription(): string } /** - * @param Schema $schema * @throws \Exception */ public function up(Schema $schema): void { // this up() migration is auto-generated, please modify it to your needs - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->connectStripe(); $this->changePaymentIntentIdForChargeId(); @@ -47,7 +46,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { // this down() migration is auto-generated, please modify it to your needs - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_charge RENAME TO stripe_payment'); $this->addSql('ALTER TABLE stripe_payment RENAME COLUMN stripe_charge_id TO stripe_payment_id '); @@ -110,8 +109,13 @@ private function changePaymentIntentIdForChargeId() } } + // Or get the version from the service + public function indexAction(VersionManagerInterface $manager) + { + $this->version = $manager->getVersion(); + } + /** - * * @throws \Exception */ private function connectStripe() @@ -121,13 +125,10 @@ private function connectStripe() } $stripeClientSecret = $this->container->getParameter('app.stripe.client_secret'); - /** @var VersionManager $versionManager */ - $versionManager = $this->container->get('Shivas\VersioningBundle\Service\VersionManager'); - Stripe::setApiKey($stripeClientSecret); Stripe::setAppInfo( self::APP_NAME, - $versionManager->getVersion()->__toString(), + $this->version->__toString(), self::APP_REPO, self::APP_PARTNER_ID ); diff --git a/src/Migrations/Version20201207112134.php b/src/Migrations/Version20201207112134.php index 89649503..7a567ccc 100644 --- a/src/Migrations/Version20201207112134.php +++ b/src/Migrations/Version20201207112134.php @@ -4,13 +4,13 @@ namespace DoctrineMigrations; -use Stripe\Stripe; use App\Service\StripeClient; use Doctrine\DBAL\Schema\Schema; use Doctrine\Migrations\AbstractMigration; -use Shivas\VersioningBundle\Service\VersionManager; -use Symfony\Component\DependencyInjection\ContainerInterface; +use Shivas\VersioningBundle\Service\VersionManagerInterface; +use Stripe\Stripe; use Symfony\Component\DependencyInjection\ContainerAwareInterface; +use Symfony\Component\DependencyInjection\ContainerInterface; final class Version20201207112134 extends AbstractMigration implements ContainerAwareInterface { @@ -25,12 +25,11 @@ public function getDescription(): string } /** - * @param Schema $schema * @throws \Exception */ public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->connectStripe(); @@ -41,7 +40,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_charge DROP COLUMN stripe_amount'); } @@ -76,8 +75,13 @@ private function fetchAndUpdateMissingAmounts() } } + // Or get the version from the service + public function indexAction(VersionManagerInterface $manager) + { + $this->version = $manager->getVersion(); + } + /** - * * @throws \Exception */ private function connectStripe() @@ -87,13 +91,10 @@ private function connectStripe() } $stripeClientSecret = $this->container->getParameter('app.stripe.client_secret'); - /** @var VersionManager $versionManager */ - $versionManager = $this->container->get('Shivas\VersioningBundle\Service\VersionManager'); - Stripe::setApiKey($stripeClientSecret); Stripe::setAppInfo( StripeClient::APP_NAME, - $versionManager->getVersion()->__toString(), + $this->version->__toString(), StripeClient::APP_REPO, StripeClient::APP_PARTNER_ID ); diff --git a/src/Migrations/Version20201214162347.php b/src/Migrations/Version20201214162347.php index 52344ea7..97f28eca 100644 --- a/src/Migrations/Version20201214162347.php +++ b/src/Migrations/Version20201214162347.php @@ -16,14 +16,14 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE IF EXISTS stripe_payment_id_seq RENAME TO stripe_charge_id_seq;'); } public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE IF EXISTS stripe_charge_id_seq RENAME TO stripe_payment_id_seq;'); } diff --git a/src/Migrations/Version20201216133324.php b/src/Migrations/Version20201216133324.php index af95a97e..4fe88e17 100644 --- a/src/Migrations/Version20201216133324.php +++ b/src/Migrations/Version20201216133324.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SEQUENCE config_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE TABLE config (id INT NOT NULL, key VARCHAR(255) NOT NULL, value VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))'); @@ -47,7 +47,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER SEQUENCE IF EXISTS payment_mapping_id_seq RENAME TO stripe_charge_id_seq;'); $this->addSql('ALTER TABLE payment_mapping RENAME TO stripe_charge'); diff --git a/src/Migrations/Version20201601191812.php b/src/Migrations/Version20201601191812.php index 19225131..595cbd98 100644 --- a/src/Migrations/Version20201601191812.php +++ b/src/Migrations/Version20201601191812.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_refund ADD COLUMN type VARCHAR(255) NOT NULL DEFAULT \'REFUND_PRODUCT_ORDER\''); @@ -27,7 +27,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql("UPDATE stripe_transfer SET type = 'TRANSFER_ORDER' WHERE type = 'TRANSFER_PRODUCT_ORDER'"); diff --git a/src/Migrations/Version20210128111936.php b/src/Migrations/Version20210128111936.php index b90c39c3..79dfc3b8 100644 --- a/src/Migrations/Version20210128111936.php +++ b/src/Migrations/Version20210128111936.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE onboarding_account RENAME TO account_onboarding;'); $this->addSql('ALTER SEQUENCE onboarding_account_id_seq RENAME TO account_onboarding_id_seq;'); @@ -24,7 +24,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE account_onboarding RENAME TO onboarding_account;'); $this->addSql('ALTER SEQUENCE account_onboarding_id_seq RENAME TO onboarding_account_id_seq;'); diff --git a/src/Migrations/Version20210209195048.php b/src/Migrations/Version20210209195048.php index 653e261a..d43fecfa 100644 --- a/src/Migrations/Version20210209195048.php +++ b/src/Migrations/Version20210209195048.php @@ -16,7 +16,7 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE payment_mapping RENAME COLUMN mirakl_order_id TO mirakl_commercial_order_id'); $this->addSql('ALTER TABLE stripe_refund ADD mirakl_commercial_order_id VARCHAR(255)'); @@ -24,7 +24,7 @@ public function up(Schema $schema): void public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE stripe_refund DROP COLUMN mirakl_commercial_order_id'); $this->addSql('ALTER TABLE payment_mapping RENAME COLUMN mirakl_commercial_order_id TO mirakl_order_id'); diff --git a/src/Migrations/Version20210427180838.php b/src/Migrations/Version20210427180838.php index d1473708..2bd9f04a 100644 --- a/src/Migrations/Version20210427180838.php +++ b/src/Migrations/Version20210427180838.php @@ -16,14 +16,14 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('UPDATE stripe_transfer SET status = \'TRANSFER_ON_HOLD\' WHERE status = \'TRANSFER_ABORTED\' AND status_reason LIKE \'Amount must be positive, input was: -%\''); } public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('UPDATE stripe_transfer SET status = \'TRANSFER_ABORTED\' WHERE status = \'TRANSFER_ON_HOLD\' AND status_reason LIKE \'Amount must be positive, input was: -%\''); } diff --git a/src/Migrations/Version20221031140741.php b/src/Migrations/Version20221031140741.php index 30e592ce..ecb3bca0 100644 --- a/src/Migrations/Version20221031140741.php +++ b/src/Migrations/Version20221031140741.php @@ -16,14 +16,14 @@ public function getDescription(): string public function up(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('ALTER TABLE account_mapping ADD ignored BOOLEAN DEFAULT \'false\' NOT NULL'); } public function down(Schema $schema): void { - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); + $this->abortIf('postgresql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'postgresql\'.'); $this->addSql('CREATE SCHEMA public'); $this->addSql('ALTER TABLE account_mapping DROP ignored'); diff --git a/src/Monolog/Handler/SymfonyMailerHandler.php b/src/Monolog/Handler/SymfonyMailerHandler.php index 30ef8ebc..0a5f8ae0 100644 --- a/src/Monolog/Handler/SymfonyMailerHandler.php +++ b/src/Monolog/Handler/SymfonyMailerHandler.php @@ -18,18 +18,17 @@ */ class SymfonyMailerHandler extends MailHandler { - protected $mailer; + protected MailerInterface $mailer; private $messageFactory; /** - * @param MailerInterface $mailer The mailer to use - * @param EmailFactory $messageFactory - * @param int $level The minimum logging level at which this handler will be triggered - * @param bool $bubble Whether the messages that are handled can bubble up the stack or not + * @param MailerInterface $mailer The mailer to use + * @param int $level The minimum logging level at which this handler will be triggered + * @param bool $bubble Whether the messages that are handled can bubble up the stack or not */ public function __construct(MailerInterface $mailer, EmailFactory $messageFactory, $level = Logger::ERROR, bool $bubble = true) { - parent::__construct($level, $bubble); + parent::__construct($level = Logger::DEBUG, (bool) $bubble); $this->mailer = $mailer; $this->messageFactory = $messageFactory; } @@ -57,15 +56,13 @@ protected function getSubjectFormatter(string $format): FormatterInterface * * @param string $content formatted email body to be sent * @param array $records Log records that formed the content - * - * @return Email */ - protected function buildMessage($content, array $records): Email + protected function buildMessage(string $content, array $records): Email { $message = $this->messageFactory->createMessage(); if ($records) { $subjectFormatter = $this->getSubjectFormatter($message->getSubject() ?? ''); - $message->subject($subjectFormatter->format($this->getHighestRecord($records))); + $message->subject($subjectFormatter->format($this->getHighestRecord($records)).''); } $message->html($content); $message->date(new \DateTime()); diff --git a/src/Repository/AccountMappingRepository.php b/src/Repository/AccountMappingRepository.php index d9920a6a..8eec92ba 100644 --- a/src/Repository/AccountMappingRepository.php +++ b/src/Repository/AccountMappingRepository.php @@ -33,7 +33,7 @@ public function persistAndFlush(AccountMapping $accountMapping): AccountMapping return $accountMapping; } - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } @@ -41,21 +41,17 @@ public function flush() public function findOneByStripeAccountId(string $stripeAccountId): ?AccountMapping { return $this->findOneBy([ - 'stripeAccountId' => $stripeAccountId + 'stripeAccountId' => $stripeAccountId, ]); } public function findOneByOnboardingToken(string $onboardingToken): ?AccountMapping { return $this->findOneBy([ - 'onboardingToken' => $onboardingToken + 'onboardingToken' => $onboardingToken, ]); } - /** - * @param array $accountMappings - * @return array - */ private function mapByMiraklShopId(array $accountMappings): array { $map = []; @@ -67,13 +63,12 @@ private function mapByMiraklShopId(array $accountMappings): array } /** - * @param array $miraklShopIds * @return AccountMapping[] */ public function findByMiraklShopIds(array $miraklShopIds): array { return $this->mapByMiraklShopId($this->findBy([ - 'miraklShopId' => $miraklShopIds + 'miraklShopId' => $miraklShopIds, ])); } } diff --git a/src/Repository/ConfigRepository.php b/src/Repository/ConfigRepository.php index 2f4721c8..8d7855a0 100644 --- a/src/Repository/ConfigRepository.php +++ b/src/Repository/ConfigRepository.php @@ -16,7 +16,6 @@ class ConfigRepository extends ServiceEntityRepository { /** * ConfigRepository constructor. - * @param ManagerRegistry $registry */ public function __construct(ManagerRegistry $registry) { @@ -24,8 +23,6 @@ public function __construct(ManagerRegistry $registry) } /** - * @param Config $config - * @return Config * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException */ @@ -41,13 +38,12 @@ public function persistAndFlush(Config $config): Config * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException */ - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } /** - * @param string $key * @return ?Config */ public function findByKey(string $key): ?Config diff --git a/src/Repository/PaymentMappingRepository.php b/src/Repository/PaymentMappingRepository.php index 4fa1296c..aa974845 100644 --- a/src/Repository/PaymentMappingRepository.php +++ b/src/Repository/PaymentMappingRepository.php @@ -16,7 +16,6 @@ class PaymentMappingRepository extends ServiceEntityRepository { /** * PaymentMappingRepository constructor. - * @param ManagerRegistry $registry */ public function __construct(ManagerRegistry $registry) { @@ -26,18 +25,15 @@ public function __construct(ManagerRegistry $registry) public function persist(PaymentMapping $paymentMapping): PaymentMapping { $this->getEntityManager()->persist($paymentMapping); + return $paymentMapping; } - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } - /** - * @param array $paymentMappings - * @return array - */ private function mapByMiraklCommercialOrderId(array $paymentMappings): array { $map = []; @@ -54,25 +50,24 @@ private function mapByMiraklCommercialOrderId(array $paymentMappings): array public function findToCapturePayments(): array { return $this->mapByMiraklCommercialOrderId($this->findBy([ - 'status' => PaymentMapping::TO_CAPTURE + 'status' => PaymentMapping::TO_CAPTURE, ])); } /** - * @param array $commercialOrderIds * @return PaymentMapping[] */ public function findPaymentsByCommercialOrderIds(array $commercialOrderIds): array { return $this->mapByMiraklCommercialOrderId($this->findBy([ - 'miraklCommercialOrderId' => $commercialOrderIds + 'miraklCommercialOrderId' => $commercialOrderIds, ])); } public function findOneByStripeChargeId(string $stripeChargeId): ?PaymentMapping { return $this->findOneBy([ - 'stripeChargeId' => $stripeChargeId + 'stripeChargeId' => $stripeChargeId, ]); } } diff --git a/src/Repository/StripePayoutRepository.php b/src/Repository/StripePayoutRepository.php index 9776c3a3..cc0cdd29 100644 --- a/src/Repository/StripePayoutRepository.php +++ b/src/Repository/StripePayoutRepository.php @@ -34,12 +34,12 @@ public function persist(StripePayout $stripePayout): StripePayout return $stripePayout; } - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } - private function mapPayoutsByInvoiceId(array $payouts) + private function mapPayoutsByInvoiceId(array $payouts): array { $map = []; foreach ($payouts as $payout) { @@ -49,17 +49,17 @@ private function mapPayoutsByInvoiceId(array $payouts) return $map; } - public function findRetriablePayouts() + public function findRetriablePayouts(): array { return $this->mapPayoutsByInvoiceId($this->findBy([ - 'status' => StripePayout::getRetriableStatus() + 'status' => StripePayout::getRetriableStatus(), ])); } - public function findPayoutsByInvoiceIds(array $invoiceIds) + public function findPayoutsByInvoiceIds(array $invoiceIds): mixed { return $this->mapPayoutsByInvoiceId($this->findBy([ - 'miraklInvoiceId' => $invoiceIds + 'miraklInvoiceId' => $invoiceIds, ])); } } diff --git a/src/Repository/StripeRefundRepository.php b/src/Repository/StripeRefundRepository.php index a33fac51..eae74675 100644 --- a/src/Repository/StripeRefundRepository.php +++ b/src/Repository/StripeRefundRepository.php @@ -34,12 +34,12 @@ public function persist(StripeRefund $stripeRefund): StripeRefund return $stripeRefund; } - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } - private function mapRefundsByRefundId(array $refunds) + private function mapRefundsByRefundId(array $refunds): array { $map = []; foreach ($refunds as $refund) { @@ -49,10 +49,10 @@ private function mapRefundsByRefundId(array $refunds) return $map; } - public function findRefundsByRefundIds(array $refundIds) + public function findRefundsByRefundIds(array $refundIds): array { return $this->mapRefundsByRefundId($this->findBy([ - 'miraklRefundId' => $refundIds + 'miraklRefundId' => $refundIds, ])); } } diff --git a/src/Repository/StripeTransferRepository.php b/src/Repository/StripeTransferRepository.php index a0476304..b3b32ffd 100644 --- a/src/Repository/StripeTransferRepository.php +++ b/src/Repository/StripeTransferRepository.php @@ -4,7 +4,6 @@ use App\Entity\StripeTransfer; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\ORM\QueryBuilder; use Doctrine\Persistence\ManagerRegistry; /** @@ -35,12 +34,12 @@ public function persist(StripeTransfer $stripeTransfer): StripeTransfer return $stripeTransfer; } - public function flush() + public function flush(): void { $this->getEntityManager()->flush(); } - private function mapTransfersByMiraklId(array $transfers) + private function mapTransfersByMiraklId(array $transfers): array { $map = []; foreach ($transfers as $transfer) { @@ -50,7 +49,7 @@ private function mapTransfersByMiraklId(array $transfers) return $map; } - private function mapTransfersByMiraklIdAndType(array $transfers) + private function mapTransfersByMiraklIdAndType(array $transfers): array { $map = []; foreach ($transfers as $transfer) { @@ -64,59 +63,59 @@ private function mapTransfersByMiraklIdAndType(array $transfers) return $map; } - public function findTransfersByOrderIds(array $orderIds) + public function findTransfersByOrderIds(array $orderIds): array { return $this->mapTransfersByMiraklId($this->findBy([ 'type' => StripeTransfer::getOrderTypes(), - 'miraklId' => $orderIds + 'miraklId' => $orderIds, ])); } - public function findTransfersByRefundIds(array $refundIds) + public function findTransfersByRefundIds(array $refundIds): array { return $this->mapTransfersByMiraklId($this->findBy([ 'type' => StripeTransfer::TRANSFER_REFUND, - 'miraklId' => $refundIds + 'miraklId' => $refundIds, ])); } - public function findRetriableProductOrderTransfers() + public function findRetriableProductOrderTransfers(): array { return $this->mapTransfersByMiraklId($this->findBy([ 'type' => StripeTransfer::TRANSFER_PRODUCT_ORDER, - 'status' => StripeTransfer::getRetriableStatus() + 'status' => StripeTransfer::getRetriableStatus(), ])); } - public function findRetriableServiceOrderTransfers() + public function findRetriableServiceOrderTransfers(): array { return $this->mapTransfersByMiraklId($this->findBy([ 'type' => StripeTransfer::TRANSFER_SERVICE_ORDER, - 'status' => StripeTransfer::getRetriableStatus() + 'status' => StripeTransfer::getRetriableStatus(), ])); } - public function findRetriableRefundTransfers() + public function findRetriableRefundTransfers(): array { return $this->mapTransfersByMiraklId($this->findBy([ 'type' => StripeTransfer::TRANSFER_REFUND, - 'status' => StripeTransfer::getRetriableStatus() + 'status' => StripeTransfer::getRetriableStatus(), ])); } - public function findRetriableInvoiceTransfers() + public function findRetriableInvoiceTransfers(): array { return $this->mapTransfersByMiraklIdAndType($this->findBy([ 'type' => StripeTransfer::getInvoiceTypes(), - 'status' => StripeTransfer::getRetriableStatus() + 'status' => StripeTransfer::getRetriableStatus(), ])); } - public function findTransfersByInvoiceIds(array $invoiceIds) + public function findTransfersByInvoiceIds(array $invoiceIds): array { return $this->mapTransfersByMiraklIdAndType($this->findBy([ 'type' => StripeTransfer::getInvoiceTypes(), - 'miraklId' => $invoiceIds + 'miraklId' => $invoiceIds, ])); } } diff --git a/src/Security/TokenAuthenticator.php b/src/Security/TokenAuthenticator.php index b36de88b..a76566c4 100644 --- a/src/Security/TokenAuthenticator.php +++ b/src/Security/TokenAuthenticator.php @@ -39,15 +39,22 @@ public function getCredentials(Request $request): array public function getUser($credentials, UserProviderInterface $userProvider): ?UserInterface { - return $userProvider->loadUserByUsername(self::OPERATOR_ACCOUNT_NAME); + return $userProvider->loadUserByIdentifier(self::OPERATOR_ACCOUNT_NAME); } public function checkCredentials($credentials, UserInterface $user): bool { - return $credentials['token'] === $user->getPassword(); + if (is_array($credentials) && $credentials['token'] === $user->getPassword()) { + return true; + } else { + return false; + } } - public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey) + /** + * @return null + */ + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey) { return null; } diff --git a/src/Service/ConfigService.php b/src/Service/ConfigService.php index e787b761..e7215cba 100644 --- a/src/Service/ConfigService.php +++ b/src/Service/ConfigService.php @@ -4,7 +4,6 @@ use App\Entity\Config; use App\Repository\ConfigRepository; -use App\Service\MiraklClient; class ConfigService { @@ -18,9 +17,6 @@ public function __construct(ConfigRepository $configRepository) $this->configRepository = $configRepository; } - /** - * @return Config - */ private function getConfigByKey(string $key): Config { $config = $this->configRepository->findByKey($key); @@ -34,92 +30,70 @@ private function getConfigByKey(string $key): Config return $config; } - /** - * @return self - */ private function save(): self { $this->configRepository->flush(); + return $this; } - /** - * @return string|null - */ public function getProductPaymentSplitCheckpoint(): ?string { $config = $this->getConfigByKey(Config::PRODUCT_PAYMENT_SPLIT_CHECKPOINT); + return $config->getValue(); } - /** - * @param string|null $value - * @return self - */ public function setProductPaymentSplitCheckpoint(?string $value): self { $config = $this->getConfigByKey(Config::PRODUCT_PAYMENT_SPLIT_CHECKPOINT); $config->setValue($value); + return $this->save(); } - /** - * @return string|null - */ public function getServicePaymentSplitCheckpoint(): ?string { $config = $this->getConfigByKey(Config::SERVICE_PAYMENT_SPLIT_CHECKPOINT); + return $config->getValue(); } - /** - * @param string|null $value - * @return self - */ public function setServicePaymentSplitCheckpoint(?string $value): self { $config = $this->getConfigByKey(Config::SERVICE_PAYMENT_SPLIT_CHECKPOINT); $config->setValue($value); + return $this->save(); } - /** - * @return string|null - */ public function getSellerSettlementCheckpoint(): ?string { $config = $this->getConfigByKey(Config::SELLER_SETTLEMENT_CHECKPOINT); + return $config->getValue(); } - /** - * @param string|null $value - * @return self - */ public function setSellerSettlementCheckpoint(?string $value): self { $config = $this->getConfigByKey(Config::SELLER_SETTLEMENT_CHECKPOINT); $config->setValue($value); + return $this->save(); } - /** - * @return string|null - */ public function getSellerOnboardingCheckpoint(): ?string { $config = $this->getConfigByKey(Config::SELLER_ONBOARDING_CHECKPOINT); + return $config->getValue(); } - /** - * @param string|null $value - * @return self - */ public function setSellerOnboardingCheckpoint(?string $value): self { $config = $this->getConfigByKey(Config::SELLER_ONBOARDING_CHECKPOINT); $config->setValue($value); + return $this->save(); } } diff --git a/src/Service/MiraklClient.php b/src/Service/MiraklClient.php index 5e1a3884..bd232a90 100644 --- a/src/Service/MiraklClient.php +++ b/src/Service/MiraklClient.php @@ -39,7 +39,7 @@ public function __construct(HttpClientInterface $miraklClient, string $taxOrderP private function get(string $endpoint, array $params = []): ResponseInterface { if ($params) { - $endpoint .= '?' . $this->parseQueryParams($params); + $endpoint .= '?'.$this->parseQueryParams($params); } return $this->client->request('GET', $endpoint); @@ -48,20 +48,22 @@ private function get(string $endpoint, array $params = []): ResponseInterface private function put(string $endpoint, array $params): ResponseInterface { $options = ['json' => $params]; + return $this->client->request('PUT', $endpoint, $options); } - private function parseQueryParams(array $params) + private function parseQueryParams(array $params): ?string { $queryString = http_build_query($params, '', '&', PHP_QUERY_RFC3986); + return preg_replace('/%5B[[:alnum:]_-]*%5D=/U', '=', $queryString); } - private function parseResponse(ResponseInterface $response, string ...$path) + private function parseResponse(ResponseInterface $response, string ...$path): array { $body = json_decode($response->getContent(), true); foreach ($path as $attr) { - if (isset($body[$attr])) { + if (is_array($body) && isset($body[$attr])) { $body = $body[$attr]; } else { break; @@ -71,7 +73,7 @@ private function parseResponse(ResponseInterface $response, string ...$path) return $body; } - private function paginateByOffset(string $endpoint, array $params = [], string ...$path) + private function paginateByOffset(string $endpoint, array $params = [], string ...$path): array { $response = $this->get($endpoint, array_merge(['max' => 10], $params)); $body = $this->parseResponse($response, ...$path); @@ -89,7 +91,7 @@ private function paginateByOffset(string $endpoint, array $params = [], string . return $body; } - private function paginateByPage(string $endpoint, array $params = [], string ...$path) + private function paginateByPage(string $endpoint, array $params = [], string ...$path): array { $response = $this->get($endpoint, array_merge(['limit' => 10], $params)); $body = $this->parseResponse($response, ...$path); @@ -107,7 +109,7 @@ private function paginateByPage(string $endpoint, array $params = [], string ... return $body; } - public function getNextLink(ResponseInterface $response) + public function getNextLink(ResponseInterface $response): ?string { static $nexLinkPattern = '/<([^>]+)>;\s*rel="next"/'; @@ -119,13 +121,17 @@ public function getNextLink(ResponseInterface $response) return null; } - private function getNextPage(ResponseInterface $response) + private function getNextPage(ResponseInterface $response): ?string { $body = json_decode($response->getContent(), true); - return $body['next_page_token'] ?? null; + if (is_array($body) && isset($body['next_page_token'])) { + return $body['next_page_token']; + } else { + return null; + } } - private function arraysToObjects(array $arrays, string $className) + private function arraysToObjects(array $arrays, string $className): array { $objects = []; foreach ($arrays as $array) { @@ -135,7 +141,7 @@ private function arraysToObjects(array $arrays, string $className) return $objects; } - private function objectsToMap(array $objects, string $getter1, string $getter2 = null) + private function objectsToMap(array $objects, string $getter1, string $getter2 = null): array { $map = []; foreach ($objects as $object) { @@ -150,67 +156,73 @@ private function objectsToMap(array $objects, string $getter1, string $getter2 = return $map; } - private function arraysToMap(array $arrays, string $key) + private function arraysToMap(array $arrays, string $key): array { $keys = array_map('strval', array_column($arrays, $key)); + return array_combine($keys, $arrays); } // OR11 - public function listProductOrders() + public function listProductOrders(): array { $res = $this->paginateByOffset('/api/orders', [], 'orders'); $res = $this->arraysToObjects($res, MiraklProductOrder::class); + return $this->objectsToMap($res, 'getId'); } // OR11 by date - public function listProductOrdersByDate(string $datetime) + public function listProductOrdersByDate(string $datetime): array { $res = $this->paginateByOffset('/api/orders', ['start_date' => $datetime], 'orders'); $res = $this->arraysToObjects($res, MiraklProductOrder::class); + return $this->objectsToMap($res, 'getId'); } // OR11 by order_id - public function listProductOrdersById(array $orderIds) + public function listProductOrdersById(array $orderIds): array { - $orderIds = array_map(array($this, 'removeTaxKeword'), $orderIds); + $orderIds = array_map([$this, 'removeTaxKeword'], $orderIds); $res = []; foreach (array_chunk($orderIds, 100) as $chunk) { $res = array_merge($res, $this->paginateByOffset('/api/orders', ['order_ids' => implode(',', $chunk)], 'orders')); } $res = $this->arraysToObjects($res, MiraklProductOrder::class); + return $this->objectsToMap($res, 'getId'); } // OR11 by commercial_id - public function listProductOrdersByCommercialId(array $commercialIds) + public function listProductOrdersByCommercialId(array $commercialIds): array { $res = []; foreach (array_chunk($commercialIds, 100) as $chunk) { $res = array_merge($res, $this->paginateByOffset('/api/orders', ['commercial_ids' => implode(',', $chunk)], 'orders')); } $res = $this->arraysToObjects($res, MiraklProductOrder::class); + return $this->objectsToMap($res, 'getCommercialId', 'getId'); } // PA11 - public function listProductPendingDebits() + public function listProductPendingDebits(): array { $res = $this->paginateByOffset('/api/payment/debit', [], 'orders', 'order'); $res = $this->arraysToObjects($res, MiraklProductPendingDebit::class); + return $this->objectsToMap($res, 'getCommercialId', 'getOrderId'); } // PA01 - public function validateProductPendingDebits(array $orders) + public function validateProductPendingDebits(array $orders): void { $this->put('/api/payment/debit', ['orders' => $orders]); } // PA12 - public function listProductPendingRefunds() + public function listProductPendingRefunds(): array { $res = $this->paginateByOffset('/api/payment/refund', [], 'orders', 'order'); @@ -231,160 +243,175 @@ public function listProductPendingRefunds() } $res = $this->arraysToObjects($pendingRefunds, MiraklProductPendingRefund::class); + return $this->objectsToMap($res, 'getId'); } // PA02 - public function validateProductPendingRefunds(array $refunds) + public function validateProductPendingRefunds(array $refunds): void { $this->put('/api/payment/refund', ['refunds' => $refunds]); } // SOR11 - public function listServiceOrders() + public function listServiceOrders(): array { $res = $this->paginateByPage('/api/mms/orders', [], 'data'); $res = $this->arraysToObjects($res, MiraklServiceOrder::class); + return $this->objectsToMap($res, 'getId'); } // SOR11 by date - public function listServiceOrdersByDate(string $datetime) + public function listServiceOrdersByDate(string $datetime): array { $res = $this->paginateByPage('/api/mms/orders', ['date_created_start' => $datetime], 'data'); $res = $this->arraysToObjects($res, MiraklServiceOrder::class); + return $this->objectsToMap($res, 'getId'); } // SOR11 by order_id - public function listServiceOrdersById(array $orderIds) + public function listServiceOrdersById(array $orderIds): array { - $orderIds = array_map(array($this, 'removeTaxKeword'), $orderIds); + $orderIds = array_map([$this, 'removeTaxKeword'], $orderIds); $res = $this->paginateByPage('/api/mms/orders', ['order_id' => $orderIds], 'data'); $res = $this->arraysToObjects($res, MiraklServiceOrder::class); + return $this->objectsToMap($res, 'getId'); } // SOR11 by commercial_id - public function listServiceOrdersByCommercialId(array $commercialIds) + public function listServiceOrdersByCommercialId(array $commercialIds): array { $res = $this->paginateByPage('/api/mms/orders', ['commercial_order_id' => $commercialIds], 'data'); $res = $this->arraysToObjects($res, MiraklServiceOrder::class); + return $this->objectsToMap($res, 'getCommercialId', 'getId'); } // SPA11 - public function listServicePendingDebits() + public function listServicePendingDebits(): array { $res = $this->paginateByPage('/api/mms/debits', [], 'data'); $res = $this->arraysToObjects($res, MiraklServicePendingDebit::class); + return $this->objectsToMap($res, 'getOrderId'); } // SPA11 by order ID - public function listServicePendingDebitsByOrderIds(array $orderIds) + public function listServicePendingDebitsByOrderIds(array $orderIds): array { - $orderIds = array_map(array($this, 'removeTaxKeword'), $orderIds); + $orderIds = array_map([$this, 'removeTaxKeword'], $orderIds); $res = $this->paginateByPage('/api/mms/debits', ['order_id' => $orderIds], 'data'); $res = $this->arraysToObjects($res, MiraklServicePendingDebit::class); + return $this->objectsToMap($res, 'getOrderId'); } // SPA01 - public function validateServicePendingDebits(array $orders) + public function validateServicePendingDebits(array $orders): void { $this->put('/api/mms/debits', ['orders' => $orders]); } // SPA12 - public function listServicePendingRefunds() + public function listServicePendingRefunds(): array { $res = $this->paginateByPage('/api/mms/refunds', [], 'data'); $res = $this->arraysToObjects($res, MiraklServicePendingRefund::class); + return $this->objectsToMap($res, 'getId'); } // SPA02 - public function validateServicePendingRefunds(array $refunds) + public function validateServicePendingRefunds(array $refunds): void { $this->put('/api/mms/refunds', $refunds); } // IV01 - public function listInvoices() + public function listInvoices(): array { $res = $this->paginateByOffset('/api/invoices', [], 'invoices'); + return $this->arraysToMap($res, 'invoice_id'); } // IV01 by date - public function listInvoicesByDate(string $datetime) + public function listInvoicesByDate(string $datetime): array { $res = $this->paginateByOffset('/api/invoices', ['start_date' => $datetime], 'invoices'); + return $this->arraysToMap($res, 'invoice_id'); } // IV01 by shop - public function listInvoicesByShopId(int $shopId) + public function listInvoicesByShopId(int $shopId): array { $res = $this->paginateByOffset('/api/invoices', ['shop' => $shopId], 'invoices'); + return $this->arraysToMap($res, 'invoice_id'); } // S20 - public function listShops() + public function listShops(): array { $res = $this->paginateByOffset('/api/shops', ['domains' => 'PRODUCT,SERVICE'], 'shops'); $res = $this->arraysToObjects($res, MiraklShop::class); + return $this->objectsToMap($res, 'getId'); } // S20 by date - public function listShopsByDate(string $datetime) + public function listShopsByDate(string $datetime): array { $res = $this->paginateByOffset('/api/shops', ['domains' => 'PRODUCT,SERVICE', 'updated_since' => $datetime], 'shops'); $res = $this->arraysToObjects($res, MiraklShop::class); + return $this->objectsToMap($res, 'getId'); } // S20 by IDs - public function listShopsByIds(array $shopIds) + public function listShopsByIds(array $shopIds): array { $res = $this->paginateByOffset('/api/shops', ['domains' => 'PRODUCT,SERVICE', 'shop_ids' => implode(',', $shopIds)], 'shops'); $res = $this->arraysToObjects($res, MiraklShop::class); + return $this->objectsToMap($res, 'getId'); } // S07 - public function updateShopCustomField(int $shopId, string $code, $value) + public function updateShopCustomField(int $shopId, string $code, string $value): void { $this->put('/api/shops', ['shops' => [[ 'shop_id' => $shopId, - 'shop_additional_fields' => [['code' => $code, 'value' => $value]] + 'shop_additional_fields' => [['code' => $code, 'value' => $value]], ]]]); } // S07 - public function updateShopKycStatus(int $shopId, string $status) + public function updateShopKycStatus(int $shopId, string $status): void { $this->put('/api/shops', ['shops' => [[ 'shop_id' => $shopId, - 'kyc' => ['status' => $status] + 'kyc' => ['status' => $status], ]]]); } // S07 - public function updateShopKycStatusWithReason($updateShopsReqs) + public function updateShopKycStatusWithReason(array $updateShopsReqs): void { $this->put('/api/shops', ['shops' => $updateShopsReqs]); } - public function getTransactionsForInvoce(string $invoiceId) + public function getTransactionsForInvoce(string $invoiceId): array { $params['accounting_document_number'] = $invoiceId; $response = $this->get('/api/sellerpayment/transactions_logs', array_merge(['max' => 100], $params)); $objects = $this->parseResponse($response, 'data'); - $res_map =$this->arraysToMap($objects, 'id'); + $res_map = $this->arraysToMap($objects, 'id'); + return $res_map; } @@ -400,8 +427,8 @@ public static function getStringFromDatetime(\DateTimeInterface $date): string return $date->format(self::DATE_FORMAT); } - private function removeTaxKeword($val): string + private function removeTaxKeword(string $val): string { - return str_replace($this->taxOrderPostfix, "", $val); + return str_replace($this->taxOrderPostfix, '', $val); } } diff --git a/src/Service/PaymentRefundService.php b/src/Service/PaymentRefundService.php index 49d6194b..4dbe2949 100644 --- a/src/Service/PaymentRefundService.php +++ b/src/Service/PaymentRefundService.php @@ -2,7 +2,6 @@ namespace App\Service; -use App\Service\MiraklClient; use App\Factory\StripeRefundFactory; use App\Factory\StripeTransferFactory; use App\Repository\StripeRefundRepository; @@ -49,13 +48,12 @@ public function __construct( /** * @return array App\Entity\StripeTransfer[] */ - public function getRetriableTransfers(): array + public function getRetriableTransfers(): mixed { return $this->stripeTransferRepository->findRetriableRefundTransfers(); } /** - * @param array $orderRefunds * @return array App\Entity\StripeRefund[] */ public function getRefundsFromOrderRefunds(array $orderRefunds): array @@ -67,7 +65,7 @@ public function getRefundsFromOrderRefunds(array $orderRefunds): array $refunds = []; foreach ($orderRefunds as $refundId => $orderRefund) { - if (isset($existingRefunds[$refundId])) { + if (is_array($existingRefunds) && isset($existingRefunds[$refundId])) { $refund = $existingRefunds[$refundId]; if (!$refund->isRetriable()) { continue; @@ -91,7 +89,6 @@ public function getRefundsFromOrderRefunds(array $orderRefunds): array } /** - * @param array $orderRefunds * @return array App\Entity\StripeRefund[] */ public function getTransfersFromOrderRefunds(array $orderRefunds): array @@ -103,7 +100,7 @@ public function getTransfersFromOrderRefunds(array $orderRefunds): array $transfers = []; foreach ($orderRefunds as $refundId => $orderRefund) { - if (isset($existingTransfers[$refundId])) { + if (is_array($existingTransfers) && isset($existingTransfers[$refundId])) { $transfer = $existingTransfers[$refundId]; if (!$transfer->isRetriable()) { continue; @@ -131,14 +128,13 @@ public function getTransfersFromOrderRefunds(array $orderRefunds): array } /** - * @param array $transfers * @return array [ refund_id => App\Entity\StripeTransfer ] */ public function updateTransfers(array $transfers): array { $updated = []; foreach ($transfers as $refundId => $transfer) { - if (strpos($refundId, $this->taxOrderPostfix) !== false) { + if (false !== strpos($refundId, $this->taxOrderPostfix)) { $updated[$refundId] = $this->stripeTransferFactory->updateOrderRefundTransfer($transfer, true); } else { $updated[$refundId] = $this->stripeTransferFactory->updateOrderRefundTransfer($transfer); diff --git a/src/Service/PaymentSplitService.php b/src/Service/PaymentSplitService.php index 5ca29a39..2a4adf8e 100644 --- a/src/Service/PaymentSplitService.php +++ b/src/Service/PaymentSplitService.php @@ -49,7 +49,6 @@ public function getRetriableServiceTransfers(): array } /** - * @param array $orders * @return array App\Entity\StripeTransfer[] */ public function getTransfersFromOrders(array $orders, array $pendingDebits): array @@ -61,7 +60,7 @@ public function getTransfersFromOrders(array $orders, array $pendingDebits): arr $transfers = []; foreach ($orders as $orderId => $order) { $pendingDebit = $pendingDebits[$orderId] ?? null; - if (isset($existingTransfers[$orderId])) { + if (is_array($existingTransfers) && isset($existingTransfers[$orderId])) { $transfer = $existingTransfers[$orderId]; if (!$transfer->isRetriable()) { continue; @@ -92,8 +91,6 @@ public function getTransfersFromOrders(array $orders, array $pendingDebits): arr } /** - * @param array $existingTransfers - * @param array $orders * @return array App\Entity\StripeTransfer[] */ public function updateTransfersFromOrders(array $existingTransfers, array $orders, array $pendingDebits) @@ -101,9 +98,9 @@ public function updateTransfersFromOrders(array $existingTransfers, array $order $updated = []; foreach ($existingTransfers as $orderId => $transfer) { $pendingDebit = $pendingDebits[$orderId] ?? null; - if ($this->enablePaymentTaxSplit && strpos($orderId, $this->taxOrderPostfix) !== false) { + if ($this->enablePaymentTaxSplit && false !== strpos($orderId, $this->taxOrderPostfix)) { $tax_suffixed_orderId = $orderId; - $orderId = str_replace($this->taxOrderPostfix, "", $orderId); + $orderId = str_replace($this->taxOrderPostfix, '', $orderId); $pendingDebit = $pendingDebits[$orderId] ?? null; $updated[$tax_suffixed_orderId] = $this->stripeTransferFactory->updateFromOrder( $transfer, diff --git a/src/Service/SellerOnboardingService.php b/src/Service/SellerOnboardingService.php index 79f537b8..efa9a429 100644 --- a/src/Service/SellerOnboardingService.php +++ b/src/Service/SellerOnboardingService.php @@ -74,8 +74,6 @@ public function __construct( } /** - * @param MiraklShop $shop - * @return AccountMapping * @throws ApiErrorException */ public function getAccountMappingFromShop(MiraklShop $shop): AccountMapping @@ -89,20 +87,17 @@ public function getAccountMappingFromShop(MiraklShop $shop): AccountMapping $accountMapping = new AccountMapping(); $accountMapping->setMiraklShopId($shop->getId()); $accountMapping->setStripeAccountId($stripeAccount->id); - $accountMapping->setPayoutEnabled($stripeAccount->payouts_enabled); - $accountMapping->setDisabledReason($stripeAccount->requirements->disabled_reason); - $accountMapping->setPayinEnabled($stripeAccount->charges_enabled); - + $accountMapping->setPayoutEnabled((bool) $stripeAccount->payouts_enabled); + if (isset($stripeAccount->requirements->disabled_reason)) { + $accountMapping->setDisabledReason($stripeAccount->requirements->disabled_reason); + } + $accountMapping->setPayinEnabled((bool) $stripeAccount->charges_enabled); $this->accountMappingRepository->persistAndFlush($accountMapping); } return $accountMapping; } - /** - * @param AccountMapping $accountMapping - * @param bool $ignored - */ public function updateAccountMappingIgnored(AccountMapping $accountMapping, bool $ignored): void { $accountMapping->setIgnored($ignored); @@ -110,8 +105,6 @@ public function updateAccountMappingIgnored(AccountMapping $accountMapping, bool } /** - * @param MiraklShop $shop - * @return Account * @throws ApiErrorException */ protected function createStripeAccountFromShop(MiraklShop $shop): Account @@ -125,7 +118,7 @@ protected function createStripeAccountFromShop(MiraklShop $shop): Account 'name' => $rawShop['shop_name'] ?? null, 'url' => $rawShop['contact_informations']['web_site'] ?? null, 'support_email' => $rawShop['contact_informations']['email'] ?? null, - 'support_phone' => $rawShop['contact_informations']['phone'] ?? null + 'support_phone' => $rawShop['contact_informations']['phone'] ?? null, ], ]; } @@ -134,8 +127,7 @@ protected function createStripeAccountFromShop(MiraklShop $shop): Account } /** - * @param MiraklShop $shop - * @return ?string The custom field value. + * @return ?string the custom field value */ public function getCustomFieldValue(MiraklShop $shop): ?string { @@ -143,18 +135,16 @@ public function getCustomFieldValue(MiraklShop $shop): ?string } /** - * @param MiraklShop $shop - * @return bool True if the field is set and the shop ignored, false otherwise. + * @return bool true if the field is set and the shop ignored, false otherwise */ public function isShopIgnored(MiraklShop $shop): bool { - return $shop->getCustomFieldValue($this->ignoredShopFieldCode) === "true"; + return 'true' === $shop->getCustomFieldValue($this->ignoredShopFieldCode); } /** - * @param int $shopId - * @param AccountMapping $accountMapping - * @return string New LoginLink URL. + * @return string new LoginLink URL + * * @throws ApiErrorException|ClientException */ public function addLoginLinkToShop(int $shopId, AccountMapping $accountMapping): string @@ -169,26 +159,26 @@ public function addLoginLinkToShop(int $shopId, AccountMapping $accountMapping): } /** - * @param string $accountId - * @return string New LoginLink URL. + * @return string new LoginLink URL + * * @throws ApiErrorException */ private function createLoginLink(string $accountId): string { $loginLink = $this->stripeClient->createLoginLink($accountId); - return $loginLink['url']; + + return $loginLink['url'].''; } /** - * @param int $shopId - * @param AccountMapping $accountMapping - * @return string New AccountLink URL. + * @return string new AccountLink URL + * * @throws ApiErrorException|ClientException */ public function addOnboardingLinkToShop(int $shopId, AccountMapping $accountMapping): string { // Generate unique token - $hasToken = $accountMapping->getOnboardingToken() !== null; + $hasToken = null !== $accountMapping->getOnboardingToken(); $token = $accountMapping->getOnboardingToken() ?? bin2hex(random_bytes(16)); // Create new AccountLink @@ -207,9 +197,8 @@ public function addOnboardingLinkToShop(int $shopId, AccountMapping $accountMapp } /** - * @param string $accountId - * @param string $token - * @return string New AccountLink URL. + * @return string new AccountLink URL + * * @throws ApiErrorException */ private function createAccountLink(string $accountId, string $token): string @@ -224,6 +213,6 @@ private function createAccountLink(string $accountId, string $token): string $this->redirectOnboarding ); - return $accountLink['url']; + return $accountLink['url'].''; } } diff --git a/src/Service/SellerSettlementService.php b/src/Service/SellerSettlementService.php index 245450f3..1a64d96f 100644 --- a/src/Service/SellerSettlementService.php +++ b/src/Service/SellerSettlementService.php @@ -2,9 +2,8 @@ namespace App\Service; -use App\Entity\StripeTransfer; use App\Entity\StripePayout; -use App\Service\MiraklClient; +use App\Entity\StripeTransfer; use App\Factory\StripePayoutFactory; use App\Factory\StripeTransferFactory; use App\Repository\StripePayoutRepository; @@ -53,7 +52,6 @@ public function getRetriableTransfers(): array } /** - * @param array $invoices * @return array [ invoice_id => StripeTransfer[] ] */ public function getTransfersFromInvoices(array $invoices): array @@ -97,8 +95,6 @@ public function getTransfersFromInvoices(array $invoices): array } /** - * @param array $existingTransfers - * @param array $invoices * @return array [ invoice_id => StripeTransfer[] ] */ public function updateTransfersFromInvoices(array $existingTransfers, array $invoices) @@ -133,7 +129,6 @@ public function getRetriablePayouts(): array } /** - * @param array $invoices * @return array StripePayout[] */ public function getPayoutsFromInvoices(array $invoices, MiraklClient $mclient): array @@ -145,7 +140,7 @@ public function getPayoutsFromInvoices(array $invoices, MiraklClient $mclient): $payouts = []; foreach ($invoices as $invoice) { $invoiceId = (int) $invoice['invoice_id']; - if (isset($existingPayouts[$invoiceId])) { + if (is_array($existingPayouts) && isset($existingPayouts[$invoiceId])) { $payout = $existingPayouts[$invoiceId]; if (!$payout->isRetriable()) { continue; @@ -171,8 +166,6 @@ public function getPayoutsFromInvoices(array $invoices, MiraklClient $mclient): } /** - * @param array $existingPayouts - * @param array $invoices * @return array StripePayout[] */ public function updatePayoutsFromInvoices(array $existingPayouts, array $invoices, MiraklClient $mclient) diff --git a/src/Service/StripeClient.php b/src/Service/StripeClient.php index 9f0c0795..791f7405 100644 --- a/src/Service/StripeClient.php +++ b/src/Service/StripeClient.php @@ -2,20 +2,20 @@ namespace App\Service; -use Shivas\VersioningBundle\Service\VersionManager; -use Stripe\Exception\ApiErrorException; -use Stripe\Exception\UnexpectedValueException; -use Stripe\HttpClient\ClientInterface; -use Stripe\Stripe; -use Stripe\ApiRequestor; +use Shivas\VersioningBundle\Service\VersionManagerInterface; use Stripe\Account; use Stripe\AccountLink; +use Stripe\ApiRequestor; use Stripe\Charge; use Stripe\Event; +use Stripe\Exception\ApiErrorException; +use Stripe\Exception\UnexpectedValueException; +use Stripe\HttpClient\ClientInterface; use Stripe\LoginLink; use Stripe\PaymentIntent; use Stripe\Payout; use Stripe\Refund; +use Stripe\Stripe; use Stripe\Transfer; use Stripe\TransferReversal; use Stripe\Webhook; @@ -41,7 +41,7 @@ class StripeClient public const APP_API_VERSION = '2019-08-14'; public function __construct( - VersionManager $versionManager, + VersionManagerInterface $versionManager, string $stripeClientSecret, bool $verifyWebhookSignature ) { @@ -70,20 +70,18 @@ public function retrieveAccount(string $accountId): Account public function retrieveAllAccounts(): array { $hasmore = false; - $connect_accounts = array(); - $lastConnectId=''; - + $connect_accounts = []; + $lastConnectId = ''; $limit = 50; do { - $params = $lastConnectId=='' ? ['limit' => $limit] : ['limit' => $limit,'starting_after' => $lastConnectId]; + $params = '' == $lastConnectId ? ['limit' => $limit] : ['limit' => $limit, 'starting_after' => $lastConnectId]; $response = Account::all($params); - $connect_accounts = array_merge($connect_accounts, $response['data']); - // echo "\n"; - // echo count ($connect_accounts).' '; + $responseData = (array) $response['data']; + $connect_accounts = array_merge($connect_accounts, $responseData); $hasmore = $response['has_more']; - $lastConnectId = end($connect_accounts)['id']; - // echo $hasmore.' '; - // echo $lastConnectId.' '; + if (is_array($connect_accounts)) { + $lastConnectId = end($connect_accounts)['id']; + } } while ($hasmore); return $connect_accounts; @@ -95,14 +93,14 @@ public function createStripeAccount(int $shopId, array $details, array $metadata 'type' => 'express', 'settings' => ['payouts' => [ 'debit_negative_balances' => false, - 'schedule' => ['interval' => 'manual'] + 'schedule' => ['interval' => 'manual'], ]], 'metadata' => array_merge($metadata, $this->getDefaultMetadata()), ], $details)); } // Account/Login Link - public function createAccountLink(string $accountId, string $refreshUrl, string $returnUrl, $type = 'account_onboarding'): AccountLink + public function createAccountLink(string $accountId, string $refreshUrl, string $returnUrl, string $type = 'account_onboarding'): AccountLink { return AccountLink::create([ 'account' => $accountId, @@ -123,18 +121,18 @@ public function webhookConstructEvent(string $payload, string $signatureHeader, if ($this->verifyWebhookSignature || $signatureHeader) { return Webhook::constructEvent($payload, $signatureHeader, $webhookSecret); } else { - $data = \json_decode($payload, true); - $jsonError = \json_last_error(); - if (null === $data && \JSON_ERROR_NONE !== $jsonError) { - throw new UnexpectedValueException( - "Invalid payload: {$payload} (json_last_error() was {$jsonError})" - ); + $data = json_decode($payload, true); + $jsonError = json_last_error(); + if (null === $data && JSON_ERROR_NONE !== $jsonError) { + throw new UnexpectedValueException("Invalid payload: {$payload} (json_last_error() was {$jsonError})"); } + $data = (array) $data; + return Event::constructFrom($data); } } - public function setHttpClient(ClientInterface $client) + public function setHttpClient(ClientInterface $client): void { ApiRequestor::setHttpClient($client); } @@ -147,7 +145,7 @@ public function createTransfer(string $currency, int $amount, string $accountId, 'amount' => $amount, 'metadata' => array_merge($metadata, $this->getDefaultMetadata()), 'destination' => $accountId, - 'source_transaction' => $chargeId + 'source_transaction' => $chargeId, ]); } @@ -155,11 +153,12 @@ public function createTransfer(string $currency, int $amount, string $accountId, public function createTransferFromConnectedAccount(string $currency, int $amount, string $accountId, array $metadata = []): Transfer { $platformAccount = Account::retrieve(); + return Transfer::create([ 'currency' => $currency, 'amount' => $amount, 'metadata' => array_merge($metadata, $this->getDefaultMetadata()), - 'destination' => $platformAccount->id + 'destination' => $platformAccount->id, ], ['stripe_account' => $accountId]); } @@ -195,9 +194,8 @@ public function createRefund(string $charge, ?int $amount, array $metadata = []) } /** - * @param string $paymentId - * @param int $amount * @return Charge|PaymentIntent + * * @throws ApiErrorException */ public function capturePayment(string $paymentId, int $amount) @@ -205,7 +203,8 @@ public function capturePayment(string $paymentId, int $amount) switch (substr($paymentId, 0, 3)) { case 'pi_': $pi = PaymentIntent::constructFrom(['id' => $paymentId]); - return $pi->capture(['amount_to_capture' => $amount]); + + return $pi->capture(['amount_to_capture' => $amount]); case 'ch_': case 'py_': $charge = $this->chargeRetrieve($paymentId); @@ -216,15 +215,15 @@ public function capturePayment(string $paymentId, int $amount) return $this->capturePayment($paymentIntentId, $amount); } - return $charge->capture(['amount' => $amount]); + return $charge->capture(['amount' => $amount]); default: - throw new \Exception('Unexpected payment type: ' . $paymentId); + throw new \Exception('Unexpected payment type: '.$paymentId); } } /** - * @param string $paymentId * @return Refund|PaymentIntent + * * @throws ApiErrorException */ public function cancelPayment(string $paymentId) @@ -233,6 +232,7 @@ public function cancelPayment(string $paymentId) case 'pi_': $pi = PaymentIntent::constructFrom(['id' => $paymentId]); $pi->cancel(); + return $pi; case 'ch_': case 'py_': @@ -246,7 +246,7 @@ public function cancelPayment(string $paymentId) return $this->createRefund($paymentId, null); default: - throw new \Exception('Unexpected payment type: ' . $paymentId); + throw new \Exception('Unexpected payment type: '.$paymentId); } } diff --git a/src/Validator/MiraklShopId.php b/src/Validator/MiraklShopId.php index a808ca86..53239f3c 100644 --- a/src/Validator/MiraklShopId.php +++ b/src/Validator/MiraklShopId.php @@ -6,9 +6,10 @@ /** * @Annotation + * * @Target({"PROPERTY"}) */ class MiraklShopId extends Constraint { - public $message = 'The Mirakl shop ID "{{ miraklShopId }}" is not valid.'; + public string $message = 'The Mirakl shop ID "{{ miraklShopId }}" is not valid.'; } diff --git a/src/Validator/MiraklShopIdValidator.php b/src/Validator/MiraklShopIdValidator.php index a94761f3..0527fb45 100644 --- a/src/Validator/MiraklShopIdValidator.php +++ b/src/Validator/MiraklShopIdValidator.php @@ -3,7 +3,6 @@ namespace App\Validator; use App\Service\MiraklClient; -use App\Validator\MiraklShopId; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidator; @@ -19,12 +18,13 @@ public function __construct(MiraklClient $miraklClient) $this->miraklClient = $miraklClient; } - public function validate($miraklShopId, Constraint $constraint) + public function validate($miraklShopId, Constraint $constraint): bool { if ($constraint instanceof MiraklShopId) { $miraklShop = $this->miraklClient->listShopsByIds([$miraklShopId]); if (1 !== count($miraklShop)) { $this->context->buildViolation($constraint->message)->addViolation(); + return false; } } diff --git a/symfony.lock b/symfony.lock index d9e37c14..8089fe0e 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,622 +1,312 @@ { "antishov/doctrine-extensions-bundle": { - "version": "v1.4.0" + "version": "1.4", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "main", + "version": "1.4", + "ref": "6c1ceb662f8997085f739cd089bfbef67f245983" + } }, "api-platform/core": { - "version": "2.5", + "version": "2.6", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "2.5", - "ref": "a93061567140e386f107be75340ac2aee3f86cbf" + "ref": "05b57782a78c21a664a42055dc11cf1954ca36bb" }, "files": [ - "config/packages/api_platform.yaml", - "config/routes/api_platform.yaml", - "src/Entity/.gitignore" + "./config/packages/api_platform.yaml", + "./config/routes/api_platform.yaml", + "./src/Entity/.gitignore" ] }, - "behat/transliterator": { - "version": "v1.2.0" - }, - "composer/package-versions-deprecated": { - "version": "1.11.99.5" - }, - "composer/pcre": { - "version": "1.0.1" - }, - "composer/semver": { - "version": "1.5.0" - }, - "composer/xdebug-handler": { - "version": "1.3.3" - }, "doctrine/annotations": { - "version": "1.0", + "version": "1.14", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.0", - "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" + "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" }, "files": [ - "config/routes/annotations.yaml" + "./config/routes/annotations.yaml" ] }, - "doctrine/cache": { - "version": "v1.8.0" - }, - "doctrine/collections": { - "version": "v1.6.2" - }, - "doctrine/common": { - "version": "v2.10.0" - }, - "doctrine/data-fixtures": { - "version": "v1.3.2" - }, - "doctrine/dbal": { - "version": "v2.9.2" - }, - "doctrine/deprecations": { - "version": "v0.5.3" - }, "doctrine/doctrine-bundle": { - "version": "1.6", + "version": "2.7", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.6", - "ref": "5e476e8edf3fa8e7f045ad034f89bb464424f5c1" + "branch": "main", + "version": "2.4", + "ref": "013b823e7fee65890b23e40f31e6667a1ac519ac" }, "files": [ - "config/packages/doctrine.yaml", - "config/packages/prod/doctrine.yaml", - "src/Entity/.gitignore", - "src/Repository/.gitignore" + "./config/packages/doctrine.yaml", + "./src/Entity/.gitignore", + "./src/Repository/.gitignore" ] }, "doctrine/doctrine-migrations-bundle": { - "version": "1.2", + "version": "2.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.2", - "ref": "c1431086fec31f17fbcfe6d6d7e92059458facc1" + "branch": "main", + "version": "2.2", + "ref": "baaa439e3e3179e69e3da84b671f0a3e4a2f56ad" }, "files": [ - "config/packages/doctrine_migrations.yaml", - "src/Migrations/.gitignore" + "./config/packages/doctrine_migrations.yaml", + "./migrations/.gitignore" ] }, - "doctrine/event-manager": { - "version": "v1.0.0" - }, - "doctrine/inflector": { - "version": "v1.3.0" - }, - "doctrine/instantiator": { - "version": "1.2.0" - }, - "doctrine/lexer": { - "version": "1.1.0" - }, - "doctrine/migrations": { - "version": "2.1.1" - }, - "doctrine/orm": { - "version": "v2.6.3" - }, - "doctrine/persistence": { - "version": "1.1.1" - }, - "doctrine/sql-formatter": { - "version": "1.1.1" - }, - "egulias/email-validator": { - "version": "2.1.11" - }, - "exsyst/swagger": { - "version": "v0.4.1" - }, - "fakerphp/faker": { - "version": "v1.13.0" - }, - "fig/link-util": { - "version": "1.0.0" - }, "friendsofphp/php-cs-fixer": { - "version": "2.2", + "version": "3.14", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.2", - "ref": "cc05ab6abf6894bddb9bbd6a252459010ebe040b" + "branch": "main", + "version": "3.0", + "ref": "be2103eb4a20942e28a6dd87736669b757132435" }, "files": [ - ".php_cs.dist" + "./.php-cs-fixer.dist.php" ] }, - "friendsofphp/proxy-manager-lts": { - "version": "v1.0.3" - }, - "gedmo/doctrine-extensions": { - "version": "v2.4.37" - }, "hautelook/alice-bundle": { - "version": "2.1", + "version": "2.9", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.1", - "ref": "71822522faf7ed2792d86b7f94ce73443358ccb9" + "branch": "main", + "version": "2.2", + "ref": "c84e4f2b9d7f436d7d52e8369230b393367607ec" }, "files": [ - "config/packages/dev/hautelook_alice.yaml", - "config/packages/test/hautelook_alice.yaml", - "fixtures/.gitignore" + "./config/packages/hautelook_alice.yaml", + "./fixtures/.gitignore" ] }, - "laminas/laminas-code": { - "version": "3.4.1" - }, - "monolog/monolog": { - "version": "1.24.0" - }, - "myclabs/deep-copy": { - "version": "1.9.3" - }, "nelmio/alice": { - "version": "3.2", + "version": "3.12", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.2", - "ref": "0b9900ece737bec7752e4155c0164639dd9b0cb0" + "branch": "main", + "version": "3.3", + "ref": "42b52d2065dc3fde27912d502c18ca1926e35ae2" }, "files": [ - "config/packages/dev/nelmio_alice.yaml", - "config/packages/test/nelmio_alice.yaml" + "./config/packages/nelmio_alice.yaml" ] }, "nelmio/api-doc-bundle": { - "version": "3.0", + "version": "4.11", "recipe": { "repo": "github.com/symfony/recipes-contrib", - "branch": "master", + "branch": "main", "version": "3.0", "ref": "c8e0c38e1a280ab9e37587a8fa32b251d5bc1c94" - }, - "files": [ - "config/packages/nelmio_api_doc.yaml", - "config/routes/nelmio_api_doc.yaml" - ] + } }, "nelmio/cors-bundle": { - "version": "1.5", + "version": "2.3", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.5", - "ref": "6e1f64cc0f55362be49764634e8f14ce34a033c6" + "ref": "6bea22e6c564fba3a1391615cada1437d0bde39c" }, "files": [ - "config/packages/nelmio_cors.yaml" + "./config/packages/nelmio_cors.yaml" ] }, - "nikic/php-parser": { - "version": "v4.2.3" - }, - "nikolaposa/version": { - "version": "3.2.0" - }, - "php-cs-fixer/diff": { - "version": "v1.3.0" - }, - "phpdocumentor/reflection-common": { - "version": "1.0.1" - }, - "phpdocumentor/reflection-docblock": { - "version": "4.3.1" - }, - "phpdocumentor/type-resolver": { - "version": "0.4.0" - }, - "phpstan/extension-installer": { - "version": "1.0.1" - }, - "phpstan/phpstan": { - "version": "0.11.15" - }, - "phpstan/phpstan-doctrine": { - "version": "0.11.5" - }, - "phpstan/phpstan-symfony": { - "version": "0.11.6" - }, - "psr/cache": { - "version": "1.0.1" - }, - "psr/container": { - "version": "1.0.0" - }, - "psr/link": { - "version": "1.0.0" - }, - "psr/log": { - "version": "1.1.0" - }, - "sebastian/comparator": { - "version": "3.0.2" - }, - "sebastian/diff": { - "version": "3.0.2" - }, - "sebastian/exporter": { - "version": "3.1.2" - }, - "sebastian/recursion-context": { - "version": "3.0.0" - }, "sensio/framework-extra-bundle": { - "version": "5.2", + "version": "5.6", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "5.2", "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" }, "files": [ - "config/packages/sensio_framework_extra.yaml" + "./config/packages/sensio_framework_extra.yaml" ] }, "shivas/versioning-bundle": { - "version": "3.2.1" - }, - "stripe/stripe-php": { - "version": "v6.43.0" - }, - "symfony/asset": { - "version": "v4.3.4" - }, - "symfony/browser-kit": { - "version": "v4.3.4" - }, - "symfony/cache": { - "version": "v4.3.3" - }, - "symfony/cache-contracts": { - "version": "v1.1.5" - }, - "symfony/config": { - "version": "v4.3.3" + "version": "4.0.2" }, "symfony/console": { - "version": "3.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "482d233eb8de91ebd042992077bbd5838858890c" + "branch": "main", + "version": "5.3", + "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" }, "files": [ - "bin/console", - "config/bootstrap.php" + "./bin/console" ] }, - "symfony/debug": { - "version": "v4.3.3" - }, - "symfony/dependency-injection": { - "version": "v4.3.3" - }, - "symfony/deprecation-contracts": { - "version": "v2.2.0" - }, - "symfony/doctrine-bridge": { - "version": "v4.3.4" - }, - "symfony/dom-crawler": { - "version": "v4.3.4" - }, - "symfony/dotenv": { - "version": "v4.3.3" - }, - "symfony/error-handler": { - "version": "v4.4.7" - }, - "symfony/event-dispatcher": { - "version": "v4.3.3" - }, - "symfony/event-dispatcher-contracts": { - "version": "v1.1.5" - }, - "symfony/expression-language": { - "version": "v4.3.4" - }, - "symfony/filesystem": { - "version": "v4.3.3" - }, - "symfony/finder": { - "version": "v4.3.3" - }, "symfony/flex": { - "version": "1.0", + "version": "1.20", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.0", - "ref": "dc3fc2e0334a4137c47cfd5a3ececc601fa61a0b" + "ref": "146251ae39e06a95be0fe3d13c807bcf3938b172" }, "files": [ - ".env" + "./.env" ] }, "symfony/framework-bundle": { - "version": "4.2", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.2", - "ref": "61ad963f28c091b8bb9449507654b9c7d8bbb53c" + "branch": "main", + "version": "5.4", + "ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb" }, "files": [ - "config/bootstrap.php", - "config/packages/cache.yaml", - "config/packages/framework.yaml", - "config/packages/test/framework.yaml", - "config/services.yaml", - "public/index.php", - "src/Controller/.gitignore", - "src/Kernel.php" + "./config/packages/cache.yaml", + "./config/packages/framework.yaml", + "./config/preload.php", + "./config/routes/framework.yaml", + "./config/services.yaml", + "./public/index.php", + "./src/Controller/.gitignore", + "./src/Kernel.php" ] }, - "symfony/http-client": { - "version": "v4.3.4" - }, - "symfony/http-client-contracts": { - "version": "v1.1.6" - }, - "symfony/http-foundation": { - "version": "v4.3.3" - }, - "symfony/http-kernel": { - "version": "v4.3.3" - }, - "symfony/inflector": { - "version": "v4.4.25" - }, "symfony/mailer": { - "version": "4.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "4.3", - "ref": "6e5921f710bec05533f664e0b9a3d838545edd82" + "ref": "2bf89438209656b85b9a49238c4467bff1b1f939" }, "files": [ - "config/packages/mailer.yaml" + "./config/packages/mailer.yaml" ] }, "symfony/maker-bundle": { - "version": "1.0", + "version": "1.49", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.0", "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" } }, "symfony/messenger": { - "version": "4.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.3", - "ref": "8a2675c061737658bed85102e9241c752620e575" + "branch": "main", + "version": "5.4", + "ref": "8bd5f27013fb1d7217191c548e340f0bdb11912c" }, "files": [ - "config/packages/messenger.yaml" + "./config/packages/messenger.yaml" ] }, - "symfony/mime": { - "version": "v4.3.3" - }, - "symfony/monolog-bridge": { - "version": "v4.3.3" - }, "symfony/monolog-bundle": { - "version": "3.3", + "version": "3.8", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "6240c6d43e8237a32452f057f81816820fd56ab6" + "branch": "main", + "version": "3.7", + "ref": "213676c4ec929f046dfde5ea8e97625b81bc0578" }, "files": [ - "config/packages/dev/monolog.yaml", - "config/packages/prod/monolog.yaml", - "config/packages/test/monolog.yaml" + "./config/packages/monolog.yaml" ] }, - "symfony/options-resolver": { - "version": "v4.3.4" - }, "symfony/phpunit-bridge": { - "version": "4.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.3", - "ref": "b0582341f1df39aaf3a9a866cdbe49937da35984" + "branch": "main", + "version": "5.3", + "ref": "819d3d2ffa4590eba0b8f4f3e5e89415ee4e45c3" }, "files": [ - ".env.test", - "bin/phpunit", - "config/bootstrap.php", - "phpunit.xml.dist", - "tests/.gitignore" + "./.env.test", + "./bin/phpunit", + "./phpunit.xml.dist", + "./tests/bootstrap.php" ] }, - "symfony/polyfill-intl-idn": { - "version": "v1.12.0" - }, - "symfony/polyfill-intl-normalizer": { - "version": "v1.22.1" - }, - "symfony/polyfill-mbstring": { - "version": "v1.12.0" - }, - "symfony/polyfill-php72": { - "version": "v1.12.0" - }, - "symfony/polyfill-php73": { - "version": "v1.12.0" - }, - "symfony/polyfill-php80": { - "version": "v1.22.1" - }, - "symfony/polyfill-php81": { - "version": "v1.23.0" - }, - "symfony/process": { - "version": "v4.3.4" - }, - "symfony/property-access": { - "version": "v4.3.4" - }, - "symfony/property-info": { - "version": "v4.3.4" - }, - "symfony/proxy-manager-bridge": { - "version": "v4.3.5" - }, "symfony/routing": { - "version": "4.2", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.2", - "ref": "4c107a8d23a16b997178fbd4103b8d2f54f688b7" + "branch": "main", + "version": "5.3", + "ref": "85de1d8ae45b284c3c84b668171d2615049e698f" }, "files": [ - "config/packages/dev/routing.yaml", - "config/packages/routing.yaml", - "config/packages/test/routing.yaml", - "config/routes.yaml" + "./config/packages/routing.yaml", + "./config/routes.yaml" ] }, "symfony/security-bundle": { - "version": "3.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "e5a0228251d1dd2bca4c8ef918e14423c06db625" + "branch": "main", + "version": "5.3", + "ref": "98f1f2b0d635908c2b40f3675da2d23b1a069d30" }, "files": [ - "config/packages/security.yaml" + "./config/packages/security.yaml" ] }, - "symfony/security-core": { - "version": "v4.3.4" - }, - "symfony/security-csrf": { - "version": "v4.3.4" - }, - "symfony/security-guard": { - "version": "v4.3.4" - }, - "symfony/security-http": { - "version": "v4.3.4" - }, - "symfony/serializer": { - "version": "v4.3.4" - }, - "symfony/service-contracts": { - "version": "v1.1.5" - }, - "symfony/stopwatch": { - "version": "v4.3.4" - }, - "symfony/translation-contracts": { - "version": "v1.1.6" - }, - "symfony/twig-bridge": { - "version": "v4.3.4" - }, "symfony/twig-bundle": { - "version": "3.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "369b5b29dc52b2c190002825ae7ec24ab6f962dd" + "branch": "main", + "version": "5.4", + "ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387" }, "files": [ - "config/packages/twig.yaml", - "config/routes/dev/twig.yaml", - "templates/base.html.twig" + "./config/packages/twig.yaml", + "./templates/base.html.twig" ] }, "symfony/validator": { - "version": "4.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.3", - "ref": "d902da3e4952f18d3bf05aab29512eb61cabd869" + "branch": "main", + "version": "5.3", + "ref": "c32cfd98f714894c4f128bb99aa2530c1227603c" }, "files": [ - "config/packages/test/validator.yaml", - "config/packages/validator.yaml" + "./config/packages/validator.yaml" ] }, - "symfony/var-dumper": { - "version": "v4.3.4" - }, - "symfony/var-exporter": { - "version": "v4.3.3" - }, - "symfony/web-link": { - "version": "v4.3.4" - }, "symfony/web-profiler-bundle": { - "version": "3.3", + "version": "5.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "6bdfa1a95f6b2e677ab985cd1af2eae35d62e0f6" + "branch": "main", + "version": "5.3", + "ref": "24bbc3d84ef2f427f82104f766014e799eefcc3e" }, "files": [ - "config/packages/dev/web_profiler.yaml", - "config/packages/test/web_profiler.yaml", - "config/routes/dev/web_profiler.yaml" + "./config/packages/web_profiler.yaml", + "./config/routes/web_profiler.yaml" ] }, - "symfony/yaml": { - "version": "v4.3.3" - }, "theofidry/alice-data-fixtures": { - "version": "1.0", + "version": "1.6", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.0", "ref": "fe5a50faf580eb58f08ada2abe8afbd2d4941e05" } - }, - "twig/twig": { - "version": "v2.11.3" - }, - "webmozart/assert": { - "version": "1.5.0" - }, - "willdurand/negotiation": { - "version": "v2.3.1" - }, - "zircote/swagger-php": { - "version": "2.0.14" } } diff --git a/tests/Command/AlertingCommandTest.php b/tests/Command/AlertingCommandTest.php index bf447e5b..b1b38cc8 100644 --- a/tests/Command/AlertingCommandTest.php +++ b/tests/Command/AlertingCommandTest.php @@ -11,10 +11,11 @@ use App\Repository\StripeRefundRepository; use Psr\Log\NullLogger; use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Formatter\OutputFormatterInterface; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Mailer\MailerInterface; +use Symfony\Component\Console\Formatter\OutputFormatter; + class AlertingCommandTest extends TestCase { @@ -29,14 +30,18 @@ protected function setUp(): void $this->input = $this->createMock(InputInterface::class); $this->output = $this->createMock(OutputInterface::class); + $outputFormatter = new OutputFormatter(false); + $this->output->setFormatter($outputFormatter); $this->output ->method('getFormatter') - ->willReturn($this->createMock(OutputFormatterInterface::class)); - + ->willReturn($outputFormatter); $this->command = new AlertingCommand($this->mailer, $this->transferRepository, $this->payoutRepository, $this->refundRepository, 'mailfrom@example.com', 'mailto@example.com'); $this->command->setLogger(new NullLogger()); } + /** + * @return void + */ public function testExecuteWithNoFailedOperation() { $this->transferRepository @@ -54,7 +59,6 @@ public function testExecuteWithNoFailedOperation() $this->mailer ->expects($this->never()) ->method('send'); - $resultCode = $this->command->execute($this->input, $this->output); $this->assertEquals(0, $resultCode); } @@ -79,7 +83,6 @@ public function testExecuteWithFailedOperations() $this->mailer ->expects($this->once()) ->method('send'); - $resultCode = $this->command->execute($this->input, $this->output); $this->assertEquals(0, $resultCode); } diff --git a/tests/Command/PaymentRefundCommandTest.php b/tests/Command/PaymentRefundCommandTest.php index 3382407f..3ebe6e3f 100644 --- a/tests/Command/PaymentRefundCommandTest.php +++ b/tests/Command/PaymentRefundCommandTest.php @@ -55,10 +55,12 @@ class PaymentRefundCommandTest extends KernelTestCase */ private $transferReceiver; + /** + * @return void + */ protected function setUp(): void { - $kernel = self::bootKernel(); - $application = new Application($kernel); + $application = new Application(self::bootKernel()); $this->command = $application->find('connector:dispatch:process-refund'); $this->commandTester = new CommandTester($this->command); diff --git a/tests/Controller/StripeWebhookEndpointTest.php b/tests/Controller/StripeWebhookEndpointTest.php index d4da9d2f..bc7a1a8f 100644 --- a/tests/Controller/StripeWebhookEndpointTest.php +++ b/tests/Controller/StripeWebhookEndpointTest.php @@ -277,7 +277,7 @@ public function testPaymentIntentCreated() } } PAYLOAD); - $this->assertEquals('The event type payment_intent.created is no longer required and can be removed in the webhook settings.', $response->getContent()); + $this->assertEquals('The event type payment_intent.created is no longer required and can be removed in the webhook settings.', (string) $response->getContent()); $this->assertEquals(Response::HTTP_OK, $response->getStatusCode()); } diff --git a/tests/Monolog/Handler/SymfonyMailerHandlerTest.php b/tests/Monolog/Handler/SymfonyMailerHandlerTest.php index 4ca78247..9335fa7c 100644 --- a/tests/Monolog/Handler/SymfonyMailerHandlerTest.php +++ b/tests/Monolog/Handler/SymfonyMailerHandlerTest.php @@ -12,9 +12,9 @@ class SymfonyMailerHandlerTest extends TestCase { - private const TEST_FROM_EMAIL = 'hello+from@test.com'; - private const TEST_TO_EMAIL = 'hello+to@test.com'; - private const TEST_SUBJECT = 'Hello world'; + public const TEST_FROM_EMAIL = 'hello+from@test.com'; + public const TEST_TO_EMAIL = 'hello+to@test.com'; + public const TEST_SUBJECT = 'Hello world'; private $emailFactory; private $mailer; @@ -22,7 +22,7 @@ class SymfonyMailerHandlerTest extends TestCase protected function setUp(): void { - $this->emailFactory = new EmailFactory(self::TEST_FROM_EMAIL, self::TEST_TO_EMAIL, self::TEST_SUBJECT); + $this->emailFactory = new EmailFactory($this::TEST_FROM_EMAIL, $this::TEST_TO_EMAIL, $this::TEST_SUBJECT); $this->mailer = $this->createMock(MailerInterface::class); $this->symfonyMailerHandler = new SymfonyMailerHandler($this->mailer, $this->emailFactory); } @@ -40,18 +40,24 @@ public function testCreateMessage() ]; $expectedMessage = new Email(); + $this ->mailer ->expects($this->once()) ->method('send') ->with($this->callback(function ($email) { return $email instanceof Email - && self::TEST_FROM_EMAIL === $email->getFrom()[0]->getAddress() - && self::TEST_TO_EMAIL === $email->getTo()[0]->getAddress() - && self::TEST_SUBJECT === $email->getSubject() - && false !== strpos($email->getHtmlBody(), 'app.ERROR: new log message'); + && $this::TEST_FROM_EMAIL === $email->getFrom()[0]->getAddress() + && $this::TEST_TO_EMAIL === $email->getTo()[0]->getAddress() + && $this::TEST_SUBJECT === $email->getSubject() + && str_contains($email->getHtmlBody(), 'new log message') + && str_contains($email->getHtmlBody(), 'Channel:') + && str_contains($email->getHtmlBody(), 'app') + && str_contains($email->getHtmlBody(), 'ERROR'); })); $email = $this->symfonyMailerHandler->handleBatch([$logRecord]); + + } } diff --git a/tests/ObjectManager.php b/tests/ObjectManager.php new file mode 100644 index 00000000..debc49e2 --- /dev/null +++ b/tests/ObjectManager.php @@ -0,0 +1,13 @@ +bootEnv(__DIR__ . '/../.env'); + +$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); +$kernel->boot(); +return $kernel->getContainer()->get('doctrine')->getManager(); \ No newline at end of file diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 00000000..3181151d --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,15 @@ +bootEnv(dirname(__DIR__).'/.env'); +} + +if ($_SERVER['APP_DEBUG']) { + umask(0000); +} From d6cf05386c138d191c0baa6fdc970ea7eb49316d Mon Sep 17 00:00:00 2001 From: Anuj Kumar Date: Thu, 3 Aug 2023 13:21:42 +0530 Subject: [PATCH 2/6] updated changes automatically during execution the cmd composer install --prefer-dist and ./vendor/bin/php-cs-fixer --ansi fix src -vvv --- public/bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js | 2 +- .../bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js.map | 2 +- .../nelmioapidoc/swagger-ui/swagger-ui-standalone-preset.js | 2 +- .../swagger-ui/swagger-ui-standalone-preset.js.map | 2 +- public/bundles/nelmioapidoc/swagger-ui/swagger-ui.css | 3 +-- public/bundles/nelmioapidoc/swagger-ui/swagger-ui.css.map | 2 +- 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/public/bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js b/public/bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js index 2cbe107d..763a1166 100644 --- a/public/bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js +++ b/public/bundles/nelmioapidoc/swagger-ui/swagger-ui-bundle.js @@ -1,3 +1,3 @@ /*! For license information please see swagger-ui-bundle.js.LICENSE.txt */ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.SwaggerUIBundle=t():e.SwaggerUIBundle=t()}(this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="/dist",n(n.s=481)}([function(e,t,n){"use strict";e.exports=n(555)},function(e,t,n){e.exports=function(){"use strict";var e=Array.prototype.slice;function t(e,t){t&&(e.prototype=Object.create(t.prototype)),e.prototype.constructor=e}function n(e){return i(e)?e:J(e)}function r(e){return u(e)?e:K(e)}function o(e){return s(e)?e:Y(e)}function a(e){return i(e)&&!c(e)?e:G(e)}function i(e){return!(!e||!e[f])}function u(e){return!(!e||!e[p])}function s(e){return!(!e||!e[h])}function c(e){return u(e)||s(e)}function l(e){return!(!e||!e[d])}t(r,n),t(o,n),t(a,n),n.isIterable=i,n.isKeyed=u,n.isIndexed=s,n.isAssociative=c,n.isOrdered=l,n.Keyed=r,n.Indexed=o,n.Set=a;var f="@@__IMMUTABLE_ITERABLE__@@",p="@@__IMMUTABLE_KEYED__@@",h="@@__IMMUTABLE_INDEXED__@@",d="@@__IMMUTABLE_ORDERED__@@",m="delete",v=5,g=1<>>0;if(""+n!==t||4294967295===n)return NaN;t=n}return t<0?A(e)+t:t}function C(){return!0}function j(e,t,n){return(0===e||void 0!==n&&e<=-n)&&(void 0===t||void 0!==n&&t>=n)}function T(e,t){return N(e,t,0)}function I(e,t){return N(e,t,t)}function N(e,t,n){return void 0===e?n:e<0?Math.max(0,t+e):void 0===t?e:Math.min(t,e)}var P=0,M=1,R=2,D="function"==typeof Symbol&&Symbol.iterator,L="@@iterator",B=D||L;function F(e){this.next=e}function z(e,t,n,r){var o=0===e?t:1===e?n:[t,n];return r?r.value=o:r={value:o,done:!1},r}function q(){return{value:void 0,done:!0}}function U(e){return!!H(e)}function V(e){return e&&"function"==typeof e.next}function W(e){var t=H(e);return t&&t.call(e)}function H(e){var t=e&&(D&&e[D]||e[L]);if("function"==typeof t)return t}function $(e){return e&&"number"==typeof e.length}function J(e){return null==e?ie():i(e)?e.toSeq():ce(e)}function K(e){return null==e?ie().toKeyedSeq():i(e)?u(e)?e.toSeq():e.fromEntrySeq():ue(e)}function Y(e){return null==e?ie():i(e)?u(e)?e.entrySeq():e.toIndexedSeq():se(e)}function G(e){return(null==e?ie():i(e)?u(e)?e.entrySeq():e:se(e)).toSetSeq()}F.prototype.toString=function(){return"[Iterator]"},F.KEYS=P,F.VALUES=M,F.ENTRIES=R,F.prototype.inspect=F.prototype.toSource=function(){return this.toString()},F.prototype[B]=function(){return this},t(J,n),J.of=function(){return J(arguments)},J.prototype.toSeq=function(){return this},J.prototype.toString=function(){return this.__toString("Seq {","}")},J.prototype.cacheResult=function(){return!this._cache&&this.__iterateUncached&&(this._cache=this.entrySeq().toArray(),this.size=this._cache.length),this},J.prototype.__iterate=function(e,t){return fe(this,e,t,!0)},J.prototype.__iterator=function(e,t){return pe(this,e,t,!0)},t(K,J),K.prototype.toKeyedSeq=function(){return this},t(Y,J),Y.of=function(){return Y(arguments)},Y.prototype.toIndexedSeq=function(){return this},Y.prototype.toString=function(){return this.__toString("Seq [","]")},Y.prototype.__iterate=function(e,t){return fe(this,e,t,!1)},Y.prototype.__iterator=function(e,t){return pe(this,e,t,!1)},t(G,J),G.of=function(){return G(arguments)},G.prototype.toSetSeq=function(){return this},J.isSeq=ae,J.Keyed=K,J.Set=G,J.Indexed=Y;var Q,Z,X,ee="@@__IMMUTABLE_SEQ__@@";function te(e){this._array=e,this.size=e.length}function ne(e){var t=Object.keys(e);this._object=e,this._keys=t,this.size=t.length}function re(e){this._iterable=e,this.size=e.length||e.size}function oe(e){this._iterator=e,this._iteratorCache=[]}function ae(e){return!(!e||!e[ee])}function ie(){return Q||(Q=new te([]))}function ue(e){var t=Array.isArray(e)?new te(e).fromEntrySeq():V(e)?new oe(e).fromEntrySeq():U(e)?new re(e).fromEntrySeq():"object"==typeof e?new ne(e):void 0;if(!t)throw new TypeError("Expected Array or iterable object of [k, v] entries, or keyed object: "+e);return t}function se(e){var t=le(e);if(!t)throw new TypeError("Expected Array or iterable object of values: "+e);return t}function ce(e){var t=le(e)||"object"==typeof e&&new ne(e);if(!t)throw new TypeError("Expected Array or iterable object of values, or keyed object: "+e);return t}function le(e){return $(e)?new te(e):V(e)?new oe(e):U(e)?new re(e):void 0}function fe(e,t,n,r){var o=e._cache;if(o){for(var a=o.length-1,i=0;i<=a;i++){var u=o[n?a-i:i];if(!1===t(u[1],r?u[0]:i,e))return i+1}return i}return e.__iterateUncached(t,n)}function pe(e,t,n,r){var o=e._cache;if(o){var a=o.length-1,i=0;return new F((function(){var e=o[n?a-i:i];return i++>a?q():z(t,r?e[0]:i-1,e[1])}))}return e.__iteratorUncached(t,n)}function he(e,t){return t?de(t,e,"",{"":e}):me(e)}function de(e,t,n,r){return Array.isArray(t)?e.call(r,n,Y(t).map((function(n,r){return de(e,n,r,t)}))):ve(t)?e.call(r,n,K(t).map((function(n,r){return de(e,n,r,t)}))):t}function me(e){return Array.isArray(e)?Y(e).map(me).toList():ve(e)?K(e).map(me).toMap():e}function ve(e){return e&&(e.constructor===Object||void 0===e.constructor)}function ge(e,t){if(e===t||e!=e&&t!=t)return!0;if(!e||!t)return!1;if("function"==typeof e.valueOf&&"function"==typeof t.valueOf){if((e=e.valueOf())===(t=t.valueOf())||e!=e&&t!=t)return!0;if(!e||!t)return!1}return!("function"!=typeof e.equals||"function"!=typeof t.equals||!e.equals(t))}function ye(e,t){if(e===t)return!0;if(!i(t)||void 0!==e.size&&void 0!==t.size&&e.size!==t.size||void 0!==e.__hash&&void 0!==t.__hash&&e.__hash!==t.__hash||u(e)!==u(t)||s(e)!==s(t)||l(e)!==l(t))return!1;if(0===e.size&&0===t.size)return!0;var n=!c(e);if(l(e)){var r=e.entries();return t.every((function(e,t){var o=r.next().value;return o&&ge(o[1],e)&&(n||ge(o[0],t))}))&&r.next().done}var o=!1;if(void 0===e.size)if(void 0===t.size)"function"==typeof e.cacheResult&&e.cacheResult();else{o=!0;var a=e;e=t,t=a}var f=!0,p=t.__iterate((function(t,r){if(n?!e.has(t):o?!ge(t,e.get(r,b)):!ge(e.get(r,b),t))return f=!1,!1}));return f&&e.size===p}function be(e,t){if(!(this instanceof be))return new be(e,t);if(this._value=e,this.size=void 0===t?1/0:Math.max(0,t),0===this.size){if(Z)return Z;Z=this}}function we(e,t){if(!e)throw new Error(t)}function xe(e,t,n){if(!(this instanceof xe))return new xe(e,t,n);if(we(0!==n,"Cannot step a Range by 0"),e=e||0,void 0===t&&(t=1/0),n=void 0===n?1:Math.abs(n),tr?q():z(e,o,n[t?r-o++:o++])}))},t(ne,K),ne.prototype.get=function(e,t){return void 0===t||this.has(e)?this._object[e]:t},ne.prototype.has=function(e){return this._object.hasOwnProperty(e)},ne.prototype.__iterate=function(e,t){for(var n=this._object,r=this._keys,o=r.length-1,a=0;a<=o;a++){var i=r[t?o-a:a];if(!1===e(n[i],i,this))return a+1}return a},ne.prototype.__iterator=function(e,t){var n=this._object,r=this._keys,o=r.length-1,a=0;return new F((function(){var i=r[t?o-a:a];return a++>o?q():z(e,i,n[i])}))},ne.prototype[d]=!0,t(re,Y),re.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);var n=W(this._iterable),r=0;if(V(n))for(var o;!(o=n.next()).done&&!1!==e(o.value,r++,this););return r},re.prototype.__iteratorUncached=function(e,t){if(t)return this.cacheResult().__iterator(e,t);var n=W(this._iterable);if(!V(n))return new F(q);var r=0;return new F((function(){var t=n.next();return t.done?t:z(e,r++,t.value)}))},t(oe,Y),oe.prototype.__iterateUncached=function(e,t){if(t)return this.cacheResult().__iterate(e,t);for(var n,r=this._iterator,o=this._iteratorCache,a=0;a=r.length){var t=n.next();if(t.done)return t;r[o]=t.value}return z(e,o,r[o++])}))},t(be,Y),be.prototype.toString=function(){return 0===this.size?"Repeat []":"Repeat [ "+this._value+" "+this.size+" times ]"},be.prototype.get=function(e,t){return this.has(e)?this._value:t},be.prototype.includes=function(e){return ge(this._value,e)},be.prototype.slice=function(e,t){var n=this.size;return j(e,t,n)?this:new be(this._value,I(t,n)-T(e,n))},be.prototype.reverse=function(){return this},be.prototype.indexOf=function(e){return ge(this._value,e)?0:-1},be.prototype.lastIndexOf=function(e){return ge(this._value,e)?this.size:-1},be.prototype.__iterate=function(e,t){for(var n=0;n=0&&t=0&&nn?q():z(e,a++,i)}))},xe.prototype.equals=function(e){return e instanceof xe?this._start===e._start&&this._end===e._end&&this._step===e._step:ye(this,e)},t(_e,n),t(Ee,_e),t(Se,_e),t(ke,_e),_e.Keyed=Ee,_e.Indexed=Se,_e.Set=ke;var Ae="function"==typeof Math.imul&&-2===Math.imul(4294967295,2)?Math.imul:function(e,t){var n=65535&(e|=0),r=65535&(t|=0);return n*r+((e>>>16)*r+n*(t>>>16)<<16>>>0)|0};function Oe(e){return e>>>1&1073741824|3221225471&e}function Ce(e){if(!1===e||null==e)return 0;if("function"==typeof e.valueOf&&(!1===(e=e.valueOf())||null==e))return 0;if(!0===e)return 1;var t=typeof e;if("number"===t){if(e!=e||e===1/0)return 0;var n=0|e;for(n!==e&&(n^=4294967295*e);e>4294967295;)n^=e/=4294967295;return Oe(n)}if("string"===t)return e.length>Fe?je(e):Te(e);if("function"==typeof e.hashCode)return e.hashCode();if("object"===t)return Ie(e);if("function"==typeof e.toString)return Te(e.toString());throw new Error("Value type "+t+" cannot be hashed.")}function je(e){var t=Ue[e];return void 0===t&&(t=Te(e),qe===ze&&(qe=0,Ue={}),qe++,Ue[e]=t),t}function Te(e){for(var t=0,n=0;n0)switch(e.nodeType){case 1:return e.uniqueID;case 9:return e.documentElement&&e.documentElement.uniqueID}}var Re,De="function"==typeof WeakMap;De&&(Re=new WeakMap);var Le=0,Be="__immutablehash__";"function"==typeof Symbol&&(Be=Symbol(Be));var Fe=16,ze=255,qe=0,Ue={};function Ve(e){we(e!==1/0,"Cannot perform this action with an infinite size.")}function We(e){return null==e?ot():He(e)&&!l(e)?e:ot().withMutations((function(t){var n=r(e);Ve(n.size),n.forEach((function(e,n){return t.set(n,e)}))}))}function He(e){return!(!e||!e[Je])}t(We,Ee),We.of=function(){var t=e.call(arguments,0);return ot().withMutations((function(e){for(var n=0;n=t.length)throw new Error("Missing value for key: "+t[n]);e.set(t[n],t[n+1])}}))},We.prototype.toString=function(){return this.__toString("Map {","}")},We.prototype.get=function(e,t){return this._root?this._root.get(0,void 0,e,t):t},We.prototype.set=function(e,t){return at(this,e,t)},We.prototype.setIn=function(e,t){return this.updateIn(e,b,(function(){return t}))},We.prototype.remove=function(e){return at(this,e,b)},We.prototype.deleteIn=function(e){return this.updateIn(e,(function(){return b}))},We.prototype.update=function(e,t,n){return 1===arguments.length?e(this):this.updateIn([e],t,n)},We.prototype.updateIn=function(e,t,n){n||(n=t,t=void 0);var r=vt(this,_n(e),t,n);return r===b?void 0:r},We.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._root=null,this.__hash=void 0,this.__altered=!0,this):ot()},We.prototype.merge=function(){return pt(this,void 0,arguments)},We.prototype.mergeWith=function(t){return pt(this,t,e.call(arguments,1))},We.prototype.mergeIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,ot(),(function(e){return"function"==typeof e.merge?e.merge.apply(e,n):n[n.length-1]}))},We.prototype.mergeDeep=function(){return pt(this,ht,arguments)},We.prototype.mergeDeepWith=function(t){var n=e.call(arguments,1);return pt(this,dt(t),n)},We.prototype.mergeDeepIn=function(t){var n=e.call(arguments,1);return this.updateIn(t,ot(),(function(e){return"function"==typeof e.mergeDeep?e.mergeDeep.apply(e,n):n[n.length-1]}))},We.prototype.sort=function(e){return Ut(fn(this,e))},We.prototype.sortBy=function(e,t){return Ut(fn(this,t,e))},We.prototype.withMutations=function(e){var t=this.asMutable();return e(t),t.wasAltered()?t.__ensureOwner(this.__ownerID):this},We.prototype.asMutable=function(){return this.__ownerID?this:this.__ensureOwner(new S)},We.prototype.asImmutable=function(){return this.__ensureOwner()},We.prototype.wasAltered=function(){return this.__altered},We.prototype.__iterator=function(e,t){return new et(this,e,t)},We.prototype.__iterate=function(e,t){var n=this,r=0;return this._root&&this._root.iterate((function(t){return r++,e(t[1],t[0],n)}),t),r},We.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?rt(this.size,this._root,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},We.isMap=He;var $e,Je="@@__IMMUTABLE_MAP__@@",Ke=We.prototype;function Ye(e,t){this.ownerID=e,this.entries=t}function Ge(e,t,n){this.ownerID=e,this.bitmap=t,this.nodes=n}function Qe(e,t,n){this.ownerID=e,this.count=t,this.nodes=n}function Ze(e,t,n){this.ownerID=e,this.keyHash=t,this.entries=n}function Xe(e,t,n){this.ownerID=e,this.keyHash=t,this.entry=n}function et(e,t,n){this._type=t,this._reverse=n,this._stack=e._root&&nt(e._root)}function tt(e,t){return z(e,t[0],t[1])}function nt(e,t){return{node:e,index:0,__prev:t}}function rt(e,t,n,r){var o=Object.create(Ke);return o.size=e,o._root=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function ot(){return $e||($e=rt(0))}function at(e,t,n){var r,o;if(e._root){var a=_(w),i=_(x);if(r=it(e._root,e.__ownerID,0,void 0,t,n,a,i),!i.value)return e;o=e.size+(a.value?n===b?-1:1:0)}else{if(n===b)return e;o=1,r=new Ye(e.__ownerID,[[t,n]])}return e.__ownerID?(e.size=o,e._root=r,e.__hash=void 0,e.__altered=!0,e):r?rt(o,r):ot()}function it(e,t,n,r,o,a,i,u){return e?e.update(t,n,r,o,a,i,u):a===b?e:(E(u),E(i),new Xe(t,r,[o,a]))}function ut(e){return e.constructor===Xe||e.constructor===Ze}function st(e,t,n,r,o){if(e.keyHash===r)return new Ze(t,r,[e.entry,o]);var a,i=(0===n?e.keyHash:e.keyHash>>>n)&y,u=(0===n?r:r>>>n)&y;return new Ge(t,1<>>=1)i[u]=1&n?t[a++]:void 0;return i[r]=o,new Qe(e,a+1,i)}function pt(e,t,n){for(var o=[],a=0;a>1&1431655765))+(e>>2&858993459))+(e>>4)&252645135,e+=e>>8,127&(e+=e>>16)}function yt(e,t,n,r){var o=r?e:k(e);return o[t]=n,o}function bt(e,t,n,r){var o=e.length+1;if(r&&t+1===o)return e[t]=n,e;for(var a=new Array(o),i=0,u=0;u=xt)return ct(e,s,r,o);var p=e&&e===this.ownerID,h=p?s:k(s);return f?u?c===l-1?h.pop():h[c]=h.pop():h[c]=[r,o]:h.push([r,o]),p?(this.entries=h,this):new Ye(e,h)}},Ge.prototype.get=function(e,t,n,r){void 0===t&&(t=Ce(n));var o=1<<((0===e?t:t>>>e)&y),a=this.bitmap;return 0==(a&o)?r:this.nodes[gt(a&o-1)].get(e+v,t,n,r)},Ge.prototype.update=function(e,t,n,r,o,a,i){void 0===n&&(n=Ce(r));var u=(0===t?n:n>>>t)&y,s=1<=_t)return ft(e,p,c,u,d);if(l&&!d&&2===p.length&&ut(p[1^f]))return p[1^f];if(l&&d&&1===p.length&&ut(d))return d;var m=e&&e===this.ownerID,g=l?d?c:c^s:c|s,w=l?d?yt(p,f,d,m):wt(p,f,m):bt(p,f,d,m);return m?(this.bitmap=g,this.nodes=w,this):new Ge(e,g,w)},Qe.prototype.get=function(e,t,n,r){void 0===t&&(t=Ce(n));var o=(0===e?t:t>>>e)&y,a=this.nodes[o];return a?a.get(e+v,t,n,r):r},Qe.prototype.update=function(e,t,n,r,o,a,i){void 0===n&&(n=Ce(r));var u=(0===t?n:n>>>t)&y,s=o===b,c=this.nodes,l=c[u];if(s&&!l)return this;var f=it(l,e,t+v,n,r,o,a,i);if(f===l)return this;var p=this.count;if(l){if(!f&&--p0&&r=0&&e>>t&y;if(r>=this.array.length)return new Ct([],e);var o,a=0===r;if(t>0){var i=this.array[r];if((o=i&&i.removeBefore(e,t-v,n))===i&&a)return this}if(a&&!o)return this;var u=Lt(this,e);if(!a)for(var s=0;s>>t&y;if(o>=this.array.length)return this;if(t>0){var a=this.array[o];if((r=a&&a.removeAfter(e,t-v,n))===a&&o===this.array.length-1)return this}var i=Lt(this,e);return i.array.splice(o+1),r&&(i.array[o]=r),i};var jt,Tt,It={};function Nt(e,t){var n=e._origin,r=e._capacity,o=qt(r),a=e._tail;return i(e._root,e._level,0);function i(e,t,n){return 0===t?u(e,n):s(e,t,n)}function u(e,i){var u=i===o?a&&a.array:e&&e.array,s=i>n?0:n-i,c=r-i;return c>g&&(c=g),function(){if(s===c)return It;var e=t?--c:s++;return u&&u[e]}}function s(e,o,a){var u,s=e&&e.array,c=a>n?0:n-a>>o,l=1+(r-a>>o);return l>g&&(l=g),function(){for(;;){if(u){var e=u();if(e!==It)return e;u=null}if(c===l)return It;var n=t?--l:c++;u=i(s&&s[n],o-v,a+(n<=e.size||t<0)return e.withMutations((function(e){t<0?Ft(e,t).set(0,n):Ft(e,0,t+1).set(t,n)}));t+=e._origin;var r=e._tail,o=e._root,a=_(x);return t>=qt(e._capacity)?r=Dt(r,e.__ownerID,0,t,n,a):o=Dt(o,e.__ownerID,e._level,t,n,a),a.value?e.__ownerID?(e._root=o,e._tail=r,e.__hash=void 0,e.__altered=!0,e):Pt(e._origin,e._capacity,e._level,o,r):e}function Dt(e,t,n,r,o,a){var i,u=r>>>n&y,s=e&&u0){var c=e&&e.array[u],l=Dt(c,t,n-v,r,o,a);return l===c?e:((i=Lt(e,t)).array[u]=l,i)}return s&&e.array[u]===o?e:(E(a),i=Lt(e,t),void 0===o&&u===i.array.length-1?i.array.pop():i.array[u]=o,i)}function Lt(e,t){return t&&e&&t===e.ownerID?e:new Ct(e?e.array.slice():[],t)}function Bt(e,t){if(t>=qt(e._capacity))return e._tail;if(t<1<0;)n=n.array[t>>>r&y],r-=v;return n}}function Ft(e,t,n){void 0!==t&&(t|=0),void 0!==n&&(n|=0);var r=e.__ownerID||new S,o=e._origin,a=e._capacity,i=o+t,u=void 0===n?a:n<0?a+n:o+n;if(i===o&&u===a)return e;if(i>=u)return e.clear();for(var s=e._level,c=e._root,l=0;i+l<0;)c=new Ct(c&&c.array.length?[void 0,c]:[],r),l+=1<<(s+=v);l&&(i+=l,o+=l,u+=l,a+=l);for(var f=qt(a),p=qt(u);p>=1<f?new Ct([],r):h;if(h&&p>f&&iv;g-=v){var b=f>>>g&y;m=m.array[b]=Lt(m.array[b],r)}m.array[f>>>v&y]=h}if(u=p)i-=p,u-=p,s=v,c=null,d=d&&d.removeBefore(r,0,i);else if(i>o||p>>s&y;if(w!==p>>>s&y)break;w&&(l+=(1<o&&(c=c.removeBefore(r,s,i-l)),c&&pa&&(a=c.size),i(s)||(c=c.map((function(e){return he(e)}))),r.push(c)}return a>e.size&&(e=e.setSize(a)),mt(e,t,r)}function qt(e){return e>>v<=g&&i.size>=2*a.size?(r=(o=i.filter((function(e,t){return void 0!==e&&u!==t}))).toKeyedSeq().map((function(e){return e[0]})).flip().toMap(),e.__ownerID&&(r.__ownerID=o.__ownerID=e.__ownerID)):(r=a.remove(t),o=u===i.size-1?i.pop():i.set(u,void 0))}else if(s){if(n===i.get(u)[1])return e;r=a,o=i.set(u,[t,n])}else r=a.set(t,i.size),o=i.set(i.size,[t,n]);return e.__ownerID?(e.size=r.size,e._map=r,e._list=o,e.__hash=void 0,e):Wt(r,o)}function Jt(e,t){this._iter=e,this._useKeys=t,this.size=e.size}function Kt(e){this._iter=e,this.size=e.size}function Yt(e){this._iter=e,this.size=e.size}function Gt(e){this._iter=e,this.size=e.size}function Qt(e){var t=bn(e);return t._iter=e,t.size=e.size,t.flip=function(){return e},t.reverse=function(){var t=e.reverse.apply(this);return t.flip=function(){return e.reverse()},t},t.has=function(t){return e.includes(t)},t.includes=function(t){return e.has(t)},t.cacheResult=wn,t.__iterateUncached=function(t,n){var r=this;return e.__iterate((function(e,n){return!1!==t(n,e,r)}),n)},t.__iteratorUncached=function(t,n){if(t===R){var r=e.__iterator(t,n);return new F((function(){var e=r.next();if(!e.done){var t=e.value[0];e.value[0]=e.value[1],e.value[1]=t}return e}))}return e.__iterator(t===M?P:M,n)},t}function Zt(e,t,n){var r=bn(e);return r.size=e.size,r.has=function(t){return e.has(t)},r.get=function(r,o){var a=e.get(r,b);return a===b?o:t.call(n,a,r,e)},r.__iterateUncached=function(r,o){var a=this;return e.__iterate((function(e,o,i){return!1!==r(t.call(n,e,o,i),o,a)}),o)},r.__iteratorUncached=function(r,o){var a=e.__iterator(R,o);return new F((function(){var o=a.next();if(o.done)return o;var i=o.value,u=i[0];return z(r,u,t.call(n,i[1],u,e),o)}))},r}function Xt(e,t){var n=bn(e);return n._iter=e,n.size=e.size,n.reverse=function(){return e},e.flip&&(n.flip=function(){var t=Qt(e);return t.reverse=function(){return e.flip()},t}),n.get=function(n,r){return e.get(t?n:-1-n,r)},n.has=function(n){return e.has(t?n:-1-n)},n.includes=function(t){return e.includes(t)},n.cacheResult=wn,n.__iterate=function(t,n){var r=this;return e.__iterate((function(e,n){return t(e,n,r)}),!n)},n.__iterator=function(t,n){return e.__iterator(t,!n)},n}function en(e,t,n,r){var o=bn(e);return r&&(o.has=function(r){var o=e.get(r,b);return o!==b&&!!t.call(n,o,r,e)},o.get=function(r,o){var a=e.get(r,b);return a!==b&&t.call(n,a,r,e)?a:o}),o.__iterateUncached=function(o,a){var i=this,u=0;return e.__iterate((function(e,a,s){if(t.call(n,e,a,s))return u++,o(e,r?a:u-1,i)}),a),u},o.__iteratorUncached=function(o,a){var i=e.__iterator(R,a),u=0;return new F((function(){for(;;){var a=i.next();if(a.done)return a;var s=a.value,c=s[0],l=s[1];if(t.call(n,l,c,e))return z(o,r?c:u++,l,a)}}))},o}function tn(e,t,n){var r=We().asMutable();return e.__iterate((function(o,a){r.update(t.call(n,o,a,e),0,(function(e){return e+1}))})),r.asImmutable()}function nn(e,t,n){var r=u(e),o=(l(e)?Ut():We()).asMutable();e.__iterate((function(a,i){o.update(t.call(n,a,i,e),(function(e){return(e=e||[]).push(r?[i,a]:a),e}))}));var a=yn(e);return o.map((function(t){return mn(e,a(t))}))}function rn(e,t,n,r){var o=e.size;if(void 0!==t&&(t|=0),void 0!==n&&(n===1/0?n=o:n|=0),j(t,n,o))return e;var a=T(t,o),i=I(n,o);if(a!=a||i!=i)return rn(e.toSeq().cacheResult(),t,n,r);var u,s=i-a;s==s&&(u=s<0?0:s);var c=bn(e);return c.size=0===u?u:e.size&&u||void 0,!r&&ae(e)&&u>=0&&(c.get=function(t,n){return(t=O(this,t))>=0&&tu)return q();var e=o.next();return r||t===M?e:z(t,s-1,t===P?void 0:e.value[1],e)}))},c}function on(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){var a=this;if(o)return this.cacheResult().__iterate(r,o);var i=0;return e.__iterate((function(e,o,u){return t.call(n,e,o,u)&&++i&&r(e,o,a)})),i},r.__iteratorUncached=function(r,o){var a=this;if(o)return this.cacheResult().__iterator(r,o);var i=e.__iterator(R,o),u=!0;return new F((function(){if(!u)return q();var e=i.next();if(e.done)return e;var o=e.value,s=o[0],c=o[1];return t.call(n,c,s,a)?r===R?e:z(r,s,c,e):(u=!1,q())}))},r}function an(e,t,n,r){var o=bn(e);return o.__iterateUncached=function(o,a){var i=this;if(a)return this.cacheResult().__iterate(o,a);var u=!0,s=0;return e.__iterate((function(e,a,c){if(!u||!(u=t.call(n,e,a,c)))return s++,o(e,r?a:s-1,i)})),s},o.__iteratorUncached=function(o,a){var i=this;if(a)return this.cacheResult().__iterator(o,a);var u=e.__iterator(R,a),s=!0,c=0;return new F((function(){var e,a,l;do{if((e=u.next()).done)return r||o===M?e:z(o,c++,o===P?void 0:e.value[1],e);var f=e.value;a=f[0],l=f[1],s&&(s=t.call(n,l,a,i))}while(s);return o===R?e:z(o,a,l,e)}))},o}function un(e,t){var n=u(e),o=[e].concat(t).map((function(e){return i(e)?n&&(e=r(e)):e=n?ue(e):se(Array.isArray(e)?e:[e]),e})).filter((function(e){return 0!==e.size}));if(0===o.length)return e;if(1===o.length){var a=o[0];if(a===e||n&&u(a)||s(e)&&s(a))return a}var c=new te(o);return n?c=c.toKeyedSeq():s(e)||(c=c.toSetSeq()),(c=c.flatten(!0)).size=o.reduce((function(e,t){if(void 0!==e){var n=t.size;if(void 0!==n)return e+n}}),0),c}function sn(e,t,n){var r=bn(e);return r.__iterateUncached=function(r,o){var a=0,u=!1;function s(e,c){var l=this;e.__iterate((function(e,o){return(!t||c0}function dn(e,t,r){var o=bn(e);return o.size=new te(r).map((function(e){return e.size})).min(),o.__iterate=function(e,t){for(var n,r=this.__iterator(M,t),o=0;!(n=r.next()).done&&!1!==e(n.value,o++,this););return o},o.__iteratorUncached=function(e,o){var a=r.map((function(e){return e=n(e),W(o?e.reverse():e)})),i=0,u=!1;return new F((function(){var n;return u||(n=a.map((function(e){return e.next()})),u=n.some((function(e){return e.done}))),u?q():z(e,i++,t.apply(null,n.map((function(e){return e.value}))))}))},o}function mn(e,t){return ae(e)?t:e.constructor(t)}function vn(e){if(e!==Object(e))throw new TypeError("Expected [K, V] tuple: "+e)}function gn(e){return Ve(e.size),A(e)}function yn(e){return u(e)?r:s(e)?o:a}function bn(e){return Object.create((u(e)?K:s(e)?Y:G).prototype)}function wn(){return this._iter.cacheResult?(this._iter.cacheResult(),this.size=this._iter.size,this):J.prototype.cacheResult.call(this)}function xn(e,t){return e>t?1:e=0;n--)t={value:arguments[n],next:t};return this.__ownerID?(this.size=e,this._head=t,this.__hash=void 0,this.__altered=!0,this):Kn(e,t)},Vn.prototype.pushAll=function(e){if(0===(e=o(e)).size)return this;Ve(e.size);var t=this.size,n=this._head;return e.reverse().forEach((function(e){t++,n={value:e,next:n}})),this.__ownerID?(this.size=t,this._head=n,this.__hash=void 0,this.__altered=!0,this):Kn(t,n)},Vn.prototype.pop=function(){return this.slice(1)},Vn.prototype.unshift=function(){return this.push.apply(this,arguments)},Vn.prototype.unshiftAll=function(e){return this.pushAll(e)},Vn.prototype.shift=function(){return this.pop.apply(this,arguments)},Vn.prototype.clear=function(){return 0===this.size?this:this.__ownerID?(this.size=0,this._head=void 0,this.__hash=void 0,this.__altered=!0,this):Yn()},Vn.prototype.slice=function(e,t){if(j(e,t,this.size))return this;var n=T(e,this.size);if(I(t,this.size)!==this.size)return Se.prototype.slice.call(this,e,t);for(var r=this.size-n,o=this._head;n--;)o=o.next;return this.__ownerID?(this.size=r,this._head=o,this.__hash=void 0,this.__altered=!0,this):Kn(r,o)},Vn.prototype.__ensureOwner=function(e){return e===this.__ownerID?this:e?Kn(this.size,this._head,e,this.__hash):(this.__ownerID=e,this.__altered=!1,this)},Vn.prototype.__iterate=function(e,t){if(t)return this.reverse().__iterate(e);for(var n=0,r=this._head;r&&!1!==e(r.value,n++,this);)r=r.next;return n},Vn.prototype.__iterator=function(e,t){if(t)return this.reverse().__iterator(e);var n=0,r=this._head;return new F((function(){if(r){var t=r.value;return r=r.next,z(e,n++,t)}return q()}))},Vn.isStack=Wn;var Hn,$n="@@__IMMUTABLE_STACK__@@",Jn=Vn.prototype;function Kn(e,t,n,r){var o=Object.create(Jn);return o.size=e,o._head=t,o.__ownerID=n,o.__hash=r,o.__altered=!1,o}function Yn(){return Hn||(Hn=Kn(0))}function Gn(e,t){var n=function(n){e.prototype[n]=t[n]};return Object.keys(t).forEach(n),Object.getOwnPropertySymbols&&Object.getOwnPropertySymbols(t).forEach(n),e}Jn[$n]=!0,Jn.withMutations=Ke.withMutations,Jn.asMutable=Ke.asMutable,Jn.asImmutable=Ke.asImmutable,Jn.wasAltered=Ke.wasAltered,n.Iterator=F,Gn(n,{toArray:function(){Ve(this.size);var e=new Array(this.size||0);return this.valueSeq().__iterate((function(t,n){e[n]=t})),e},toIndexedSeq:function(){return new Kt(this)},toJS:function(){return this.toSeq().map((function(e){return e&&"function"==typeof e.toJS?e.toJS():e})).__toJS()},toJSON:function(){return this.toSeq().map((function(e){return e&&"function"==typeof e.toJSON?e.toJSON():e})).__toJS()},toKeyedSeq:function(){return new Jt(this,!0)},toMap:function(){return We(this.toKeyedSeq())},toObject:function(){Ve(this.size);var e={};return this.__iterate((function(t,n){e[n]=t})),e},toOrderedMap:function(){return Ut(this.toKeyedSeq())},toOrderedSet:function(){return Ln(u(this)?this.valueSeq():this)},toSet:function(){return jn(u(this)?this.valueSeq():this)},toSetSeq:function(){return new Yt(this)},toSeq:function(){return s(this)?this.toIndexedSeq():u(this)?this.toKeyedSeq():this.toSetSeq()},toStack:function(){return Vn(u(this)?this.valueSeq():this)},toList:function(){return St(u(this)?this.valueSeq():this)},toString:function(){return"[Iterable]"},__toString:function(e,t){return 0===this.size?e+t:e+" "+this.toSeq().map(this.__toStringMapper).join(", ")+" "+t},concat:function(){return mn(this,un(this,e.call(arguments,0)))},includes:function(e){return this.some((function(t){return ge(t,e)}))},entries:function(){return this.__iterator(R)},every:function(e,t){Ve(this.size);var n=!0;return this.__iterate((function(r,o,a){if(!e.call(t,r,o,a))return n=!1,!1})),n},filter:function(e,t){return mn(this,en(this,e,t,!0))},find:function(e,t,n){var r=this.findEntry(e,t);return r?r[1]:n},forEach:function(e,t){return Ve(this.size),this.__iterate(t?e.bind(t):e)},join:function(e){Ve(this.size),e=void 0!==e?""+e:",";var t="",n=!0;return this.__iterate((function(r){n?n=!1:t+=e,t+=null!=r?r.toString():""})),t},keys:function(){return this.__iterator(P)},map:function(e,t){return mn(this,Zt(this,e,t))},reduce:function(e,t,n){var r,o;return Ve(this.size),arguments.length<2?o=!0:r=t,this.__iterate((function(t,a,i){o?(o=!1,r=t):r=e.call(n,r,t,a,i)})),r},reduceRight:function(e,t,n){var r=this.toKeyedSeq().reverse();return r.reduce.apply(r,arguments)},reverse:function(){return mn(this,Xt(this,!0))},slice:function(e,t){return mn(this,rn(this,e,t,!0))},some:function(e,t){return!this.every(tr(e),t)},sort:function(e){return mn(this,fn(this,e))},values:function(){return this.__iterator(M)},butLast:function(){return this.slice(0,-1)},isEmpty:function(){return void 0!==this.size?0===this.size:!this.some((function(){return!0}))},count:function(e,t){return A(e?this.toSeq().filter(e,t):this)},countBy:function(e,t){return tn(this,e,t)},equals:function(e){return ye(this,e)},entrySeq:function(){var e=this;if(e._cache)return new te(e._cache);var t=e.toSeq().map(er).toIndexedSeq();return t.fromEntrySeq=function(){return e.toSeq()},t},filterNot:function(e,t){return this.filter(tr(e),t)},findEntry:function(e,t,n){var r=n;return this.__iterate((function(n,o,a){if(e.call(t,n,o,a))return r=[o,n],!1})),r},findKey:function(e,t){var n=this.findEntry(e,t);return n&&n[0]},findLast:function(e,t,n){return this.toKeyedSeq().reverse().find(e,t,n)},findLastEntry:function(e,t,n){return this.toKeyedSeq().reverse().findEntry(e,t,n)},findLastKey:function(e,t){return this.toKeyedSeq().reverse().findKey(e,t)},first:function(){return this.find(C)},flatMap:function(e,t){return mn(this,cn(this,e,t))},flatten:function(e){return mn(this,sn(this,e,!0))},fromEntrySeq:function(){return new Gt(this)},get:function(e,t){return this.find((function(t,n){return ge(n,e)}),void 0,t)},getIn:function(e,t){for(var n,r=this,o=_n(e);!(n=o.next()).done;){var a=n.value;if((r=r&&r.get?r.get(a,b):b)===b)return t}return r},groupBy:function(e,t){return nn(this,e,t)},has:function(e){return this.get(e,b)!==b},hasIn:function(e){return this.getIn(e,b)!==b},isSubset:function(e){return e="function"==typeof e.includes?e:n(e),this.every((function(t){return e.includes(t)}))},isSuperset:function(e){return(e="function"==typeof e.isSubset?e:n(e)).isSubset(this)},keyOf:function(e){return this.findKey((function(t){return ge(t,e)}))},keySeq:function(){return this.toSeq().map(Xn).toIndexedSeq()},last:function(){return this.toSeq().reverse().first()},lastKeyOf:function(e){return this.toKeyedSeq().reverse().keyOf(e)},max:function(e){return pn(this,e)},maxBy:function(e,t){return pn(this,t,e)},min:function(e){return pn(this,e?nr(e):ar)},minBy:function(e,t){return pn(this,t?nr(t):ar,e)},rest:function(){return this.slice(1)},skip:function(e){return this.slice(Math.max(0,e))},skipLast:function(e){return mn(this,this.toSeq().reverse().skip(e).reverse())},skipWhile:function(e,t){return mn(this,an(this,e,t,!0))},skipUntil:function(e,t){return this.skipWhile(tr(e),t)},sortBy:function(e,t){return mn(this,fn(this,t,e))},take:function(e){return this.slice(0,Math.max(0,e))},takeLast:function(e){return mn(this,this.toSeq().reverse().take(e).reverse())},takeWhile:function(e,t){return mn(this,on(this,e,t))},takeUntil:function(e,t){return this.takeWhile(tr(e),t)},valueSeq:function(){return this.toIndexedSeq()},hashCode:function(){return this.__hash||(this.__hash=ir(this))}});var Qn=n.prototype;Qn[f]=!0,Qn[B]=Qn.values,Qn.__toJS=Qn.toArray,Qn.__toStringMapper=rr,Qn.inspect=Qn.toSource=function(){return this.toString()},Qn.chain=Qn.flatMap,Qn.contains=Qn.includes,Gn(r,{flip:function(){return mn(this,Qt(this))},mapEntries:function(e,t){var n=this,r=0;return mn(this,this.toSeq().map((function(o,a){return e.call(t,[a,o],r++,n)})).fromEntrySeq())},mapKeys:function(e,t){var n=this;return mn(this,this.toSeq().flip().map((function(r,o){return e.call(t,r,o,n)})).flip())}});var Zn=r.prototype;function Xn(e,t){return t}function er(e,t){return[t,e]}function tr(e){return function(){return!e.apply(this,arguments)}}function nr(e){return function(){return-e.apply(this,arguments)}}function rr(e){return"string"==typeof e?JSON.stringify(e):String(e)}function or(){return k(arguments)}function ar(e,t){return et?-1:0}function ir(e){if(e.size===1/0)return 0;var t=l(e),n=u(e),r=t?1:0;return ur(e.__iterate(n?t?function(e,t){r=31*r+sr(Ce(e),Ce(t))|0}:function(e,t){r=r+sr(Ce(e),Ce(t))|0}:t?function(e){r=31*r+Ce(e)|0}:function(e){r=r+Ce(e)|0}),r)}function ur(e,t){return t=Ae(t,3432918353),t=Ae(t<<15|t>>>-15,461845907),t=Ae(t<<13|t>>>-13,5),t=Ae((t=(t+3864292196|0)^e)^t>>>16,2246822507),t=Oe((t=Ae(t^t>>>13,3266489909))^t>>>16)}function sr(e,t){return e^t+2654435769+(e<<6)+(e>>2)|0}return Zn[p]=!0,Zn[B]=Qn.entries,Zn.__toJS=Qn.toObject,Zn.__toStringMapper=function(e,t){return JSON.stringify(t)+": "+rr(e)},Gn(o,{toKeyedSeq:function(){return new Jt(this,!1)},filter:function(e,t){return mn(this,en(this,e,t,!1))},findIndex:function(e,t){var n=this.findEntry(e,t);return n?n[0]:-1},indexOf:function(e){var t=this.keyOf(e);return void 0===t?-1:t},lastIndexOf:function(e){var t=this.lastKeyOf(e);return void 0===t?-1:t},reverse:function(){return mn(this,Xt(this,!1))},slice:function(e,t){return mn(this,rn(this,e,t,!1))},splice:function(e,t){var n=arguments.length;if(t=Math.max(0|t,0),0===n||2===n&&!t)return this;e=T(e,e<0?this.count():this.size);var r=this.slice(0,e);return mn(this,1===n?r:r.concat(k(arguments,2),this.slice(e+t)))},findLastIndex:function(e,t){var n=this.findLastEntry(e,t);return n?n[0]:-1},first:function(){return this.get(0)},flatten:function(e){return mn(this,sn(this,e,!1))},get:function(e,t){return(e=O(this,e))<0||this.size===1/0||void 0!==this.size&&e>this.size?t:this.find((function(t,n){return n===e}),void 0,t)},has:function(e){return(e=O(this,e))>=0&&(void 0!==this.size?this.size===1/0||e1)try{return decodeURIComponent(t[1])}catch(e){console.error(e)}return null}function Ne(e){return t=e.replace(/\.[^./]*$/,""),Y()(J()(t));var t}function Pe(e,t,n,r,a){if(!t)return[];var u=[],s=t.get("nullable"),c=t.get("required"),f=t.get("maximum"),h=t.get("minimum"),d=t.get("type"),m=t.get("format"),g=t.get("maxLength"),b=t.get("minLength"),x=t.get("uniqueItems"),_=t.get("maxItems"),E=t.get("minItems"),S=t.get("pattern"),k=n||!0===c,A=null!=e;if(s&&null===e||!d||!(k||A&&"array"===d||!(!k&&!A)))return[];var O="string"===d&&e,C="array"===d&&l()(e)&&e.length,j="array"===d&&W.a.List.isList(e)&&e.count(),T=[O,C,j,"array"===d&&"string"==typeof e&&e,"file"===d&&e instanceof ue.a.File,"boolean"===d&&(e||!1===e),"number"===d&&(e||0===e),"integer"===d&&(e||0===e),"object"===d&&"object"===i()(e)&&null!==e,"object"===d&&"string"==typeof e&&e],I=N()(T).call(T,(function(e){return!!e}));if(k&&!I&&!r)return u.push("Required field is not provided"),u;if("object"===d&&(null===a||"application/json"===a)){var P,M=e;if("string"==typeof e)try{M=JSON.parse(e)}catch(e){return u.push("Parameter string value must be valid JSON"),u}if(t&&t.has("required")&&Ee(c.isList)&&c.isList()&&y()(c).call(c,(function(e){void 0===M[e]&&u.push({propKey:e,error:"Required property not found"})})),t&&t.has("properties"))y()(P=t.get("properties")).call(P,(function(e,t){var n=Pe(M[t],e,!1,r,a);u.push.apply(u,o()(p()(n).call(n,(function(e){return{propKey:t,error:e}}))))}))}if(S){var R=function(e,t){if(!new RegExp(t).test(e))return"Value must follow pattern "+t}(e,S);R&&u.push(R)}if(E&&"array"===d){var D=function(e,t){var n;if(!e&&t>=1||e&&e.lengtht)return v()(n="Array must not contain more then ".concat(t," item")).call(n,1===t?"":"s")}(e,_);L&&u.push({needRemove:!0,error:L})}if(x&&"array"===d){var B=function(e,t){if(e&&("true"===t||!0===t)){var n=Object(V.fromJS)(e),r=n.toSet();if(e.length>r.size){var o=Object(V.Set)();if(y()(n).call(n,(function(e,t){w()(n).call(n,(function(t){return Ee(t.equals)?t.equals(e):t===e})).size>1&&(o=o.add(t))})),0!==o.size)return p()(o).call(o,(function(e){return{index:e,error:"No duplicates allowed."}})).toArray()}}}(e,x);B&&u.push.apply(u,o()(B))}if(g||0===g){var F=function(e,t){var n;if(e.length>t)return v()(n="Value must be no longer than ".concat(t," character")).call(n,1!==t?"s":"")}(e,g);F&&u.push(F)}if(b){var z=function(e,t){var n;if(e.lengtht)return"Value must be less than ".concat(t)}(e,f);q&&u.push(q)}if(h||0===h){var U=function(e,t){if(e2&&void 0!==arguments[2]?arguments[2]:{},r=n.isOAS3,o=void 0!==r&&r,a=n.bypassRequiredCheck,i=void 0!==a&&a,u=e.get("required"),s=Object(le.a)(e,{isOAS3:o}),c=s.schema,l=s.parameterContentMediaType;return Pe(t,c,u,i,l)},Re=function(e,t,n){if(e&&(!e.xml||!e.xml.name)){if(e.xml=e.xml||{},!e.$$ref)return e.type||e.items||e.properties||e.additionalProperties?'\n\x3c!-- XML example cannot be generated; root element name is undefined --\x3e':null;var r=e.$$ref.match(/\S*\/(\S+)$/);e.xml.name=r[1]}return Object(ie.memoizedCreateXMLExample)(e,t,n)},De=[{when:/json/,shouldStringifyTypes:["string"]}],Le=["object"],Be=function(e,t,n,r){var a=Object(ie.memoizedSampleFromSchema)(e,t,r),u=i()(a),s=S()(De).call(De,(function(e,t){var r;return t.when.test(n)?v()(r=[]).call(r,o()(e),o()(t.shouldStringifyTypes)):e}),Le);return te()(s,(function(e){return e===u}))?M()(a,null,2):a},Fe=function(e,t,n,r){var o,a=Be(e,t,n,r);try{"\n"===(o=me.a.dump(me.a.load(a),{lineWidth:-1}))[o.length-1]&&(o=T()(o).call(o,0,o.length-1))}catch(e){return console.error(e),"error: could not generate yaml example"}return o.replace(/\t/g," ")},ze=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:void 0;return e&&Ee(e.toJS)&&(e=e.toJS()),r&&Ee(r.toJS)&&(r=r.toJS()),/xml/.test(t)?Re(e,n,r):/(yaml|yml)/.test(t)?Fe(e,n,t,r):Be(e,n,t,r)},qe=function(){var e={},t=ue.a.location.search;if(!t)return{};if(""!=t){var n=t.substr(1).split("&");for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(r=n[r].split("="),e[decodeURIComponent(r[0])]=r[1]&&decodeURIComponent(r[1])||"")}return e},Ue=function(t){return(t instanceof e?t:e.from(t.toString(),"utf-8")).toString("base64")},Ve={operationsSorter:{alpha:function(e,t){return e.get("path").localeCompare(t.get("path"))},method:function(e,t){return e.get("method").localeCompare(t.get("method"))}},tagsSorter:{alpha:function(e,t){return e.localeCompare(t)}}},We=function(e){var t=[];for(var n in e){var r=e[n];void 0!==r&&""!==r&&t.push([n,"=",encodeURIComponent(r).replace(/%20/g,"+")].join(""))}return t.join("&")},He=function(e,t,n){return!!X()(n,(function(n){return re()(e[n],t[n])}))};function $e(e){return"string"!=typeof e||""===e?"":Object(H.sanitizeUrl)(e)}function Je(e){return!(!e||D()(e).call(e,"localhost")>=0||D()(e).call(e,"127.0.0.1")>=0||"none"===e)}function Ke(e){if(!W.a.OrderedMap.isOrderedMap(e))return null;if(!e.size)return null;var t=B()(e).call(e,(function(e,t){return z()(t).call(t,"2")&&_()(e.get("content")||{}).length>0})),n=e.get("default")||W.a.OrderedMap(),r=(n.get("content")||W.a.OrderedMap()).keySeq().toJS().length?n:null;return t||r}var Ye=function(e){return"string"==typeof e||e instanceof String?U()(e).call(e).replace(/\s/g,"%20"):""},Ge=function(e){return ce()(Ye(e).replace(/%20/g,"_"))},Qe=function(e){return w()(e).call(e,(function(e,t){return/^x-/.test(t)}))},Ze=function(e){return w()(e).call(e,(function(e,t){return/^pattern|maxLength|minLength|maximum|minimum/.test(t)}))};function Xe(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){return!0};if("object"!==i()(e)||l()(e)||null===e||!t)return e;var o=A()({},e);return y()(n=_()(o)).call(n,(function(e){e===t&&r(o[e],e)?delete o[e]:o[e]=Xe(o[e],t,r)})),o}function et(e){if("string"==typeof e)return e;if(e&&e.toJS&&(e=e.toJS()),"object"===i()(e)&&null!==e)try{return M()(e,null,2)}catch(t){return String(e)}return null==e?"":e.toString()}function tt(e){return"number"==typeof e?e.toString():e}function nt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.returnAll,r=void 0!==n&&n,o=t.allowHashes,a=void 0===o||o;if(!W.a.Map.isMap(e))throw new Error("paramToIdentifier: received a non-Im.Map parameter as input");var i,u,s,c=e.get("name"),l=e.get("in"),f=[];e&&e.hashCode&&l&&c&&a&&f.push(v()(i=v()(u="".concat(l,".")).call(u,c,".hash-")).call(i,e.hashCode()));l&&c&&f.push(v()(s="".concat(l,".")).call(s,c));return f.push(c),r?f:f[0]||""}function rt(e,t){var n,r=nt(e,{returnAll:!0});return w()(n=p()(r).call(r,(function(e){return t[e]}))).call(n,(function(e){return void 0!==e}))[0]}function ot(){return it(pe()(32).toString("base64"))}function at(e){return it(de()("sha256").update(e).digest("base64"))}function it(e){return e.replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}var ut=function(e){return!e||!(!ge(e)||!e.isEmpty())}}).call(this,n(132).Buffer)},function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){var r=n(226);function o(e,t){for(var n=0;n1?t-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:r,n=null,a=null;return function(){return o(t,n,arguments)||(a=e.apply(null,arguments)),n=arguments,a}}))},function(e,t,n){(function(t){var n=function(e){return e&&e.Math==Math&&e};e.exports=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof t&&t)||function(){return this}()||Function("return this")()}).call(this,n(57))},function(e,t,n){e.exports=n(385)},function(e,t,n){var r=n(166),o=n(515);function a(t){return"function"==typeof r&&"symbol"==typeof o?(e.exports=a=function(e){return typeof e},e.exports.default=e.exports,e.exports.__esModule=!0):(e.exports=a=function(e){return e&&"function"==typeof r&&e.constructor===r&&e!==r.prototype?"symbol":typeof e},e.exports.default=e.exports,e.exports.__esModule=!0),a(t)}e.exports=a,e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){e.exports=n(351)},function(e,t,n){e.exports=n(349)},function(e,t,n){"use strict";var r=n(17),o=n(93),a=n(27),i=n(41),u=n(111).f,s=n(331),c=n(34),l=n(84),f=n(85),p=n(44),h=function(e){var t=function(n,r,a){if(this instanceof t){switch(arguments.length){case 0:return new e;case 1:return new e(n);case 2:return new e(n,r)}return new e(n,r,a)}return o(e,this,arguments)};return t.prototype=e.prototype,t};e.exports=function(e,t){var n,o,d,m,v,g,y,b,w=e.target,x=e.global,_=e.stat,E=e.proto,S=x?r:_?r[w]:(r[w]||{}).prototype,k=x?c:c[w]||f(c,w,{})[w],A=k.prototype;for(d in t)n=!s(x?d:w+(_?".":"#")+d,e.forced)&&S&&p(S,d),v=k[d],n&&(g=e.noTargetGet?(b=u(S,d))&&b.value:S[d]),m=n&&g?g:t[d],n&&typeof v==typeof m||(y=e.bind&&n?l(m,r):e.wrap&&n?h(m):E&&i(m)?a(m):m,(e.sham||m&&m.sham||v&&v.sham)&&f(y,"sham",!0),f(k,d,y),E&&(p(c,o=w+"Prototype")||f(c,o,{}),f(c[o],d,m),e.real&&A&&!A[d]&&f(A,d,m)))}},function(e,t,n){e.exports=n(381)},function(e,t,n){e.exports=n(352)},function(e,t,n){var r=n(420),o=n(421),a=n(800),i=n(802),u=n(807),s=n(809),c=n(814),l=n(226),f=n(3);function p(e,t){var n=r(e);if(o){var u=o(e);t&&(u=a(u).call(u,(function(t){return i(e,t).enumerable}))),n.push.apply(n,u)}return n}e.exports=function(e){for(var t=1;t>",i=function(){invariant(!1,"ImmutablePropTypes type checking code is stripped in production.")};i.isRequired=i;var u=function(){return i};function s(e){var t=typeof e;return Array.isArray(e)?"array":e instanceof RegExp?"object":e instanceof o.Iterable?"Immutable."+e.toSource().split(" ")[0]:t}function c(e){function t(t,n,r,o,i,u){for(var s=arguments.length,c=Array(s>6?s-6:0),l=6;l4)}function l(e){var t=e.get("swagger");return"string"==typeof t&&i()(t).call(t,"2.0")}function f(e){return function(t,n){return function(r){return n&&n.specSelectors&&n.specSelectors.specJson?c(n.specSelectors.specJson())?s.a.createElement(e,o()({},r,n,{Ori:t})):s.a.createElement(t,r):(console.warn("OAS3 wrapper: couldn't get spec"),null)}}}},function(e,t,n){e.exports=n(535)},function(e,t,n){var r=n(17),o=n(212),a=n(44),i=n(171),u=n(210),s=n(329),c=o("wks"),l=r.Symbol,f=l&&l.for,p=s?l:l&&l.withoutSetter||i;e.exports=function(e){if(!a(c,e)||!u&&"string"!=typeof c[e]){var t="Symbol."+e;u&&a(l,e)?c[e]=l[e]:c[e]=s&&f?f(t):p(t)}return c[e]}},function(e,t,n){var r=n(242);e.exports=function(e,t,n){var o=null==e?void 0:r(e,t);return void 0===o?n:o}},function(e,t,n){e.exports=n(840)},function(e,t){e.exports=function(e){return"function"==typeof e}},function(e,t,n){var r=n(34);e.exports=function(e){return r[e+"Prototype"]}},function(e,t,n){var r=n(41);e.exports=function(e){return"object"==typeof e?null!==e:r(e)}},function(e,t,n){var r=n(27),o=n(62),a=r({}.hasOwnProperty);e.exports=Object.hasOwn||function(e,t){return a(o(e),t)}},function(e,t,n){var r=n(34),o=n(44),a=n(223),i=n(63).f;e.exports=function(e){var t=r.Symbol||(r.Symbol={});o(t,e)||i(t,e,{value:a.f(e)})}},function(e,t,n){"use strict";n.r(t),n.d(t,"UPDATE_SPEC",(function(){return ee})),n.d(t,"UPDATE_URL",(function(){return te})),n.d(t,"UPDATE_JSON",(function(){return ne})),n.d(t,"UPDATE_PARAM",(function(){return re})),n.d(t,"UPDATE_EMPTY_PARAM_INCLUSION",(function(){return oe})),n.d(t,"VALIDATE_PARAMS",(function(){return ae})),n.d(t,"SET_RESPONSE",(function(){return ie})),n.d(t,"SET_REQUEST",(function(){return ue})),n.d(t,"SET_MUTATED_REQUEST",(function(){return se})),n.d(t,"LOG_REQUEST",(function(){return ce})),n.d(t,"CLEAR_RESPONSE",(function(){return le})),n.d(t,"CLEAR_REQUEST",(function(){return fe})),n.d(t,"CLEAR_VALIDATE_PARAMS",(function(){return pe})),n.d(t,"UPDATE_OPERATION_META_VALUE",(function(){return he})),n.d(t,"UPDATE_RESOLVED",(function(){return de})),n.d(t,"UPDATE_RESOLVED_SUBTREE",(function(){return me})),n.d(t,"SET_SCHEME",(function(){return ve})),n.d(t,"updateSpec",(function(){return ge})),n.d(t,"updateResolved",(function(){return ye})),n.d(t,"updateUrl",(function(){return be})),n.d(t,"updateJsonSpec",(function(){return we})),n.d(t,"parseToJson",(function(){return xe})),n.d(t,"resolveSpec",(function(){return Ee})),n.d(t,"requestResolvedSubtree",(function(){return Ae})),n.d(t,"changeParam",(function(){return Oe})),n.d(t,"changeParamByIdentity",(function(){return Ce})),n.d(t,"updateResolvedSubtree",(function(){return je})),n.d(t,"invalidateResolvedSubtreeCache",(function(){return Te})),n.d(t,"validateParams",(function(){return Ie})),n.d(t,"updateEmptyParamInclusion",(function(){return Ne})),n.d(t,"clearValidateParams",(function(){return Pe})),n.d(t,"changeConsumesValue",(function(){return Me})),n.d(t,"changeProducesValue",(function(){return Re})),n.d(t,"setResponse",(function(){return De})),n.d(t,"setRequest",(function(){return Le})),n.d(t,"setMutatedRequest",(function(){return Be})),n.d(t,"logRequest",(function(){return Fe})),n.d(t,"executeRequest",(function(){return ze})),n.d(t,"execute",(function(){return qe})),n.d(t,"clearResponse",(function(){return Ue})),n.d(t,"clearRequest",(function(){return Ve})),n.d(t,"setScheme",(function(){return We}));var r=n(25),o=n.n(r),a=n(54),i=n.n(a),u=n(72),s=n.n(u),c=n(19),l=n.n(c),f=n(40),p=n.n(f),h=n(24),d=n.n(h),m=n(4),v=n.n(m),g=n(319),y=n.n(g),b=n(30),w=n.n(b),x=n(197),_=n.n(x),E=n(66),S=n.n(E),k=n(12),A=n.n(k),O=n(198),C=n.n(O),j=n(18),T=n.n(j),I=n(23),N=n.n(I),P=n(2),M=n.n(P),R=n(15),D=n.n(R),L=n(21),B=n.n(L),F=n(320),z=n.n(F),q=n(70),U=n(1),V=n(89),W=n.n(V),H=n(141),$=n(457),J=n.n($),K=n(458),Y=n.n(K),G=n(321),Q=n.n(G),Z=n(5),X=["path","method"],ee="spec_update_spec",te="spec_update_url",ne="spec_update_json",re="spec_update_param",oe="spec_update_empty_param_inclusion",ae="spec_validate_param",ie="spec_set_response",ue="spec_set_request",se="spec_set_mutated_request",ce="spec_log_request",le="spec_clear_response",fe="spec_clear_request",pe="spec_clear_validate_param",he="spec_update_operation_meta_value",de="spec_update_resolved",me="spec_update_resolved_subtree",ve="set_scheme";function ge(e){var t,n=(t=e,J()(t)?t:"").replace(/\t/g," ");if("string"==typeof e)return{type:ee,payload:n}}function ye(e){return{type:de,payload:e}}function be(e){return{type:te,payload:e}}function we(e){return{type:ne,payload:e}}var xe=function(e){return function(t){var n=t.specActions,r=t.specSelectors,o=t.errActions,a=r.specStr,i=null;try{e=e||a(),o.clear({source:"parser"}),i=q.a.load(e)}catch(e){return console.error(e),o.newSpecErr({source:"parser",level:"error",message:e.reason,line:e.mark&&e.mark.line?e.mark.line+1:void 0})}return i&&"object"===l()(i)?n.updateJsonSpec(i):{}}},_e=!1,Ee=function(e,t){return function(n){var r=n.specActions,o=n.specSelectors,a=n.errActions,i=n.fn,u=i.fetch,s=i.resolve,c=i.AST,l=void 0===c?{}:c,f=n.getConfigs;_e||(console.warn("specActions.resolveSpec is deprecated since v3.10.0 and will be removed in v4.0.0; use requestResolvedSubtree instead!"),_e=!0);var p=f(),h=p.modelPropertyMacro,m=p.parameterMacro,g=p.requestInterceptor,b=p.responseInterceptor;void 0===e&&(e=o.specJson()),void 0===t&&(t=o.url());var w=l.getLineNumberForPath?l.getLineNumberForPath:function(){},x=o.specStr();return s({fetch:u,spec:e,baseDoc:t,modelPropertyMacro:h,parameterMacro:m,requestInterceptor:g,responseInterceptor:b}).then((function(e){var t=e.spec,n=e.errors;if(a.clear({type:"thrown"}),d()(n)&&n.length>0){var o=v()(n).call(n,(function(e){return console.error(e),e.line=e.fullPath?w(x,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",y()(e,"message",{enumerable:!0,value:e.message}),e}));a.newThrownErrBatch(o)}return r.updateResolved(t)}))}},Se=[],ke=Y()(s()(p.a.mark((function e(){var t,n,r,o,a,i,u,c,l,f,h,m,g,b,x,E,k,O;return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=Se.system){e.next=4;break}return console.error("debResolveSubtrees: don't have a system to operate on, aborting."),e.abrupt("return");case 4:if(n=t.errActions,r=t.errSelectors,o=t.fn,a=o.resolveSubtree,i=o.fetch,u=o.AST,c=void 0===u?{}:u,l=t.specSelectors,f=t.specActions,a){e.next=8;break}return console.error("Error: Swagger-Client did not provide a `resolveSubtree` method, doing nothing."),e.abrupt("return");case 8:return h=c.getLineNumberForPath?c.getLineNumberForPath:function(){},m=l.specStr(),g=t.getConfigs(),b=g.modelPropertyMacro,x=g.parameterMacro,E=g.requestInterceptor,k=g.responseInterceptor,e.prev=11,e.next=14,w()(Se).call(Se,function(){var e=s()(p.a.mark((function e(t,o){var u,c,f,g,w,O,j,T,I;return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,t;case 2:return u=e.sent,c=u.resultMap,f=u.specWithCurrentSubtrees,e.next=7,a(f,o,{baseDoc:l.url(),modelPropertyMacro:b,parameterMacro:x,requestInterceptor:E,responseInterceptor:k});case 7:if(g=e.sent,w=g.errors,O=g.spec,r.allErrors().size&&n.clearBy((function(e){var t;return"thrown"!==e.get("type")||"resolver"!==e.get("source")||!_()(t=e.get("fullPath")).call(t,(function(e,t){return e===o[t]||void 0===o[t]}))})),d()(w)&&w.length>0&&(j=v()(w).call(w,(function(e){return e.line=e.fullPath?h(m,e.fullPath):null,e.path=e.fullPath?e.fullPath.join("."):null,e.level="error",e.type="thrown",e.source="resolver",y()(e,"message",{enumerable:!0,value:e.message}),e})),n.newThrownErrBatch(j)),!O||!l.isOAS3()||"components"!==o[0]||"securitySchemes"!==o[1]){e.next=15;break}return e.next=15,S.a.all(v()(T=A()(I=C()(O)).call(I,(function(e){return"openIdConnect"===e.type}))).call(T,function(){var e=s()(p.a.mark((function e(t){var n,r;return p.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n={url:t.openIdConnectUrl,requestInterceptor:E,responseInterceptor:k},e.prev=1,e.next=4,i(n);case 4:(r=e.sent)instanceof Error||r.status>=400?console.error(r.statusText+" "+n.url):t.openIdConnectData=JSON.parse(r.text),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(1),console.error(e.t0);case 11:case"end":return e.stop()}}),e,null,[[1,8]])})));return function(t){return e.apply(this,arguments)}}()));case 15:return Q()(c,o,O),Q()(f,o,O),e.abrupt("return",{resultMap:c,specWithCurrentSubtrees:f});case 18:case"end":return e.stop()}}),e)})));return function(t,n){return e.apply(this,arguments)}}(),S.a.resolve({resultMap:(l.specResolvedSubtree([])||Object(U.Map)()).toJS(),specWithCurrentSubtrees:l.specJson().toJS()}));case 14:O=e.sent,delete Se.system,Se=[],e.next=22;break;case 19:e.prev=19,e.t0=e.catch(11),console.error(e.t0);case 22:f.updateResolvedSubtree([],O.resultMap);case 23:case"end":return e.stop()}}),e,null,[[11,19]])}))),35),Ae=function(e){return function(t){var n;T()(n=v()(Se).call(Se,(function(e){return e.join("@@")}))).call(n,e.join("@@"))>-1||(Se.push(e),Se.system=t,ke())}};function Oe(e,t,n,r,o){return{type:re,payload:{path:e,value:r,paramName:t,paramIn:n,isXml:o}}}function Ce(e,t,n,r){return{type:re,payload:{path:e,param:t,value:n,isXml:r}}}var je=function(e,t){return{type:me,payload:{path:e,value:t}}},Te=function(){return{type:me,payload:{path:[],value:Object(U.Map)()}}},Ie=function(e,t){return{type:ae,payload:{pathMethod:e,isOAS3:t}}},Ne=function(e,t,n,r){return{type:oe,payload:{pathMethod:e,paramName:t,paramIn:n,includeEmptyValue:r}}};function Pe(e){return{type:pe,payload:{pathMethod:e}}}function Me(e,t){return{type:he,payload:{path:e,value:t,key:"consumes_value"}}}function Re(e,t){return{type:he,payload:{path:e,value:t,key:"produces_value"}}}var De=function(e,t,n){return{payload:{path:e,method:t,res:n},type:ie}},Le=function(e,t,n){return{payload:{path:e,method:t,req:n},type:ue}},Be=function(e,t,n){return{payload:{path:e,method:t,req:n},type:se}},Fe=function(e){return{payload:e,type:ce}},ze=function(e){return function(t){var n,r,o=t.fn,a=t.specActions,i=t.specSelectors,u=t.getConfigs,c=t.oas3Selectors,l=e.pathName,f=e.method,h=e.operation,m=u(),g=m.requestInterceptor,y=m.responseInterceptor,b=h.toJS();h&&h.get("parameters")&&N()(n=A()(r=h.get("parameters")).call(r,(function(e){return e&&!0===e.get("allowEmptyValue")}))).call(n,(function(t){if(i.parameterInclusionSettingFor([l,f],t.get("name"),t.get("in"))){e.parameters=e.parameters||{};var n=Object(Z.B)(t,e.parameters);(!n||n&&0===n.size)&&(e.parameters[t.get("name")]="")}}));if(e.contextUrl=W()(i.url()).toString(),b&&b.operationId?e.operationId=b.operationId:b&&l&&f&&(e.operationId=o.opId(b,l,f)),i.isOAS3()){var w,x=M()(w="".concat(l,":")).call(w,f);e.server=c.selectedServer(x)||c.selectedServer();var _=c.serverVariables({server:e.server,namespace:x}).toJS(),E=c.serverVariables({server:e.server}).toJS();e.serverVariables=D()(_).length?_:E,e.requestContentType=c.requestContentType(l,f),e.responseContentType=c.responseContentType(l,f)||"*/*";var S,k=c.requestBodyValue(l,f),O=c.requestBodyInclusionSetting(l,f);if(k&&k.toJS)e.requestBody=A()(S=v()(k).call(k,(function(e){return U.Map.isMap(e)?e.get("value"):e}))).call(S,(function(e,t){return(d()(e)?0!==e.length:!Object(Z.q)(e))||O.get(t)})).toJS();else e.requestBody=k}var C=B()({},e);C=o.buildRequest(C),a.setRequest(e.pathName,e.method,C);var j=function(){var t=s()(p.a.mark((function t(n){var r,o;return p.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,g.apply(undefined,[n]);case 2:return r=t.sent,o=B()({},r),a.setMutatedRequest(e.pathName,e.method,o),t.abrupt("return",r);case 6:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}();e.requestInterceptor=j,e.responseInterceptor=y;var T=z()();return o.execute(e).then((function(t){t.duration=z()()-T,a.setResponse(e.pathName,e.method,t)})).catch((function(t){"Failed to fetch"===t.message&&(t.name="",t.message='**Failed to fetch.** \n**Possible Reasons:** \n - CORS \n - Network Failure \n - URL scheme must be "http" or "https" for CORS request.'),a.setResponse(e.pathName,e.method,{error:!0,err:Object(H.serializeError)(t)})}))}},qe=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.path,n=e.method,r=i()(e,X);return function(e){var a=e.fn.fetch,i=e.specSelectors,u=e.specActions,s=i.specJsonWithResolvedSubtrees().toJS(),c=i.operationScheme(t,n),l=i.contentTypeValues([t,n]).toJS(),f=l.requestContentType,p=l.responseContentType,h=/xml/i.test(f),d=i.parameterValues([t,n],h).toJS();return u.executeRequest(o()(o()({},r),{},{fetch:a,spec:s,pathName:t,method:n,parameters:d,requestContentType:f,scheme:c,responseContentType:p}))}};function Ue(e,t){return{type:le,payload:{path:e,method:t}}}function Ve(e,t){return{type:fe,payload:{path:e,method:t}}}function We(e,t,n){return{type:ve,payload:{scheme:e,path:t,method:n}}}},function(e,t,n){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t=e.length?{done:!0}:{done:!1,value:e[u++]}},e:function(e){throw e},f:s}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var c,l=!0,f=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return l=e.done,e},e:function(e){f=!0,c=e},f:function(){try{l||null==n.return||n.return()}finally{if(f)throw c}}}},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t){var n=Function.prototype.call;e.exports=n.bind?n.bind(n):function(){return n.apply(n,arguments)}},function(e,t,n){var r=n(17),o=n(43),a=r.String,i=r.TypeError;e.exports=function(e){if(o(e))return e;throw i(a(e)+" is not an object")}},function(e,t){var n=Array.isArray;e.exports=n},function(e,t){e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},function(e,t,n){var r=n(421),o=n(423),a=n(820);e.exports=function(e,t){if(null==e)return{};var n,i,u=a(e,t);if(r){var s=r(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(u[n]=e[n])}return u},e.exports.default=e.exports,e.exports.__esModule=!0},function(e,t,n){"use strict";n.r(t),n.d(t,"UPDATE_SELECTED_SERVER",(function(){return r})),n.d(t,"UPDATE_REQUEST_BODY_VALUE",(function(){return o})),n.d(t,"UPDATE_REQUEST_BODY_VALUE_RETAIN_FLAG",(function(){return a})),n.d(t,"UPDATE_REQUEST_BODY_INCLUSION",(function(){return i})),n.d(t,"UPDATE_ACTIVE_EXAMPLES_MEMBER",(function(){return u})),n.d(t,"UPDATE_REQUEST_CONTENT_TYPE",(function(){return s})),n.d(t,"UPDATE_RESPONSE_CONTENT_TYPE",(function(){return c})),n.d(t,"UPDATE_SERVER_VARIABLE_VALUE",(function(){return l})),n.d(t,"SET_REQUEST_BODY_VALIDATE_ERROR",(function(){return f})),n.d(t,"CLEAR_REQUEST_BODY_VALIDATE_ERROR",(function(){return p})),n.d(t,"CLEAR_REQUEST_BODY_VALUE",(function(){return h})),n.d(t,"setSelectedServer",(function(){return d})),n.d(t,"setRequestBodyValue",(function(){return m})),n.d(t,"setRetainRequestBodyValueFlag",(function(){return v})),n.d(t,"setRequestBodyInclusion",(function(){return g})),n.d(t,"setActiveExamplesMember",(function(){return y})),n.d(t,"setRequestContentType",(function(){return b})),n.d(t,"setResponseContentType",(function(){return w})),n.d(t,"setServerVariableValue",(function(){return x})),n.d(t,"setRequestBodyValidateError",(function(){return _})),n.d(t,"clearRequestBodyValidateError",(function(){return E})),n.d(t,"initRequestBodyValidateError",(function(){return S})),n.d(t,"clearRequestBodyValue",(function(){return k}));var r="oas3_set_servers",o="oas3_set_request_body_value",a="oas3_set_request_body_retain_flag",i="oas3_set_request_body_inclusion",u="oas3_set_active_examples_member",s="oas3_set_request_content_type",c="oas3_set_response_content_type",l="oas3_set_server_variable_value",f="oas3_set_request_body_validate_error",p="oas3_clear_request_body_validate_error",h="oas3_clear_request_body_value";function d(e,t){return{type:r,payload:{selectedServerUrl:e,namespace:t}}}function m(e){var t=e.value,n=e.pathMethod;return{type:o,payload:{value:t,pathMethod:n}}}var v=function(e){var t=e.value,n=e.pathMethod;return{type:a,payload:{value:t,pathMethod:n}}};function g(e){var t=e.value,n=e.pathMethod,r=e.name;return{type:i,payload:{value:t,pathMethod:n,name:r}}}function y(e){var t=e.name,n=e.pathMethod,r=e.contextType,o=e.contextName;return{type:u,payload:{name:t,pathMethod:n,contextType:r,contextName:o}}}function b(e){var t=e.value,n=e.pathMethod;return{type:s,payload:{value:t,pathMethod:n}}}function w(e){var t=e.value,n=e.path,r=e.method;return{type:c,payload:{value:t,path:n,method:r}}}function x(e){var t=e.server,n=e.namespace,r=e.key,o=e.val;return{type:l,payload:{server:t,namespace:n,key:r,val:o}}}var _=function(e){var t=e.path,n=e.method,r=e.validationErrors;return{type:f,payload:{path:t,method:n,validationErrors:r}}},E=function(e){var t=e.path,n=e.method;return{type:p,payload:{path:t,method:n}}},S=function(e){var t=e.pathMethod;return{type:p,payload:{path:t[0],method:t[1]}}},k=function(e){var t=e.pathMethod;return{type:h,payload:{pathMethod:t}}}},function(e,t,n){e.exports=n(647)},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r=n(34),o=n(17),a=n(41),i=function(e){return a(e)?e:void 0};e.exports=function(e,t){return arguments.length<2?i(r[e])||i(o[e]):r[e]&&r[e][t]||o[e]&&o[e][t]}},function(e,t,n){"use strict";n.d(t,"b",(function(){return m})),n.d(t,"e",(function(){return v})),n.d(t,"c",(function(){return y})),n.d(t,"a",(function(){return b})),n.d(t,"d",(function(){return w}));var r=n(49),o=n.n(r),a=n(19),i=n.n(a),u=n(108),s=n.n(u),c=n(2),l=n.n(c),f=n(53),p=n.n(f),h=function(e){return String.prototype.toLowerCase.call(e)},d=function(e){return e.replace(/[^\w]/gi,"_")};function m(e){var t=e.openapi;return!!t&&s()(t).call(t,"3")}function v(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=r.v2OperationIdCompatibilityMode;if(!e||"object"!==i()(e))return null;var a=(e.operationId||"").replace(/\s/g,"");return a.length?d(e.operationId):g(t,n,{v2OperationIdCompatibilityMode:o})}function g(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=r.v2OperationIdCompatibilityMode;if(o){var a,i,u=l()(a="".concat(t.toLowerCase(),"_")).call(a,e).replace(/[\s!@#$%^&*()_+=[{\]};:<>|./?,\\'""-]/g,"_");return(u=u||l()(i="".concat(e.substring(1),"_")).call(i,t)).replace(/((_){2,})/g,"_").replace(/^(_)*/g,"").replace(/([_])*$/g,"")}return l()(n="".concat(h(t))).call(n,d(e))}function y(e,t){var n;return l()(n="".concat(h(t),"-")).call(n,e)}function b(e,t){return e&&e.paths?function(e,t){return function(e,t,n){if(!e||"object"!==i()(e)||!e.paths||"object"!==i()(e.paths))return null;var r=e.paths;for(var o in r)for(var a in r[o])if("PARAMETERS"!==a.toUpperCase()){var u=r[o][a];if(u&&"object"===i()(u)){var s={spec:e,pathName:o,method:a.toUpperCase(),operation:u},c=t(s);if(n&&c)return s}}return}(e,t,!0)||null}(e,(function(e){var n=e.pathName,r=e.method,o=e.operation;if(!o||"object"!==i()(o))return!1;var a=o.operationId;return[v(o,n,r),y(n,r),a].some((function(e){return e&&e===t}))})):null}function w(e){var t=e.spec,n=t.paths,r={};if(!n||t.$$normalized)return e;for(var a in n){var i=n[a];if(p()(i)){var u=i.parameters,s=function(e){var n=i[e];if(!p()(n))return"continue";var s=v(n,a,e);if(s){r[s]?r[s].push(n):r[s]=[n];var c=r[s];if(c.length>1)c.forEach((function(e,t){var n;e.__originalOperationId=e.__originalOperationId||e.operationId,e.operationId=l()(n="".concat(s)).call(n,t+1)}));else if(void 0!==n.operationId){var f=c[0];f.__originalOperationId=f.__originalOperationId||n.operationId,f.operationId=s}}if("parameters"!==e){var h=[],d={};for(var m in t)"produces"!==m&&"consumes"!==m&&"security"!==m||(d[m]=t[m],h.push(d));if(u&&(d.parameters=u,h.push(d)),h.length){var g,y=o()(h);try{for(y.s();!(g=y.n()).done;){var b=g.value;for(var w in b)if(n[w]){if("parameters"===w){var x,_=o()(b[w]);try{var E=function(){var e=x.value;n[w].some((function(t){return t.name&&t.name===e.name||t.$ref&&t.$ref===e.$ref||t.$$ref&&t.$$ref===e.$$ref||t===e}))||n[w].push(e)};for(_.s();!(x=_.n()).done;)E()}catch(e){_.e(e)}finally{_.f()}}}else n[w]=b[w]}}catch(e){y.e(e)}finally{y.f()}}}};for(var c in i)s(c)}}return t.$$normalized=!0,e}},function(e,t,n){"use strict";n.r(t),n.d(t,"NEW_THROWN_ERR",(function(){return o})),n.d(t,"NEW_THROWN_ERR_BATCH",(function(){return a})),n.d(t,"NEW_SPEC_ERR",(function(){return i})),n.d(t,"NEW_SPEC_ERR_BATCH",(function(){return u})),n.d(t,"NEW_AUTH_ERR",(function(){return s})),n.d(t,"CLEAR",(function(){return c})),n.d(t,"CLEAR_BY",(function(){return l})),n.d(t,"newThrownErr",(function(){return f})),n.d(t,"newThrownErrBatch",(function(){return p})),n.d(t,"newSpecErr",(function(){return h})),n.d(t,"newSpecErrBatch",(function(){return d})),n.d(t,"newAuthErr",(function(){return m})),n.d(t,"clear",(function(){return v})),n.d(t,"clearBy",(function(){return g}));var r=n(141),o="err_new_thrown_err",a="err_new_thrown_err_batch",i="err_new_spec_err",u="err_new_spec_err_batch",s="err_new_auth_err",c="err_clear",l="err_clear_by";function f(e){return{type:o,payload:Object(r.serializeError)(e)}}function p(e){return{type:a,payload:e}}function h(e){return{type:i,payload:e}}function d(e){return{type:u,payload:e}}function m(e){return{type:s,payload:e}}function v(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{type:c,payload:e}}function g(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!0};return{type:l,payload:e}}},function(e,t,n){var r=n(168),o=n(113);e.exports=function(e){return r(o(e))}},function(e,t,n){var r=n(17),o=n(113),a=r.Object;e.exports=function(e){return a(o(e))}},function(e,t,n){var r=n(17),o=n(48),a=n(330),i=n(51),u=n(169),s=r.TypeError,c=Object.defineProperty;t.f=o?c:function(e,t,n){if(i(e),t=u(t),i(n),a)try{return c(e,t,n)}catch(e){}if("get"in n||"set"in n)throw s("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},function(e,t){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}}},function(e,t,n){var r=n(132),o=r.Buffer;function a(e,t){for(var n in e)t[n]=e[n]}function i(e,t,n){return o(e,t,n)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?e.exports=r:(a(r,t),t.Buffer=i),a(o,i),i.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return o(e,t,n)},i.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var r=o(e);return void 0!==t?"string"==typeof n?r.fill(t,n):r.fill(t):r.fill(0),r},i.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return o(e)},i.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r.SlowBuffer(e)}},function(e,t,n){e.exports=n(424)},function(e,t,n){var r=n(17),o=n(75),a=r.String;e.exports=function(e){if("Symbol"===o(e))throw TypeError("Cannot convert a Symbol value to a string");return a(e)}},function(e,t,n){n(77);var r=n(507),o=n(17),a=n(75),i=n(85),u=n(130),s=n(38)("toStringTag");for(var c in r){var l=o[c],f=l&&l.prototype;f&&a(f)!==s&&i(f,s,c),u[c]=u.Array}},function(e,t,n){var r=n(355),o="object"==typeof self&&self&&self.Object===Object&&self,a=r||o||Function("return this")();e.exports=a},function(e,t,n){"use strict";function r(e){return null==e}var o={isNothing:r,isObject:function(e){return"object"==typeof e&&null!==e},toArray:function(e){return Array.isArray(e)?e:r(e)?[]:[e]},repeat:function(e,t){var n,r="";for(n=0;nu&&(t=r-u+(a=" ... ").length),n-r>u&&(n=r+u-(i=" ...").length),{str:a+e.slice(t,n).replace(/\t/g,"→")+i,pos:r-t+a.length}}function c(e,t){return o.repeat(" ",t-e.length)+e}var l=function(e,t){if(t=Object.create(t||null),!e.buffer)return null;t.maxLength||(t.maxLength=79),"number"!=typeof t.indent&&(t.indent=1),"number"!=typeof t.linesBefore&&(t.linesBefore=3),"number"!=typeof t.linesAfter&&(t.linesAfter=2);for(var n,r=/\r?\n|\r|\0/g,a=[0],i=[],u=-1;n=r.exec(e.buffer);)i.push(n.index),a.push(n.index+n[0].length),e.position<=n.index&&u<0&&(u=a.length-2);u<0&&(u=a.length-1);var l,f,p="",h=Math.min(e.line+t.linesAfter,i.length).toString().length,d=t.maxLength-(t.indent+h+3);for(l=1;l<=t.linesBefore&&!(u-l<0);l++)f=s(e.buffer,a[u-l],i[u-l],e.position-(a[u]-a[u-l]),d),p=o.repeat(" ",t.indent)+c((e.line-l+1).toString(),h)+" | "+f.str+"\n"+p;for(f=s(e.buffer,a[u],i[u],e.position,d),p+=o.repeat(" ",t.indent)+c((e.line+1).toString(),h)+" | "+f.str+"\n",p+=o.repeat("-",t.indent+h+3+f.pos)+"^\n",l=1;l<=t.linesAfter&&!(u+l>=i.length);l++)f=s(e.buffer,a[u+l],i[u+l],e.position-(a[u]-a[u+l]),d),p+=o.repeat(" ",t.indent)+c((e.line+l+1).toString(),h)+" | "+f.str+"\n";return p.replace(/\n$/,"")},f=["kind","multi","resolve","construct","instanceOf","predicate","represent","representName","defaultStyle","styleAliases"],p=["scalar","sequence","mapping"];var h=function(e,t){if(t=t||{},Object.keys(t).forEach((function(t){if(-1===f.indexOf(t))throw new u('Unknown option "'+t+'" is met in definition of "'+e+'" YAML type.')})),this.options=t,this.tag=e,this.kind=t.kind||null,this.resolve=t.resolve||function(){return!0},this.construct=t.construct||function(e){return e},this.instanceOf=t.instanceOf||null,this.predicate=t.predicate||null,this.represent=t.represent||null,this.representName=t.representName||null,this.defaultStyle=t.defaultStyle||null,this.multi=t.multi||!1,this.styleAliases=function(e){var t={};return null!==e&&Object.keys(e).forEach((function(n){e[n].forEach((function(e){t[String(e)]=n}))})),t}(t.styleAliases||null),-1===p.indexOf(this.kind))throw new u('Unknown kind "'+this.kind+'" is specified for "'+e+'" YAML type.')};function d(e,t){var n=[];return e[t].forEach((function(e){var t=n.length;n.forEach((function(n,r){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=r)})),n[t]=e})),n}function m(e){return this.extend(e)}m.prototype.extend=function(e){var t=[],n=[];if(e instanceof h)n.push(e);else if(Array.isArray(e))n=n.concat(e);else{if(!e||!Array.isArray(e.implicit)&&!Array.isArray(e.explicit))throw new u("Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })");e.implicit&&(t=t.concat(e.implicit)),e.explicit&&(n=n.concat(e.explicit))}t.forEach((function(e){if(!(e instanceof h))throw new u("Specified list of YAML types (or a single Type object) contains a non-Type object.");if(e.loadKind&&"scalar"!==e.loadKind)throw new u("There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.");if(e.multi)throw new u("There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.")})),n.forEach((function(e){if(!(e instanceof h))throw new u("Specified list of YAML types (or a single Type object) contains a non-Type object.")}));var r=Object.create(m.prototype);return r.implicit=(this.implicit||[]).concat(t),r.explicit=(this.explicit||[]).concat(n),r.compiledImplicit=d(r,"implicit"),r.compiledExplicit=d(r,"explicit"),r.compiledTypeMap=function(){var e,t,n={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function r(e){e.multi?(n.multi[e.kind].push(e),n.multi.fallback.push(e)):n[e.kind][e.tag]=n.fallback[e.tag]=e}for(e=0,t=arguments.length;e=0?"0b"+e.toString(2):"-0b"+e.toString(2).slice(1)},octal:function(e){return e>=0?"0o"+e.toString(8):"-0o"+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?"0x"+e.toString(16).toUpperCase():"-0x"+e.toString(16).toUpperCase().slice(1)}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),A=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$");var O=/^[-+]?[0-9]+e/;var C=new h("tag:yaml.org,2002:float",{kind:"scalar",resolve:function(e){return null!==e&&!(!A.test(e)||"_"===e[e.length-1])},construct:function(e){var t,n;return n="-"===(t=e.replace(/_/g,"").toLowerCase())[0]?-1:1,"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:n*parseFloat(t,10)},predicate:function(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!=0||o.isNegativeZero(e))},represent:function(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(o.isNegativeZero(e))return"-0.0";return n=e.toString(10),O.test(n)?n.replace("e",".e"):n},defaultStyle:"lowercase"}),j=w.extend({implicit:[x,_,k,C]}),T=j,I=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),N=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$");var P=new h("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:function(e){return null!==e&&(null!==I.exec(e)||null!==N.exec(e))},construct:function(e){var t,n,r,o,a,i,u,s,c=0,l=null;if(null===(t=I.exec(e))&&(t=N.exec(e)),null===t)throw new Error("Date resolve error");if(n=+t[1],r=+t[2]-1,o=+t[3],!t[4])return new Date(Date.UTC(n,r,o));if(a=+t[4],i=+t[5],u=+t[6],t[7]){for(c=t[7].slice(0,3);c.length<3;)c+="0";c=+c}return t[9]&&(l=6e4*(60*+t[10]+ +(t[11]||0)),"-"===t[9]&&(l=-l)),s=new Date(Date.UTC(n,r,o,a,i,u,c)),l&&s.setTime(s.getTime()-l),s},instanceOf:Date,represent:function(e){return e.toISOString()}});var M=new h("tag:yaml.org,2002:merge",{kind:"scalar",resolve:function(e){return"<<"===e||null===e}}),R="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";var D=new h("tag:yaml.org,2002:binary",{kind:"scalar",resolve:function(e){if(null===e)return!1;var t,n,r=0,o=e.length,a=R;for(n=0;n64)){if(t<0)return!1;r+=6}return r%8==0},construct:function(e){var t,n,r=e.replace(/[\r\n=]/g,""),o=r.length,a=R,i=0,u=[];for(t=0;t>16&255),u.push(i>>8&255),u.push(255&i)),i=i<<6|a.indexOf(r.charAt(t));return 0===(n=o%4*6)?(u.push(i>>16&255),u.push(i>>8&255),u.push(255&i)):18===n?(u.push(i>>10&255),u.push(i>>2&255)):12===n&&u.push(i>>4&255),new Uint8Array(u)},predicate:function(e){return"[object Uint8Array]"===Object.prototype.toString.call(e)},represent:function(e){var t,n,r="",o=0,a=e.length,i=R;for(t=0;t>18&63],r+=i[o>>12&63],r+=i[o>>6&63],r+=i[63&o]),o=(o<<8)+e[t];return 0===(n=a%3)?(r+=i[o>>18&63],r+=i[o>>12&63],r+=i[o>>6&63],r+=i[63&o]):2===n?(r+=i[o>>10&63],r+=i[o>>4&63],r+=i[o<<2&63],r+=i[64]):1===n&&(r+=i[o>>2&63],r+=i[o<<4&63],r+=i[64],r+=i[64]),r}}),L=Object.prototype.hasOwnProperty,B=Object.prototype.toString;var F=new h("tag:yaml.org,2002:omap",{kind:"sequence",resolve:function(e){if(null===e)return!0;var t,n,r,o,a,i=[],u=e;for(t=0,n=u.length;t>10),56320+(e-65536&1023))}for(var ae=new Array(256),ie=new Array(256),ue=0;ue<256;ue++)ae[ue]=re(ue)?1:0,ie[ue]=re(ue);function se(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||W,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.firstTabInLine=-1,this.documents=[]}function ce(e,t){var n={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return n.snippet=l(n),new u(t,n)}function le(e,t){throw ce(e,t)}function fe(e,t){e.onWarning&&e.onWarning.call(null,ce(e,t))}var pe={YAML:function(e,t,n){var r,o,a;null!==e.version&&le(e,"duplication of %YAML directive"),1!==n.length&&le(e,"YAML directive accepts exactly one argument"),null===(r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]))&&le(e,"ill-formed argument of the YAML directive"),o=parseInt(r[1],10),a=parseInt(r[2],10),1!==o&&le(e,"unacceptable YAML version of the document"),e.version=n[0],e.checkLineBreaks=a<2,1!==a&&2!==a&&fe(e,"unsupported YAML version of the document")},TAG:function(e,t,n){var r,o;2!==n.length&&le(e,"TAG directive accepts exactly two arguments"),r=n[0],o=n[1],Y.test(r)||le(e,"ill-formed tag handle (first argument) of the TAG directive"),H.call(e.tagMap,r)&&le(e,'there is a previously declared suffix for "'+r+'" tag handle'),G.test(o)||le(e,"ill-formed tag prefix (second argument) of the TAG directive");try{o=decodeURIComponent(o)}catch(t){le(e,"tag prefix is malformed: "+o)}e.tagMap[r]=o}};function he(e,t,n,r){var o,a,i,u;if(t1&&(e.result+=o.repeat("\n",t-1))}function we(e,t){var n,r,o=e.tag,a=e.anchor,i=[],u=!1;if(-1!==e.firstTabInLine)return!1;for(null!==e.anchor&&(e.anchorMap[e.anchor]=i),r=e.input.charCodeAt(e.position);0!==r&&(-1!==e.firstTabInLine&&(e.position=e.firstTabInLine,le(e,"tab characters must not be used in indentation")),45===r)&&ee(e.input.charCodeAt(e.position+1));)if(u=!0,e.position++,ge(e,!0,-1)&&e.lineIndent<=t)i.push(null),r=e.input.charCodeAt(e.position);else if(n=e.line,Ee(e,t,3,!1,!0),i.push(e.result),ge(e,!0,-1),r=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&0!==r)le(e,"bad indentation of a sequence entry");else if(e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt?m=1:e.lineIndent===t?m=0:e.lineIndentt)&&(g&&(i=e.line,u=e.lineStart,s=e.position),Ee(e,t,4,!0,o)&&(g?m=e.result:v=e.result),g||(me(e,p,h,d,m,v,i,u,s),d=m=v=null),ge(e,!0,-1),c=e.input.charCodeAt(e.position)),(e.line===a||e.lineIndent>t)&&0!==c)le(e,"bad indentation of a mapping entry");else if(e.lineIndent=0))break;0===a?le(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?le(e,"repeat of an indentation width identifier"):(f=t+a-1,l=!0)}if(X(i)){do{i=e.input.charCodeAt(++e.position)}while(X(i));if(35===i)do{i=e.input.charCodeAt(++e.position)}while(!Z(i)&&0!==i)}for(;0!==i;){for(ve(e),e.lineIndent=0,i=e.input.charCodeAt(e.position);(!l||e.lineIndentf&&(f=e.lineIndent),Z(i))p++;else{if(e.lineIndent0){for(o=i,a=0;o>0;o--)(i=ne(u=e.input.charCodeAt(++e.position)))>=0?a=(a<<4)+i:le(e,"expected hexadecimal character");e.result+=oe(a),e.position++}else le(e,"unknown escape sequence");n=r=e.position}else Z(u)?(he(e,n,r,!0),be(e,ge(e,!1,t)),n=r=e.position):e.position===e.lineStart&&ye(e)?le(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}le(e,"unexpected end of the stream within a double quoted scalar")}(e,h)?g=!0:!function(e){var t,n,r;if(42!==(r=e.input.charCodeAt(e.position)))return!1;for(r=e.input.charCodeAt(++e.position),t=e.position;0!==r&&!ee(r)&&!te(r);)r=e.input.charCodeAt(++e.position);return e.position===t&&le(e,"name of an alias node must contain at least one character"),n=e.input.slice(t,e.position),H.call(e.anchorMap,n)||le(e,'unidentified alias "'+n+'"'),e.result=e.anchorMap[n],ge(e,!0,-1),!0}(e)?function(e,t,n){var r,o,a,i,u,s,c,l,f=e.kind,p=e.result;if(ee(l=e.input.charCodeAt(e.position))||te(l)||35===l||38===l||42===l||33===l||124===l||62===l||39===l||34===l||37===l||64===l||96===l)return!1;if((63===l||45===l)&&(ee(r=e.input.charCodeAt(e.position+1))||n&&te(r)))return!1;for(e.kind="scalar",e.result="",o=a=e.position,i=!1;0!==l;){if(58===l){if(ee(r=e.input.charCodeAt(e.position+1))||n&&te(r))break}else if(35===l){if(ee(e.input.charCodeAt(e.position-1)))break}else{if(e.position===e.lineStart&&ye(e)||n&&te(l))break;if(Z(l)){if(u=e.line,s=e.lineStart,c=e.lineIndent,ge(e,!1,-1),e.lineIndent>=t){i=!0,l=e.input.charCodeAt(e.position);continue}e.position=a,e.line=u,e.lineStart=s,e.lineIndent=c;break}}i&&(he(e,o,a,!1),be(e,e.line-u),o=a=e.position,i=!1),X(l)||(a=e.position+1),l=e.input.charCodeAt(++e.position)}return he(e,o,a,!1),!!e.result||(e.kind=f,e.result=p,!1)}(e,h,1===n)&&(g=!0,null===e.tag&&(e.tag="?")):(g=!0,null===e.tag&&null===e.anchor||le(e,"alias node should not have any properties")),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):0===m&&(g=s&&we(e,d))),null===e.tag)null!==e.anchor&&(e.anchorMap[e.anchor]=e.result);else if("?"===e.tag){for(null!==e.result&&"scalar"!==e.kind&&le(e,'unacceptable node kind for ! tag; it should be "scalar", not "'+e.kind+'"'),c=0,l=e.implicitTypes.length;c"),null!==e.result&&p.kind!==e.kind&&le(e,"unacceptable node kind for !<"+e.tag+'> tag; it should be "'+p.kind+'", not "'+e.kind+'"'),p.resolve(e.result,e.tag)?(e.result=p.construct(e.result,e.tag),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):le(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")}return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||g}function Se(e){var t,n,r,o,a=e.position,i=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);0!==(o=e.input.charCodeAt(e.position))&&(ge(e,!0,-1),o=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==o));){for(i=!0,o=e.input.charCodeAt(++e.position),t=e.position;0!==o&&!ee(o);)o=e.input.charCodeAt(++e.position);for(r=[],(n=e.input.slice(t,e.position)).length<1&&le(e,"directive name must not be less than one character in length");0!==o;){for(;X(o);)o=e.input.charCodeAt(++e.position);if(35===o){do{o=e.input.charCodeAt(++e.position)}while(0!==o&&!Z(o));break}if(Z(o))break;for(t=e.position;0!==o&&!ee(o);)o=e.input.charCodeAt(++e.position);r.push(e.input.slice(t,e.position))}0!==o&&ve(e),H.call(pe,n)?pe[n](e,n,r):fe(e,'unknown document directive "'+n+'"')}ge(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,ge(e,!0,-1)):i&&le(e,"directives end mark is expected"),Ee(e,e.lineIndent-1,4,!1,!0),ge(e,!0,-1),e.checkLineBreaks&&J.test(e.input.slice(a,e.position))&&fe(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&ye(e)?46===e.input.charCodeAt(e.position)&&(e.position+=3,ge(e,!0,-1)):e.position=55296&&r<=56319&&t+1=56320&&n<=57343?1024*(r-55296)+n-56320+65536:r}function Ue(e){return/^\n* /.test(e)}function Ve(e,t,n,r,o,a,i,u){var s,c,l=0,f=null,p=!1,h=!1,d=-1!==r,m=-1,v=Be(c=qe(e,0))&&c!==je&&!Le(c)&&45!==c&&63!==c&&58!==c&&44!==c&&91!==c&&93!==c&&123!==c&&125!==c&&35!==c&&38!==c&&42!==c&&33!==c&&124!==c&&61!==c&&62!==c&&39!==c&&34!==c&&37!==c&&64!==c&&96!==c&&function(e){return!Le(e)&&58!==e}(qe(e,e.length-1));if(t||i)for(s=0;s=65536?s+=2:s++){if(!Be(l=qe(e,s)))return 5;v=v&&ze(l,f,u),f=l}else{for(s=0;s=65536?s+=2:s++){if(10===(l=qe(e,s)))p=!0,d&&(h=h||s-m-1>r&&" "!==e[m+1],m=s);else if(!Be(l))return 5;v=v&&ze(l,f,u),f=l}h=h||d&&s-m-1>r&&" "!==e[m+1]}return p||h?n>9&&Ue(e)?5:i?2===a?5:2:h?4:3:!v||i||o(e)?2===a?5:2:1}function We(e,t,n,r,o){e.dump=function(){if(0===t.length)return 2===e.quotingType?'""':"''";if(!e.noCompatMode&&(-1!==Ie.indexOf(t)||Ne.test(t)))return 2===e.quotingType?'"'+t+'"':"'"+t+"'";var a=e.indent*Math.max(1,n),i=-1===e.lineWidth?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-a),s=r||e.flowLevel>-1&&n>=e.flowLevel;switch(Ve(t,s,e.indent,i,(function(t){return function(e,t){var n,r;for(n=0,r=e.implicitTypes.length;n"+He(t,e.indent)+$e(Re(function(e,t){var n,r,o=/(\n+)([^\n]*)/g,a=(u=e.indexOf("\n"),u=-1!==u?u:e.length,o.lastIndex=u,Je(e.slice(0,u),t)),i="\n"===e[0]||" "===e[0];var u;for(;r=o.exec(e);){var s=r[1],c=r[2];n=" "===c[0],a+=s+(i||n||""===c?"":"\n")+Je(c,t),i=n}return a}(t,i),a));case 5:return'"'+function(e){for(var t,n="",r=0,o=0;o=65536?o+=2:o++)r=qe(e,o),!(t=Te[r])&&Be(r)?(n+=e[o],r>=65536&&(n+=e[o+1])):n+=t||Pe(r);return n}(t)+'"';default:throw new u("impossible error: invalid scalar style")}}()}function He(e,t){var n=Ue(e)?String(t):"",r="\n"===e[e.length-1];return n+(r&&("\n"===e[e.length-2]||"\n"===e)?"+":r?"":"-")+"\n"}function $e(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function Je(e,t){if(""===e||" "===e[0])return e;for(var n,r,o=/ [^ ]/g,a=0,i=0,u=0,s="";n=o.exec(e);)(u=n.index)-a>t&&(r=i>a?i:u,s+="\n"+e.slice(a,r),a=r+1),i=u;return s+="\n",e.length-a>t&&i>a?s+=e.slice(a,i)+"\n"+e.slice(i+1):s+=e.slice(a),s.slice(1)}function Ke(e,t,n,r){var o,a,i,u="",s=e.tag;for(o=0,a=n.length;o tag resolver accepts not "'+c+'" style');r=s.represent[c](t,c)}e.dump=r}return!0}return!1}function Ge(e,t,n,r,o,a,i){e.tag=null,e.dump=n,Ye(e,n,!1)||Ye(e,n,!0);var s,c=Oe.call(e.dump),l=r;r&&(r=e.flowLevel<0||e.flowLevel>t);var f,p,h="[object Object]"===c||"[object Array]"===c;if(h&&(p=-1!==(f=e.duplicates.indexOf(n))),(null!==e.tag&&"?"!==e.tag||p||2!==e.indent&&t>0)&&(o=!1),p&&e.usedDuplicates[f])e.dump="*ref_"+f;else{if(h&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),"[object Object]"===c)r&&0!==Object.keys(e.dump).length?(!function(e,t,n,r){var o,a,i,s,c,l,f="",p=e.tag,h=Object.keys(n);if(!0===e.sortKeys)h.sort();else if("function"==typeof e.sortKeys)h.sort(e.sortKeys);else if(e.sortKeys)throw new u("sortKeys must be a boolean or a function");for(o=0,a=h.length;o1024)&&(e.dump&&10===e.dump.charCodeAt(0)?l+="?":l+="? "),l+=e.dump,c&&(l+=De(e,t)),Ge(e,t+1,s,!0,c)&&(e.dump&&10===e.dump.charCodeAt(0)?l+=":":l+=": ",f+=l+=e.dump));e.tag=p,e.dump=f||"{}"}(e,t,e.dump,o),p&&(e.dump="&ref_"+f+e.dump)):(!function(e,t,n){var r,o,a,i,u,s="",c=e.tag,l=Object.keys(n);for(r=0,o=l.length;r1024&&(u+="? "),u+=e.dump+(e.condenseFlow?'"':"")+":"+(e.condenseFlow?"":" "),Ge(e,t,i,!1,!1)&&(s+=u+=e.dump));e.tag=c,e.dump="{"+s+"}"}(e,t,e.dump),p&&(e.dump="&ref_"+f+" "+e.dump));else if("[object Array]"===c)r&&0!==e.dump.length?(e.noArrayIndent&&!i&&t>0?Ke(e,t-1,e.dump,o):Ke(e,t,e.dump,o),p&&(e.dump="&ref_"+f+e.dump)):(!function(e,t,n){var r,o,a,i="",u=e.tag;for(r=0,o=n.length;r",e.dump=s+" "+e.dump)}return!0}function Qe(e,t){var n,r,o=[],a=[];for(Ze(e,o,a),n=0,r=a.length;n=t.length?(e.target=void 0,{value:void 0,done:!0}):"keys"==n?{value:r,done:!1}:"values"==n?{value:t[r],done:!1}:{value:[r,t[r]],done:!1}}),"values"),a.Arguments=a.Array,o("keys"),o("values"),o("entries")},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){"use strict";(function(t){function n(e){return e instanceof t||e instanceof Date||e instanceof RegExp}function r(e){if(e instanceof t){var n=t.alloc?t.alloc(e.length):new t(e.length);return e.copy(n),n}if(e instanceof Date)return new Date(e.getTime());if(e instanceof RegExp)return new RegExp(e);throw new Error("Unexpected situation")}function o(e){var t=[];return e.forEach((function(e,a){"object"==typeof e&&null!==e?Array.isArray(e)?t[a]=o(e):n(e)?t[a]=r(e):t[a]=i({},e):t[a]=e})),t}function a(e,t){return"__proto__"===t?void 0:e[t]}var i=e.exports=function(){if(arguments.length<1||"object"!=typeof arguments[0])return!1;if(arguments.length<2)return arguments[0];var e,t,u=arguments[0],s=Array.prototype.slice.call(arguments,1);return s.forEach((function(s){"object"!=typeof s||null===s||Array.isArray(s)||Object.keys(s).forEach((function(c){return t=a(u,c),(e=a(s,c))===u?void 0:"object"!=typeof e||null===e?void(u[c]=e):Array.isArray(e)?void(u[c]=o(e)):n(e)?void(u[c]=r(e)):"object"!=typeof t||null===t||Array.isArray(t)?void(u[c]=i({},e)):void(u[c]=i(t,e))}))})),u}}).call(this,n(132).Buffer)},function(e,t,n){e.exports=n(619)},function(e,t,n){"use strict";var r=n(946),o=n(947);function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}t.parse=b,t.resolve=function(e,t){return b(e,!1,!0).resolve(t)},t.resolveObject=function(e,t){return e?b(e,!1,!0).resolveObject(t):t},t.format=function(e){o.isString(e)&&(e=b(e));return e instanceof a?e.format():a.prototype.format.call(e)},t.Url=a;var i=/^([a-z0-9.+-]+:)/i,u=/:[0-9]*$/,s=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,c=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),l=["'"].concat(c),f=["%","/","?",";","#"].concat(l),p=["/","?","#"],h=/^[+a-z0-9A-Z_-]{0,63}$/,d=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,m={javascript:!0,"javascript:":!0},v={javascript:!0,"javascript:":!0},g={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},y=n(948);function b(e,t,n){if(e&&o.isObject(e)&&e instanceof a)return e;var r=new a;return r.parse(e,t,n),r}a.prototype.parse=function(e,t,n){if(!o.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),u=-1!==a&&a127?P+="x":P+=N[M];if(!P.match(h)){var D=T.slice(0,O),L=T.slice(O+1),B=N.match(d);B&&(D.push(B[1]),L.unshift(B[2])),L.length&&(b="/"+L.join(".")+b),this.hostname=D.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),j||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",z=this.hostname||"";this.host=z+F,this.href+=this.host,j&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!m[_])for(O=0,I=l.length;O0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift());return n.search=e.search,n.query=e.query,o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n}if(!E.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var k=E.slice(-1)[0],A=(n.host||e.host||E.length>1)&&("."===k||".."===k)||""===k,O=0,C=E.length;C>=0;C--)"."===(k=E[C])?E.splice(C,1):".."===k?(E.splice(C,1),O++):O&&(E.splice(C,1),O--);if(!x&&!_)for(;O--;O)E.unshift("..");!x||""===E[0]||E[0]&&"/"===E[0].charAt(0)||E.unshift(""),A&&"/"!==E.join("/").substr(-1)&&E.push("");var j,T=""===E[0]||E[0]&&"/"===E[0].charAt(0);S&&(n.hostname=n.host=T?"":E.length?E.shift():"",(j=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=j.shift(),n.host=n.hostname=j.shift()));return(x=x||n.host&&E.length)&&!T&&E.unshift(""),E.length?n.pathname=E.join("/"):(n.pathname=null,n.path=null),o.isNull(n.pathname)&&o.isNull(n.search)||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=e.auth||n.auth,n.slashes=n.slashes||e.slashes,n.href=n.format(),n},a.prototype.parseHost=function(){var e=this.host,t=u.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},function(e,t,n){"use strict";n.r(t),n.d(t,"SHOW_AUTH_POPUP",(function(){return h})),n.d(t,"AUTHORIZE",(function(){return d})),n.d(t,"LOGOUT",(function(){return m})),n.d(t,"PRE_AUTHORIZE_OAUTH2",(function(){return v})),n.d(t,"AUTHORIZE_OAUTH2",(function(){return g})),n.d(t,"VALIDATE",(function(){return y})),n.d(t,"CONFIGURE_AUTH",(function(){return b})),n.d(t,"RESTORE_AUTHORIZATION",(function(){return w})),n.d(t,"showDefinitions",(function(){return x})),n.d(t,"authorize",(function(){return _})),n.d(t,"authorizeWithPersistOption",(function(){return E})),n.d(t,"logout",(function(){return S})),n.d(t,"logoutWithPersistOption",(function(){return k})),n.d(t,"preAuthorizeImplicit",(function(){return A})),n.d(t,"authorizeOauth2",(function(){return O})),n.d(t,"authorizeOauth2WithPersistOption",(function(){return C})),n.d(t,"authorizePassword",(function(){return j})),n.d(t,"authorizeApplication",(function(){return T})),n.d(t,"authorizeAccessCodeWithFormParams",(function(){return I})),n.d(t,"authorizeAccessCodeWithBasicAuthentication",(function(){return N})),n.d(t,"authorizeRequest",(function(){return P})),n.d(t,"configureAuth",(function(){return M})),n.d(t,"restoreAuthorization",(function(){return R})),n.d(t,"persistAuthorizationIfNeeded",(function(){return D}));var r=n(19),o=n.n(r),a=n(32),i=n.n(a),u=n(21),s=n.n(u),c=n(89),l=n.n(c),f=n(26),p=n(5),h="show_popup",d="authorize",m="logout",v="pre_authorize_oauth2",g="authorize_oauth2",y="validate",b="configure_auth",w="restore_authorization";function x(e){return{type:h,payload:e}}function _(e){return{type:d,payload:e}}var E=function(e){return function(t){var n=t.authActions;n.authorize(e),n.persistAuthorizationIfNeeded()}};function S(e){return{type:m,payload:e}}var k=function(e){return function(t){var n=t.authActions;n.logout(e),n.persistAuthorizationIfNeeded()}},A=function(e){return function(t){var n=t.authActions,r=t.errActions,o=e.auth,a=e.token,u=e.isValid,s=o.schema,c=o.name,l=s.get("flow");delete f.a.swaggerUIRedirectOauth2,"accessCode"===l||u||r.newAuthErr({authId:c,source:"auth",level:"warning",message:"Authorization may be unsafe, passed state was changed in server Passed state wasn't returned from auth server"}),a.error?r.newAuthErr({authId:c,source:"auth",level:"error",message:i()(a)}):n.authorizeOauth2WithPersistOption({auth:o,token:a})}};function O(e){return{type:g,payload:e}}var C=function(e){return function(t){var n=t.authActions;n.authorizeOauth2(e),n.persistAuthorizationIfNeeded()}},j=function(e){return function(t){var n=t.authActions,r=e.schema,o=e.name,a=e.username,i=e.password,u=e.passwordType,c=e.clientId,l=e.clientSecret,f={grant_type:"password",scope:e.scopes.join(" "),username:a,password:i},h={};switch(u){case"request-body":!function(e,t,n){t&&s()(e,{client_id:t});n&&s()(e,{client_secret:n})}(f,c,l);break;case"basic":h.Authorization="Basic "+Object(p.a)(c+":"+l);break;default:console.warn("Warning: invalid passwordType ".concat(u," was passed, not including client id and secret"))}return n.authorizeRequest({body:Object(p.b)(f),url:r.get("tokenUrl"),name:o,headers:h,query:{},auth:e})}};var T=function(e){return function(t){var n=t.authActions,r=e.schema,o=e.scopes,a=e.name,i=e.clientId,u=e.clientSecret,s={Authorization:"Basic "+Object(p.a)(i+":"+u)},c={grant_type:"client_credentials",scope:o.join(" ")};return n.authorizeRequest({body:Object(p.b)(c),name:a,url:r.get("tokenUrl"),auth:e,headers:s})}},I=function(e){var t=e.auth,n=e.redirectUrl;return function(e){var r=e.authActions,o=t.schema,a=t.name,i=t.clientId,u=t.clientSecret,s=t.codeVerifier,c={grant_type:"authorization_code",code:t.code,client_id:i,client_secret:u,redirect_uri:n,code_verifier:s};return r.authorizeRequest({body:Object(p.b)(c),name:a,url:o.get("tokenUrl"),auth:t})}},N=function(e){var t=e.auth,n=e.redirectUrl;return function(e){var r=e.authActions,o=t.schema,a=t.name,i=t.clientId,u=t.clientSecret,s=t.codeVerifier,c={Authorization:"Basic "+Object(p.a)(i+":"+u)},l={grant_type:"authorization_code",code:t.code,client_id:i,redirect_uri:n,code_verifier:s};return r.authorizeRequest({body:Object(p.b)(l),name:a,url:o.get("tokenUrl"),auth:t,headers:c})}},P=function(e){return function(t){var n,r=t.fn,a=t.getConfigs,u=t.authActions,c=t.errActions,f=t.oas3Selectors,p=t.specSelectors,h=t.authSelectors,d=e.body,m=e.query,v=void 0===m?{}:m,g=e.headers,y=void 0===g?{}:g,b=e.name,w=e.url,x=e.auth,_=(h.getConfigs()||{}).additionalQueryStringParams;if(p.isOAS3()){var E=f.serverEffectiveValue(f.selectedServer());n=l()(w,E,!0)}else n=l()(w,p.url(),!0);"object"===o()(_)&&(n.query=s()({},n.query,_));var S=n.toString(),k=s()({Accept:"application/json, text/plain, */*","Content-Type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},y);r.fetch({url:S,method:"post",headers:k,query:v,body:d,requestInterceptor:a().requestInterceptor,responseInterceptor:a().responseInterceptor}).then((function(e){var t=JSON.parse(e.data),n=t&&(t.error||""),r=t&&(t.parseError||"");e.ok?n||r?c.newAuthErr({authId:b,level:"error",source:"auth",message:i()(t)}):u.authorizeOauth2WithPersistOption({auth:x,token:t}):c.newAuthErr({authId:b,level:"error",source:"auth",message:e.statusText})})).catch((function(e){var t=new Error(e).message;if(e.response&&e.response.data){var n=e.response.data;try{var r="string"==typeof n?JSON.parse(n):n;r.error&&(t+=", error: ".concat(r.error)),r.error_description&&(t+=", description: ".concat(r.error_description))}catch(e){}}c.newAuthErr({authId:b,level:"error",source:"auth",message:t})}))}};function M(e){return{type:b,payload:e}}function R(e){return{type:w,payload:e}}var D=function(){return function(e){var t=e.authSelectors;if((0,e.getConfigs)().persistAuthorization){var n=t.authorized();localStorage.setItem("authorized",i()(n.toJS()))}}}},function(e,t,n){var r=n(919);e.exports=function(e){for(var t=1;tS;S++)if((h||S in x)&&(b=_(y=x[S],S,w),e))if(t)A[S]=b;else if(b)switch(e){case 3:return!0;case 5:return y;case 6:return S;case 2:c(A,y)}else switch(e){case 4:return!1;case 7:c(A,y)}return f?-1:o||l?l:A}};e.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},function(e,t,n){"use strict";n.r(t),n.d(t,"lastError",(function(){return M})),n.d(t,"url",(function(){return R})),n.d(t,"specStr",(function(){return D})),n.d(t,"specSource",(function(){return L})),n.d(t,"specJson",(function(){return B})),n.d(t,"specResolved",(function(){return F})),n.d(t,"specResolvedSubtree",(function(){return z})),n.d(t,"specJsonWithResolvedSubtrees",(function(){return U})),n.d(t,"spec",(function(){return V})),n.d(t,"isOAS3",(function(){return W})),n.d(t,"info",(function(){return H})),n.d(t,"externalDocs",(function(){return $})),n.d(t,"version",(function(){return J})),n.d(t,"semver",(function(){return K})),n.d(t,"paths",(function(){return Y})),n.d(t,"operations",(function(){return G})),n.d(t,"consumes",(function(){return Q})),n.d(t,"produces",(function(){return Z})),n.d(t,"security",(function(){return X})),n.d(t,"securityDefinitions",(function(){return ee})),n.d(t,"findDefinition",(function(){return te})),n.d(t,"definitions",(function(){return ne})),n.d(t,"basePath",(function(){return re})),n.d(t,"host",(function(){return oe})),n.d(t,"schemes",(function(){return ae})),n.d(t,"operationsWithRootInherited",(function(){return ie})),n.d(t,"tags",(function(){return ue})),n.d(t,"tagDetails",(function(){return se})),n.d(t,"operationsWithTags",(function(){return ce})),n.d(t,"taggedOperations",(function(){return le})),n.d(t,"responses",(function(){return fe})),n.d(t,"requests",(function(){return pe})),n.d(t,"mutatedRequests",(function(){return he})),n.d(t,"responseFor",(function(){return de})),n.d(t,"requestFor",(function(){return me})),n.d(t,"mutatedRequestFor",(function(){return ve})),n.d(t,"allowTryItOutFor",(function(){return ge})),n.d(t,"parameterWithMetaByIdentity",(function(){return ye})),n.d(t,"parameterInclusionSettingFor",(function(){return be})),n.d(t,"parameterWithMeta",(function(){return we})),n.d(t,"operationWithMeta",(function(){return xe})),n.d(t,"getParameter",(function(){return _e})),n.d(t,"hasHost",(function(){return Ee})),n.d(t,"parameterValues",(function(){return Se})),n.d(t,"parametersIncludeIn",(function(){return ke})),n.d(t,"parametersIncludeType",(function(){return Ae})),n.d(t,"contentTypeValues",(function(){return Oe})),n.d(t,"currentProducesFor",(function(){return Ce})),n.d(t,"producesOptionsFor",(function(){return je})),n.d(t,"consumesOptionsFor",(function(){return Te})),n.d(t,"operationScheme",(function(){return Ie})),n.d(t,"canExecuteScheme",(function(){return Ne})),n.d(t,"validateBeforeExecute",(function(){return Pe})),n.d(t,"getOAS3RequiredRequestBodyContentType",(function(){return Me})),n.d(t,"isMediaTypeSchemaPropertiesEqual",(function(){return Re}));var r=n(13),o=n.n(r),a=n(14),i=n.n(a),u=n(2),s=n.n(u),c=n(20),l=n.n(c),f=n(23),p=n.n(f),h=n(18),d=n.n(h),m=n(4),v=n.n(m),g=n(12),y=n.n(g),b=n(56),w=n.n(b),x=n(30),_=n.n(x),E=n(196),S=n.n(E),k=n(71),A=n.n(k),O=n(24),C=n.n(O),j=n(16),T=n(5),I=n(1),N=["get","put","post","delete","options","head","patch","trace"],P=function(e){return e||Object(I.Map)()},M=Object(j.a)(P,(function(e){return e.get("lastError")})),R=Object(j.a)(P,(function(e){return e.get("url")})),D=Object(j.a)(P,(function(e){return e.get("spec")||""})),L=Object(j.a)(P,(function(e){return e.get("specSource")||"not-editor"})),B=Object(j.a)(P,(function(e){return e.get("json",Object(I.Map)())})),F=Object(j.a)(P,(function(e){return e.get("resolved",Object(I.Map)())})),z=function(e,t){var n;return e.getIn(s()(n=["resolvedSubtrees"]).call(n,i()(t)),void 0)},q=function e(t,n){return I.Map.isMap(t)&&I.Map.isMap(n)?n.get("$$ref")?n:Object(I.OrderedMap)().mergeWith(e,t,n):n},U=Object(j.a)(P,(function(e){return Object(I.OrderedMap)().mergeWith(q,e.get("json"),e.get("resolvedSubtrees"))})),V=function(e){return B(e)},W=Object(j.a)(V,(function(){return!1})),H=Object(j.a)(V,(function(e){return De(e&&e.get("info"))})),$=Object(j.a)(V,(function(e){return De(e&&e.get("externalDocs"))})),J=Object(j.a)(H,(function(e){return e&&e.get("version")})),K=Object(j.a)(J,(function(e){var t;return l()(t=/v?([0-9]*)\.([0-9]*)\.([0-9]*)/i.exec(e)).call(t,1)})),Y=Object(j.a)(U,(function(e){return e.get("paths")})),G=Object(j.a)(Y,(function(e){if(!e||e.size<1)return Object(I.List)();var t=Object(I.List)();return e&&p()(e)?(p()(e).call(e,(function(e,n){if(!e||!p()(e))return{};p()(e).call(e,(function(e,r){var o;d()(N).call(N,r)<0||(t=t.push(Object(I.fromJS)({path:n,method:r,operation:e,id:s()(o="".concat(r,"-")).call(o,n)})))}))})),t):Object(I.List)()})),Q=Object(j.a)(V,(function(e){return Object(I.Set)(e.get("consumes"))})),Z=Object(j.a)(V,(function(e){return Object(I.Set)(e.get("produces"))})),X=Object(j.a)(V,(function(e){return e.get("security",Object(I.List)())})),ee=Object(j.a)(V,(function(e){return e.get("securityDefinitions")})),te=function(e,t){var n=e.getIn(["resolvedSubtrees","definitions",t],null),r=e.getIn(["json","definitions",t],null);return n||r||null},ne=Object(j.a)(V,(function(e){var t=e.get("definitions");return I.Map.isMap(t)?t:Object(I.Map)()})),re=Object(j.a)(V,(function(e){return e.get("basePath")})),oe=Object(j.a)(V,(function(e){return e.get("host")})),ae=Object(j.a)(V,(function(e){return e.get("schemes",Object(I.Map)())})),ie=Object(j.a)(G,Q,Z,(function(e,t,n){return v()(e).call(e,(function(e){return e.update("operation",(function(e){if(e){if(!I.Map.isMap(e))return;return e.withMutations((function(e){return e.get("consumes")||e.update("consumes",(function(e){return Object(I.Set)(e).merge(t)})),e.get("produces")||e.update("produces",(function(e){return Object(I.Set)(e).merge(n)})),e}))}return Object(I.Map)()}))}))})),ue=Object(j.a)(V,(function(e){var t=e.get("tags",Object(I.List)());return I.List.isList(t)?y()(t).call(t,(function(e){return I.Map.isMap(e)})):Object(I.List)()})),se=function(e,t){var n,r=ue(e)||Object(I.List)();return w()(n=y()(r).call(r,I.Map.isMap)).call(n,(function(e){return e.get("name")===t}),Object(I.Map)())},ce=Object(j.a)(ie,ue,(function(e,t){return _()(e).call(e,(function(e,t){var n=Object(I.Set)(t.getIn(["operation","tags"]));return n.count()<1?e.update("default",Object(I.List)(),(function(e){return e.push(t)})):_()(n).call(n,(function(e,n){return e.update(n,Object(I.List)(),(function(e){return e.push(t)}))}),e)}),_()(t).call(t,(function(e,t){return e.set(t.get("name"),Object(I.List)())}),Object(I.OrderedMap)()))})),le=function(e){return function(t){var n,r=(0,t.getConfigs)(),o=r.tagsSorter,a=r.operationsSorter;return v()(n=ce(e).sortBy((function(e,t){return t}),(function(e,t){var n="function"==typeof o?o:T.H.tagsSorter[o];return n?n(e,t):null}))).call(n,(function(t,n){var r="function"==typeof a?a:T.H.operationsSorter[a],o=r?S()(t).call(t,r):t;return Object(I.Map)({tagDetails:se(e,n),operations:o})}))}},fe=Object(j.a)(P,(function(e){return e.get("responses",Object(I.Map)())})),pe=Object(j.a)(P,(function(e){return e.get("requests",Object(I.Map)())})),he=Object(j.a)(P,(function(e){return e.get("mutatedRequests",Object(I.Map)())})),de=function(e,t,n){return fe(e).getIn([t,n],null)},me=function(e,t,n){return pe(e).getIn([t,n],null)},ve=function(e,t,n){return he(e).getIn([t,n],null)},ge=function(){return!0},ye=function(e,t,n){var r,o,a=U(e).getIn(s()(r=["paths"]).call(r,i()(t),["parameters"]),Object(I.OrderedMap)()),u=e.getIn(s()(o=["meta","paths"]).call(o,i()(t),["parameters"]),Object(I.OrderedMap)()),c=v()(a).call(a,(function(e){var t,r,o,a=u.get(s()(t="".concat(n.get("in"),".")).call(t,n.get("name"))),i=u.get(s()(r=s()(o="".concat(n.get("in"),".")).call(o,n.get("name"),".hash-")).call(r,n.hashCode()));return Object(I.OrderedMap)().merge(e,a,i)}));return w()(c).call(c,(function(e){return e.get("in")===n.get("in")&&e.get("name")===n.get("name")}),Object(I.OrderedMap)())},be=function(e,t,n,r){var o,a,u=s()(o="".concat(r,".")).call(o,n);return e.getIn(s()(a=["meta","paths"]).call(a,i()(t),["parameter_inclusions",u]),!1)},we=function(e,t,n,r){var o,a=U(e).getIn(s()(o=["paths"]).call(o,i()(t),["parameters"]),Object(I.OrderedMap)()),u=w()(a).call(a,(function(e){return e.get("in")===r&&e.get("name")===n}),Object(I.OrderedMap)());return ye(e,t,u)},xe=function(e,t,n){var r,o=U(e).getIn(["paths",t,n],Object(I.OrderedMap)()),a=e.getIn(["meta","paths",t,n],Object(I.OrderedMap)()),i=v()(r=o.get("parameters",Object(I.List)())).call(r,(function(r){return ye(e,[t,n],r)}));return Object(I.OrderedMap)().merge(o,a).set("parameters",i)};function _e(e,t,n,r){var o;t=t||[];var a=e.getIn(s()(o=["meta","paths"]).call(o,i()(t),["parameters"]),Object(I.fromJS)([]));return w()(a).call(a,(function(e){return I.Map.isMap(e)&&e.get("name")===n&&e.get("in")===r}))||Object(I.Map)()}var Ee=Object(j.a)(V,(function(e){var t=e.get("host");return"string"==typeof t&&t.length>0&&"/"!==t[0]}));function Se(e,t,n){var r;t=t||[];var o=xe.apply(void 0,s()(r=[e]).call(r,i()(t))).get("parameters",Object(I.List)());return _()(o).call(o,(function(e,t){var r=n&&"body"===t.get("in")?t.get("value_xml"):t.get("value");return e.set(Object(T.A)(t,{allowHashes:!1}),r)}),Object(I.fromJS)({}))}function ke(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(I.List.isList(e))return A()(e).call(e,(function(e){return I.Map.isMap(e)&&e.get("in")===t}))}function Ae(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(I.List.isList(e))return A()(e).call(e,(function(e){return I.Map.isMap(e)&&e.get("type")===t}))}function Oe(e,t){var n,r;t=t||[];var o=U(e).getIn(s()(n=["paths"]).call(n,i()(t)),Object(I.fromJS)({})),a=e.getIn(s()(r=["meta","paths"]).call(r,i()(t)),Object(I.fromJS)({})),u=Ce(e,t),c=o.get("parameters")||new I.List,l=a.get("consumes_value")?a.get("consumes_value"):Ae(c,"file")?"multipart/form-data":Ae(c,"formData")?"application/x-www-form-urlencoded":void 0;return Object(I.fromJS)({requestContentType:l,responseContentType:u})}function Ce(e,t){var n,r;t=t||[];var o=U(e).getIn(s()(n=["paths"]).call(n,i()(t)),null);if(null!==o){var a=e.getIn(s()(r=["meta","paths"]).call(r,i()(t),["produces_value"]),null),u=o.getIn(["produces",0],null);return a||u||"application/json"}}function je(e,t){var n;t=t||[];var r=U(e),a=r.getIn(s()(n=["paths"]).call(n,i()(t)),null);if(null!==a){var u=t,c=o()(u,1)[0],l=a.get("produces",null),f=r.getIn(["paths",c,"produces"],null),p=r.getIn(["produces"],null);return l||f||p}}function Te(e,t){var n;t=t||[];var r=U(e),a=r.getIn(s()(n=["paths"]).call(n,i()(t)),null);if(null!==a){var u=t,c=o()(u,1)[0],l=a.get("consumes",null),f=r.getIn(["paths",c,"consumes"],null),p=r.getIn(["consumes"],null);return l||f||p}}var Ie=function(e,t,n){var r=e.get("url").match(/^([a-z][a-z0-9+\-.]*):/),o=C()(r)?r[1]:null;return e.getIn(["scheme",t,n])||e.getIn(["scheme","_defaultScheme"])||o||""},Ne=function(e,t,n){var r;return d()(r=["http","https"]).call(r,Ie(e,t,n))>-1},Pe=function(e,t){var n;t=t||[];var r=e.getIn(s()(n=["meta","paths"]).call(n,i()(t),["parameters"]),Object(I.fromJS)([])),o=!0;return p()(r).call(r,(function(e){var t=e.get("errors");t&&t.count()&&(o=!1)})),o},Me=function(e,t){var n,r,o={requestBody:!1,requestContentType:{}},a=e.getIn(s()(n=["resolvedSubtrees","paths"]).call(n,i()(t),["requestBody"]),Object(I.fromJS)([]));return a.size<1||(a.getIn(["required"])&&(o.requestBody=a.getIn(["required"])),p()(r=a.getIn(["content"]).entrySeq()).call(r,(function(e){var t=e[0];if(e[1].getIn(["schema","required"])){var n=e[1].getIn(["schema","required"]).toJS();o.requestContentType[t]=n}}))),o},Re=function(e,t,n,r){var o;if((n||r)&&n===r)return!0;var a=e.getIn(s()(o=["resolvedSubtrees","paths"]).call(o,i()(t),["requestBody","content"]),Object(I.fromJS)([]));if(a.size<2||!n||!r)return!1;var u=a.getIn([n,"schema","properties"],Object(I.fromJS)([])),c=a.getIn([r,"schema","properties"],Object(I.fromJS)([]));return!!u.equals(c)};function De(e){return I.Map.isMap(e)?e:new I.Map}},function(e,t,n){"use strict";(function(t){var r=n(847),o=n(848),a=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,i=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,u=/^[a-zA-Z]:/,s=new RegExp("^[\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF]+");function c(e){return(e||"").toString().replace(s,"")}var l=[["#","hash"],["?","query"],function(e,t){return h(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d+)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function p(e){var n,r=("undefined"!=typeof window?window:void 0!==t?t:"undefined"!=typeof self?self:{}).location||{},o={},i=typeof(e=e||r);if("blob:"===e.protocol)o=new m(unescape(e.pathname),{});else if("string"===i)for(n in o=new m(e,{}),f)delete o[n];else if("object"===i){for(n in e)n in f||(o[n]=e[n]);void 0===o.slashes&&(o.slashes=a.test(e.href))}return o}function h(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function d(e,t){e=c(e),t=t||{};var n,r=i.exec(e),o=r[1]?r[1].toLowerCase():"",a=!!r[2],u=!!r[3],s=0;return a?u?(n=r[2]+r[3]+r[4],s=r[2].length+r[3].length):(n=r[2]+r[4],s=r[2].length):u?(n=r[3]+r[4],s=r[3].length):n=r[4],"file:"===o?s>=2&&(n=n.slice(2)):h(o)?n=r[4]:o?a&&(n=n.slice(2)):s>=2&&h(t.protocol)&&(n=r[4]),{protocol:o,slashes:a||h(o),slashesCount:s,rest:n}}function m(e,t,n){if(e=c(e),!(this instanceof m))return new m(e,t,n);var a,i,s,f,v,g,y=l.slice(),b=typeof t,w=this,x=0;for("object"!==b&&"string"!==b&&(n=t,t=null),n&&"function"!=typeof n&&(n=o.parse),a=!(i=d(e||"",t=p(t))).protocol&&!i.slashes,w.slashes=i.slashes||a&&t.slashes,w.protocol=i.protocol||t.protocol||"",e=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||u.test(e))||!i.slashes&&(i.protocol||i.slashesCount<2||!h(w.protocol)))&&(y[3]=[/(.*)/,"pathname"]);x=4?[t[0],t[1],t[2],t[3],"".concat(t[0],".").concat(t[1]),"".concat(t[0],".").concat(t[2]),"".concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[0]),"".concat(t[1],".").concat(t[2]),"".concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[1]),"".concat(t[2],".").concat(t[3]),"".concat(t[3],".").concat(t[0]),"".concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[0]),"".concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[0],".").concat(t[1],".").concat(t[2],".").concat(t[3]),"".concat(t[0],".").concat(t[1],".").concat(t[3],".").concat(t[2]),"".concat(t[0],".").concat(t[2],".").concat(t[1],".").concat(t[3]),"".concat(t[0],".").concat(t[2],".").concat(t[3],".").concat(t[1]),"".concat(t[0],".").concat(t[3],".").concat(t[1],".").concat(t[2]),"".concat(t[0],".").concat(t[3],".").concat(t[2],".").concat(t[1]),"".concat(t[1],".").concat(t[0],".").concat(t[2],".").concat(t[3]),"".concat(t[1],".").concat(t[0],".").concat(t[3],".").concat(t[2]),"".concat(t[1],".").concat(t[2],".").concat(t[0],".").concat(t[3]),"".concat(t[1],".").concat(t[2],".").concat(t[3],".").concat(t[0]),"".concat(t[1],".").concat(t[3],".").concat(t[0],".").concat(t[2]),"".concat(t[1],".").concat(t[3],".").concat(t[2],".").concat(t[0]),"".concat(t[2],".").concat(t[0],".").concat(t[1],".").concat(t[3]),"".concat(t[2],".").concat(t[0],".").concat(t[3],".").concat(t[1]),"".concat(t[2],".").concat(t[1],".").concat(t[0],".").concat(t[3]),"".concat(t[2],".").concat(t[1],".").concat(t[3],".").concat(t[0]),"".concat(t[2],".").concat(t[3],".").concat(t[0],".").concat(t[1]),"".concat(t[2],".").concat(t[3],".").concat(t[1],".").concat(t[0]),"".concat(t[3],".").concat(t[0],".").concat(t[1],".").concat(t[2]),"".concat(t[3],".").concat(t[0],".").concat(t[2],".").concat(t[1]),"".concat(t[3],".").concat(t[1],".").concat(t[0],".").concat(t[2]),"".concat(t[3],".").concat(t[1],".").concat(t[2],".").concat(t[0]),"".concat(t[3],".").concat(t[2],".").concat(t[0],".").concat(t[1]),"".concat(t[3],".").concat(t[2],".").concat(t[1],".").concat(t[0])]:void 0),g[r]}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,r=e.filter((function(e){return"token"!==e})),o=y(r);return o.reduce((function(e,t){return p()({},e,n[t])}),t)}function w(e){return e.join(" ")}function x(e){var t=e.node,n=e.stylesheet,r=e.style,o=void 0===r?{}:r,a=e.useInlineStyles,i=e.key,u=t.properties,s=t.type,c=t.tagName,l=t.value;if("text"===s)return l;if(c){var f,h=function(e,t){var n=0;return function(r){return n+=1,r.map((function(r,o){return x({node:r,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(n,"-").concat(o)})}))}}(n,a);if(a){var m=Object.keys(n).reduce((function(e,t){return t.split(".").forEach((function(t){e.includes(t)||e.push(t)})),e}),[]),g=u.className&&u.className.includes("token")?["token"]:[],y=u.className&&g.concat(u.className.filter((function(e){return!m.includes(e)})));f=p()({},u,{className:w(y)||void 0,style:b(u.className,Object.assign({},u.style,o),n)})}else f=p()({},u,{className:w(u.className)});var _=h(t.children);return d.a.createElement(c,v()({key:i},f),_)}}var _=/\n/g;function E(e){var t=e.codeString,n=e.codeStyle,r=e.containerStyle,o=void 0===r?{float:"left",paddingRight:"10px"}:r,a=e.numberStyle,i=void 0===a?{}:a,u=e.startingLineNumber;return d.a.createElement("code",{style:Object.assign({},n,o)},function(e){var t=e.lines,n=e.startingLineNumber,r=e.style;return t.map((function(e,t){var o=t+n;return d.a.createElement("span",{key:"line-".concat(t),className:"react-syntax-highlighter-line-number",style:"function"==typeof r?r(o):r},"".concat(o,"\n"))}))}({lines:t.replace(/\n$/,"").split("\n"),style:i,startingLineNumber:u}))}function S(e,t){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(e),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:t},children:[{type:"text",value:e}]}}function k(e,t,n){var r,o={display:"inline-block",minWidth:(r=n,"".concat(r.toString().length,".25em")),paddingRight:"1em",textAlign:"right",userSelect:"none"},a="function"==typeof e?e(t):e;return p()({},o,a)}function A(e){var t=e.children,n=e.lineNumber,r=e.lineNumberStyle,o=e.largestLineNumber,a=e.showInlineLineNumbers,i=e.lineProps,u=void 0===i?{}:i,s=e.className,c=void 0===s?[]:s,l=e.showLineNumbers,f=e.wrapLongLines,h="function"==typeof u?u(n):u;if(h.className=c,n&&a){var d=k(r,n,o);t.unshift(S(n,d))}return f&l&&(h.style=p()({},h.style,{display:"flex"})),{type:"element",tagName:"span",properties:h,children:t}}function O(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],r=0;r2&&void 0!==arguments[2]?arguments[2]:[];return A({children:e,lineNumber:t,lineNumberStyle:u,largestLineNumber:i,showInlineLineNumbers:o,lineProps:n,className:a,showLineNumbers:r,wrapLongLines:s})}function m(e,t){if(r&&t&&o){var n=k(u,t,i);e.unshift(S(t,n))}return e}function v(e,n){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];return t||r.length>0?d(e,n,r):m(e,n)}for(var g=function(){var e=l[h],t=e.children[0].value;if(t.match(_)){var n=t.split("\n");n.forEach((function(t,o){var i=r&&f.length+a,u={type:"text",value:"".concat(t,"\n")};if(0===o){var s=v(l.slice(p+1,h).concat(A({children:[u],className:e.properties.className})),i);f.push(s)}else if(o===n.length-1){if(l[h+1]&&l[h+1].children&&l[h+1].children[0]){var c=A({children:[{type:"text",value:"".concat(t)}],className:e.properties.className});l.splice(h+1,0,c)}else{var d=v([u],i,e.properties.className);f.push(d)}}else{var m=v([u],i,e.properties.className);f.push(m)}})),p=h}h++};h .hljs-title":{color:"#88C0D0"},"hljs-keyword":{color:"#81A1C1"},"hljs-literal":{color:"#81A1C1"},"hljs-symbol":{color:"#81A1C1"},"hljs-number":{color:"#B48EAD"},"hljs-regexp":{color:"#EBCB8B"},"hljs-string":{color:"#A3BE8C"},"hljs-title":{color:"#8FBCBB"},"hljs-params":{color:"#D8DEE9"},"hljs-bullet":{color:"#81A1C1"},"hljs-code":{color:"#8FBCBB"},"hljs-emphasis":{fontStyle:"italic"},"hljs-formula":{color:"#8FBCBB"},"hljs-strong":{fontWeight:"bold"},"hljs-link:hover":{textDecoration:"underline"},"hljs-quote":{color:"#4C566A"},"hljs-comment":{color:"#4C566A"},"hljs-doctag":{color:"#8FBCBB"},"hljs-meta":{color:"#5E81AC"},"hljs-meta-keyword":{color:"#5E81AC"},"hljs-meta-string":{color:"#A3BE8C"},"hljs-attr":{color:"#8FBCBB"},"hljs-attribute":{color:"#D8DEE9"},"hljs-builtin-name":{color:"#81A1C1"},"hljs-name":{color:"#81A1C1"},"hljs-section":{color:"#88C0D0"},"hljs-tag":{color:"#81A1C1"},"hljs-variable":{color:"#D8DEE9"},"hljs-template-variable":{color:"#D8DEE9"},"hljs-template-tag":{color:"#5E81AC"},"abnf .hljs-attribute":{color:"#88C0D0"},"abnf .hljs-symbol":{color:"#EBCB8B"},"apache .hljs-attribute":{color:"#88C0D0"},"apache .hljs-section":{color:"#81A1C1"},"arduino .hljs-built_in":{color:"#88C0D0"},"aspectj .hljs-meta":{color:"#D08770"},"aspectj > .hljs-title":{color:"#88C0D0"},"bnf .hljs-attribute":{color:"#8FBCBB"},"clojure .hljs-name":{color:"#88C0D0"},"clojure .hljs-symbol":{color:"#EBCB8B"},"coq .hljs-built_in":{color:"#88C0D0"},"cpp .hljs-meta-string":{color:"#8FBCBB"},"css .hljs-built_in":{color:"#88C0D0"},"css .hljs-keyword":{color:"#D08770"},"diff .hljs-meta":{color:"#8FBCBB"},"ebnf .hljs-attribute":{color:"#8FBCBB"},"glsl .hljs-built_in":{color:"#88C0D0"},"groovy .hljs-meta:not(:first-child)":{color:"#D08770"},"haxe .hljs-meta":{color:"#D08770"},"java .hljs-meta":{color:"#D08770"},"ldif .hljs-attribute":{color:"#8FBCBB"},"lisp .hljs-name":{color:"#88C0D0"},"lua .hljs-built_in":{color:"#88C0D0"},"moonscript .hljs-built_in":{color:"#88C0D0"},"nginx .hljs-attribute":{color:"#88C0D0"},"nginx .hljs-section":{color:"#5E81AC"},"pf .hljs-built_in":{color:"#88C0D0"},"processing .hljs-built_in":{color:"#88C0D0"},"scss .hljs-keyword":{color:"#81A1C1"},"stylus .hljs-keyword":{color:"#81A1C1"},"swift .hljs-meta":{color:"#D08770"},"vim .hljs-built_in":{color:"#88C0D0",fontStyle:"italic"},"yaml .hljs-meta":{color:"#D08770"}},obsidian:{hljs:{display:"block",overflowX:"auto",padding:"0.5em",background:"#282b2e",color:"#e0e2e4"},"hljs-keyword":{color:"#93c763",fontWeight:"bold"},"hljs-selector-tag":{color:"#93c763",fontWeight:"bold"},"hljs-literal":{color:"#93c763",fontWeight:"bold"},"hljs-selector-id":{color:"#93c763"},"hljs-number":{color:"#ffcd22"},"hljs-attribute":{color:"#668bb0"},"hljs-code":{color:"white"},"hljs-class .hljs-title":{color:"white"},"hljs-section":{color:"white",fontWeight:"bold"},"hljs-regexp":{color:"#d39745"},"hljs-link":{color:"#d39745"},"hljs-meta":{color:"#557182"},"hljs-tag":{color:"#8cbbad"},"hljs-name":{color:"#8cbbad",fontWeight:"bold"},"hljs-bullet":{color:"#8cbbad"},"hljs-subst":{color:"#8cbbad"},"hljs-emphasis":{color:"#8cbbad"},"hljs-type":{color:"#8cbbad",fontWeight:"bold"},"hljs-built_in":{color:"#8cbbad"},"hljs-selector-attr":{color:"#8cbbad"},"hljs-selector-pseudo":{color:"#8cbbad"},"hljs-addition":{color:"#8cbbad"},"hljs-variable":{color:"#8cbbad"},"hljs-template-tag":{color:"#8cbbad"},"hljs-template-variable":{color:"#8cbbad"},"hljs-string":{color:"#ec7600"},"hljs-symbol":{color:"#ec7600"},"hljs-comment":{color:"#818e96"},"hljs-quote":{color:"#818e96"},"hljs-deletion":{color:"#818e96"},"hljs-selector-class":{color:"#A082BD"},"hljs-doctag":{fontWeight:"bold"},"hljs-title":{fontWeight:"bold"},"hljs-strong":{fontWeight:"bold"}},"tomorrow-night":{"hljs-comment":{color:"#969896"},"hljs-quote":{color:"#969896"},"hljs-variable":{color:"#cc6666"},"hljs-template-variable":{color:"#cc6666"},"hljs-tag":{color:"#cc6666"},"hljs-name":{color:"#cc6666"},"hljs-selector-id":{color:"#cc6666"},"hljs-selector-class":{color:"#cc6666"},"hljs-regexp":{color:"#cc6666"},"hljs-deletion":{color:"#cc6666"},"hljs-number":{color:"#de935f"},"hljs-built_in":{color:"#de935f"},"hljs-builtin-name":{color:"#de935f"},"hljs-literal":{color:"#de935f"},"hljs-type":{color:"#de935f"},"hljs-params":{color:"#de935f"},"hljs-meta":{color:"#de935f"},"hljs-link":{color:"#de935f"},"hljs-attribute":{color:"#f0c674"},"hljs-string":{color:"#b5bd68"},"hljs-symbol":{color:"#b5bd68"},"hljs-bullet":{color:"#b5bd68"},"hljs-addition":{color:"#b5bd68"},"hljs-title":{color:"#81a2be"},"hljs-section":{color:"#81a2be"},"hljs-keyword":{color:"#b294bb"},"hljs-selector-tag":{color:"#b294bb"},hljs:{display:"block",overflowX:"auto",background:"#1d1f21",color:"#c5c8c6",padding:"0.5em"},"hljs-emphasis":{fontStyle:"italic"},"hljs-strong":{fontWeight:"bold"}}},X=o()(Z),ee=function(e){return i()(X).call(X,e)?Z[e]:(console.warn("Request style '".concat(e,"' is not available, returning default instead")),Q)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.File=t.Blob=t.FormData=void 0;const r="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:window;t.FormData=r.FormData,t.Blob=r.Blob,t.File=r.File},function(e,t){var n=Function.prototype,r=n.apply,o=n.bind,a=n.call;e.exports="object"==typeof Reflect&&Reflect.apply||(o?a.bind(r):function(){return a.apply(r,arguments)})},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t,n){var r=n(58);e.exports=r("navigator","userAgent")||""},function(e,t){e.exports=!0},function(e,t){},function(e,t,n){var r,o=n(51),a=n(218),i=n(221),u=n(150),s=n(335),c=n(214),l=n(173),f=l("IE_PROTO"),p=function(){},h=function(e){return"