From c9e633a20861326692a29cf36fe9a3c24cb00337 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Kukli=C5=84ski?= Date: Wed, 17 Jun 2026 11:09:50 +0200 Subject: [PATCH 1/3] Rebranding from Imoje to ING Pay --- README.md | 6 +- behat.yml.dist | 2 +- composer.json | 8 +- config/packages/nyholm_psr7.yaml | 11 + config/packages/property_info.yaml | 3 + config/packages/workflow.yaml | 2 + config/routes.yaml | 6 +- config/services/command_handlers.yaml | 20 +- config/services/command_providers.yaml | 18 +- config/services/controller.yaml | 6 +- config/services/form.yaml | 8 +- config/services/http_response_provider.yaml | 12 +- config/services/processor.yaml | 4 +- config/services/resolver.yaml | 4 +- .../payment_method/admin/create.yaml | 12 +- .../payment_method/admin/update.yaml | 12 +- doc/configuration.md | 10 +- ....png => create_ing_pay_payment_method.png} | Bin doc/functionalities.md | 10 +- ...{imoje_api_key.png => ing_pay_api_key.png} | Bin ..._data.png => ing_pay_integration_data.png} | Bin doc/installation.md | 10 +- phpunit.xml.dist | 2 +- ...lugin.php => BitBagSyliusIngPayPlugin.php} | 4 +- src/Command/CaptureEndPaymentRequest.php | 2 +- src/Command/CapturePaymentRequest.php | 2 +- src/Command/StatusPaymentRequest.php | 2 +- .../CaptureEndPaymentRequestHandler.php | 6 +- .../CapturePaymentRequestHandler.php | 10 +- .../StatusPaymentRequestHandler.php | 6 +- .../CapturePaymentRequestCommandProvider.php | 6 +- .../StatusPaymentRequestCommandProvider.php | 4 +- src/Controller/NotifyController.php | 12 +- ...on.php => BitBagSyliusIngPayExtension.php} | 6 +- ...eEnvironment.php => IngPayEnvironment.php} | 4 +- ...php => IngPayGatewayConfigurationType.php} | 28 +- .../Provider/CaptureHttpResponseProvider.php | 2 +- src/Processor/PaymentTransitionProcessor.php | 2 +- .../PaymentTransitionProcessorInterface.php | 2 +- src/Resolver/SignatureResolver.php | 6 +- src/Resolver/SignatureResolverInterface.php | 2 +- tests/Application/.env | 2 +- tests/Application/.env.test | 2 +- tests/Application/Kernel.php | 2 +- tests/Application/bin/console | 2 +- tests/Application/config/bundles.php | 2 +- tests/Application/config/encryption/key | 1 + .../packages/bitbag_sylius_imoje_plugin.yaml | 2 - .../bitbag_sylius_ing_pay_plugin.yaml | 2 + tests/Application/config/reference.php | 3819 +++++++++++++++++ tests/Application/config/routes.yaml | 4 +- tests/Application/public/index.php | 2 +- .../CapturePaymentRequestHandlerTest.php | 14 +- .../PaymentTransitionProcessorTest.php | 6 +- tests/Unit/Resolver/SignatureResolverTest.php | 12 +- translations/messages.en.yml | 4 +- translations/validators.en.yaml | 2 +- 57 files changed, 3993 insertions(+), 157 deletions(-) create mode 100644 config/packages/nyholm_psr7.yaml create mode 100644 config/packages/property_info.yaml create mode 100644 config/packages/workflow.yaml rename doc/{create_imoje_payment_method.png => create_ing_pay_payment_method.png} (100%) rename doc/{imoje_api_key.png => ing_pay_api_key.png} (100%) rename doc/{imoje_integration_data.png => ing_pay_integration_data.png} (100%) rename src/{BitBagSyliusImojePlugin.php => BitBagSyliusIngPayPlugin.php} (84%) rename src/DependencyInjection/{BitBagSyliusImojeExtension.php => BitBagSyliusIngPayExtension.php} (86%) rename src/Enum/{ImojeEnvironment.php => IngPayEnvironment.php} (88%) rename src/Form/Type/{ImojeGatewayConfigurationType.php => IngPayGatewayConfigurationType.php} (62%) create mode 100644 tests/Application/config/encryption/key delete mode 100644 tests/Application/config/packages/bitbag_sylius_imoje_plugin.yaml create mode 100644 tests/Application/config/packages/bitbag_sylius_ing_pay_plugin.yaml create mode 100644 tests/Application/config/reference.php diff --git a/README.md b/README.md index 37c7cee..fdf2033 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ We have a 70-person team of experts: business analysts and consultants, eCommerc # Installation -The installation process for the Imoje Paywall Plugin can be found [here](doc/installation.md). +The installation process for the ING Pay Paywall Plugin can be found [here](doc/installation.md). ## Requirements: @@ -73,11 +73,11 @@ We work on stable, supported and up-to-date versions of packages. We recommend y # Usage -This plugin allows you to use the payment solution delivered by Imoje. +This plugin allows you to use the payment solution delivered by ING Pay. # Configuration -The configuration process for the Imoje Paywall Plugin can be found [here](doc/configuration.md). +The configuration process for the ING Pay Paywall Plugin can be found [here](doc/configuration.md). # Functionalities diff --git a/behat.yml.dist b/behat.yml.dist index 27012e3..8ac2dfe 100644 --- a/behat.yml.dist +++ b/behat.yml.dist @@ -28,7 +28,7 @@ default: FriendsOfBehat\SymfonyExtension: bootstrap: tests/Application/config/bootstrap.php kernel: - class: Tests\BitBag\SyliusImojePlugin\Application\Kernel + class: Tests\BitBag\SyliusIngPayPlugin\Application\Kernel FriendsOfBehat\VariadicExtension: ~ diff --git a/composer.json b/composer.json index 603d23d..5da14d8 100644 --- a/composer.json +++ b/composer.json @@ -1,7 +1,7 @@ { - "name": "bitbag/imoje-paywall-plugin", + "name": "bitbag/ing-pay-paywall-plugin", "type": "sylius-plugin", - "description": "Imoje plugin for Sylius.", + "description": "ING Pay plugin for Sylius.", "keywords": [ "sylius", "sylius-plugin" @@ -57,12 +57,12 @@ }, "autoload": { "psr-4": { - "BitBag\\SyliusImojePlugin\\": "src/" + "BitBag\\SyliusIngPayPlugin\\": "src/" } }, "autoload-dev": { "psr-4": { - "Tests\\BitBag\\SyliusImojePlugin\\": [ + "Tests\\BitBag\\SyliusIngPayPlugin\\": [ "tests/", "tests/Application/src" ] diff --git a/config/packages/nyholm_psr7.yaml b/config/packages/nyholm_psr7.yaml new file mode 100644 index 0000000..ade8312 --- /dev/null +++ b/config/packages/nyholm_psr7.yaml @@ -0,0 +1,11 @@ +services: + # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories) + Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory' + Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory' + + nyholm.psr7.psr17_factory: + class: Nyholm\Psr7\Factory\Psr17Factory diff --git a/config/packages/property_info.yaml b/config/packages/property_info.yaml new file mode 100644 index 0000000..dd31b9d --- /dev/null +++ b/config/packages/property_info.yaml @@ -0,0 +1,3 @@ +framework: + property_info: + with_constructor_extractor: true diff --git a/config/packages/workflow.yaml b/config/packages/workflow.yaml new file mode 100644 index 0000000..855df59 --- /dev/null +++ b/config/packages/workflow.yaml @@ -0,0 +1,2 @@ +framework: + workflows: null diff --git a/config/routes.yaml b/config/routes.yaml index d6227f2..ec0dfed 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -1,5 +1,5 @@ -bitbag_sylius_imoje_payment_notify: - path: /payment/imoje/notify +bitbag_sylius_ing_pay_payment_notify: + path: /payment/ing_pay/notify methods: [POST] defaults: - _controller: bitbag.sylius_imoje_plugin.controller.notify_controller::verifyImojeNotification + _controller: bitbag.sylius_ing_pay_plugin.controller.notify_controller::verifyIngPayNotification diff --git a/config/services/command_handlers.yaml b/config/services/command_handlers.yaml index 98c5d92..672bed5 100644 --- a/config/services/command_handlers.yaml +++ b/config/services/command_handlers.yaml @@ -1,32 +1,32 @@ services: - bitbag.sylius.command_handlers.imoje_paywall.capture: - class: BitBag\SyliusImojePlugin\CommandHandler\CapturePaymentRequestHandler + bitbag.sylius.command_handlers.ing_pay_paywall.capture: + class: BitBag\SyliusIngPayPlugin\CommandHandler\CapturePaymentRequestHandler arguments: - '@sylius.provider.payment_request' - '@sylius_abstraction.state_machine' - - '@bitbag.imoje_plugin.resolver.signature_resolver' + - '@bitbag.ing_pay_plugin.resolver.signature_resolver' - '@sylius_shop.provider.order_pay.payment_request_pay_url' tags: - name: messenger.message_handler bus: sylius.payment_request.command_bus - bitbag.sylius.command_handlers.imoje_paywall.capture_end: - class: BitBag\SyliusImojePlugin\CommandHandler\CaptureEndPaymentRequestHandler + bitbag.sylius.command_handlers.ing_pay_paywall.capture_end: + class: BitBag\SyliusIngPayPlugin\CommandHandler\CaptureEndPaymentRequestHandler arguments: - '@sylius.provider.payment_request' - '@sylius_abstraction.state_machine' - - '@bitbag.sylius_imoje_plugin.processor.payment_transition' + - '@bitbag.sylius_ing_pay_plugin.processor.payment_transition' tags: - name: messenger.message_handler bus: sylius.payment_request.command_bus - bitbag.sylius.command_handlers.imoje_paywall.status: - class: BitBag\SyliusImojePlugin\CommandHandler\StatusPaymentRequestHandler + bitbag.sylius.command_handlers.ing_pay_paywall.status: + class: BitBag\SyliusIngPayPlugin\CommandHandler\StatusPaymentRequestHandler arguments: - '@sylius.provider.payment_request' - '@sylius_abstraction.state_machine' - - '@bitbag.sylius_imoje_plugin.processor.payment_transition' + - '@bitbag.sylius_ing_pay_plugin.processor.payment_transition' tags: - name: messenger.message_handler bus: sylius.payment_request.command_bus - handles: BitBag\SyliusImojePlugin\Command\StatusPaymentRequest + handles: BitBag\SyliusIngPayPlugin\Command\StatusPaymentRequest diff --git a/config/services/command_providers.yaml b/config/services/command_providers.yaml index abc198f..157df54 100644 --- a/config/services/command_providers.yaml +++ b/config/services/command_providers.yaml @@ -1,22 +1,22 @@ services: - bitbag.sylius.command_provider.imoje_paywall: + bitbag.sylius.command_provider.ing_pay_paywall: class: Sylius\Bundle\PaymentBundle\CommandProvider\ActionsCommandProvider arguments: - !tagged_locator - tag: bitbag.sylius.command_provider.imoje_paywall + tag: bitbag.sylius.command_provider.ing_pay_paywall index_by: 'action' tags: - name: sylius.payment_request.command_provider - gateway_factory: 'imoje_paywall' + gateway_factory: 'ing_pay_paywall' - bitbag.sylius.command_provider.imoje_paywall.capture: - class: BitBag\SyliusImojePlugin\CommandProvider\CapturePaymentRequestCommandProvider + bitbag.sylius.command_provider.ing_pay_paywall.capture: + class: BitBag\SyliusIngPayPlugin\CommandProvider\CapturePaymentRequestCommandProvider tags: - - name: bitbag.sylius.command_provider.imoje_paywall + - name: bitbag.sylius.command_provider.ing_pay_paywall action: !php/const Sylius\Component\Payment\Model\PaymentRequestInterface::ACTION_CAPTURE - bitbag.sylius.command_provider.imoje_paywall.status: - class: BitBag\SyliusImojePlugin\CommandProvider\StatusPaymentRequestCommandProvider + bitbag.sylius.command_provider.ing_pay_paywall.status: + class: BitBag\SyliusIngPayPlugin\CommandProvider\StatusPaymentRequestCommandProvider tags: - - name: bitbag.sylius.command_provider.imoje_paywall + - name: bitbag.sylius.command_provider.ing_pay_paywall action: !php/const Sylius\Component\Payment\Model\PaymentRequestInterface::ACTION_STATUS diff --git a/config/services/controller.yaml b/config/services/controller.yaml index 784d538..6686761 100644 --- a/config/services/controller.yaml +++ b/config/services/controller.yaml @@ -2,10 +2,10 @@ services: _defaults: public: true - bitbag.sylius_imoje_plugin.controller.notify_controller: - class: BitBag\SyliusImojePlugin\Controller\NotifyController + bitbag.sylius_ing_pay_plugin.controller.notify_controller: + class: BitBag\SyliusIngPayPlugin\Controller\NotifyController arguments: - '@sylius.repository.order' - '@sylius.repository.payment' - '@doctrine.orm.entity_manager' - - '@bitbag.imoje_plugin.resolver.signature_resolver' + - '@bitbag.ing_pay_plugin.resolver.signature_resolver' diff --git a/config/services/form.yaml b/config/services/form.yaml index 1d77e25..510e2ad 100644 --- a/config/services/form.yaml +++ b/config/services/form.yaml @@ -1,8 +1,8 @@ services: - bitbag.imoje_plugin.form.type.gateway_configuration.imoje_paywall: - class: BitBag\SyliusImojePlugin\Form\Type\ImojeGatewayConfigurationType + bitbag.ing_pay_plugin.form.type.gateway_configuration.ing_pay_paywall: + class: BitBag\SyliusIngPayPlugin\Form\Type\IngPayGatewayConfigurationType tags: - name: sylius.gateway_configuration_type - type: imoje_paywall - label: 'bitbag.imoje_plugin.paywall' + type: ing_pay_paywall + label: 'bitbag.ing_pay_plugin.paywall' - name: form.type diff --git a/config/services/http_response_provider.yaml b/config/services/http_response_provider.yaml index 60de9cf..924b0e7 100644 --- a/config/services/http_response_provider.yaml +++ b/config/services/http_response_provider.yaml @@ -1,16 +1,16 @@ services: - bitbag.sylius.provider.order_pay.http_response.imoje_paywall: + bitbag.sylius.provider.order_pay.http_response.ing_pay_paywall: class: Sylius\Bundle\PaymentBundle\Provider\ActionsHttpResponseProvider arguments: - !tagged_locator - tag: bitbag.sylius.provider.order_pay.http_response.imoje_paywall + tag: bitbag.sylius.provider.order_pay.http_response.ing_pay_paywall index_by: action tags: - name: sylius.payment_request.provider.http_response - gateway_factory: 'imoje_paywall' + gateway_factory: 'ing_pay_paywall' - bitbag.sylius.provider.order_pay.http_response.imoje_paywall.capture: - class: BitBag\SyliusImojePlugin\OrderPay\Provider\CaptureHttpResponseProvider + bitbag.sylius.provider.order_pay.http_response.ing_pay_paywall.capture: + class: BitBag\SyliusIngPayPlugin\OrderPay\Provider\CaptureHttpResponseProvider tags: - - name: bitbag.sylius.provider.order_pay.http_response.imoje_paywall + - name: bitbag.sylius.provider.order_pay.http_response.ing_pay_paywall action: !php/const Sylius\Component\Payment\Model\PaymentRequestInterface::ACTION_CAPTURE diff --git a/config/services/processor.yaml b/config/services/processor.yaml index 05e2412..c150da5 100644 --- a/config/services/processor.yaml +++ b/config/services/processor.yaml @@ -1,5 +1,5 @@ services: - bitbag.sylius_imoje_plugin.processor.payment_transition: - class: BitBag\SyliusImojePlugin\Processor\PaymentTransitionProcessor + bitbag.sylius_ing_pay_plugin.processor.payment_transition: + class: BitBag\SyliusIngPayPlugin\Processor\PaymentTransitionProcessor arguments: - '@sylius_abstraction.state_machine' diff --git a/config/services/resolver.yaml b/config/services/resolver.yaml index 3a9f043..860b3ce 100644 --- a/config/services/resolver.yaml +++ b/config/services/resolver.yaml @@ -1,3 +1,3 @@ services: - bitbag.imoje_plugin.resolver.signature_resolver: - class: BitBag\SyliusImojePlugin\Resolver\SignatureResolver + bitbag.ing_pay_plugin.resolver.signature_resolver: + class: BitBag\SyliusIngPayPlugin\Resolver\SignatureResolver diff --git a/config/twig_hooks/payment_method/admin/create.yaml b/config/twig_hooks/payment_method/admin/create.yaml index 755ed64..f626a06 100644 --- a/config/twig_hooks/payment_method/admin/create.yaml +++ b/config/twig_hooks/payment_method/admin/create.yaml @@ -1,18 +1,18 @@ sylius_twig_hooks: hooks: - 'sylius_admin.payment_method.create.content.form.sections.gateway_configuration.imoje_paywall': + 'sylius_admin.payment_method.create.content.form.sections.gateway_configuration.ing_pay_paywall': environment: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/environment.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/environment.html.twig' priority: 400 merchant_id: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/merchant_id.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/merchant_id.html.twig' priority: 300 service_id: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/service_id.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/service_id.html.twig' priority: 200 service_key: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/service_key.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/service_key.html.twig' priority: 100 authorization_token: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/authorization_token.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/authorization_token.html.twig' priority: 0 diff --git a/config/twig_hooks/payment_method/admin/update.yaml b/config/twig_hooks/payment_method/admin/update.yaml index db9cbd6..2dca04e 100644 --- a/config/twig_hooks/payment_method/admin/update.yaml +++ b/config/twig_hooks/payment_method/admin/update.yaml @@ -1,18 +1,18 @@ sylius_twig_hooks: hooks: - 'sylius_admin.payment_method.update.content.form.sections.gateway_configuration.imoje_paywall': + 'sylius_admin.payment_method.update.content.form.sections.gateway_configuration.ing_pay_paywall': environment: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/environment.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/environment.html.twig' priority: 400 merchant_id: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/merchant_id.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/merchant_id.html.twig' priority: 300 service_id: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/service_id.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/service_id.html.twig' priority: 200 service_key: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/service_key.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/service_key.html.twig' priority: 100 authorization_token: - template: '@BitBagSyliusImojePlugin/admin/payment_method/form/authorization_token.html.twig' + template: '@BitBagSyliusIngPayPlugin/admin/payment_method/form/authorization_token.html.twig' priority: 0 diff --git a/doc/configuration.md b/doc/configuration.md index d1c556c..f780269 100644 --- a/doc/configuration.md +++ b/doc/configuration.md @@ -6,14 +6,14 @@ To create an ING-based payment method, go to Payment methods in the Sylius admin panel. After that, you need to add an ING payment: -![Screenshot showing payment method config in admin](./create_imoje_payment_method.png) +![Screenshot showing payment method config in admin](./create_ing_pay_payment_method.png) And now, you can configure your payment method in the admin panel: ![Screenshot showing payment method config in admin](./payment_method_config.png) ## ING admin panel: -To configure the imoje gateway, log in to ING the admin panel. +To configure the ING Pay gateway, log in to ING the admin panel. - [Sandbox ING admin panel](https://sandbox.imoje.ing.pl) - [Production ING admin panel](https://imoje.ing.pl) @@ -25,12 +25,12 @@ From `Shops` -> `Your shop` -> `Details` -> `Integration data` you can acquire n - Service key, Also, here in the integration data page you need to configure the path to your webhook, -just type in your shop URL followed by: `/payment/imoje/notify` +just type in your shop URL followed by: `/payment/ing_pay/notify` In sandbox mode, you can use Ngrok or another tunneling program to expose your localhost. -![Screenshot showing integration data in ING admin panel](./imoje_integration_data.png) +![Screenshot showing integration data in ING admin panel](./ing_pay_integration_data.png) The authorization token can be obtained from `Your profile` → `API keys` → `Details` -![Screenshot showing Authorization key in ING admin panel](./imoje_api_key.png) +![Screenshot showing Authorization key in ING admin panel](./ing_pay_api_key.png) diff --git a/doc/create_imoje_payment_method.png b/doc/create_ing_pay_payment_method.png similarity index 100% rename from doc/create_imoje_payment_method.png rename to doc/create_ing_pay_payment_method.png diff --git a/doc/functionalities.md b/doc/functionalities.md index 3795a02..655943e 100644 --- a/doc/functionalities.md +++ b/doc/functionalities.md @@ -2,16 +2,16 @@ --- -The plugin integrates iMoje payments with Sylius based applications. +The plugin integrates ING Pay payments with Sylius based applications. ->iMoje is an online payment platform created by ING Bank Śląski, which enables online shops and service providers to accept payments from customers in Poland. +>ING Pay is an online payment platform created by ING Bank Śląski, which enables online shops and service providers to accept payments from customers in Poland. It is a comprehensive payment gateway service, offering various payment methods such as payment cards, fast online transfers (so-called pay-by-links), BLIK, mobile payments and deferred payments. ->In contrast to iMojePlugin, payment and selection of the payment type is carried out after redirection to a dedicated payment gateway. +>In contrast to the ING Pay Plugin, payment and selection of the payment type is carried out after redirection to a dedicated payment gateway. -- After an installation, user should be able to create new `Imoje gateway` payment method in the `Payment methods` section in the admin panel. +- After an installation, user should be able to create new `ING Pay gateway` payment method in the `Payment methods` section in the admin panel. -![Screenshot showing payment method config in admin](./create_imoje_payment_method.png) +![Screenshot showing payment method config in admin](./create_ing_pay_payment_method.png) - And now, you can configure your payment method in the admin panel: diff --git a/doc/imoje_api_key.png b/doc/ing_pay_api_key.png similarity index 100% rename from doc/imoje_api_key.png rename to doc/ing_pay_api_key.png diff --git a/doc/imoje_integration_data.png b/doc/ing_pay_integration_data.png similarity index 100% rename from doc/imoje_integration_data.png rename to doc/ing_pay_integration_data.png diff --git a/doc/installation.md b/doc/installation.md index f704b1e..ed6229a 100644 --- a/doc/installation.md +++ b/doc/installation.md @@ -12,7 +12,7 @@ ADDITIONAL ## Composer: ```bash -composer require bitbag/imoje-paywall-plugin --with-all-dependencies +composer require bitbag/ing-pay-paywall-plugin --with-all-dependencies ``` ## Basic configuration: @@ -23,21 +23,21 @@ Add plugin dependencies to your `config/bundles.php` file: return [ ... - BitBag\SyliusImojePlugin\BitBagSyliusImojePlugin::class => ['all' => true], + BitBag\SyliusIngPayPlugin\BitBagSyliusIngPayPlugin::class => ['all' => true], ]; ``` Add routing to your `config/routes.yaml` file: ```yaml -bitbag_sylius_imoje_plugin: - resource: "@BitBagSyliusImojePlugin/config/routes.yaml" +bitbag_sylius_ing_pay_plugin: + resource: "@BitBagSyliusIngPayPlugin/config/routes.yaml" ``` Import plugin configuration in `config/packages/_sylius.yaml` file: ```yaml imports: # ... - - { resource: "@BitBagSyliusImojePlugin/config/config.yaml" } + - { resource: "@BitBagSyliusIngPayPlugin/config/config.yaml" } ``` ## Known issues diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 2854038..130095f 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -5,7 +5,7 @@ colors="true" bootstrap="tests/Application/config/bootstrap.php"> - + tests diff --git a/src/BitBagSyliusImojePlugin.php b/src/BitBagSyliusIngPayPlugin.php similarity index 84% rename from src/BitBagSyliusImojePlugin.php rename to src/BitBagSyliusIngPayPlugin.php index f96ac2b..7ef2a7f 100644 --- a/src/BitBagSyliusImojePlugin.php +++ b/src/BitBagSyliusIngPayPlugin.php @@ -9,12 +9,12 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin; +namespace BitBag\SyliusIngPayPlugin; use Sylius\Bundle\CoreBundle\Application\SyliusPluginTrait; use Symfony\Component\HttpKernel\Bundle\Bundle; -final class BitBagSyliusImojePlugin extends Bundle +final class BitBagSyliusIngPayPlugin extends Bundle { use SyliusPluginTrait; diff --git a/src/Command/CaptureEndPaymentRequest.php b/src/Command/CaptureEndPaymentRequest.php index 19c81a3..527290f 100644 --- a/src/Command/CaptureEndPaymentRequest.php +++ b/src/Command/CaptureEndPaymentRequest.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Command; +namespace BitBag\SyliusIngPayPlugin\Command; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareInterface; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareTrait; diff --git a/src/Command/CapturePaymentRequest.php b/src/Command/CapturePaymentRequest.php index ebde54a..11c14bc 100644 --- a/src/Command/CapturePaymentRequest.php +++ b/src/Command/CapturePaymentRequest.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Command; +namespace BitBag\SyliusIngPayPlugin\Command; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareInterface; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareTrait; diff --git a/src/Command/StatusPaymentRequest.php b/src/Command/StatusPaymentRequest.php index fad2e8a..acbab22 100644 --- a/src/Command/StatusPaymentRequest.php +++ b/src/Command/StatusPaymentRequest.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Command; +namespace BitBag\SyliusIngPayPlugin\Command; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareInterface; use Sylius\Bundle\PaymentBundle\Command\PaymentRequestHashAwareTrait; diff --git a/src/CommandHandler/CaptureEndPaymentRequestHandler.php b/src/CommandHandler/CaptureEndPaymentRequestHandler.php index 5bcef78..1ec2f13 100644 --- a/src/CommandHandler/CaptureEndPaymentRequestHandler.php +++ b/src/CommandHandler/CaptureEndPaymentRequestHandler.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\CommandHandler; +namespace BitBag\SyliusIngPayPlugin\CommandHandler; -use BitBag\SyliusImojePlugin\Command\CaptureEndPaymentRequest; -use BitBag\SyliusImojePlugin\Processor\PaymentTransitionProcessorInterface; +use BitBag\SyliusIngPayPlugin\Command\CaptureEndPaymentRequest; +use BitBag\SyliusIngPayPlugin\Processor\PaymentTransitionProcessorInterface; use Sylius\Abstraction\StateMachine\StateMachineInterface; use Sylius\Bundle\PaymentBundle\Provider\PaymentRequestProviderInterface; use Sylius\Component\Payment\Model\PaymentRequestInterface; diff --git a/src/CommandHandler/CapturePaymentRequestHandler.php b/src/CommandHandler/CapturePaymentRequestHandler.php index f2b6b36..1bc38cc 100644 --- a/src/CommandHandler/CapturePaymentRequestHandler.php +++ b/src/CommandHandler/CapturePaymentRequestHandler.php @@ -9,11 +9,11 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\CommandHandler; +namespace BitBag\SyliusIngPayPlugin\CommandHandler; -use BitBag\SyliusImojePlugin\Command\CapturePaymentRequest; -use BitBag\SyliusImojePlugin\Enum\ImojeEnvironment; -use BitBag\SyliusImojePlugin\Resolver\SignatureResolverInterface; +use BitBag\SyliusIngPayPlugin\Command\CapturePaymentRequest; +use BitBag\SyliusIngPayPlugin\Enum\IngPayEnvironment; +use BitBag\SyliusIngPayPlugin\Resolver\SignatureResolverInterface; use Sylius\Abstraction\StateMachine\StateMachineInterface; use Sylius\Bundle\CoreBundle\OrderPay\Provider\UrlProviderInterface; use Sylius\Bundle\PaymentBundle\Provider\PaymentRequestProviderInterface; @@ -99,6 +99,6 @@ private function prepareOrderData( private function getPaymentUrl(string $environment): string { - return $environment === ImojeEnvironment::PRODUCTION_ENVIRONMENT->value ? ImojeEnvironment::PRODUCTION_URL->value : ImojeEnvironment::SANDBOX_URL->value; + return $environment === IngPayEnvironment::PRODUCTION_ENVIRONMENT->value ? IngPayEnvironment::PRODUCTION_URL->value : IngPayEnvironment::SANDBOX_URL->value; } } diff --git a/src/CommandHandler/StatusPaymentRequestHandler.php b/src/CommandHandler/StatusPaymentRequestHandler.php index 70406d9..1342453 100644 --- a/src/CommandHandler/StatusPaymentRequestHandler.php +++ b/src/CommandHandler/StatusPaymentRequestHandler.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\CommandHandler; +namespace BitBag\SyliusIngPayPlugin\CommandHandler; -use BitBag\SyliusImojePlugin\Command\StatusPaymentRequest; -use BitBag\SyliusImojePlugin\Processor\PaymentTransitionProcessorInterface; +use BitBag\SyliusIngPayPlugin\Command\StatusPaymentRequest; +use BitBag\SyliusIngPayPlugin\Processor\PaymentTransitionProcessorInterface; use Sylius\Abstraction\StateMachine\StateMachineInterface; use Sylius\Bundle\PaymentBundle\Provider\PaymentRequestProviderInterface; use Sylius\Component\Payment\PaymentRequestTransitions; diff --git a/src/CommandProvider/CapturePaymentRequestCommandProvider.php b/src/CommandProvider/CapturePaymentRequestCommandProvider.php index fedd684..0a89a0f 100644 --- a/src/CommandProvider/CapturePaymentRequestCommandProvider.php +++ b/src/CommandProvider/CapturePaymentRequestCommandProvider.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\CommandProvider; +namespace BitBag\SyliusIngPayPlugin\CommandProvider; -use BitBag\SyliusImojePlugin\Command\CaptureEndPaymentRequest; -use BitBag\SyliusImojePlugin\Command\CapturePaymentRequest; +use BitBag\SyliusIngPayPlugin\Command\CaptureEndPaymentRequest; +use BitBag\SyliusIngPayPlugin\Command\CapturePaymentRequest; use Sylius\Bundle\PaymentBundle\CommandProvider\PaymentRequestCommandProviderInterface; use Sylius\Component\Payment\Model\PaymentRequestInterface; diff --git a/src/CommandProvider/StatusPaymentRequestCommandProvider.php b/src/CommandProvider/StatusPaymentRequestCommandProvider.php index f1547e8..3c68524 100644 --- a/src/CommandProvider/StatusPaymentRequestCommandProvider.php +++ b/src/CommandProvider/StatusPaymentRequestCommandProvider.php @@ -9,9 +9,9 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\CommandProvider; +namespace BitBag\SyliusIngPayPlugin\CommandProvider; -use BitBag\SyliusImojePlugin\Command\StatusPaymentRequest; +use BitBag\SyliusIngPayPlugin\Command\StatusPaymentRequest; use Sylius\Bundle\PaymentBundle\CommandProvider\PaymentRequestCommandProviderInterface; use Sylius\Component\Payment\Model\PaymentRequestInterface; diff --git a/src/Controller/NotifyController.php b/src/Controller/NotifyController.php index e6e55ed..6123cc1 100644 --- a/src/Controller/NotifyController.php +++ b/src/Controller/NotifyController.php @@ -9,9 +9,9 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Controller; +namespace BitBag\SyliusIngPayPlugin\Controller; -use BitBag\SyliusImojePlugin\Resolver\SignatureResolverInterface; +use BitBag\SyliusIngPayPlugin\Resolver\SignatureResolverInterface; use Doctrine\ORM\EntityManagerInterface; use Sylius\Component\Core\Model\PaymentInterface; use Sylius\Component\Core\Repository\OrderRepositoryInterface; @@ -31,7 +31,7 @@ public function __construct( ) { } - public function verifyImojeNotification(Request $request): Response + public function verifyIngPayNotification(Request $request): Response { $content = $request->getContent(); if ('' === $content) { @@ -81,13 +81,13 @@ public function verifyImojeNotification(Request $request): Response return new Response('Signature verification failed', Response::HTTP_FORBIDDEN); } - $imojePaymentStatus = (string) $data['payment']['status']; - $payment->setDetails(['status' => $imojePaymentStatus]); + $ingPayPaymentStatus = (string) $data['payment']['status']; + $payment->setDetails(['status' => $ingPayPaymentStatus]); $this->entityManager->persist($payment); $this->entityManager->flush(); return new JsonResponse([ - 'status' => $imojePaymentStatus, + 'status' => $ingPayPaymentStatus, ]); } } diff --git a/src/DependencyInjection/BitBagSyliusImojeExtension.php b/src/DependencyInjection/BitBagSyliusIngPayExtension.php similarity index 86% rename from src/DependencyInjection/BitBagSyliusImojeExtension.php rename to src/DependencyInjection/BitBagSyliusIngPayExtension.php index 934c419..beaaedb 100644 --- a/src/DependencyInjection/BitBagSyliusImojeExtension.php +++ b/src/DependencyInjection/BitBagSyliusIngPayExtension.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\DependencyInjection; +namespace BitBag\SyliusIngPayPlugin\DependencyInjection; use Sylius\Bundle\CoreBundle\DependencyInjection\PrependDoctrineMigrationsTrait; use Sylius\Bundle\ResourceBundle\DependencyInjection\Extension\AbstractResourceExtension; @@ -18,7 +18,7 @@ use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; -final class BitBagSyliusImojeExtension extends AbstractResourceExtension implements PrependExtensionInterface +final class BitBagSyliusIngPayExtension extends AbstractResourceExtension implements PrependExtensionInterface { use PrependDoctrineMigrationsTrait; @@ -42,7 +42,7 @@ protected function getMigrationsNamespace(): string protected function getMigrationsDirectory(): string { - return '@BitBagSyliusImojePlugin/migrations'; + return '@BitBagSyliusIngPayPlugin/migrations'; } protected function getNamespacesOfMigrationsExecutedBefore(): array diff --git a/src/Enum/ImojeEnvironment.php b/src/Enum/IngPayEnvironment.php similarity index 88% rename from src/Enum/ImojeEnvironment.php rename to src/Enum/IngPayEnvironment.php index 02f9213..c4e52ca 100644 --- a/src/Enum/ImojeEnvironment.php +++ b/src/Enum/IngPayEnvironment.php @@ -9,9 +9,9 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Enum; +namespace BitBag\SyliusIngPayPlugin\Enum; -enum ImojeEnvironment: string +enum IngPayEnvironment: string { case PRODUCTION_ENVIRONMENT = 'production'; case SANDBOX_ENVIRONMENT = 'sandbox'; diff --git a/src/Form/Type/ImojeGatewayConfigurationType.php b/src/Form/Type/IngPayGatewayConfigurationType.php similarity index 62% rename from src/Form/Type/ImojeGatewayConfigurationType.php rename to src/Form/Type/IngPayGatewayConfigurationType.php index f57f1f1..1d85072 100644 --- a/src/Form/Type/ImojeGatewayConfigurationType.php +++ b/src/Form/Type/IngPayGatewayConfigurationType.php @@ -9,16 +9,16 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Form\Type; +namespace BitBag\SyliusIngPayPlugin\Form\Type; -use BitBag\SyliusImojePlugin\Enum\ImojeEnvironment; +use BitBag\SyliusIngPayPlugin\Enum\IngPayEnvironment; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\NotBlank; -final class ImojeGatewayConfigurationType extends AbstractType +final class IngPayGatewayConfigurationType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { @@ -28,51 +28,51 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ChoiceType::class, [ 'choices' => [ - 'bitbag.imoje_plugin.configuration.production' => ImojeEnvironment::PRODUCTION_ENVIRONMENT, - 'bitbag.imoje_plugin.configuration.sandbox' => ImojeEnvironment::SANDBOX_ENVIRONMENT, + 'bitbag.ing_pay_plugin.configuration.production' => IngPayEnvironment::PRODUCTION_ENVIRONMENT, + 'bitbag.ing_pay_plugin.configuration.sandbox' => IngPayEnvironment::SANDBOX_ENVIRONMENT, ], - 'label' => 'bitbag.imoje_plugin.configuration.environment', + 'label' => 'bitbag.ing_pay_plugin.configuration.environment', ], ) ->add('merchant_id', TextType::class, [ - 'label' => 'bitbag.imoje_plugin.configuration.merchant_id', + 'label' => 'bitbag.ing_pay_plugin.configuration.merchant_id', 'constraints' => [ new NotBlank( [ - 'message' => 'bitbag.imoje_plugin.configuration.merchant_id.not_blank', + 'message' => 'bitbag.ing_pay_plugin.configuration.merchant_id.not_blank', 'groups' => ['sylius'], ], ), ], ]) ->add('service_id', TextType::class, [ - 'label' => 'bitbag.imoje_plugin.configuration.service_id', + 'label' => 'bitbag.ing_pay_plugin.configuration.service_id', 'constraints' => [ new NotBlank( [ - 'message' => 'bitbag.imoje_plugin.configuration.service_id.not_blank', + 'message' => 'bitbag.ing_pay_plugin.configuration.service_id.not_blank', 'groups' => ['sylius'], ], ), ], ]) ->add('service_key', TextType::class, [ - 'label' => 'bitbag.imoje_plugin.configuration.service_key', + 'label' => 'bitbag.ing_pay_plugin.configuration.service_key', 'constraints' => [ new NotBlank( [ - 'message' => 'bitbag.imoje_plugin.configuration.service_key.not_blank', + 'message' => 'bitbag.ing_pay_plugin.configuration.service_key.not_blank', 'groups' => ['sylius'], ], ), ], ]) ->add('authorization_token', TextType::class, [ - 'label' => 'bitbag.imoje_plugin.configuration.authorization_token', + 'label' => 'bitbag.ing_pay_plugin.configuration.authorization_token', 'constraints' => [ new NotBlank( [ - 'message' => 'bitbag.imoje_plugin.configuration.authorization_token.not_blank', + 'message' => 'bitbag.ing_pay_plugin.configuration.authorization_token.not_blank', 'groups' => ['sylius'], ], ), diff --git a/src/OrderPay/Provider/CaptureHttpResponseProvider.php b/src/OrderPay/Provider/CaptureHttpResponseProvider.php index 0028962..8a532c3 100644 --- a/src/OrderPay/Provider/CaptureHttpResponseProvider.php +++ b/src/OrderPay/Provider/CaptureHttpResponseProvider.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\OrderPay\Provider; +namespace BitBag\SyliusIngPayPlugin\OrderPay\Provider; use Sylius\Bundle\PaymentBundle\Provider\HttpResponseProviderInterface; use Sylius\Bundle\ResourceBundle\Controller\RequestConfiguration; diff --git a/src/Processor/PaymentTransitionProcessor.php b/src/Processor/PaymentTransitionProcessor.php index 796337c..43bc90c 100644 --- a/src/Processor/PaymentTransitionProcessor.php +++ b/src/Processor/PaymentTransitionProcessor.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Processor; +namespace BitBag\SyliusIngPayPlugin\Processor; use Sylius\Abstraction\StateMachine\StateMachineInterface; use Sylius\Component\Payment\Model\PaymentInterface; diff --git a/src/Processor/PaymentTransitionProcessorInterface.php b/src/Processor/PaymentTransitionProcessorInterface.php index 7af7b17..38406c9 100644 --- a/src/Processor/PaymentTransitionProcessorInterface.php +++ b/src/Processor/PaymentTransitionProcessorInterface.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Processor; +namespace BitBag\SyliusIngPayPlugin\Processor; use Sylius\Component\Payment\Model\PaymentRequestInterface; diff --git a/src/Resolver/SignatureResolver.php b/src/Resolver/SignatureResolver.php index b535532..b71e44c 100644 --- a/src/Resolver/SignatureResolver.php +++ b/src/Resolver/SignatureResolver.php @@ -9,9 +9,9 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Resolver; +namespace BitBag\SyliusIngPayPlugin\Resolver; -use BitBag\SyliusImojePlugin\Enum\ImojeEnvironment; +use BitBag\SyliusIngPayPlugin\Enum\IngPayEnvironment; use Symfony\Component\HttpFoundation\Request; use Webmozart\Assert\Assert; @@ -32,7 +32,7 @@ public function createSignature(array $fields, string $serviceKey): string $dataString = implode('&', $data); - return hash(ImojeEnvironment::HASHING_ALGORITHM->value, $dataString . $serviceKey) . ';' . ImojeEnvironment::HASHING_ALGORITHM->value; + return hash(IngPayEnvironment::HASHING_ALGORITHM->value, $dataString . $serviceKey) . ';' . IngPayEnvironment::HASHING_ALGORITHM->value; } public function verifySignature(Request $request, string $serviceKey): bool diff --git a/src/Resolver/SignatureResolverInterface.php b/src/Resolver/SignatureResolverInterface.php index 3b2249d..4da3b59 100644 --- a/src/Resolver/SignatureResolverInterface.php +++ b/src/Resolver/SignatureResolverInterface.php @@ -9,7 +9,7 @@ declare(strict_types=1); -namespace BitBag\SyliusImojePlugin\Resolver; +namespace BitBag\SyliusIngPayPlugin\Resolver; use Symfony\Component\HttpFoundation\Request; diff --git a/tests/Application/.env b/tests/Application/.env index a3e5589..a943f5a 100644 --- a/tests/Application/.env +++ b/tests/Application/.env @@ -12,7 +12,7 @@ APP_SECRET=EDITME # Format described at http://docs.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url # For a sqlite database, use: "sqlite:///%kernel.project_dir%/var/data.db" # Set "serverVersion" to your server version to avoid edge-case exceptions and extra database calls -DATABASE_URL=mysql://root@127.0.0.1/bitbag_sylius_imoje_plugin%kernel.environment%?serverVersion=5.7 +DATABASE_URL=mysql://root@127.0.0.1/bitbag_sylius_ing_pay_plugin%kernel.environment%?serverVersion=5.7 ###< doctrine/doctrine-bundle ### ###> lexik/jwt-authentication-bundle ### diff --git a/tests/Application/.env.test b/tests/Application/.env.test index 44fee52..4a2e645 100644 --- a/tests/Application/.env.test +++ b/tests/Application/.env.test @@ -1,6 +1,6 @@ APP_SECRET='ch4mb3r0f5ecr3ts' -KERNEL_CLASS='Tests\BitBag\SyliusImojePlugin\Application\Kernel' +KERNEL_CLASS='Tests\BitBag\SyliusIngPayPlugin\Application\Kernel' ###> symfony/messenger ### # Sync transport turned for testing env for the ease of testing diff --git a/tests/Application/Kernel.php b/tests/Application/Kernel.php index 6f2cfa2..8fb479b 100644 --- a/tests/Application/Kernel.php +++ b/tests/Application/Kernel.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace Tests\BitBag\SyliusImojePlugin\Application; +namespace Tests\BitBag\SyliusIngPayPlugin\Application; use PSS\SymfonyMockerContainer\DependencyInjection\MockerContainer; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; diff --git a/tests/Application/bin/console b/tests/Application/bin/console index fcb88a1..a940488 100755 --- a/tests/Application/bin/console +++ b/tests/Application/bin/console @@ -1,7 +1,7 @@ #!/usr/bin/env php ['all' => true], Sylius\TwigExtra\Symfony\SyliusTwigExtraBundle::class => ['all' => true], Symfony\UX\Icons\UXIconsBundle::class => ['all' => true], - BitBag\SyliusImojePlugin\BitBagSyliusImojePlugin::class => ['all' => true], + BitBag\SyliusIngPayPlugin\BitBagSyliusIngPayPlugin::class => ['all' => true], ]; diff --git a/tests/Application/config/encryption/key b/tests/Application/config/encryption/key new file mode 100644 index 0000000..f1a96a8 --- /dev/null +++ b/tests/Application/config/encryption/key @@ -0,0 +1 @@ +31400500e4983e2ad399ac9d6c775462dcea9510cc5e884c5459d2c34aa19eb2c74a5939239e80ab7a43b850ae984d99b4ebed63f6970de3db4bcb7999d8238bf346e8f57e4495ebaeed8f712e51dc335c0599537d8d01399aa7f4d47b9f2f15f48f28c0 \ No newline at end of file diff --git a/tests/Application/config/packages/bitbag_sylius_imoje_plugin.yaml b/tests/Application/config/packages/bitbag_sylius_imoje_plugin.yaml deleted file mode 100644 index 394d4fd..0000000 --- a/tests/Application/config/packages/bitbag_sylius_imoje_plugin.yaml +++ /dev/null @@ -1,2 +0,0 @@ -imports: - - { resource: "@BitBagSyliusImojePlugin/config/config.yaml" } diff --git a/tests/Application/config/packages/bitbag_sylius_ing_pay_plugin.yaml b/tests/Application/config/packages/bitbag_sylius_ing_pay_plugin.yaml new file mode 100644 index 0000000..1540263 --- /dev/null +++ b/tests/Application/config/packages/bitbag_sylius_ing_pay_plugin.yaml @@ -0,0 +1,2 @@ +imports: + - { resource: "@BitBagSyliusIngPayPlugin/config/config.yaml" } diff --git a/tests/Application/config/reference.php b/tests/Application/config/reference.php new file mode 100644 index 0000000..182ef64 --- /dev/null +++ b/tests/Application/config/reference.php @@ -0,0 +1,3819 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-type ImportsConfig = list + * @psalm-type ParametersConfig = array|Param|null>|Param|null> + * @psalm-type ArgumentsType = list|array + * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} + * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key + * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator + * @psalm-type DeprecationType = array{package: string, version: string, message?: string} + * @psalm-type DefaultsType = array{ + * public?: bool, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * } + * @psalm-type InstanceofType = array{ + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type DefinitionType = array{ + * class?: string, + * file?: string, + * parent?: string, + * shared?: bool, + * synthetic?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * configurator?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * decorates?: string, + * decoration_inner_name?: string, + * decoration_priority?: int, + * decoration_on_invalid?: 'exception'|'ignore'|null, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * from_callable?: CallbackType, + * } + * @psalm-type AliasType = string|array{ + * alias: string, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type PrototypeType = array{ + * resource: string, + * namespace?: string, + * exclude?: string|list, + * parent?: string, + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type StackType = array{ + * stack: list>, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type ServicesConfig = array{ + * _defaults?: DefaultsType, + * _instanceof?: InstanceofType, + * ... + * } + * @psalm-type ExtensionType = array + * @psalm-type FrameworkConfig = array{ + * secret?: scalar|Param|null, + * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: null|list, + * trust_x_sendfile_type_header?: scalar|Param|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|Param|null, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool|Param, + * default_locale?: scalar|Param|null, // Default: "en" + * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: string|list, + * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] + * trusted_headers?: string|list, + * error_controller?: scalar|Param|null, // Default: "error_controller" + * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|Param|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|Param|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|Param|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration + * enabled?: bool|Param, // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|Param|null, // Default: null + * token_id?: scalar|Param|null, // Default: null + * field_name?: scalar|Param|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration + * enabled?: bool|Param, // Default: false + * debug?: bool|Param, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full"|Param, + * trace_header?: scalar|Param|null, + * default_ttl?: int|Param, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool|Param, + * allow_revalidate?: bool|Param, + * stale_while_revalidate?: int|Param, + * stale_if_error?: int|Param, + * terminate_on_cache_hit?: bool|Param, + * }, + * esi?: bool|array{ // ESI configuration + * enabled?: bool|Param, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration + * enabled?: bool|Param, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration + * enabled?: bool|Param, // Default: false + * hinclude_default_template?: scalar|Param|null, // Default: null + * path?: scalar|Param|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool|Param, // Default: false + * collect?: bool|Param, // Default: true + * collect_parameter?: scalar|Param|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool|Param, // Default: false + * only_main_requests?: bool|Param, // Default: false + * dsn?: scalar|Param|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ + * enabled?: bool|Param, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|Param|null, + * initial_marking?: \BackedEnum|string|list, + * events_to_dispatch?: null|list, + * places?: string|list, + * }>, + * transitions?: list, + * to?: \BackedEnum|string|list, + * weight?: int|Param, // Default: 1 + * metadata?: array, + * }>, + * metadata?: array, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool|Param, // Default: false + * resource?: scalar|Param|null, + * type?: scalar|Param|null, + * cache_dir?: scalar|Param|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|Param|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|Param|null, // Default: 80 + * https_port?: scalar|Param|null, // Default: 443 + * strict_requirements?: scalar|Param|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool|Param, // Default: true + * }, + * session?: bool|array{ // Session configuration + * enabled?: bool|Param, // Default: false + * storage_factory_id?: scalar|Param|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|Param|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|Param|null, + * cookie_lifetime?: scalar|Param|null, + * cookie_path?: scalar|Param|null, + * cookie_domain?: scalar|Param|null, + * cookie_secure?: true|false|"auto"|Param, // Default: "auto" + * cookie_httponly?: bool|Param, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" + * use_cookies?: bool|Param, + * gc_divisor?: scalar|Param|null, + * gc_probability?: scalar|Param|null, + * gc_maxlifetime?: scalar|Param|null, + * save_path?: scalar|Param|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int|Param, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int|Param, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration + * enabled?: bool|Param, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration + * enabled?: bool|Param, // Default: true + * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|Param|null, // Default: null + * version?: scalar|Param|null, // Default: null + * version_format?: scalar|Param|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|Param|null, // Default: null + * base_path?: scalar|Param|null, // Default: "" + * base_urls?: string|list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration + * enabled?: bool|Param, // Default: false + * paths?: string|array, + * excluded_patterns?: list, + * exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true + * server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true + * public_prefix?: scalar|Param|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" + * missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" + * extensions?: array, + * importmap_path?: scalar|Param|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|Param|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|Param|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. + * enabled?: bool|Param, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration + * enabled?: bool|Param, // Default: true + * fallbacks?: string|list, + * logging?: bool|Param, // Default: false + * formatter?: scalar|Param|null, // Default: "translator.formatter.default" + * cache_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|Param|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" + * paths?: list, + * pseudo_localization?: bool|array{ + * enabled?: bool|Param, // Default: false + * accents?: bool|Param, // Default: true + * expansion_factor?: float|Param, // Default: 1.0 + * brackets?: bool|Param, // Default: true + * parse_html?: bool|Param, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string|Param, + * }>, + * }, + * validation?: bool|array{ // Validation configuration + * enabled?: bool|Param, // Default: true + * cache?: scalar|Param|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool|Param, // Default: true + * static_method?: string|list, + * translation_domain?: scalar|Param|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5" + * mapping?: array{ + * paths?: list, + * }, + * not_compromised_password?: bool|array{ + * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|Param|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool|Param, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool|Param, // Default: true + * enable_attributes?: bool|Param, // Default: true + * name_converter?: scalar|Param|null, + * circular_reference_handler?: scalar|Param|null, + * max_depth_handler?: scalar|Param|null, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: array, + * named_serializers?: array, + * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration + * enabled?: bool|Param, // Default: true + * magic_call?: bool|Param, // Default: false + * magic_get?: bool|Param, // Default: true + * magic_set?: bool|Param, // Default: true + * throw_exception_on_invalid_index?: bool|Param, // Default: false + * throw_exception_on_invalid_property_path?: bool|Param, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration + * enabled?: bool|Param, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration + * enabled?: bool|Param, // Default: true + * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|Param|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|Param|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|Param|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|Param|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|Param|null, + * default_redis_provider?: scalar|Param|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|Param|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|Param|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|Param|null, // Default: "database_connection" + * default_pdo_provider?: scalar|Param|null, // Default: null + * pools?: array, + * tags?: scalar|Param|null, // Default: null + * public?: bool|Param, // Default: false + * default_lifetime?: scalar|Param|null, // Default lifetime of the pool. + * provider?: scalar|Param|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|Param|null, + * clearer?: scalar|Param|null, + * }>, + * }, + * php_errors?: array{ // PHP errors handling configuration + * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true + * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration + * enabled?: bool|Param, // Default: true + * }, + * lock?: bool|string|array{ // Lock configuration + * enabled?: bool|Param, // Default: false + * resources?: string|array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration + * enabled?: bool|Param, // Default: false + * resources?: string|array, + * }, + * messenger?: bool|array{ // Messenger configuration + * enabled?: bool|Param, // Default: true + * routing?: array, + * }>, + * serializer?: array{ + * default_serializer?: scalar|Param|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|Param|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|Param|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: int|string|list, + * default_bus?: scalar|Param|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration + * enabled?: bool|Param, // Default: false + * }, + * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration + * enabled?: bool|Param, // Default: true + * max_host_connections?: int|Param, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: array, + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null + * http_codes?: int|string|array, + * }>, + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|Param|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * scoped_clients?: array, + * headers?: array, + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null + * http_codes?: int|string|array, + * }>, + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration + * enabled?: bool|Param, // Default: true + * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|Param|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|Param|null, + * recipients?: string|list, + * allowed_recipients?: string|list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|Param|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|Param|null, // Default: "" + * select?: scalar|Param|null, // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|Param|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|Param|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|Param|null, // Default: null + * sign_options?: int|Param, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool|Param, // Default: false + * repository?: scalar|Param|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ + * enabled?: bool|Param, // Default: true + * vault_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|Param|null, // Default: "%kernel.project_dir%/.env.%kernel.environment%.local" + * decryption_env_var?: scalar|Param|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool|Param, // Default: false + * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * chatter_transports?: array, + * texter_transports?: array, + * notification_on_failed_messages?: bool|Param, // Default: false + * channel_policy?: array>, + * admin_recipients?: list, + * }, + * rate_limiter?: bool|array{ // Rate limiter configuration + * enabled?: bool|Param, // Default: false + * limiters?: array, + * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|Param|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|Param|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration + * enabled?: bool|Param, // Default: true + * default_uuid_version?: 7|6|4|1|Param, // Default: 7 + * name_based_uuid_version?: 5|3|Param, // Default: 5 + * name_based_uuid_namespace?: scalar|Param|null, + * time_based_uuid_version?: 7|6|1|Param, // Default: 7 + * time_based_uuid_node?: scalar|Param|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration + * enabled?: bool|Param, // Default: false + * sanitizers?: array, + * block_elements?: string|list, + * drop_elements?: string|list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: string|list, + * allowed_link_hosts?: null|string|list, + * allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: string|list, + * allowed_media_hosts?: null|string|list, + * allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: string|list, + * without_attribute_sanitizers?: string|list, + * max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0 + * }>, + * }, + * webhook?: bool|array{ // Webhook configuration + * enabled?: bool|Param, // Default: false + * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration + * enabled?: bool|Param, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration + * enabled?: bool|Param, // Default: false + * }, + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|Param|null, // Default: true + * channels?: list, + * handlers?: array, + * excluded_http_codes?: list, + * }>, + * accepted_levels?: list, + * min_level?: scalar|Param|null, // Default: "DEBUG" + * max_level?: scalar|Param|null, // Default: "EMERGENCY" + * buffer_size?: scalar|Param|null, // Default: 0 + * flush_on_overflow?: bool|Param, // Default: false + * handler?: scalar|Param|null, + * url?: scalar|Param|null, + * exchange?: scalar|Param|null, + * exchange_name?: scalar|Param|null, // Default: "log" + * room?: scalar|Param|null, + * message_format?: scalar|Param|null, // Default: "text" + * api_version?: scalar|Param|null, // Default: null + * channel?: scalar|Param|null, // Default: null + * bot_name?: scalar|Param|null, // Default: "Monolog" + * use_attachment?: scalar|Param|null, // Default: true + * use_short_attachment?: scalar|Param|null, // Default: false + * include_extra?: scalar|Param|null, // Default: false + * icon_emoji?: scalar|Param|null, // Default: null + * webhook_url?: scalar|Param|null, + * exclude_fields?: list, + * team?: scalar|Param|null, + * notify?: scalar|Param|null, // Default: false + * nickname?: scalar|Param|null, // Default: "Monolog" + * token?: scalar|Param|null, + * region?: scalar|Param|null, + * source?: scalar|Param|null, + * use_ssl?: bool|Param, // Default: true + * user?: mixed, + * title?: scalar|Param|null, // Default: null + * host?: scalar|Param|null, // Default: null + * port?: scalar|Param|null, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|Param|null, + * timeout?: scalar|Param|null, + * time?: scalar|Param|null, // Default: 60 + * deduplication_level?: scalar|Param|null, // Default: 400 + * store?: scalar|Param|null, // Default: null + * connection_timeout?: scalar|Param|null, + * persistent?: bool|Param, + * dsn?: scalar|Param|null, + * hub_id?: scalar|Param|null, // Default: null + * client_id?: scalar|Param|null, // Default: null + * auto_log_stacks?: scalar|Param|null, // Default: false + * release?: scalar|Param|null, // Default: null + * environment?: scalar|Param|null, // Default: null + * message_type?: scalar|Param|null, // Default: 0 + * parse_mode?: scalar|Param|null, // Default: null + * disable_webpage_preview?: bool|Param|null, // Default: null + * disable_notification?: bool|Param|null, // Default: null + * split_long_messages?: bool|Param, // Default: false + * delay_between_messages?: bool|Param, // Default: false + * topic?: int|Param, // Default: null + * factor?: int|Param, // Default: 1 + * tags?: string|list, + * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|Param|null, + * nested?: bool|Param, // Default: false + * publisher?: string|array{ + * id?: scalar|Param|null, + * hostname?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 12201 + * chunk_size?: scalar|Param|null, // Default: 1420 + * encoder?: "json"|"compressed_json"|Param, + * }, + * mongo?: string|array{ + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 27017 + * user?: scalar|Param|null, + * pass?: scalar|Param|null, + * database?: scalar|Param|null, // Default: "monolog" + * collection?: scalar|Param|null, // Default: "logs" + * }, + * mongodb?: string|array{ + * id?: scalar|Param|null, // ID of a MongoDB\Client service + * uri?: scalar|Param|null, + * username?: scalar|Param|null, + * password?: scalar|Param|null, + * database?: scalar|Param|null, // Default: "monolog" + * collection?: scalar|Param|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|Param|null, + * hosts?: list, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 9200 + * transport?: scalar|Param|null, // Default: "Http" + * user?: scalar|Param|null, // Default: null + * password?: scalar|Param|null, // Default: null + * }, + * index?: scalar|Param|null, // Default: "monolog" + * document_type?: scalar|Param|null, // Default: "logs" + * ignore_error?: scalar|Param|null, // Default: false + * redis?: string|array{ + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * password?: scalar|Param|null, // Default: null + * port?: scalar|Param|null, // Default: 6379 + * database?: scalar|Param|null, // Default: 0 + * key_name?: scalar|Param|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * }, + * from_email?: scalar|Param|null, + * to_email?: string|list, + * subject?: scalar|Param|null, + * content_type?: scalar|Param|null, // Default: null + * headers?: list, + * mailer?: scalar|Param|null, // Default: null + * email_prototype?: string|array{ + * id?: scalar|Param|null, + * method?: scalar|Param|null, // Default: null + * }, + * lazy?: bool|Param, // Default: true + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|Param|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|Param|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|Param|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|Param|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type SecurityConfig = array{ + * access_denied_url?: scalar|Param|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" + * hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" + * erase_credentials?: bool|Param, // Default: true + * access_decision_manager?: array{ + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, + * service?: scalar|Param|null, + * strategy_service?: scalar|Param|null, + * allow_if_all_abstain?: bool|Param, // Default: false + * allow_if_equal_granted_denied?: bool|Param, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|Param|null, // Default: 40 + * ignore_case?: bool|Param, // Default: false + * encode_as_base64?: bool|Param, // Default: true + * iterations?: scalar|Param|null, // Default: 5000 + * cost?: int|Param, // Default: null + * memory_cost?: scalar|Param|null, // Default: null + * time_cost?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * }>, + * providers?: array, + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service?: scalar|Param|null, + * base_dn?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: null + * search_password?: scalar|Param|null, // Default: null + * extra_fields?: list, + * default_roles?: string|list, + * role_fetcher?: scalar|Param|null, // Default: null + * uid_key?: scalar|Param|null, // Default: "sAMAccountName" + * filter?: scalar|Param|null, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|Param|null, // Default: null + * }, + * entity?: array{ + * class?: scalar|Param|null, // The full entity class name of your user class. + * property?: scalar|Param|null, // Default: null + * manager_name?: scalar|Param|null, // Default: null + * }, + * lexik_jwt?: array{ + * class?: scalar|Param|null, // Default: "Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\User\\JWTUser" + * }, + * }>, + * firewalls?: array, + * security?: bool|Param, // Default: true + * user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|Param|null, + * access_denied_url?: scalar|Param|null, + * access_denied_handler?: scalar|Param|null, + * entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|Param|null, + * stateless?: bool|Param, // Default: false + * lazy?: bool|Param, // Default: false + * context?: scalar|Param|null, + * logout?: array{ + * enable_csrf?: bool|Param|null, // Default: null + * csrf_token_id?: scalar|Param|null, // Default: "logout" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|Param|null, + * path?: scalar|Param|null, // Default: "/logout" + * target?: scalar|Param|null, // Default: "/" + * invalidate_session?: bool|Param, // Default: true + * clear_site_data?: string|list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, + * delete_cookies?: string|array, + * }, + * switch_user?: array{ + * provider?: scalar|Param|null, + * parameter?: scalar|Param|null, // Default: "_switch_user" + * role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|Param|null, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int|Param, // Default: 5 + * interval?: scalar|Param|null, // Default: "1 minute" + * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * x509?: array{ + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|Param|null, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "REMOTE_USER" + * }, + * jwt?: array{ + * provider?: scalar|Param|null, // Default: null + * authenticator?: scalar|Param|null, // Default: "lexik_jwt_authentication.security.jwt_authenticator" + * }, + * login_link?: array{ + * check_route?: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties?: list, + * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|Param|null, // The user provider to load users from. + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * login_path?: scalar|Param|null, // Default: "/login" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: null + * token_extractors?: string|list, + * token_handler?: string|array{ + * id?: scalar|Param|null, + * oidc_user_info?: string|array{ + * base_uri?: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server. + * }, + * oidc?: array{ + * discovery?: array{ // Enable the OIDC discovery. + * base_uri?: string|list, + * cache?: array{ + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience?: scalar|Param|null, // Audience set in the token, for validation purpose. + * issuers?: list, + * algorithm?: array, + * algorithms?: list, + * key?: scalar|Param|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * encryption?: bool|array{ + * enabled?: bool|Param, // Default: false + * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false + * algorithms?: list, + * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url?: scalar|Param|null, // CAS server validation URL + * prefix?: scalar|Param|null, // CAS prefix // Default: "cas" + * http_client?: scalar|Param|null, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|Param|null, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * service?: scalar|Param|null, + * user_providers?: string|list, + * catch_exceptions?: bool|Param, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool|Param, // Default: false + * connection?: scalar|Param|null, // Default: null + * }, + * }, + * token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|Param|null, // Default: "REMEMBERME" + * lifetime?: int|Param, // Default: 31536000 + * path?: scalar|Param|null, // Default: "/" + * domain?: scalar|Param|null, // Default: null + * secure?: true|false|"auto"|Param, // Default: false + * httponly?: bool|Param, // Default: true + * samesite?: null|"lax"|"strict"|"none"|Param, // Default: null + * always_remember_me?: bool|Param, // Default: false + * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|Param|null, // Default: null + * methods?: string|list, + * allow_if?: scalar|Param|null, // Default: null + * roles?: string|list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|Param|null, // Default: null + * autoescape_service_method?: scalar|Param|null, // Default: null + * base_template_class?: scalar|Param|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|Param|null, // Default: true + * charset?: scalar|Param|null, // Default: "%kernel.charset%" + * debug?: bool|Param, // Default: "%kernel.debug%" + * strict_variables?: bool|Param, // Default: "%kernel.debug%" + * auto_reload?: scalar|Param|null, + * optimizations?: int|Param, + * default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: string|list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. + * format?: scalar|Param|null, // Default: "F j, Y H:i" + * interval_format?: scalar|Param|null, // Default: "%d days" + * timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int|Param, // Default: 0 + * decimal_point?: scalar|Param|null, // Default: "." + * thousands_separator?: scalar|Param|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|Param|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.legacy_schema_manager_factory" + * result_cache?: scalar|Param|null, + * slaves?: array, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|Param|null, + * auto_generate_proxy_classes?: scalar|Param|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|Param|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|Param|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * controller_resolver?: bool|array{ + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|Param|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|Param|null, + * class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|Param|null, // Default: false + * naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|Param|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|Param|null, + * repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ + * type?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * pool?: scalar|Param|null, + * }, + * region_lock_lifetime?: scalar|Param|null, // Default: 60 + * log_enabled?: bool|Param, // Default: true + * region_lifetime?: scalar|Param|null, // Default: 3600 + * enabled?: bool|Param, // Default: true + * factory?: scalar|Param|null, + * regions?: array, + * loggers?: array, + * }, + * hydrators?: array, + * mappings?: array, + * dql?: array{ + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, + * }, + * filters?: array, + * }>, + * identity_generation_preferences?: array, + * }>, + * resolve_target_entities?: array, + * }, + * } + * @psalm-type SyliusStateMachineAbstractionConfig = array{ + * default_adapter?: scalar|Param|null, // Default: "symfony_workflow" + * graphs_to_adapters_mapping?: array, + * } + * @psalm-type SyliusOrderConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * order?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\Order" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\OrderBundle\\Form\\Type\\OrderType" + * }, + * }, + * order_item?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItem" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\OrderBundle\\Form\\Type\\OrderItemType" + * }, + * }, + * order_item_unit?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemUnit" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemUnitInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Factory\\OrderItemUnitFactory" + * }, + * }, + * adjustment?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\Adjustment" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\AdjustmentInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * order_sequence?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderSequence" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderSequenceInterface" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * }, + * expiration?: array{ + * cart?: scalar|Param|null, // Default: "2 days" + * order?: scalar|Param|null, // Default: "5 days" + * }, + * } + * @psalm-type SyliusMoneyConfig = array{ + * locale?: scalar|Param|null, // Default: "en" + * currency?: scalar|Param|null, // Default: "USD" + * } + * @psalm-type SyliusCurrencyConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * currency?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\Currency" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\CurrencyInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Doctrine\\ORM\\CurrencyRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Form\\Type\\CurrencyType" + * }, + * }, + * exchange_rate?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\ExchangeRate" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\ExchangeRateInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Doctrine\\ORM\\ExchangeRateRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Form\\Type\\ExchangeRateType" + * }, + * }, + * }, + * } + * @psalm-type SyliusLocaleConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * locale?: scalar|Param|null, // Default: "en" + * resources?: array{ + * locale?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Locale\\Model\\Locale" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Locale\\Model\\LocaleInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\LocaleBundle\\Form\\Type\\LocaleType" + * }, + * }, + * }, + * } + * @psalm-type SyliusProductConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * product?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\Product" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductTranslationRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductTranslationType" + * }, + * }, + * }, + * product_variant?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariant" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductVariantRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductVariantType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductVariantTranslationRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductVariantTranslationType" + * }, + * }, + * }, + * product_option?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOption" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionTranslationRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionTranslationType" + * }, + * }, + * }, + * product_option_value?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValue" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionValueRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionValueType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionValueTranslationRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionValueTranslationType" + * }, + * }, + * }, + * product_association?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationRepository" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationType" + * }, + * }, + * product_association_type?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationType" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationTypeRepository" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationTypeType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationTypeTranslationRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationTypeTranslationType" + * }, + * }, + * }, + * }, + * } + * @psalm-type SyliusChannelConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * debug?: bool|Param|null, // Default: null + * resources?: array{ + * channel?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Channel\\Model\\Channel" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Channel\\Model\\ChannelInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ChannelBundle\\Form\\Type\\ChannelType" + * }, + * }, + * }, + * } + * @psalm-type SyliusAttributeConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array, + * } + * @psalm-type SyliusTaxationConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * tax_category?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxCategory" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxCategoryInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxationBundle\\Form\\Type\\TaxCategoryType" + * }, + * }, + * tax_rate?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxRate" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxRateInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxationBundle\\Form\\Type\\TaxRateType" + * }, + * }, + * }, + * } + * @psalm-type SyliusShippingConfig = array{ + * shipping_method_rule?: array{ + * validation_groups?: array, + * }, + * shipping_method_calculator?: array{ + * validation_groups?: array, + * }, + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * shipment?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\Shipment" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShipmentType" + * }, + * }, + * shipment_unit?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentUnit" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentUnitInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * shipping_method?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethod" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodTranslationType" + * }, + * }, + * }, + * shipping_method_rule?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodRule" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodRuleInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodRuleType" + * }, + * }, + * shipping_category?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingCategory" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingCategoryInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingCategoryType" + * }, + * }, + * }, + * } + * @psalm-type SyliusPaymentConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * encryption?: array{ + * enabled?: bool|Param, // Default: true + * disabled_for_factories?: list, + * }, + * gateways?: array, + * gateway_config?: array{ + * validation_groups?: array, + * }, + * payment_request?: array{ + * states_to_be_cancelled_when_payment_method_changed?: list, + * }, + * resources?: array{ + * gateway_config?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\GatewayConfig" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\GatewayConfigInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\GatewayConfigType" + * }, + * }, + * payment_method?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethod" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Doctrine\\ORM\\PaymentMethodRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentMethodType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentMethodTranslationType" + * }, + * }, + * }, + * payment?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\Payment" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentType" + * }, + * }, + * payment_request?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentRequest" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentRequestInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Doctrine\\ORM\\PaymentRequestRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Factory\\PaymentRequestFactory" + * form?: scalar|Param|null, // Default: null + * }, + * }, + * }, + * } + * @psalm-type SyliusMailerConfig = array{ + * sender_adapter?: scalar|Param|null, + * renderer_adapter?: scalar|Param|null, + * sender?: array{ + * name?: scalar|Param|null, // Default: "Example.com Store" + * address?: scalar|Param|null, // Default: "no-reply@example.com" + * }, + * emails?: array, + * templates?: array, + * } + * @psalm-type SyliusPromotionConfig = array{ + * promotion_action?: array{ + * validation_groups?: array, + * }, + * promotion_rule?: array{ + * validation_groups?: array, + * }, + * catalog_promotion_action?: array{ + * validation_groups?: array, + * }, + * catalog_promotion_scope?: array{ + * validation_groups?: array, + * }, + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * promotion_subject?: array{ + * classes?: array{ + * model?: scalar|Param|null, + * }, + * }, + * promotion?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\Promotion" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionTranslationType" + * }, + * }, + * }, + * catalog_promotion?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotion" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\CatalogPromotionType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\CatalogPromotionTranslationType" + * }, + * }, + * }, + * catalog_promotion_scope?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionScope" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionScopeInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" + * }, + * }, + * catalog_promotion_action?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionAction" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionActionInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" + * }, + * }, + * promotion_rule?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionRule" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionRuleInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionRuleType" + * }, + * }, + * promotion_action?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionAction" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionActionInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionActionType" + * }, + * }, + * promotion_coupon?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionCoupon" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionCouponInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Controller\\PromotionCouponController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionCouponType" + * }, + * }, + * }, + * } + * @psalm-type SyliusAddressingConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * provider?: scalar|Param|null, // Default: "sylius.province_name_provider" + * zone_member?: array{ + * validation_groups?: array, + * }, + * resources?: array{ + * address?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Address" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\AddressInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\AddressRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\AddressType" + * }, + * }, + * address_log_entry?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\AddressLogEntry" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * country?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Country" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\CountryInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\CountryRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\CountryType" + * }, + * }, + * province?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Province" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ProvinceInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\ProvinceRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ProvinceType" + * }, + * }, + * zone?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Zone" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Repository\\ZoneRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ZoneType" + * }, + * }, + * zone_member?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneMember" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneMemberInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\ZoneMemberRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ZoneMemberType" + * }, + * }, + * }, + * scopes?: array, + * } + * @psalm-type SyliusInventoryConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * inventory_unit?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Inventory\\Model\\InventoryUnit" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Inventory\\Model\\InventoryUnitInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * }, + * } + * @psalm-type SyliusTaxonomyConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * taxon?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\Taxon" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxonomyBundle\\Form\\Type\\TaxonType" + * }, + * translation?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonTranslation" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonTranslationInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxonomyBundle\\Form\\Type\\TaxonTranslationType" + * }, + * }, + * }, + * }, + * } + * @psalm-type SyliusUserConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array, + * } + * @psalm-type SyliusCustomerConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array{ + * customer?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\Customer" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Form\\Type\\CustomerType" + * }, + * }, + * customer_group?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerGroup" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerGroupInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Doctrine\\ORM\\CustomerGroupRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Form\\Type\\CustomerGroupType" + * }, + * }, + * }, + * } + * @psalm-type SyliusUiConfig = array{ + * twig_ux?: array{ + * live_component_tags?: array, + * anonymous_component_template_prefixes?: array, + * component_default_template?: scalar|Param|null, // Default: "@SyliusUi/components/default.html.twig" + * }, + * } + * @psalm-type SyliusReviewConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * resources?: array, + * } + * @psalm-type SyliusCoreConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * prepend_doctrine_migrations?: bool|Param, // Default: true + * shipping_address_based_taxation?: bool|Param, // Default: false + * order_by_identifier?: bool|Param, // Default: true + * process_shipments_before_recalculating_prices?: bool|Param, // Deprecated: The "sylius_core.process_shipments_before_recalculating_prices.process_shipments_before_recalculating_prices" parameter is deprecated and will be removed in 2.0. // Default: false + * order_token_length?: int|Param, // Default: 64 + * max_int_value?: int|Param, // Default: 2147483647 + * orders_statistics?: array{ + * intervals_map?: array, + * }, + * catalog_promotions?: array{ + * batch_size?: int|Param, // Default: 100 + * }, + * price_history?: array{ + * batch_size?: int|Param, // Default: 100 + * }, + * filesystem?: array{ + * adapter?: scalar|Param|null, // Default: "default" + * }, + * allowed_images_mime_types?: list, + * checkout?: array{ + * payment?: array{ + * allowed_states?: list, + * }, + * }, + * telemetry?: array{ + * enabled?: bool|Param, // Default: true + * business?: bool|Param, // Default: true + * technical?: bool|Param, // Default: true + * plugins?: bool|Param, // Default: true + * salt?: scalar|Param|null, // Default: null + * url?: scalar|Param|null, // Default: "https://prism.sylius.com/telemetry" + * query_timeout?: int|Param, // Default: 60000 + * }, + * resources?: array{ + * product_image?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductImage" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductImageInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * avatar_image?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\AvatarImage" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\AvatarImageInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * taxon_image?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\TaxonImage" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\TaxonImageInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * product_taxon?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductTaxon" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductTaxonInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Controller\\ProductTaxonController" + * repository?: scalar|Param|null, + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * channel_pricing?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricing" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * repository?: scalar|Param|null, + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Form\\Type\\Product\\ChannelPricingType" + * }, + * }, + * channel_pricing_log_entry?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingLogEntry" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingLogEntryInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Doctrine\\ORM\\ChannelPricingLogEntryRepository" + * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Factory\\ChannelPricingLogEntryFactory" + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" + * }, + * }, + * shop_billing_data?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ShopBillingData" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ShopBillingDataInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * repository?: scalar|Param|null, + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Form\\Type\\ShopBillingDataType" + * }, + * }, + * channel_price_history_config?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPriceHistoryConfig" + * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPriceHistoryConfigInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * repository?: scalar|Param|null, + * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" + * }, + * }, + * }, + * } + * @psalm-type SyliusResourceConfig = array{ + * resources?: array, + * settings?: array{ + * paginate?: mixed, // Default: null + * limit?: mixed, // Default: null + * allowed_paginate?: list, + * default_page_size?: int|Param, // Default: 10 + * default_templates_dir?: scalar|Param|null, // Default: null + * sortable?: bool|Param, // Default: false + * sorting?: mixed, // Default: null + * filterable?: bool|Param, // Default: false + * criteria?: mixed, // Default: null + * state_machine_component?: scalar|Param|null, // Default: null + * }, + * translation?: bool|array{ + * enabled?: bool|Param, // Default: true + * locale_provider?: scalar|Param|null, // Default: "sylius.translation_locale_provider.immutable" + * }, + * drivers?: list<"doctrine/orm"|"doctrine/mongodb-odm"|"doctrine/phpcr-odm"|Param>, + * mapping?: array{ + * imports?: list, + * paths?: list, + * }, + * authorization_checker?: scalar|Param|null, // Default: "sylius.resource_controller.authorization_checker.disabled" + * routing_path_bc_layer?: bool|Param, + * path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "sylius.metadata.path_segment_name_generator.dash" + * } + * @psalm-type SyliusGridConfig = array{ + * drivers?: list<"doctrine/orm"|"doctrine/phpcr-odm"|Param>, + * templates?: array{ + * filter?: array, + * action?: array, + * bulk_action?: array, + * }, + * grids?: array, + * }, + * sorting?: array, + * limits?: list, + * fields?: array, + * }>, + * filters?: array, + * form_options?: list, + * default_value?: mixed, + * }>, + * actions?: array, + * }>>, + * removals?: array, + * }>, + * } + * @psalm-type KnpGaufretteConfig = array{ + * adapters?: array, + * }, + * service?: array{ + * id?: scalar|Param|null, + * }, + * local?: array{ + * directory?: scalar|Param|null, + * create?: bool|Param, // Default: true + * }, + * safe_local?: array{ + * directory?: scalar|Param|null, + * create?: bool|Param, // Default: true + * }, + * async_aws_s3?: array{ + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: false + * options?: array{ + * directory?: scalar|Param|null, // Default: "" + * create?: bool|Param, // Default: false + * acl?: scalar|Param|null, // Default: "private" + * }, + * }, + * aws_s3?: array{ + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: false + * options?: array{ + * directory?: scalar|Param|null, // Default: "" + * create?: bool|Param, // Default: false + * acl?: scalar|Param|null, // Default: "private" + * }, + * }, + * doctrine_dbal?: array{ + * connection_name?: scalar|Param|null, + * table?: scalar|Param|null, + * columns?: array{ + * key?: scalar|Param|null, + * content?: scalar|Param|null, + * mtime?: scalar|Param|null, + * checksum?: scalar|Param|null, + * }, + * }, + * azure_blob_storage?: array{ + * blob_proxy_factory_id?: scalar|Param|null, + * container_name?: scalar|Param|null, + * create_container?: bool|Param, // Default: false + * detect_content_type?: bool|Param, // Default: true + * multi_container_mode?: bool|Param, // Default: false + * }, + * google_cloud_storage?: array{ + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: true + * options?: array{ + * directory?: scalar|Param|null, // Default: "" + * acl?: scalar|Param|null, // Default: "private" + * project_id?: scalar|Param|null, + * bucket_location?: scalar|Param|null, + * create?: bool|Param, // Default: false + * }, + * }, + * gridfs?: array{ + * mongogridfs_id?: scalar|Param|null, + * }, + * ftp?: array{ + * directory?: scalar|Param|null, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 21 + * username?: scalar|Param|null, // Default: null + * password?: scalar|Param|null, // Default: null + * timeout?: scalar|Param|null, // Default: 90 + * passive?: bool|Param, // Default: false + * create?: bool|Param, // Default: false + * ssl?: bool|Param, // Default: false + * utf8?: bool|Param, // Default: false + * mode?: scalar|Param|null, // Default: 1 + * }, + * phpseclib_sftp?: array{ + * phpseclib_sftp_id?: scalar|Param|null, + * directory?: scalar|Param|null, // Default: null + * create?: bool|Param, // Default: false + * }, + * }>, + * filesystems?: array, + * stream_wrapper?: array{ + * protocol?: scalar|Param|null, // Default: "gaufrette" + * filesystems?: array, + * }, + * factories?: array, + * } + * @psalm-type KnpMenuConfig = array{ + * providers?: array{ + * builder_alias?: bool|Param, // Default: true + * }, + * twig?: array{ + * template?: scalar|Param|null, // Default: "@KnpMenu/menu.html.twig" + * }, + * templating?: bool|Param, // Default: false + * default_renderer?: scalar|Param|null, // Default: "twig" + * } + * @psalm-type LiipImagineConfig = array{ + * resolvers?: array, + * get_options?: array, + * put_options?: array, + * proxies?: array, + * }, + * flysystem?: array{ + * filesystem_service?: scalar|Param|null, + * cache_prefix?: scalar|Param|null, // Default: "" + * root_url?: scalar|Param|null, + * visibility?: "public"|"private"|"noPredefinedVisibility"|Param, // Default: "public" + * }, + * }>, + * loaders?: array, + * allow_unresolvable_data_roots?: bool|Param, // Default: false + * bundle_resources?: array{ + * enabled?: bool|Param, // Default: false + * access_control_type?: "blacklist"|"whitelist"|Param, // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" + * access_control_list?: list, + * }, + * }, + * flysystem?: array{ + * filesystem_service?: scalar|Param|null, + * }, + * asset_mapper?: array, + * chain?: array{ + * loaders?: list, + * }, + * }>, + * driver?: scalar|Param|null, // Default: "gd" + * cache?: scalar|Param|null, // Default: "default" + * cache_base_path?: scalar|Param|null, // Default: "" + * data_loader?: scalar|Param|null, // Default: "default" + * default_image?: scalar|Param|null, // Default: null + * default_filter_set_settings?: array{ + * quality?: scalar|Param|null, // Default: 100 + * jpeg_quality?: scalar|Param|null, // Default: null + * png_compression_level?: scalar|Param|null, // Default: null + * png_compression_filter?: scalar|Param|null, // Default: null + * format?: scalar|Param|null, // Default: null + * animated?: bool|Param, // Default: false + * cache?: scalar|Param|null, // Default: null + * data_loader?: scalar|Param|null, // Default: null + * default_image?: scalar|Param|null, // Default: null + * filters?: array>, + * post_processors?: array>, + * }, + * controller?: array{ + * filter_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" + * filter_runtime_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" + * redirect_response_code?: int|Param, // Default: 302 + * }, + * filter_sets?: array>, + * post_processors?: array>, + * }>, + * twig?: array{ + * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" + * assets_version?: scalar|Param|null, // Default: null + * }, + * enqueue?: bool|Param, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false + * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. + * enabled?: bool|Param, // Default: false + * }, + * templating?: bool|Param, // Enables integration with symfony/templating component // Default: true + * webp?: array{ + * generate?: bool|Param, // Default: false + * quality?: int|Param, // Default: 100 + * cache?: scalar|Param|null, // Default: null + * data_loader?: scalar|Param|null, // Default: null + * post_processors?: array>, + * }, + * } + * @psalm-type PayumConfig = array{ + * security?: array{ + * token_storage?: array, + * propel2?: array, + * }>, + * }, + * dynamic_gateways?: array{ + * sonata_admin?: bool|Param, // Default: false + * config_storage?: array, + * propel2?: array, + * }>, + * encryption?: array{ + * defuse_secret_key?: scalar|Param|null, + * }, + * }, + * gateways?: array, + * storages?: array, + * factories?: array, + * }, + * filesystem?: array{ + * storage_dir?: scalar|Param|null, + * id_property?: scalar|Param|null, // Default: null + * }, + * doctrine?: string|array{ + * driver?: scalar|Param|null, + * }, + * custom?: string|array{ + * service?: scalar|Param|null, + * }, + * propel1?: array, + * propel2?: array, + * }>, + * } + * @psalm-type StofDoctrineExtensionsConfig = array{ + * orm?: array, + * mongodb?: array, + * class?: array{ + * translatable?: scalar|Param|null, // Default: "Gedmo\\Translatable\\TranslatableListener" + * timestampable?: scalar|Param|null, // Default: "Gedmo\\Timestampable\\TimestampableListener" + * blameable?: scalar|Param|null, // Default: "Gedmo\\Blameable\\BlameableListener" + * sluggable?: scalar|Param|null, // Default: "Gedmo\\Sluggable\\SluggableListener" + * tree?: scalar|Param|null, // Default: "Gedmo\\Tree\\TreeListener" + * loggable?: scalar|Param|null, // Default: "Gedmo\\Loggable\\LoggableListener" + * sortable?: scalar|Param|null, // Default: "Gedmo\\Sortable\\SortableListener" + * softdeleteable?: scalar|Param|null, // Default: "Gedmo\\SoftDeleteable\\SoftDeleteableListener" + * uploadable?: scalar|Param|null, // Default: "Gedmo\\Uploadable\\UploadableListener" + * reference_integrity?: scalar|Param|null, // Default: "Gedmo\\ReferenceIntegrity\\ReferenceIntegrityListener" + * }, + * softdeleteable?: array{ + * handle_post_flush_event?: bool|Param, // Default: false + * }, + * uploadable?: array{ + * default_file_path?: scalar|Param|null, // Default: null + * mime_type_guesser_class?: scalar|Param|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\MimeTypeGuesserAdapter" + * default_file_info_class?: scalar|Param|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\UploadedFileInfo" + * validate_writable_directory?: bool|Param, // Default: true + * }, + * default_locale?: scalar|Param|null, // Default: "en" + * translation_fallback?: bool|Param, // Default: false + * persist_default_translation?: bool|Param, // Default: false + * skip_translation_on_load?: bool|Param, // Default: false + * metadata_cache_pool?: scalar|Param|null, // Default: null + * } + * @psalm-type BabdevPagerfantaConfig = array{ + * default_view?: scalar|Param|null, // Default: "default" + * default_twig_template?: scalar|Param|null, // Default: "@BabDevPagerfanta/default.html.twig" + * exceptions_strategy?: array{ + * out_of_range_page?: "to_http_not_found"|"custom"|Param, // Default: "to_http_not_found" + * not_valid_current_page?: "to_http_not_found"|"custom"|Param, // Default: "to_http_not_found" + * }, + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false + * migrations_paths?: array, + * services?: array, + * factories?: array, + * storage?: array{ // Storage to use for migration status metadata. + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. + * table_name?: scalar|Param|null, // Default: null + * version_column_name?: scalar|Param|null, // Default: null + * version_column_length?: scalar|Param|null, // Default: null + * executed_at_column_name?: scalar|Param|null, // Default: null + * execution_time_column_name?: scalar|Param|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type SyliusFixturesConfig = array{ + * suites?: array, + * }>, + * listeners?: array, + * }>, + * }>, + * } + * @psalm-type SyliusPayumConfig = array{ + * driver?: scalar|Param|null, // Default: "doctrine/orm" + * template?: array{ + * layout?: scalar|Param|null, // Default: "@SyliusPayum/layout.html.twig" + * obtain_credit_card?: scalar|Param|null, // Default: "@SyliusPayum/Action/obtainCreditCard.html.twig" + * }, + * resources?: array{ + * payment_security_token?: array{ + * classes?: array{ + * model?: scalar|Param|null, // Default: "Sylius\\Bundle\\PayumBundle\\Model\\PaymentSecurityToken" + * interface?: scalar|Param|null, // Default: "Sylius\\Bundle\\PayumBundle\\Model\\PaymentSecurityTokenInterface" + * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" + * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" + * }, + * }, + * }, + * } + * @psalm-type SyliusThemeConfig = array{ + * sources?: array{ + * filesystem?: bool|array{ + * enabled?: bool|Param, // Default: false + * filename?: scalar|Param|null, // Default: "composer.json" + * scan_depth?: scalar|Param|null, // Restrict depth to scan for configuration file inside theme folder // Default: 1 + * directories?: list, + * }, + * test?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * }, + * assets?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * templating?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * translations?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * context?: scalar|Param|null, // Default: "sylius.theme.context.settable" + * legacy_mode?: bool|Param, // Deprecated: "legacy_mode" at path "sylius_theme.legacy_mode" is deprecated since Sylius/ThemeBundle 2.0 and will be removed in 3.0. // Default: false + * } + * @psalm-type SyliusAdminConfig = array{ + * notifications?: array{ + * enabled?: bool|Param, // Default: true + * hub_enabled?: bool|Param, // Default: true + * frequency?: int|Param, // Default: 1440 + * }, + * twig?: array{ + * payment_method?: array{ + * excluded_gateways?: list, + * }, + * }, + * } + * @psalm-type SyliusShopConfig = array{ + * locale_switcher?: "storage"|"url"|Param, // Default: "url" + * firewall_context_name?: scalar|Param|null, // Default: "shop" + * checkout_resolver?: array{ + * enabled?: bool|Param, // Default: true + * pattern?: scalar|Param|null, // Default: "/checkout/.+" + * route_map?: array, + * }, + * product_grid?: array{ + * include_all_descendants?: bool|Param, // Default: false + * }, + * order_pay?: array{ + * payment_request_pay_route?: scalar|Param|null, // Default: "sylius_shop_payment_request_pay" + * payment_request_pay_route_parameters?: array{ + * hash?: scalar|Param|null, // Default: "paymentRequest.getHash()" + * }, + * after_pay_route?: scalar|Param|null, // Default: "sylius_shop_order_after_pay" + * after_pay_route_parameters?: array{ + * hash?: scalar|Param|null, // Default: "paymentRequest.getHash()" + * }, + * final_route?: scalar|Param|null, // Default: "sylius_shop_order_thank_you" + * final_route_parameters?: array, + * retry_route?: scalar|Param|null, // Default: "sylius_shop_order_show" + * retry_route_parameters?: array{ + * tokenValue?: scalar|Param|null, // Default: "order.getTokenValue()" + * }, + * }, + * } + * @psalm-type DebugConfig = array{ + * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|Param|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration + * enabled?: bool|Param, // Default: false + * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool|Param, // Default: false + * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type ApiPlatformConfig = array{ + * title?: scalar|Param|null, // The title of the API. // Default: "" + * description?: scalar|Param|null, // The description of the API. // Default: "" + * version?: scalar|Param|null, // The version of the API. // Default: "0.0.0" + * show_webby?: bool|Param, // If true, show Webby on the documentation page // Default: true + * use_symfony_listeners?: bool|Param, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false + * name_converter?: scalar|Param|null, // Specify a name converter to use. // Default: null + * asset_package?: scalar|Param|null, // Specify an asset package name to use. // Default: null + * path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" + * inflector?: scalar|Param|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" + * validator?: array{ + * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] + * query_parameter_validation?: bool|Param, // Deprecated: Will be removed in API Platform 5.0. // Default: true + * }, + * jsonapi?: array{ + * use_iri_as_id?: bool|Param, // Set to false to use entity identifiers instead of IRIs as the "id" field in JSON:API responses. // Default: true + * allow_client_generated_id?: bool|Param, // Allow client-generated IDs on JSON:API POST per https://jsonapi.org/format/#crud-creating-client-ids. Off by default to prevent id spoofing on public endpoints. // Default: false + * }, + * eager_loading?: bool|array{ + * enabled?: bool|Param, // Default: true + * fetch_partial?: bool|Param, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false + * max_joins?: int|Param, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 + * force_eager?: bool|Param, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true + * }, + * handle_symfony_errors?: bool|Param, // Allows to handle symfony exceptions. // Default: false + * enable_swagger?: bool|Param, // Enable the Swagger documentation and export. // Default: true + * enable_json_streamer?: bool|Param, // Enable json streamer. // Default: false + * enable_swagger_ui?: bool|Param, // Enable Swagger UI // Default: true + * enable_re_doc?: bool|Param, // Enable ReDoc // Default: true + * enable_scalar?: bool|Param, // Enable Scalar API Reference // Default: true + * enable_entrypoint?: bool|Param, // Enable the entrypoint // Default: true + * enable_docs?: bool|Param, // Enable the docs // Default: true + * enable_profiler?: bool|Param, // Enable the data collector and the WebProfilerBundle integration. // Default: true + * enable_phpdoc_parser?: bool|Param, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true + * enable_link_security?: bool|Param, // Deprecated: This option is always enabled and will be removed in API Platform 5.0. // Enable security for Links (sub resources). // Default: true + * collection?: array{ + * exists_parameter_name?: scalar|Param|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" + * order?: scalar|Param|null, // The default order of results. // Default: "ASC" + * order_parameter_name?: scalar|Param|null, // The name of the query parameter to order results. // Default: "order" + * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|Param|null, // The nulls comparison strategy. // Default: null + * pagination?: bool|array{ + * enabled?: bool|Param, // Default: true + * page_parameter_name?: scalar|Param|null, // The default name of the parameter handling the page number. // Default: "page" + * enabled_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" + * items_per_page_parameter_name?: scalar|Param|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" + * partial_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" + * }, + * }, + * mapping?: array{ + * imports?: list, + * paths?: list, + * }, + * resource_class_directories?: list, + * serializer?: array{ + * hydra_prefix?: bool|Param, // Use the "hydra:" prefix. // Default: false + * }, + * doctrine?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * doctrine_mongodb_odm?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * oauth?: bool|array{ + * enabled?: bool|Param, // Default: false + * clientId?: scalar|Param|null, // The oauth client id. // Default: "" + * clientSecret?: scalar|Param|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" + * pkce?: bool|Param, // Enable the oauth PKCE. // Default: false + * type?: scalar|Param|null, // The oauth type. // Default: "oauth2" + * flow?: scalar|Param|null, // The oauth flow grant type. // Default: "application" + * tokenUrl?: scalar|Param|null, // The oauth token url. // Default: "" + * authorizationUrl?: scalar|Param|null, // The oauth authentication url. // Default: "" + * refreshUrl?: scalar|Param|null, // The oauth refresh url. // Default: "" + * scopes?: list, + * }, + * graphql?: bool|array{ + * enabled?: bool|Param, // Default: false + * default_ide?: scalar|Param|null, // Default: "graphiql" + * graphiql?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * introspection?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * max_query_depth?: int|Param, // Default: 20 + * graphql_playground?: bool|array{ // Deprecated: The "graphql_playground" configuration is deprecated and will be ignored. + * enabled?: bool|Param, // Default: false + * }, + * max_query_complexity?: int|Param, // Default: 500 + * nesting_separator?: scalar|Param|null, // The separator to use to filter nested fields. // Default: "_" + * collection?: array{ + * pagination?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * }, + * }, + * swagger?: array{ + * persist_authorization?: bool|Param, // Persist the SwaggerUI Authorization in the localStorage. // Default: false + * versions?: list, + * api_keys?: array, + * http_auth?: array, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * }, + * http_cache?: array{ + * public?: bool|Param|null, // To make all responses public by default. // Default: null + * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. + * enabled?: bool|Param, // Default: false + * varnish_urls?: list, + * urls?: list, + * scoped_clients?: list, + * max_header_length?: int|Param, // Max header length supported by the cache server. // Default: 7500 + * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] + * purger?: scalar|Param|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" + * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate parameters. + * glue?: scalar|Param|null, // xkey glue between keys // Default: " " + * }, + * }, + * }, + * mercure?: bool|array{ + * enabled?: bool|Param, // Default: false + * hub_url?: scalar|Param|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null + * include_type?: bool|Param, // Always include @type in updates (including delete ones). // Default: false + * }, + * messenger?: bool|array{ + * enabled?: bool|Param, // Default: true + * }, + * elasticsearch?: bool|array{ + * enabled?: bool|Param, // Default: false + * hosts?: list, + * ssl_ca_bundle?: scalar|Param|null, // Path to the SSL CA bundle file for Elasticsearch SSL verification. // Default: null + * ssl_verification?: bool|Param, // Enable or disable SSL verification for Elasticsearch connections. // Default: true + * client?: "elasticsearch"|"opensearch"|Param, // The search engine client to use: "elasticsearch" or "opensearch". // Default: "elasticsearch" + * }, + * openapi?: array{ + * contact?: array{ + * name?: scalar|Param|null, // The identifying name of the contact person/organization. // Default: null + * url?: scalar|Param|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null + * email?: scalar|Param|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null + * }, + * termsOfService?: scalar|Param|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null + * tags?: list, + * license?: array{ + * name?: scalar|Param|null, // The license name used for the API. // Default: null + * url?: scalar|Param|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null + * identifier?: scalar|Param|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null + * }, + * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] + * scalar_extra_configuration?: mixed, // To pass extra configuration to Scalar API Reference, like theme or darkMode. // Default: [] + * overrideResponses?: bool|Param, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true + * error_resource_class?: scalar|Param|null, // The class used to represent errors in the OpenAPI documentation. // Default: null + * validation_error_resource_class?: scalar|Param|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null + * }, + * maker?: bool|array{ + * enabled?: bool|Param, // Default: false + * namespace_prefix?: scalar|Param|null, // Add a prefix to all maker generated classes. e.g set it to "Api" to set the maker namespace to "App\Api\" (if the maker.root_namespace config is App). e.g. App\Api\State\MyStateProcessor // Default: "" + * }, + * mcp?: bool|array{ + * enabled?: bool|Param, // Default: true + * format?: scalar|Param|null, // The serialization format used for MCP tool input/output. Must be a format registered in api_platform.formats (e.g. "jsonld", "json", "jsonapi"). // Default: "jsonld" + * }, + * exception_to_status?: array, + * formats?: array, + * }>, + * patch_formats?: array, + * }>, + * docs_formats?: array, + * }>, + * error_formats?: array, + * }>, + * jsonschema_formats?: list, + * defaults?: array{ + * uri_template?: mixed, + * short_name?: mixed, + * description?: mixed, + * types?: mixed, + * operations?: mixed, + * formats?: mixed, + * input_formats?: mixed, + * output_formats?: mixed, + * uri_variables?: mixed, + * route_prefix?: mixed, + * defaults?: mixed, + * requirements?: mixed, + * options?: mixed, + * stateless?: mixed, + * sunset?: mixed, + * accept_patch?: mixed, + * status?: mixed, + * host?: mixed, + * schemes?: mixed, + * condition?: mixed, + * controller?: mixed, + * class?: mixed, + * url_generation_strategy?: mixed, + * deprecation_reason?: mixed, + * headers?: mixed, + * cache_headers?: mixed, + * normalization_context?: mixed, + * denormalization_context?: mixed, + * collect_denormalization_errors?: mixed, + * hydra_context?: mixed, + * openapi?: mixed, + * validation_context?: mixed, + * filters?: mixed, + * mercure?: mixed, + * messenger?: mixed, + * input?: mixed, + * output?: mixed, + * order?: mixed, + * fetch_partial?: mixed, + * force_eager?: mixed, + * pagination_client_enabled?: mixed, + * pagination_client_items_per_page?: mixed, + * pagination_client_partial?: mixed, + * pagination_via_cursor?: mixed, + * pagination_enabled?: mixed, + * pagination_fetch_join_collection?: mixed, + * pagination_use_output_walkers?: mixed, + * pagination_items_per_page?: mixed, + * pagination_maximum_items_per_page?: mixed, + * pagination_partial?: mixed, + * pagination_type?: mixed, + * security?: mixed, + * security_message?: mixed, + * security_post_denormalize?: mixed, + * security_post_denormalize_message?: mixed, + * security_post_validation?: mixed, + * security_post_validation_message?: mixed, + * composite_identifier?: mixed, + * exception_to_status?: mixed, + * query_parameter_validation_enabled?: mixed, + * links?: mixed, + * graph_ql_operations?: mixed, + * provider?: mixed, + * processor?: mixed, + * state_options?: mixed, + * rules?: mixed, + * policy?: mixed, + * middleware?: mixed, + * parameters?: array + * }>, + * strict_query_parameter_validation?: mixed, + * hide_hydra_operation?: mixed, + * json_stream?: mixed, + * extra_properties?: mixed, + * map?: mixed, + * mcp?: mixed, + * route_name?: mixed, + * errors?: mixed, + * read?: mixed, + * deserialize?: mixed, + * validate?: mixed, + * write?: mixed, + * serialize?: mixed, + * content_negotiation?: mixed, + * priority?: mixed, + * name?: mixed, + * allow_create?: mixed, + * item_uri_template?: mixed, + * ... + * }, + * } + * @psalm-type LexikJwtAuthenticationConfig = array{ + * public_key?: scalar|Param|null, // The key used to sign tokens (useless for HMAC). If not set, the key will be automatically computed from the secret key. // Default: null + * additional_public_keys?: list, + * secret_key?: scalar|Param|null, // The key used to sign tokens. It can be a raw secret (for HMAC), a raw RSA/ECDSA key or the path to a file itself being plaintext or PEM. // Default: null + * pass_phrase?: scalar|Param|null, // The key passphrase (useless for HMAC) // Default: "" + * token_ttl?: scalar|Param|null, // Default: 3600 + * allow_no_expiration?: bool|Param, // Allow tokens without "exp" claim (i.e. indefinitely valid, no lifetime) to be considered valid. Caution: usage of this should be rare. // Default: false + * clock_skew?: scalar|Param|null, // Default: 0 + * encoder?: array{ + * service?: scalar|Param|null, // Default: "lexik_jwt_authentication.encoder.lcobucci" + * signature_algorithm?: scalar|Param|null, // Default: "RS256" + * }, + * user_id_claim?: scalar|Param|null, // Default: "username" + * token_extractors?: array{ + * authorization_header?: bool|array{ + * enabled?: bool|Param, // Default: true + * prefix?: scalar|Param|null, // Default: "Bearer" + * name?: scalar|Param|null, // Default: "Authorization" + * }, + * cookie?: bool|array{ + * enabled?: bool|Param, // Default: false + * name?: scalar|Param|null, // Default: "BEARER" + * }, + * query_parameter?: bool|array{ + * enabled?: bool|Param, // Default: false + * name?: scalar|Param|null, // Default: "bearer" + * }, + * split_cookie?: bool|array{ + * enabled?: bool|Param, // Default: false + * cookies?: list, + * }, + * }, + * remove_token_from_body_when_cookies_used?: scalar|Param|null, // Default: true + * set_cookies?: array, + * }>, + * api_platform?: bool|array{ // API Platform compatibility: add check_path in OpenAPI documentation. + * enabled?: bool|Param, // Default: false + * check_path?: scalar|Param|null, // The login check path to add in OpenAPI. // Default: null + * username_path?: scalar|Param|null, // The path to the username in the JSON body. // Default: null + * password_path?: scalar|Param|null, // The path to the password in the JSON body. // Default: null + * }, + * access_token_issuance?: bool|array{ + * enabled?: bool|Param, // Default: false + * signature?: array{ + * algorithm?: scalar|Param|null, // The algorithm use to sign the access tokens. + * key?: scalar|Param|null, // The signature key. It shall be JWK encoded. + * }, + * encryption?: bool|array{ + * enabled?: bool|Param, // Default: false + * key_encryption_algorithm?: scalar|Param|null, // The key encryption algorithm is used to encrypt the token. + * content_encryption_algorithm?: scalar|Param|null, // The key encryption algorithm is used to encrypt the token. + * key?: scalar|Param|null, // The encryption key. It shall be JWK encoded. + * }, + * }, + * access_token_verification?: bool|array{ + * enabled?: bool|Param, // Default: false + * signature?: array{ + * header_checkers?: list, + * claim_checkers?: list, + * mandatory_claims?: list, + * allowed_algorithms?: list, + * keyset?: scalar|Param|null, // The signature keyset. It shall be JWKSet encoded. + * }, + * encryption?: bool|array{ + * enabled?: bool|Param, // Default: false + * continue_on_decryption_failure?: bool|Param, // If enable, non-encrypted tokens or tokens that failed during decryption or verification processes are accepted. // Default: false + * header_checkers?: list, + * allowed_key_encryption_algorithms?: list, + * allowed_content_encryption_algorithms?: list, + * keyset?: scalar|Param|null, // The encryption keyset. It shall be JWKSet encoded. + * }, + * }, + * blocklist_token?: bool|array{ + * enabled?: bool|Param, // Default: false + * cache?: scalar|Param|null, // Storage to track blocked tokens // Default: "cache.app" + * }, + * } + * @psalm-type SyliusApiConfig = array{ + * enabled?: bool|Param, // Default: false + * order_states_to_filter_out?: list, + * operations_to_remove?: list, + * default_image_filter?: mixed, // Default: "sylius_original" + * filter_eager_loading_extension?: array{ + * restricted_resources?: array, + * }>, + * }, + * } + * @psalm-type SyliusLabsDoctrineMigrationsExtraConfig = array{ + * migrations?: array>, + * } + * @psalm-type FlysystemConfig = array{ + * storages?: array, + * asyncaws?: array{ + * client?: scalar|Param|null, // The AsyncAws S3 client service name + * bucket?: scalar|Param|null, // The name of the AWS S3 bucket + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" + * }, + * aws?: array{ + * client?: scalar|Param|null, // The AWS S3 client service name + * bucket?: scalar|Param|null, // The name of the AWS S3 bucket + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" + * options?: list, + * streamReads?: bool|Param, // Whether to use streaming for file reads // Default: true + * }, + * azure?: array{ + * client?: scalar|Param|null, // The Azure Blob Storage client service name + * container?: scalar|Param|null, // The name of the Azure Blob Storage container + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all blob names // Default: "" + * }, + * ftp?: array{ + * host?: scalar|Param|null, // FTP host + * username?: scalar|Param|null, // FTP username + * password?: scalar|Param|null, // FTP password + * port?: int|Param, // FTP port number // Default: 21 + * root?: scalar|Param|null, // FTP root directory // Default: "" + * passive?: bool|Param, // Use passive mode // Default: true + * ssl?: bool|Param, // Use SSL/TLS encryption // Default: false + * timeout?: int|Param, // Connection timeout in seconds // Default: 90 + * ignore_passive_address?: scalar|Param|null, // Ignore passive address // Default: null + * utf8?: bool|Param, // Enable UTF8 mode // Default: false + * transfer_mode?: scalar|Param|null, // Transfer mode (FTP_ASCII or FTP_BINARY constante on ftp extension) // Default: null + * system_type?: null|"windows"|"unix"|Param, // FTP system type // Default: null + * timestamps_on_unix_listings_enabled?: bool|Param, // Enable timestamps on Unix listings // Default: false + * recurse_manually?: bool|Param, // Recurse directories manually // Default: true + * use_raw_list_options?: bool|Param|null, // Use raw list options // Default: null + * connectivityChecker?: scalar|Param|null, // Connectivity checker service name // Default: null + * permissions?: array{ // Unix permissions configuration for files and directories + * file?: array{ // File permissions + * public?: int|Param, // Public file permissions // Default: 420 + * private?: int|Param, // Private file permissions // Default: 384 + * }, + * dir?: array{ // Directory permissions + * public?: int|Param, // Public directory permissions // Default: 493 + * private?: int|Param, // Private directory permissions // Default: 448 + * }, + * }, + * }, + * gcloud?: array{ + * client?: scalar|Param|null, // The Google Cloud Storage client service name + * bucket?: scalar|Param|null, // The name of the Google Cloud Storage bucket + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" + * visibility_handler?: scalar|Param|null, // Optional visibility handler service name // Default: null + * streamReads?: bool|Param, // Whether to use streaming for file reads // Default: false + * }, + * gridfs?: array{ + * bucket?: scalar|Param|null, // GridFS bucket service name (if using an existing bucket service) // Default: null + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all file names // Default: "" + * database?: scalar|Param|null, // MongoDB database name // Default: null + * doctrine_connection?: scalar|Param|null, // Doctrine MongoDB connection name (mutually exclusive with mongodb_uri) + * mongodb_uri?: scalar|Param|null, // MongoDB connection URI (mutually exclusive with doctrine_connection) + * mongodb_uri_options?: list, + * mongodb_driver_options?: list, + * }, + * lazy?: array{ // Lazy adapter for runtime storage selection + * source?: scalar|Param|null, // The service name of the storage to use at runtime + * }, + * local?: array{ + * directory?: scalar|Param|null, // Directory path for local storage + * lock?: int|Param, // Lock flags for file operations // Default: 0 + * skip_links?: bool|Param, // Whether to skip symbolic links // Default: false + * lazy_root_creation?: bool|Param, // Whether to create the root directory lazily // Default: false + * permissions?: array{ // Unix permissions configuration for files and directories + * file?: array{ // File permissions + * public?: int|Param, // Public file permissions // Default: 420 + * private?: int|Param, // Private file permissions // Default: 384 + * }, + * dir?: array{ // Directory permissions + * public?: int|Param, // Public directory permissions // Default: 493 + * private?: int|Param, // Private directory permissions // Default: 448 + * }, + * }, + * }, + * memory?: array, + * sftp?: array{ + * host?: scalar|Param|null, // SFTP host + * username?: scalar|Param|null, // SFTP username + * password?: scalar|Param|null, // SFTP password (optional if using private key) // Default: null + * privateKey?: scalar|Param|null, // Path to private key file or private key content // Default: null + * passphrase?: scalar|Param|null, // Private key passphrase // Default: null + * port?: int|Param, // SFTP port number // Default: 22 + * timeout?: int|Param, // Connection timeout in seconds // Default: 90 + * hostFingerprint?: scalar|Param|null, // Host fingerprint for verification // Default: null + * connectivityChecker?: scalar|Param|null, // Connectivity checker service name // Default: null + * preferredAlgorithms?: list, + * root?: scalar|Param|null, // SFTP root directory // Default: "" + * permissions?: array{ // Unix permissions configuration for files and directories + * file?: array{ // File permissions + * public?: int|Param, // Public file permissions // Default: 420 + * private?: int|Param, // Private file permissions // Default: 384 + * }, + * dir?: array{ // Directory permissions + * public?: int|Param, // Public directory permissions // Default: 493 + * private?: int|Param, // Private directory permissions // Default: 448 + * }, + * }, + * }, + * webdav?: array{ + * client?: scalar|Param|null, // The WebDAV client service name + * prefix?: scalar|Param|null, // Optional path prefix to prepend to all paths // Default: "" + * visibility_handling?: "throw"|"ignore"|Param, // How to handle visibility operations // Default: "throw" + * manual_copy?: bool|Param, // Whether to handle copy operations manually // Default: false + * manual_move?: bool|Param, // Whether to handle move operations manually // Default: false + * }, + * bunnycdn?: array{ + * client?: scalar|Param|null, // The BunnyCDN client service name + * pull_zone?: scalar|Param|null, // The BunnyCDN pull zone name // Default: "" + * }, + * service?: scalar|Param|null, // Reference to a custom adapter service (alternative to registered adapter types) + * visibility?: scalar|Param|null, // Default visibility for files // Default: null + * directory_visibility?: scalar|Param|null, // Default visibility for directories // Default: null + * retain_visibility?: scalar|Param|null, // Keeps the original file visibility (public/private) when copying or moving. // Default: null + * case_sensitive?: bool|Param, // Deprecated: The "case_sensitive" option is deprecated and will be removed in 4.0. // Default: true + * disable_asserts?: bool|Param, // Deprecated: The "disable_asserts" option is deprecated and will be removed in 4.0. // Default: false + * public_url?: list, + * path_normalizer?: scalar|Param|null, // Path normalizer service name (should implement League\Flysystem\PathNormalizer) // Default: null + * public_url_generator?: scalar|Param|null, // For adapter that do not provide public URLs or override adapter capabilities and public_url option, a public URL generator service name can be configured in the main Filesystem configuration (should implement League\Flysystem\PublicUrlGenerator) // Default: null + * temporary_url_generator?: scalar|Param|null, // For adapter that do not provide public URLs or override adapter capabilities, a temporary URL generator service name can be configured in the main Filesystem configuration (should implement League\Flysystem\TemporaryUrlGenerator) // Default: null + * read_only?: bool|Param, // Converts a file system to read-only // Default: false + * }>, + * } + * @psalm-type WebpackEncoreConfig = array{ + * output_path?: scalar|Param|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() + * crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false + * preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false + * cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false + * strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true + * builds?: array, + * script_attributes?: array, + * link_attributes?: array, + * } + * @psalm-type SyliusTwigHooksConfig = array{ + * enable_autoprefixing?: bool|Param, // Default: false + * hook_name_section_separator?: scalar|Param|null, // Default: false + * supported_hookable_types?: array, + * hooks?: array, + * props?: array, + * configuration?: array, + * priority?: int|Param, // Default: null + * }>>, + * } + * @psalm-type TwigComponentConfig = array{ + * defaults?: array, + * anonymous_template_directory?: scalar|Param|null, // Defaults to `components` + * profiler?: bool|array{ // Enables the profiler for Twig Component + * enabled?: bool|Param, // Default: "%kernel.debug%" + * collect_components?: bool|Param, // Collect components instances // Default: true + * }, + * controllers_json?: scalar|Param|null, // Deprecated: The "twig_component.controllers_json" config option is deprecated, and will be removed in 3.0. // Default: null + * } + * @psalm-type LiveComponentConfig = array{ + * secret?: scalar|Param|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" + * fetch_credentials?: "same-origin"|"include"|"omit"|Param, // The default fetch credentials mode for all Live Components ('same-origin', 'include', 'omit') // Default: "same-origin" + * } + * @psalm-type StimulusConfig = array{ + * controller_paths?: list, + * controllers_json?: scalar|Param|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * } + * @psalm-type SyliusTwigExtraConfig = array{ + * twig_ux?: array{ + * anonymous_component_template_prefixes?: array, + * }, + * } + * @psalm-type UxIconsConfig = array{ + * icon_dir?: scalar|Param|null, // The local directory where icons are stored. // Default: "%kernel.project_dir%/assets/icons" + * default_icon_attributes?: array, + * icon_sets?: array, + * suffixes?: array, + * }>, + * }>, + * aliases?: array, + * iconify?: bool|array{ // Configuration for the remote icon service. + * enabled?: bool|Param, // Default: true + * on_demand?: bool|Param, // Whether to download icons "on demand". // Default: true + * endpoint?: scalar|Param|null, // The endpoint for the Iconify icons API. // Default: "https://api.iconify.design" + * }, + * ignore_not_found?: bool|Param, // Ignore error when an icon is not found. Set to 'true' to fail silently. // Default: false + * } + * @psalm-type WhiteOctoberPagerfantaConfig = array{ // Deprecated: The "white_october_pagerfanta" configuration node is deprecated, migrate your configuration to the "babdev_pagerfanta" configuration node. + * exceptions_strategy?: array{ + * out_of_range_page?: scalar|Param|null, // Default: "to_http_not_found" + * not_valid_current_page?: scalar|Param|null, // Default: "to_http_not_found" + * }, + * default_view?: scalar|Param|null, // Default: "default" + * } + * @psalm-type ConfigType = array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * monolog?: MonologConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, + * sylius_order?: SyliusOrderConfig, + * sylius_money?: SyliusMoneyConfig, + * sylius_currency?: SyliusCurrencyConfig, + * sylius_locale?: SyliusLocaleConfig, + * sylius_product?: SyliusProductConfig, + * sylius_channel?: SyliusChannelConfig, + * sylius_attribute?: SyliusAttributeConfig, + * sylius_taxation?: SyliusTaxationConfig, + * sylius_shipping?: SyliusShippingConfig, + * sylius_payment?: SyliusPaymentConfig, + * sylius_mailer?: SyliusMailerConfig, + * sylius_promotion?: SyliusPromotionConfig, + * sylius_addressing?: SyliusAddressingConfig, + * sylius_inventory?: SyliusInventoryConfig, + * sylius_taxonomy?: SyliusTaxonomyConfig, + * sylius_user?: SyliusUserConfig, + * sylius_customer?: SyliusCustomerConfig, + * sylius_ui?: SyliusUiConfig, + * sylius_review?: SyliusReviewConfig, + * sylius_core?: SyliusCoreConfig, + * sylius_resource?: SyliusResourceConfig, + * sylius_grid?: SyliusGridConfig, + * knp_gaufrette?: KnpGaufretteConfig, + * knp_menu?: KnpMenuConfig, + * liip_imagine?: LiipImagineConfig, + * payum?: PayumConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * babdev_pagerfanta?: BabdevPagerfantaConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * sylius_fixtures?: SyliusFixturesConfig, + * sylius_payum?: SyliusPayumConfig, + * sylius_theme?: SyliusThemeConfig, + * sylius_admin?: SyliusAdminConfig, + * sylius_shop?: SyliusShopConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * api_platform?: ApiPlatformConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * sylius_api?: SyliusApiConfig, + * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, + * flysystem?: FlysystemConfig, + * webpack_encore?: WebpackEncoreConfig, + * sylius_twig_hooks?: SyliusTwigHooksConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * sylius_twig_extra?: SyliusTwigExtraConfig, + * ux_icons?: UxIconsConfig, + * white_october_pagerfanta?: WhiteOctoberPagerfantaConfig, + * "when@dev"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * monolog?: MonologConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, + * sylius_order?: SyliusOrderConfig, + * sylius_money?: SyliusMoneyConfig, + * sylius_currency?: SyliusCurrencyConfig, + * sylius_locale?: SyliusLocaleConfig, + * sylius_product?: SyliusProductConfig, + * sylius_channel?: SyliusChannelConfig, + * sylius_attribute?: SyliusAttributeConfig, + * sylius_taxation?: SyliusTaxationConfig, + * sylius_shipping?: SyliusShippingConfig, + * sylius_payment?: SyliusPaymentConfig, + * sylius_mailer?: SyliusMailerConfig, + * sylius_promotion?: SyliusPromotionConfig, + * sylius_addressing?: SyliusAddressingConfig, + * sylius_inventory?: SyliusInventoryConfig, + * sylius_taxonomy?: SyliusTaxonomyConfig, + * sylius_user?: SyliusUserConfig, + * sylius_customer?: SyliusCustomerConfig, + * sylius_ui?: SyliusUiConfig, + * sylius_review?: SyliusReviewConfig, + * sylius_core?: SyliusCoreConfig, + * sylius_resource?: SyliusResourceConfig, + * sylius_grid?: SyliusGridConfig, + * knp_gaufrette?: KnpGaufretteConfig, + * knp_menu?: KnpMenuConfig, + * liip_imagine?: LiipImagineConfig, + * payum?: PayumConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * babdev_pagerfanta?: BabdevPagerfantaConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * sylius_fixtures?: SyliusFixturesConfig, + * sylius_payum?: SyliusPayumConfig, + * sylius_theme?: SyliusThemeConfig, + * sylius_admin?: SyliusAdminConfig, + * sylius_shop?: SyliusShopConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * api_platform?: ApiPlatformConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * sylius_api?: SyliusApiConfig, + * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, + * flysystem?: FlysystemConfig, + * webpack_encore?: WebpackEncoreConfig, + * sylius_twig_hooks?: SyliusTwigHooksConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * sylius_twig_extra?: SyliusTwigExtraConfig, + * ux_icons?: UxIconsConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * monolog?: MonologConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, + * sylius_order?: SyliusOrderConfig, + * sylius_money?: SyliusMoneyConfig, + * sylius_currency?: SyliusCurrencyConfig, + * sylius_locale?: SyliusLocaleConfig, + * sylius_product?: SyliusProductConfig, + * sylius_channel?: SyliusChannelConfig, + * sylius_attribute?: SyliusAttributeConfig, + * sylius_taxation?: SyliusTaxationConfig, + * sylius_shipping?: SyliusShippingConfig, + * sylius_payment?: SyliusPaymentConfig, + * sylius_mailer?: SyliusMailerConfig, + * sylius_promotion?: SyliusPromotionConfig, + * sylius_addressing?: SyliusAddressingConfig, + * sylius_inventory?: SyliusInventoryConfig, + * sylius_taxonomy?: SyliusTaxonomyConfig, + * sylius_user?: SyliusUserConfig, + * sylius_customer?: SyliusCustomerConfig, + * sylius_ui?: SyliusUiConfig, + * sylius_review?: SyliusReviewConfig, + * sylius_core?: SyliusCoreConfig, + * sylius_resource?: SyliusResourceConfig, + * sylius_grid?: SyliusGridConfig, + * knp_gaufrette?: KnpGaufretteConfig, + * knp_menu?: KnpMenuConfig, + * liip_imagine?: LiipImagineConfig, + * payum?: PayumConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * babdev_pagerfanta?: BabdevPagerfantaConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * sylius_fixtures?: SyliusFixturesConfig, + * sylius_payum?: SyliusPayumConfig, + * sylius_theme?: SyliusThemeConfig, + * sylius_admin?: SyliusAdminConfig, + * sylius_shop?: SyliusShopConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * api_platform?: ApiPlatformConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * sylius_api?: SyliusApiConfig, + * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, + * flysystem?: FlysystemConfig, + * webpack_encore?: WebpackEncoreConfig, + * sylius_twig_hooks?: SyliusTwigHooksConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * sylius_twig_extra?: SyliusTwigExtraConfig, + * ux_icons?: UxIconsConfig, + * }, + * "when@test_cached"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * monolog?: MonologConfig, + * security?: SecurityConfig, + * twig?: TwigConfig, + * doctrine?: DoctrineConfig, + * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, + * sylius_order?: SyliusOrderConfig, + * sylius_money?: SyliusMoneyConfig, + * sylius_currency?: SyliusCurrencyConfig, + * sylius_locale?: SyliusLocaleConfig, + * sylius_product?: SyliusProductConfig, + * sylius_channel?: SyliusChannelConfig, + * sylius_attribute?: SyliusAttributeConfig, + * sylius_taxation?: SyliusTaxationConfig, + * sylius_shipping?: SyliusShippingConfig, + * sylius_payment?: SyliusPaymentConfig, + * sylius_mailer?: SyliusMailerConfig, + * sylius_promotion?: SyliusPromotionConfig, + * sylius_addressing?: SyliusAddressingConfig, + * sylius_inventory?: SyliusInventoryConfig, + * sylius_taxonomy?: SyliusTaxonomyConfig, + * sylius_user?: SyliusUserConfig, + * sylius_customer?: SyliusCustomerConfig, + * sylius_ui?: SyliusUiConfig, + * sylius_review?: SyliusReviewConfig, + * sylius_core?: SyliusCoreConfig, + * sylius_resource?: SyliusResourceConfig, + * sylius_grid?: SyliusGridConfig, + * knp_gaufrette?: KnpGaufretteConfig, + * knp_menu?: KnpMenuConfig, + * liip_imagine?: LiipImagineConfig, + * payum?: PayumConfig, + * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, + * babdev_pagerfanta?: BabdevPagerfantaConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * sylius_fixtures?: SyliusFixturesConfig, + * sylius_payum?: SyliusPayumConfig, + * sylius_theme?: SyliusThemeConfig, + * sylius_admin?: SyliusAdminConfig, + * sylius_shop?: SyliusShopConfig, + * debug?: DebugConfig, + * web_profiler?: WebProfilerConfig, + * api_platform?: ApiPlatformConfig, + * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, + * sylius_api?: SyliusApiConfig, + * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, + * flysystem?: FlysystemConfig, + * webpack_encore?: WebpackEncoreConfig, + * sylius_twig_hooks?: SyliusTwigHooksConfig, + * twig_component?: TwigComponentConfig, + * live_component?: LiveComponentConfig, + * stimulus?: StimulusConfig, + * sylius_twig_extra?: SyliusTwigExtraConfig, + * ux_icons?: UxIconsConfig, + * }, + * ..., + * }> + * } + */ +final class App +{ + /** + * @param ConfigType $config + * + * @psalm-return ConfigType + */ + public static function config(array $config): array + { + /** @var ConfigType $config */ + $config = AppReference::config($config); + + return $config; + } +} + +namespace Symfony\Component\Routing\Loader\Configurator; + +/** + * This class provides array-shapes for configuring the routes of an application. + * + * Example: + * + * ```php + * // config/routes.php + * namespace Symfony\Component\Routing\Loader\Configurator; + * + * return Routes::config([ + * 'controllers' => [ + * 'resource' => 'routing.controllers', + * ], + * ]); + * ``` + * + * @psalm-type RouteConfig = array{ + * path: string|array, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type ImportConfig = array{ + * resource: string, + * type?: string, + * exclude?: string|list, + * prefix?: string|array, + * name_prefix?: string, + * trailing_slash_on_root?: bool, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type AliasConfig = array{ + * alias: string, + * deprecated?: array{package:string, version:string, message?:string}, + * } + * @psalm-type RoutesConfig = array{ + * "when@dev"?: array, + * "when@test"?: array, + * "when@test_cached"?: array, + * ... + * } + */ +final class Routes +{ + /** + * @param RoutesConfig $config + * + * @psalm-return RoutesConfig + */ + public static function config(array $config): array + { + return $config; + } +} diff --git a/tests/Application/config/routes.yaml b/tests/Application/config/routes.yaml index cb7b696..1312e6c 100644 --- a/tests/Application/config/routes.yaml +++ b/tests/Application/config/routes.yaml @@ -1,2 +1,2 @@ -bitbag_sylius_imoje_plugin: - resource: "@BitBagSyliusImojePlugin/config/routes.yaml" +bitbag_sylius_ing_pay_plugin: + resource: "@BitBagSyliusIngPayPlugin/config/routes.yaml" diff --git a/tests/Application/public/index.php b/tests/Application/public/index.php index 5591370..14bbab9 100644 --- a/tests/Application/public/index.php +++ b/tests/Application/public/index.php @@ -2,7 +2,7 @@ declare(strict_types=1); -use Tests\BitBag\SyliusImojePlugin\Application\Kernel; +use Tests\BitBag\SyliusIngPayPlugin\Application\Kernel; use Symfony\Component\ErrorHandler\Debug; use Symfony\Component\HttpFoundation\Request; diff --git a/tests/Unit/CommandHandler/CapturePaymentRequestHandlerTest.php b/tests/Unit/CommandHandler/CapturePaymentRequestHandlerTest.php index 9b41164..937e2da 100644 --- a/tests/Unit/CommandHandler/CapturePaymentRequestHandlerTest.php +++ b/tests/Unit/CommandHandler/CapturePaymentRequestHandlerTest.php @@ -2,12 +2,12 @@ declare(strict_types=1); -namespace Tests\BitBag\SyliusImojePlugin\Unit\CommandHandler; +namespace Tests\BitBag\SyliusIngPayPlugin\Unit\CommandHandler; -use BitBag\SyliusImojePlugin\Command\CapturePaymentRequest; -use BitBag\SyliusImojePlugin\CommandHandler\CapturePaymentRequestHandler; -use BitBag\SyliusImojePlugin\Enum\ImojeEnvironment; -use BitBag\SyliusImojePlugin\Resolver\SignatureResolverInterface; +use BitBag\SyliusIngPayPlugin\Command\CapturePaymentRequest; +use BitBag\SyliusIngPayPlugin\CommandHandler\CapturePaymentRequestHandler; +use BitBag\SyliusIngPayPlugin\Enum\IngPayEnvironment; +use BitBag\SyliusIngPayPlugin\Resolver\SignatureResolverInterface; use PHPUnit\Framework\TestCase; use Sylius\Abstraction\StateMachine\StateMachineInterface; use Sylius\Bundle\CoreBundle\OrderPay\Provider\UrlProviderInterface; @@ -63,7 +63,7 @@ public function testItProcessesCapturePaymentRequest(): void $paymentMethod->method('getGatewayConfig')->willReturn($gatewayConfig); $gatewayConfig->method('getConfig')->willReturn([ - 'environment' => ImojeEnvironment::SANDBOX_ENVIRONMENT, + 'environment' => IngPayEnvironment::SANDBOX_ENVIRONMENT, 'service_key' => 'test_key', 'service_id' => 'test_service', 'merchant_id' => 'test_merchant', @@ -96,7 +96,7 @@ public function testItProcessesCapturePaymentRequest(): void $paymentRequest->expects(self::once()) ->method('setResponseData') ->with([ - 'url' => ImojeEnvironment::SANDBOX_URL->value, + 'url' => IngPayEnvironment::SANDBOX_URL->value, 'orderData' => [ 'serviceId' => 'test_service', 'merchantId' => 'test_merchant', diff --git a/tests/Unit/Processor/PaymentTransitionProcessorTest.php b/tests/Unit/Processor/PaymentTransitionProcessorTest.php index 9a2f5c5..0bff58f 100644 --- a/tests/Unit/Processor/PaymentTransitionProcessorTest.php +++ b/tests/Unit/Processor/PaymentTransitionProcessorTest.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace Tests\BitBag\SyliusImojePlugin\Unit\Processor; +namespace Tests\BitBag\SyliusIngPayPlugin\Unit\Processor; -use BitBag\SyliusImojePlugin\Processor\PaymentTransitionProcessor; -use BitBag\SyliusImojePlugin\Processor\PaymentTransitionProcessorInterface; +use BitBag\SyliusIngPayPlugin\Processor\PaymentTransitionProcessor; +use BitBag\SyliusIngPayPlugin\Processor\PaymentTransitionProcessorInterface; use PHPUnit\Framework\TestCase; use Sylius\Component\Payment\Model\PaymentInterface; use Sylius\Component\Payment\Model\PaymentRequestInterface; diff --git a/tests/Unit/Resolver/SignatureResolverTest.php b/tests/Unit/Resolver/SignatureResolverTest.php index c76eef5..5563795 100644 --- a/tests/Unit/Resolver/SignatureResolverTest.php +++ b/tests/Unit/Resolver/SignatureResolverTest.php @@ -9,10 +9,10 @@ declare(strict_types=1); -namespace Tests\BitBag\SyliusImojePlugin\Unit\Resolver; +namespace Tests\BitBag\SyliusIngPayPlugin\Unit\Resolver; -use BitBag\SyliusImojePlugin\Enum\ImojeEnvironment; -use BitBag\SyliusImojePlugin\Resolver\SignatureResolver; +use BitBag\SyliusIngPayPlugin\Enum\IngPayEnvironment; +use BitBag\SyliusIngPayPlugin\Resolver\SignatureResolver; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\HeaderBag; use Symfony\Component\HttpFoundation\Request; @@ -39,7 +39,7 @@ public function testItShouldSortFieldsAndBuildDataString(): void ]; $serviceKey = 'adasvcx3412'; $expectedDataString = 'field1=value1&field2=value2'; - $expectedHash = hash(ImojeEnvironment::HASHING_ALGORITHM->value, $expectedDataString . $serviceKey) . ';' . ImojeEnvironment::HASHING_ALGORITHM->value; + $expectedHash = hash(IngPayEnvironment::HASHING_ALGORITHM->value, $expectedDataString . $serviceKey) . ';' . IngPayEnvironment::HASHING_ALGORITHM->value; $this->assertSame($expectedHash, $this->signatureResolver->createSignature($fields, $serviceKey)); } @@ -48,7 +48,7 @@ public function testItShouldReturnHashWithServiceKeyOnlyWhenFieldsAreEmpty(): vo { $fields = []; $serviceKey = 'adasvcx3412'; - $expectedHash = hash(ImojeEnvironment::HASHING_ALGORITHM->value, $serviceKey) . ';' . ImojeEnvironment::HASHING_ALGORITHM->value; + $expectedHash = hash(IngPayEnvironment::HASHING_ALGORITHM->value, $serviceKey) . ';' . IngPayEnvironment::HASHING_ALGORITHM->value; $this->assertSame($expectedHash, $this->signatureResolver->createSignature($fields, $serviceKey)); } @@ -61,7 +61,7 @@ public function testItShouldReturnHashWithoutServiceKeyWhenServiceKeyIsEmpty(): ]; $serviceKey = ''; $expectedDataString = 'field1=value1&field2=value2'; - $expectedHash = hash(ImojeEnvironment::HASHING_ALGORITHM->value, $expectedDataString) . ';' . ImojeEnvironment::HASHING_ALGORITHM->value; + $expectedHash = hash(IngPayEnvironment::HASHING_ALGORITHM->value, $expectedDataString) . ';' . IngPayEnvironment::HASHING_ALGORITHM->value; $this->assertSame($expectedHash, $this->signatureResolver->createSignature($fields, $serviceKey)); } diff --git a/translations/messages.en.yml b/translations/messages.en.yml index eed3d24..d0ed268 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -1,5 +1,5 @@ bitbag: - imoje_plugin: + ing_pay_plugin: configuration: production: Production sandbox: Sandbox @@ -8,4 +8,4 @@ bitbag: service_key: Service key authorization_token: Authorization token environment: Envrionment - paywall: Imoje (Paywall) + paywall: ING Pay (Paywall) diff --git a/translations/validators.en.yaml b/translations/validators.en.yaml index 6659cdf..b4a0402 100644 --- a/translations/validators.en.yaml +++ b/translations/validators.en.yaml @@ -1,5 +1,5 @@ bitbag: - imoje_plugin: + ing_pay_plugin: configuration: merchant_id: not_blank: Please enter a merchant ID. From 5406953012ed6506f21386bf2c892a3ea5fbecfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Kukli=C5=84ski?= Date: Wed, 17 Jun 2026 14:00:26 +0200 Subject: [PATCH 2/3] Delete tests/Application/config/encryption/key --- tests/Application/config/encryption/key | 1 - 1 file changed, 1 deletion(-) delete mode 100644 tests/Application/config/encryption/key diff --git a/tests/Application/config/encryption/key b/tests/Application/config/encryption/key deleted file mode 100644 index f1a96a8..0000000 --- a/tests/Application/config/encryption/key +++ /dev/null @@ -1 +0,0 @@ -31400500e4983e2ad399ac9d6c775462dcea9510cc5e884c5459d2c34aa19eb2c74a5939239e80ab7a43b850ae984d99b4ebed63f6970de3db4bcb7999d8238bf346e8f57e4495ebaeed8f712e51dc335c0599537d8d01399aa7f4d47b9f2f15f48f28c0 \ No newline at end of file From 69bd4548267fc1297ff371a820024e90fd195675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Kukli=C5=84ski?= Date: Wed, 17 Jun 2026 14:01:35 +0200 Subject: [PATCH 3/3] Delete tests/Application/config/reference.php --- tests/Application/config/reference.php | 3819 ------------------------ 1 file changed, 3819 deletions(-) delete mode 100644 tests/Application/config/reference.php diff --git a/tests/Application/config/reference.php b/tests/Application/config/reference.php deleted file mode 100644 index 182ef64..0000000 --- a/tests/Application/config/reference.php +++ /dev/null @@ -1,3819 +0,0 @@ - [ - * 'App\\' => [ - * 'resource' => '../src/', - * ], - * ], - * ]); - * ``` - * - * @psalm-type ImportsConfig = list - * @psalm-type ParametersConfig = array|Param|null>|Param|null> - * @psalm-type ArgumentsType = list|array - * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} - * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key - * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator - * @psalm-type DeprecationType = array{package: string, version: string, message?: string} - * @psalm-type DefaultsType = array{ - * public?: bool, - * tags?: TagsType, - * resource_tags?: TagsType, - * autowire?: bool, - * autoconfigure?: bool, - * bind?: array, - * } - * @psalm-type InstanceofType = array{ - * shared?: bool, - * lazy?: bool|string, - * public?: bool, - * properties?: array, - * configurator?: CallbackType, - * calls?: list, - * tags?: TagsType, - * resource_tags?: TagsType, - * autowire?: bool, - * bind?: array, - * constructor?: string, - * } - * @psalm-type DefinitionType = array{ - * class?: string, - * file?: string, - * parent?: string, - * shared?: bool, - * synthetic?: bool, - * lazy?: bool|string, - * public?: bool, - * abstract?: bool, - * deprecated?: DeprecationType, - * factory?: CallbackType, - * configurator?: CallbackType, - * arguments?: ArgumentsType, - * properties?: array, - * calls?: list, - * tags?: TagsType, - * resource_tags?: TagsType, - * decorates?: string, - * decoration_inner_name?: string, - * decoration_priority?: int, - * decoration_on_invalid?: 'exception'|'ignore'|null, - * autowire?: bool, - * autoconfigure?: bool, - * bind?: array, - * constructor?: string, - * from_callable?: CallbackType, - * } - * @psalm-type AliasType = string|array{ - * alias: string, - * public?: bool, - * deprecated?: DeprecationType, - * } - * @psalm-type PrototypeType = array{ - * resource: string, - * namespace?: string, - * exclude?: string|list, - * parent?: string, - * shared?: bool, - * lazy?: bool|string, - * public?: bool, - * abstract?: bool, - * deprecated?: DeprecationType, - * factory?: CallbackType, - * arguments?: ArgumentsType, - * properties?: array, - * configurator?: CallbackType, - * calls?: list, - * tags?: TagsType, - * resource_tags?: TagsType, - * autowire?: bool, - * autoconfigure?: bool, - * bind?: array, - * constructor?: string, - * } - * @psalm-type StackType = array{ - * stack: list>, - * public?: bool, - * deprecated?: DeprecationType, - * } - * @psalm-type ServicesConfig = array{ - * _defaults?: DefaultsType, - * _instanceof?: InstanceofType, - * ... - * } - * @psalm-type ExtensionType = array - * @psalm-type FrameworkConfig = array{ - * secret?: scalar|Param|null, - * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false - * allowed_http_method_override?: null|list, - * trust_x_sendfile_type_header?: scalar|Param|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|Param|null, // Default: "%env(default::SYMFONY_IDE)%" - * test?: bool|Param, - * default_locale?: scalar|Param|null, // Default: "en" - * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false - * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false - * enabled_locales?: list, - * trusted_hosts?: string|list, - * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] - * trusted_headers?: string|list, - * error_controller?: scalar|Param|null, // Default: "error_controller" - * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true - * csrf_protection?: bool|array{ - * enabled?: scalar|Param|null, // Default: null - * stateless_token_ids?: list, - * check_header?: scalar|Param|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false - * cookie_name?: scalar|Param|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" - * }, - * form?: bool|array{ // Form configuration - * enabled?: bool|Param, // Default: true - * csrf_protection?: bool|array{ - * enabled?: scalar|Param|null, // Default: null - * token_id?: scalar|Param|null, // Default: null - * field_name?: scalar|Param|null, // Default: "_token" - * field_attr?: array, - * }, - * }, - * http_cache?: bool|array{ // HTTP cache configuration - * enabled?: bool|Param, // Default: false - * debug?: bool|Param, // Default: "%kernel.debug%" - * trace_level?: "none"|"short"|"full"|Param, - * trace_header?: scalar|Param|null, - * default_ttl?: int|Param, - * private_headers?: list, - * skip_response_headers?: list, - * allow_reload?: bool|Param, - * allow_revalidate?: bool|Param, - * stale_while_revalidate?: int|Param, - * stale_if_error?: int|Param, - * terminate_on_cache_hit?: bool|Param, - * }, - * esi?: bool|array{ // ESI configuration - * enabled?: bool|Param, // Default: false - * }, - * ssi?: bool|array{ // SSI configuration - * enabled?: bool|Param, // Default: false - * }, - * fragments?: bool|array{ // Fragments configuration - * enabled?: bool|Param, // Default: false - * hinclude_default_template?: scalar|Param|null, // Default: null - * path?: scalar|Param|null, // Default: "/_fragment" - * }, - * profiler?: bool|array{ // Profiler configuration - * enabled?: bool|Param, // Default: false - * collect?: bool|Param, // Default: true - * collect_parameter?: scalar|Param|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null - * only_exceptions?: bool|Param, // Default: false - * only_main_requests?: bool|Param, // Default: false - * dsn?: scalar|Param|null, // Default: "file:%kernel.cache_dir%/profiler" - * collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false - * }, - * workflows?: bool|array{ - * enabled?: bool|Param, // Default: false - * workflows?: array, - * definition_validators?: list, - * support_strategy?: scalar|Param|null, - * initial_marking?: \BackedEnum|string|list, - * events_to_dispatch?: null|list, - * places?: string|list, - * }>, - * transitions?: list, - * to?: \BackedEnum|string|list, - * weight?: int|Param, // Default: 1 - * metadata?: array, - * }>, - * metadata?: array, - * }>, - * }, - * router?: bool|array{ // Router configuration - * enabled?: bool|Param, // Default: false - * resource?: scalar|Param|null, - * type?: scalar|Param|null, - * cache_dir?: scalar|Param|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" - * default_uri?: scalar|Param|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null - * http_port?: scalar|Param|null, // Default: 80 - * https_port?: scalar|Param|null, // Default: 443 - * strict_requirements?: scalar|Param|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true - * utf8?: bool|Param, // Default: true - * }, - * session?: bool|array{ // Session configuration - * enabled?: bool|Param, // Default: false - * storage_factory_id?: scalar|Param|null, // Default: "session.storage.factory.native" - * handler_id?: scalar|Param|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. - * name?: scalar|Param|null, - * cookie_lifetime?: scalar|Param|null, - * cookie_path?: scalar|Param|null, - * cookie_domain?: scalar|Param|null, - * cookie_secure?: true|false|"auto"|Param, // Default: "auto" - * cookie_httponly?: bool|Param, // Default: true - * cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" - * use_cookies?: bool|Param, - * gc_divisor?: scalar|Param|null, - * gc_probability?: scalar|Param|null, - * gc_maxlifetime?: scalar|Param|null, - * save_path?: scalar|Param|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. - * metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0 - * sid_length?: int|Param, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. - * sid_bits_per_character?: int|Param, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. - * }, - * request?: bool|array{ // Request configuration - * enabled?: bool|Param, // Default: false - * formats?: array>, - * }, - * assets?: bool|array{ // Assets configuration - * enabled?: bool|Param, // Default: true - * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false - * version_strategy?: scalar|Param|null, // Default: null - * version?: scalar|Param|null, // Default: null - * version_format?: scalar|Param|null, // Default: "%%s?%%s" - * json_manifest_path?: scalar|Param|null, // Default: null - * base_path?: scalar|Param|null, // Default: "" - * base_urls?: string|list, - * packages?: array, - * }>, - * }, - * asset_mapper?: bool|array{ // Asset Mapper configuration - * enabled?: bool|Param, // Default: false - * paths?: string|array, - * excluded_patterns?: list, - * exclude_dotfiles?: bool|Param, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool|Param, // If true, a "dev server" will return the assets from the public directory (true in "debug" mode only by default). // Default: true - * public_prefix?: scalar|Param|null, // The public path where the assets will be written to (and served from when "server" is true). // Default: "/assets/" - * missing_import_mode?: "strict"|"warn"|"ignore"|Param, // Behavior if an asset cannot be found when imported from JavaScript or CSS files - e.g. "import './non-existent.js'". "strict" means an exception is thrown, "warn" means a warning is logged, "ignore" means the import is left as-is. // Default: "warn" - * extensions?: array, - * importmap_path?: scalar|Param|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" - * importmap_polyfill?: scalar|Param|null, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" - * importmap_script_attributes?: array, - * vendor_dir?: scalar|Param|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" - * precompress?: bool|array{ // Precompress assets with Brotli, Zstandard and gzip. - * enabled?: bool|Param, // Default: false - * formats?: list, - * extensions?: list, - * }, - * }, - * translator?: bool|array{ // Translator configuration - * enabled?: bool|Param, // Default: true - * fallbacks?: string|list, - * logging?: bool|Param, // Default: false - * formatter?: scalar|Param|null, // Default: "translator.formatter.default" - * cache_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/translations" - * default_path?: scalar|Param|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" - * paths?: list, - * pseudo_localization?: bool|array{ - * enabled?: bool|Param, // Default: false - * accents?: bool|Param, // Default: true - * expansion_factor?: float|Param, // Default: 1.0 - * brackets?: bool|Param, // Default: true - * parse_html?: bool|Param, // Default: false - * localizable_html_attributes?: list, - * }, - * providers?: array, - * locales?: list, - * }>, - * globals?: array, - * domain?: string|Param, - * }>, - * }, - * validation?: bool|array{ // Validation configuration - * enabled?: bool|Param, // Default: true - * cache?: scalar|Param|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. - * enable_attributes?: bool|Param, // Default: true - * static_method?: string|list, - * translation_domain?: scalar|Param|null, // Default: "validators" - * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5" - * mapping?: array{ - * paths?: list, - * }, - * not_compromised_password?: bool|array{ - * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true - * endpoint?: scalar|Param|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null - * }, - * disable_translation?: bool|Param, // Default: false - * auto_mapping?: array, - * }>, - * }, - * annotations?: bool|array{ - * enabled?: bool|Param, // Default: false - * }, - * serializer?: bool|array{ // Serializer configuration - * enabled?: bool|Param, // Default: true - * enable_attributes?: bool|Param, // Default: true - * name_converter?: scalar|Param|null, - * circular_reference_handler?: scalar|Param|null, - * max_depth_handler?: scalar|Param|null, - * mapping?: array{ - * paths?: list, - * }, - * default_context?: array, - * named_serializers?: array, - * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true - * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true - * }>, - * }, - * property_access?: bool|array{ // Property access configuration - * enabled?: bool|Param, // Default: true - * magic_call?: bool|Param, // Default: false - * magic_get?: bool|Param, // Default: true - * magic_set?: bool|Param, // Default: true - * throw_exception_on_invalid_index?: bool|Param, // Default: false - * throw_exception_on_invalid_property_path?: bool|Param, // Default: true - * }, - * type_info?: bool|array{ // Type info configuration - * enabled?: bool|Param, // Default: true - * aliases?: array, - * }, - * property_info?: bool|array{ // Property info configuration - * enabled?: bool|Param, // Default: true - * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. - * }, - * cache?: array{ // Cache configuration - * prefix_seed?: scalar|Param|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" - * app?: scalar|Param|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" - * system?: scalar|Param|null, // System related cache pools configuration. // Default: "cache.adapter.system" - * directory?: scalar|Param|null, // Default: "%kernel.share_dir%/pools/app" - * default_psr6_provider?: scalar|Param|null, - * default_redis_provider?: scalar|Param|null, // Default: "redis://localhost" - * default_valkey_provider?: scalar|Param|null, // Default: "valkey://localhost" - * default_memcached_provider?: scalar|Param|null, // Default: "memcached://localhost" - * default_doctrine_dbal_provider?: scalar|Param|null, // Default: "database_connection" - * default_pdo_provider?: scalar|Param|null, // Default: null - * pools?: array, - * tags?: scalar|Param|null, // Default: null - * public?: bool|Param, // Default: false - * default_lifetime?: scalar|Param|null, // Default lifetime of the pool. - * provider?: scalar|Param|null, // Overwrite the setting from the default provider for this adapter. - * early_expiration_message_bus?: scalar|Param|null, - * clearer?: scalar|Param|null, - * }>, - * }, - * php_errors?: array{ // PHP errors handling configuration - * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true - * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true - * }, - * exceptions?: array, - * web_link?: bool|array{ // Web links configuration - * enabled?: bool|Param, // Default: true - * }, - * lock?: bool|string|array{ // Lock configuration - * enabled?: bool|Param, // Default: false - * resources?: string|array>, - * }, - * semaphore?: bool|string|array{ // Semaphore configuration - * enabled?: bool|Param, // Default: false - * resources?: string|array, - * }, - * messenger?: bool|array{ // Messenger configuration - * enabled?: bool|Param, // Default: true - * routing?: array, - * }>, - * serializer?: array{ - * default_serializer?: scalar|Param|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" - * symfony_serializer?: array{ - * format?: scalar|Param|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" - * context?: array, - * }, - * }, - * transports?: array, - * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null - * retry_strategy?: string|array{ - * service?: scalar|Param|null, // Service id to override the retry strategy entirely. // Default: null - * max_retries?: int|Param, // Default: 3 - * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 - * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 - * }, - * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null - * }>, - * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null - * stop_worker_on_signals?: int|string|list, - * default_bus?: scalar|Param|null, // Default: null - * buses?: array, - * }>, - * }>, - * }, - * scheduler?: bool|array{ // Scheduler configuration - * enabled?: bool|Param, // Default: false - * }, - * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true - * http_client?: bool|array{ // HTTP Client configuration - * enabled?: bool|Param, // Default: true - * max_host_connections?: int|Param, // The maximum number of connections to a single host. - * default_options?: array{ - * headers?: array, - * vars?: array, - * max_redirects?: int|Param, // The maximum number of redirects to follow. - * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|Param|null, // A certificate authority file. - * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|Param|null, // A PEM formatted certificate file. - * local_pk?: scalar|Param|null, // A private key file. - * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) - * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). - * sha1?: mixed, - * pin-sha256?: mixed, - * md5?: mixed, - * }, - * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. - * extra?: array, - * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null - * caching?: bool|array{ // Caching configuration. - * enabled?: bool|Param, // Default: false - * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null - * }, - * retry_failed?: bool|array{ - * enabled?: bool|Param, // Default: false - * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null - * http_codes?: int|string|array, - * }>, - * max_retries?: int|Param, // Default: 3 - * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 - * }, - * }, - * mock_response_factory?: scalar|Param|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. - * scoped_clients?: array, - * headers?: array, - * max_redirects?: int|Param, // The maximum number of redirects to follow. - * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|Param|null, // A certificate authority file. - * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|Param|null, // A PEM formatted certificate file. - * local_pk?: scalar|Param|null, // A private key file. - * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). - * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). - * sha1?: mixed, - * pin-sha256?: mixed, - * md5?: mixed, - * }, - * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. - * extra?: array, - * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null - * caching?: bool|array{ // Caching configuration. - * enabled?: bool|Param, // Default: false - * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null - * }, - * retry_failed?: bool|array{ - * enabled?: bool|Param, // Default: false - * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null - * http_codes?: int|string|array, - * }>, - * max_retries?: int|Param, // Default: 3 - * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 - * }, - * }>, - * }, - * mailer?: bool|array{ // Mailer configuration - * enabled?: bool|Param, // Default: true - * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * dsn?: scalar|Param|null, // Default: null - * transports?: array, - * envelope?: array{ // Mailer Envelope configuration - * sender?: scalar|Param|null, - * recipients?: string|list, - * allowed_recipients?: string|list, - * }, - * headers?: array, - * dkim_signer?: bool|array{ // DKIM signer configuration - * enabled?: bool|Param, // Default: false - * key?: scalar|Param|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" - * domain?: scalar|Param|null, // Default: "" - * select?: scalar|Param|null, // Default: "" - * passphrase?: scalar|Param|null, // The private key passphrase // Default: "" - * options?: array, - * }, - * smime_signer?: bool|array{ // S/MIME signer configuration - * enabled?: bool|Param, // Default: false - * key?: scalar|Param|null, // Path to key (in PEM format) // Default: "" - * certificate?: scalar|Param|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" - * passphrase?: scalar|Param|null, // The private key passphrase // Default: null - * extra_certificates?: scalar|Param|null, // Default: null - * sign_options?: int|Param, // Default: null - * }, - * smime_encrypter?: bool|array{ // S/MIME encrypter configuration - * enabled?: bool|Param, // Default: false - * repository?: scalar|Param|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" - * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null - * }, - * }, - * secrets?: bool|array{ - * enabled?: bool|Param, // Default: true - * vault_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" - * local_dotenv_file?: scalar|Param|null, // Default: "%kernel.project_dir%/.env.%kernel.environment%.local" - * decryption_env_var?: scalar|Param|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" - * }, - * notifier?: bool|array{ // Notifier configuration - * enabled?: bool|Param, // Default: false - * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * chatter_transports?: array, - * texter_transports?: array, - * notification_on_failed_messages?: bool|Param, // Default: false - * channel_policy?: array>, - * admin_recipients?: list, - * }, - * rate_limiter?: bool|array{ // Rate limiter configuration - * enabled?: bool|Param, // Default: false - * limiters?: array, - * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. - * interval?: scalar|Param|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). - * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". - * interval?: scalar|Param|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). - * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 - * }, - * }>, - * }, - * uid?: bool|array{ // Uid configuration - * enabled?: bool|Param, // Default: true - * default_uuid_version?: 7|6|4|1|Param, // Default: 7 - * name_based_uuid_version?: 5|3|Param, // Default: 5 - * name_based_uuid_namespace?: scalar|Param|null, - * time_based_uuid_version?: 7|6|1|Param, // Default: 7 - * time_based_uuid_node?: scalar|Param|null, - * }, - * html_sanitizer?: bool|array{ // HtmlSanitizer configuration - * enabled?: bool|Param, // Default: false - * sanitizers?: array, - * block_elements?: string|list, - * drop_elements?: string|list, - * allow_attributes?: array, - * drop_attributes?: array, - * force_attributes?: array>, - * force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false - * allowed_link_schemes?: string|list, - * allowed_link_hosts?: null|string|list, - * allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false - * allowed_media_schemes?: string|list, - * allowed_media_hosts?: null|string|list, - * allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false - * with_attribute_sanitizers?: string|list, - * without_attribute_sanitizers?: string|list, - * max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0 - * }>, - * }, - * webhook?: bool|array{ // Webhook configuration - * enabled?: bool|Param, // Default: false - * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" - * routing?: array, - * }, - * remote-event?: bool|array{ // RemoteEvent configuration - * enabled?: bool|Param, // Default: false - * }, - * json_streamer?: bool|array{ // JSON streamer configuration - * enabled?: bool|Param, // Default: false - * }, - * } - * @psalm-type MonologConfig = array{ - * use_microseconds?: scalar|Param|null, // Default: true - * channels?: list, - * handlers?: array, - * excluded_http_codes?: list, - * }>, - * accepted_levels?: list, - * min_level?: scalar|Param|null, // Default: "DEBUG" - * max_level?: scalar|Param|null, // Default: "EMERGENCY" - * buffer_size?: scalar|Param|null, // Default: 0 - * flush_on_overflow?: bool|Param, // Default: false - * handler?: scalar|Param|null, - * url?: scalar|Param|null, - * exchange?: scalar|Param|null, - * exchange_name?: scalar|Param|null, // Default: "log" - * room?: scalar|Param|null, - * message_format?: scalar|Param|null, // Default: "text" - * api_version?: scalar|Param|null, // Default: null - * channel?: scalar|Param|null, // Default: null - * bot_name?: scalar|Param|null, // Default: "Monolog" - * use_attachment?: scalar|Param|null, // Default: true - * use_short_attachment?: scalar|Param|null, // Default: false - * include_extra?: scalar|Param|null, // Default: false - * icon_emoji?: scalar|Param|null, // Default: null - * webhook_url?: scalar|Param|null, - * exclude_fields?: list, - * team?: scalar|Param|null, - * notify?: scalar|Param|null, // Default: false - * nickname?: scalar|Param|null, // Default: "Monolog" - * token?: scalar|Param|null, - * region?: scalar|Param|null, - * source?: scalar|Param|null, - * use_ssl?: bool|Param, // Default: true - * user?: mixed, - * title?: scalar|Param|null, // Default: null - * host?: scalar|Param|null, // Default: null - * port?: scalar|Param|null, // Default: 514 - * config?: list, - * members?: list, - * connection_string?: scalar|Param|null, - * timeout?: scalar|Param|null, - * time?: scalar|Param|null, // Default: 60 - * deduplication_level?: scalar|Param|null, // Default: 400 - * store?: scalar|Param|null, // Default: null - * connection_timeout?: scalar|Param|null, - * persistent?: bool|Param, - * dsn?: scalar|Param|null, - * hub_id?: scalar|Param|null, // Default: null - * client_id?: scalar|Param|null, // Default: null - * auto_log_stacks?: scalar|Param|null, // Default: false - * release?: scalar|Param|null, // Default: null - * environment?: scalar|Param|null, // Default: null - * message_type?: scalar|Param|null, // Default: 0 - * parse_mode?: scalar|Param|null, // Default: null - * disable_webpage_preview?: bool|Param|null, // Default: null - * disable_notification?: bool|Param|null, // Default: null - * split_long_messages?: bool|Param, // Default: false - * delay_between_messages?: bool|Param, // Default: false - * topic?: int|Param, // Default: null - * factor?: int|Param, // Default: 1 - * tags?: string|list, - * console_formater_options?: mixed, // Deprecated: "monolog.handlers..console_formater_options.console_formater_options" is deprecated, use "monolog.handlers..console_formater_options.console_formatter_options" instead. - * console_formatter_options?: mixed, // Default: [] - * formatter?: scalar|Param|null, - * nested?: bool|Param, // Default: false - * publisher?: string|array{ - * id?: scalar|Param|null, - * hostname?: scalar|Param|null, - * port?: scalar|Param|null, // Default: 12201 - * chunk_size?: scalar|Param|null, // Default: 1420 - * encoder?: "json"|"compressed_json"|Param, - * }, - * mongo?: string|array{ - * id?: scalar|Param|null, - * host?: scalar|Param|null, - * port?: scalar|Param|null, // Default: 27017 - * user?: scalar|Param|null, - * pass?: scalar|Param|null, - * database?: scalar|Param|null, // Default: "monolog" - * collection?: scalar|Param|null, // Default: "logs" - * }, - * mongodb?: string|array{ - * id?: scalar|Param|null, // ID of a MongoDB\Client service - * uri?: scalar|Param|null, - * username?: scalar|Param|null, - * password?: scalar|Param|null, - * database?: scalar|Param|null, // Default: "monolog" - * collection?: scalar|Param|null, // Default: "logs" - * }, - * elasticsearch?: string|array{ - * id?: scalar|Param|null, - * hosts?: list, - * host?: scalar|Param|null, - * port?: scalar|Param|null, // Default: 9200 - * transport?: scalar|Param|null, // Default: "Http" - * user?: scalar|Param|null, // Default: null - * password?: scalar|Param|null, // Default: null - * }, - * index?: scalar|Param|null, // Default: "monolog" - * document_type?: scalar|Param|null, // Default: "logs" - * ignore_error?: scalar|Param|null, // Default: false - * redis?: string|array{ - * id?: scalar|Param|null, - * host?: scalar|Param|null, - * password?: scalar|Param|null, // Default: null - * port?: scalar|Param|null, // Default: 6379 - * database?: scalar|Param|null, // Default: 0 - * key_name?: scalar|Param|null, // Default: "monolog_redis" - * }, - * predis?: string|array{ - * id?: scalar|Param|null, - * host?: scalar|Param|null, - * }, - * from_email?: scalar|Param|null, - * to_email?: string|list, - * subject?: scalar|Param|null, - * content_type?: scalar|Param|null, // Default: null - * headers?: list, - * mailer?: scalar|Param|null, // Default: null - * email_prototype?: string|array{ - * id?: scalar|Param|null, - * method?: scalar|Param|null, // Default: null - * }, - * lazy?: bool|Param, // Default: true - * verbosity_levels?: array{ - * VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR" - * VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING" - * VERBOSITY_VERBOSE?: scalar|Param|null, // Default: "NOTICE" - * VERBOSITY_VERY_VERBOSE?: scalar|Param|null, // Default: "INFO" - * VERBOSITY_DEBUG?: scalar|Param|null, // Default: "DEBUG" - * }, - * channels?: string|array{ - * type?: scalar|Param|null, - * elements?: list, - * }, - * }>, - * } - * @psalm-type SecurityConfig = array{ - * access_denied_url?: scalar|Param|null, // Default: null - * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" - * hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. - * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" - * erase_credentials?: bool|Param, // Default: true - * access_decision_manager?: array{ - * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, - * service?: scalar|Param|null, - * strategy_service?: scalar|Param|null, - * allow_if_all_abstain?: bool|Param, // Default: false - * allow_if_equal_granted_denied?: bool|Param, // Default: true - * }, - * password_hashers?: array, - * hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" - * key_length?: scalar|Param|null, // Default: 40 - * ignore_case?: bool|Param, // Default: false - * encode_as_base64?: bool|Param, // Default: true - * iterations?: scalar|Param|null, // Default: 5000 - * cost?: int|Param, // Default: null - * memory_cost?: scalar|Param|null, // Default: null - * time_cost?: scalar|Param|null, // Default: null - * id?: scalar|Param|null, - * }>, - * providers?: array, - * }, - * memory?: array{ - * users?: array, - * }>, - * }, - * ldap?: array{ - * service?: scalar|Param|null, - * base_dn?: scalar|Param|null, - * search_dn?: scalar|Param|null, // Default: null - * search_password?: scalar|Param|null, // Default: null - * extra_fields?: list, - * default_roles?: string|list, - * role_fetcher?: scalar|Param|null, // Default: null - * uid_key?: scalar|Param|null, // Default: "sAMAccountName" - * filter?: scalar|Param|null, // Default: "({uid_key}={user_identifier})" - * password_attribute?: scalar|Param|null, // Default: null - * }, - * entity?: array{ - * class?: scalar|Param|null, // The full entity class name of your user class. - * property?: scalar|Param|null, // Default: null - * manager_name?: scalar|Param|null, // Default: null - * }, - * lexik_jwt?: array{ - * class?: scalar|Param|null, // Default: "Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\User\\JWTUser" - * }, - * }>, - * firewalls?: array, - * security?: bool|Param, // Default: true - * user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" - * request_matcher?: scalar|Param|null, - * access_denied_url?: scalar|Param|null, - * access_denied_handler?: scalar|Param|null, - * entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". - * provider?: scalar|Param|null, - * stateless?: bool|Param, // Default: false - * lazy?: bool|Param, // Default: false - * context?: scalar|Param|null, - * logout?: array{ - * enable_csrf?: bool|Param|null, // Default: null - * csrf_token_id?: scalar|Param|null, // Default: "logout" - * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" - * csrf_token_manager?: scalar|Param|null, - * path?: scalar|Param|null, // Default: "/logout" - * target?: scalar|Param|null, // Default: "/" - * invalidate_session?: bool|Param, // Default: true - * clear_site_data?: string|list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, - * delete_cookies?: string|array, - * }, - * switch_user?: array{ - * provider?: scalar|Param|null, - * parameter?: scalar|Param|null, // Default: "_switch_user" - * role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH" - * target_route?: scalar|Param|null, // Default: null - * }, - * required_badges?: list, - * custom_authenticators?: list, - * login_throttling?: array{ - * limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". - * max_attempts?: int|Param, // Default: 5 - * interval?: scalar|Param|null, // Default: "1 minute" - * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null - * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" - * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null - * }, - * x509?: array{ - * provider?: scalar|Param|null, - * user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email" - * credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN" - * user_identifier?: scalar|Param|null, // Default: "emailAddress" - * }, - * remote_user?: array{ - * provider?: scalar|Param|null, - * user?: scalar|Param|null, // Default: "REMOTE_USER" - * }, - * jwt?: array{ - * provider?: scalar|Param|null, // Default: null - * authenticator?: scalar|Param|null, // Default: "lexik_jwt_authentication.security.jwt_authenticator" - * }, - * login_link?: array{ - * check_route?: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify". - * check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false - * signature_properties?: list, - * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 - * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null - * used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set. - * success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. - * failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. - * provider?: scalar|Param|null, // The user provider to load users from. - * secret?: scalar|Param|null, // Default: "%kernel.secret%" - * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|Param|null, // Default: "/" - * login_path?: scalar|Param|null, // Default: "/login" - * target_path_parameter?: scalar|Param|null, // Default: "_target_path" - * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|Param|null, // Default: null - * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" - * }, - * form_login?: array{ - * provider?: scalar|Param|null, - * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|Param|null, - * failure_handler?: scalar|Param|null, - * check_path?: scalar|Param|null, // Default: "/login_check" - * use_forward?: bool|Param, // Default: false - * login_path?: scalar|Param|null, // Default: "/login" - * username_parameter?: scalar|Param|null, // Default: "_username" - * password_parameter?: scalar|Param|null, // Default: "_password" - * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|Param|null, // Default: "authenticate" - * enable_csrf?: bool|Param, // Default: false - * post_only?: bool|Param, // Default: true - * form_only?: bool|Param, // Default: false - * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|Param|null, // Default: "/" - * target_path_parameter?: scalar|Param|null, // Default: "_target_path" - * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|Param|null, // Default: null - * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" - * }, - * form_login_ldap?: array{ - * provider?: scalar|Param|null, - * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|Param|null, - * failure_handler?: scalar|Param|null, - * check_path?: scalar|Param|null, // Default: "/login_check" - * use_forward?: bool|Param, // Default: false - * login_path?: scalar|Param|null, // Default: "/login" - * username_parameter?: scalar|Param|null, // Default: "_username" - * password_parameter?: scalar|Param|null, // Default: "_password" - * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|Param|null, // Default: "authenticate" - * enable_csrf?: bool|Param, // Default: false - * post_only?: bool|Param, // Default: true - * form_only?: bool|Param, // Default: false - * always_use_default_target_path?: bool|Param, // Default: false - * default_target_path?: scalar|Param|null, // Default: "/" - * target_path_parameter?: scalar|Param|null, // Default: "_target_path" - * use_referer?: bool|Param, // Default: false - * failure_path?: scalar|Param|null, // Default: null - * failure_forward?: bool|Param, // Default: false - * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" - * service?: scalar|Param|null, // Default: "ldap" - * dn_string?: scalar|Param|null, // Default: "{user_identifier}" - * query_string?: scalar|Param|null, - * search_dn?: scalar|Param|null, // Default: "" - * search_password?: scalar|Param|null, // Default: "" - * }, - * json_login?: array{ - * provider?: scalar|Param|null, - * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|Param|null, - * failure_handler?: scalar|Param|null, - * check_path?: scalar|Param|null, // Default: "/login_check" - * use_forward?: bool|Param, // Default: false - * login_path?: scalar|Param|null, // Default: "/login" - * username_path?: scalar|Param|null, // Default: "username" - * password_path?: scalar|Param|null, // Default: "password" - * }, - * json_login_ldap?: array{ - * provider?: scalar|Param|null, - * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|Param|null, - * failure_handler?: scalar|Param|null, - * check_path?: scalar|Param|null, // Default: "/login_check" - * use_forward?: bool|Param, // Default: false - * login_path?: scalar|Param|null, // Default: "/login" - * username_path?: scalar|Param|null, // Default: "username" - * password_path?: scalar|Param|null, // Default: "password" - * service?: scalar|Param|null, // Default: "ldap" - * dn_string?: scalar|Param|null, // Default: "{user_identifier}" - * query_string?: scalar|Param|null, - * search_dn?: scalar|Param|null, // Default: "" - * search_password?: scalar|Param|null, // Default: "" - * }, - * access_token?: array{ - * provider?: scalar|Param|null, - * remember_me?: bool|Param, // Default: true - * success_handler?: scalar|Param|null, - * failure_handler?: scalar|Param|null, - * realm?: scalar|Param|null, // Default: null - * token_extractors?: string|list, - * token_handler?: string|array{ - * id?: scalar|Param|null, - * oidc_user_info?: string|array{ - * base_uri?: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). - * discovery?: array{ // Enable the OIDC discovery. - * cache?: array{ - * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. - * }, - * }, - * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" - * client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server. - * }, - * oidc?: array{ - * discovery?: array{ // Enable the OIDC discovery. - * base_uri?: string|list, - * cache?: array{ - * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. - * }, - * }, - * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" - * audience?: scalar|Param|null, // Audience set in the token, for validation purpose. - * issuers?: list, - * algorithm?: array, - * algorithms?: list, - * key?: scalar|Param|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). - * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). - * encryption?: bool|array{ - * enabled?: bool|Param, // Default: false - * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false - * algorithms?: list, - * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). - * }, - * }, - * cas?: array{ - * validation_url?: scalar|Param|null, // CAS server validation URL - * prefix?: scalar|Param|null, // CAS prefix // Default: "cas" - * http_client?: scalar|Param|null, // HTTP Client service // Default: null - * }, - * oauth2?: scalar|Param|null, - * }, - * }, - * http_basic?: array{ - * provider?: scalar|Param|null, - * realm?: scalar|Param|null, // Default: "Secured Area" - * }, - * http_basic_ldap?: array{ - * provider?: scalar|Param|null, - * realm?: scalar|Param|null, // Default: "Secured Area" - * service?: scalar|Param|null, // Default: "ldap" - * dn_string?: scalar|Param|null, // Default: "{user_identifier}" - * query_string?: scalar|Param|null, - * search_dn?: scalar|Param|null, // Default: "" - * search_password?: scalar|Param|null, // Default: "" - * }, - * remember_me?: array{ - * secret?: scalar|Param|null, // Default: "%kernel.secret%" - * service?: scalar|Param|null, - * user_providers?: string|list, - * catch_exceptions?: bool|Param, // Default: true - * signature_properties?: list, - * token_provider?: string|array{ - * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. - * doctrine?: bool|array{ - * enabled?: bool|Param, // Default: false - * connection?: scalar|Param|null, // Default: null - * }, - * }, - * token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier. - * name?: scalar|Param|null, // Default: "REMEMBERME" - * lifetime?: int|Param, // Default: 31536000 - * path?: scalar|Param|null, // Default: "/" - * domain?: scalar|Param|null, // Default: null - * secure?: true|false|"auto"|Param, // Default: false - * httponly?: bool|Param, // Default: true - * samesite?: null|"lax"|"strict"|"none"|Param, // Default: null - * always_remember_me?: bool|Param, // Default: false - * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" - * }, - * }>, - * access_control?: list, - * attributes?: array, - * route?: scalar|Param|null, // Default: null - * methods?: string|list, - * allow_if?: scalar|Param|null, // Default: null - * roles?: string|list, - * }>, - * role_hierarchy?: array>, - * } - * @psalm-type TwigConfig = array{ - * form_themes?: list, - * globals?: array, - * autoescape_service?: scalar|Param|null, // Default: null - * autoescape_service_method?: scalar|Param|null, // Default: null - * base_template_class?: scalar|Param|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. - * cache?: scalar|Param|null, // Default: true - * charset?: scalar|Param|null, // Default: "%kernel.charset%" - * debug?: bool|Param, // Default: "%kernel.debug%" - * strict_variables?: bool|Param, // Default: "%kernel.debug%" - * auto_reload?: scalar|Param|null, - * optimizations?: int|Param, - * default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" - * file_name_pattern?: string|list, - * paths?: array, - * date?: array{ // The default format options used by the date filter. - * format?: scalar|Param|null, // Default: "F j, Y H:i" - * interval_format?: scalar|Param|null, // Default: "%d days" - * timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null - * }, - * number_format?: array{ // The default format options for the number_format filter. - * decimals?: int|Param, // Default: 0 - * decimal_point?: scalar|Param|null, // Default: "." - * thousands_separator?: scalar|Param|null, // Default: "," - * }, - * mailer?: array{ - * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null - * }, - * } - * @psalm-type DoctrineConfig = array{ - * dbal?: array{ - * default_connection?: scalar|Param|null, - * types?: array, - * driver_schemes?: array, - * connections?: array, - * mapping_types?: array, - * default_table_options?: array, - * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.legacy_schema_manager_factory" - * result_cache?: scalar|Param|null, - * slaves?: array, - * replicas?: array, - * }>, - * }, - * orm?: array{ - * default_entity_manager?: scalar|Param|null, - * auto_generate_proxy_classes?: scalar|Param|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false - * enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true - * enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false - * proxy_dir?: scalar|Param|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" - * proxy_namespace?: scalar|Param|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" - * controller_resolver?: bool|array{ - * enabled?: bool|Param, // Default: true - * auto_mapping?: bool|Param|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null - * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false - * }, - * entity_managers?: array, - * }>, - * }>, - * }, - * connection?: scalar|Param|null, - * class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" - * default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository" - * auto_mapping?: scalar|Param|null, // Default: false - * naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default" - * quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default" - * typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default" - * entity_listener_resolver?: scalar|Param|null, // Default: null - * fetch_mode_subselect_batch_size?: scalar|Param|null, - * repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory" - * schema_ignore_classes?: list, - * report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true - * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false - * second_level_cache?: array{ - * region_cache_driver?: string|array{ - * type?: scalar|Param|null, // Default: null - * id?: scalar|Param|null, - * pool?: scalar|Param|null, - * }, - * region_lock_lifetime?: scalar|Param|null, // Default: 60 - * log_enabled?: bool|Param, // Default: true - * region_lifetime?: scalar|Param|null, // Default: 3600 - * enabled?: bool|Param, // Default: true - * factory?: scalar|Param|null, - * regions?: array, - * loggers?: array, - * }, - * hydrators?: array, - * mappings?: array, - * dql?: array{ - * string_functions?: array, - * numeric_functions?: array, - * datetime_functions?: array, - * }, - * filters?: array, - * }>, - * identity_generation_preferences?: array, - * }>, - * resolve_target_entities?: array, - * }, - * } - * @psalm-type SyliusStateMachineAbstractionConfig = array{ - * default_adapter?: scalar|Param|null, // Default: "symfony_workflow" - * graphs_to_adapters_mapping?: array, - * } - * @psalm-type SyliusOrderConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * order?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\Order" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\OrderBundle\\Form\\Type\\OrderType" - * }, - * }, - * order_item?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItem" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\OrderBundle\\Form\\Type\\OrderItemType" - * }, - * }, - * order_item_unit?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemUnit" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderItemUnitInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Factory\\OrderItemUnitFactory" - * }, - * }, - * adjustment?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\Adjustment" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\AdjustmentInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * order_sequence?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderSequence" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Order\\Model\\OrderSequenceInterface" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * }, - * expiration?: array{ - * cart?: scalar|Param|null, // Default: "2 days" - * order?: scalar|Param|null, // Default: "5 days" - * }, - * } - * @psalm-type SyliusMoneyConfig = array{ - * locale?: scalar|Param|null, // Default: "en" - * currency?: scalar|Param|null, // Default: "USD" - * } - * @psalm-type SyliusCurrencyConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * currency?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\Currency" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\CurrencyInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Doctrine\\ORM\\CurrencyRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Form\\Type\\CurrencyType" - * }, - * }, - * exchange_rate?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\ExchangeRate" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Currency\\Model\\ExchangeRateInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Doctrine\\ORM\\ExchangeRateRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CurrencyBundle\\Form\\Type\\ExchangeRateType" - * }, - * }, - * }, - * } - * @psalm-type SyliusLocaleConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * locale?: scalar|Param|null, // Default: "en" - * resources?: array{ - * locale?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Locale\\Model\\Locale" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Locale\\Model\\LocaleInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\LocaleBundle\\Form\\Type\\LocaleType" - * }, - * }, - * }, - * } - * @psalm-type SyliusProductConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * product?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\Product" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductTranslationRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductTranslationType" - * }, - * }, - * }, - * product_variant?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariant" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductVariantRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductVariantType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductVariantTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductVariantTranslationRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductVariantTranslationType" - * }, - * }, - * }, - * product_option?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOption" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionTranslationRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionTranslationType" - * }, - * }, - * }, - * product_option_value?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValue" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionValueRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionValueType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductOptionValueTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductOptionValueTranslationRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductOptionValueTranslationType" - * }, - * }, - * }, - * product_association?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationRepository" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationType" - * }, - * }, - * product_association_type?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationType" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationTypeRepository" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationTypeType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Product\\Model\\ProductAssociationTypeTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Doctrine\\ORM\\ProductAssociationTypeTranslationRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ProductBundle\\Form\\Type\\ProductAssociationTypeTranslationType" - * }, - * }, - * }, - * }, - * } - * @psalm-type SyliusChannelConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * debug?: bool|Param|null, // Default: null - * resources?: array{ - * channel?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Channel\\Model\\Channel" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Channel\\Model\\ChannelInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ChannelBundle\\Form\\Type\\ChannelType" - * }, - * }, - * }, - * } - * @psalm-type SyliusAttributeConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array, - * } - * @psalm-type SyliusTaxationConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * tax_category?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxCategory" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxCategoryInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxationBundle\\Form\\Type\\TaxCategoryType" - * }, - * }, - * tax_rate?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxRate" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxation\\Model\\TaxRateInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxationBundle\\Form\\Type\\TaxRateType" - * }, - * }, - * }, - * } - * @psalm-type SyliusShippingConfig = array{ - * shipping_method_rule?: array{ - * validation_groups?: array, - * }, - * shipping_method_calculator?: array{ - * validation_groups?: array, - * }, - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * shipment?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\Shipment" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShipmentType" - * }, - * }, - * shipment_unit?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentUnit" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShipmentUnitInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * shipping_method?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethod" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodTranslationType" - * }, - * }, - * }, - * shipping_method_rule?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodRule" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingMethodRuleInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingMethodRuleType" - * }, - * }, - * shipping_category?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingCategory" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Shipping\\Model\\ShippingCategoryInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ShippingBundle\\Form\\Type\\ShippingCategoryType" - * }, - * }, - * }, - * } - * @psalm-type SyliusPaymentConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * encryption?: array{ - * enabled?: bool|Param, // Default: true - * disabled_for_factories?: list, - * }, - * gateways?: array, - * gateway_config?: array{ - * validation_groups?: array, - * }, - * payment_request?: array{ - * states_to_be_cancelled_when_payment_method_changed?: list, - * }, - * resources?: array{ - * gateway_config?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\GatewayConfig" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\GatewayConfigInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\GatewayConfigType" - * }, - * }, - * payment_method?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethod" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Doctrine\\ORM\\PaymentMethodRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentMethodType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentMethodTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentMethodTranslationType" - * }, - * }, - * }, - * payment?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\Payment" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Form\\Type\\PaymentType" - * }, - * }, - * payment_request?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentRequest" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Model\\PaymentRequestInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\PaymentBundle\\Doctrine\\ORM\\PaymentRequestRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Payment\\Factory\\PaymentRequestFactory" - * form?: scalar|Param|null, // Default: null - * }, - * }, - * }, - * } - * @psalm-type SyliusMailerConfig = array{ - * sender_adapter?: scalar|Param|null, - * renderer_adapter?: scalar|Param|null, - * sender?: array{ - * name?: scalar|Param|null, // Default: "Example.com Store" - * address?: scalar|Param|null, // Default: "no-reply@example.com" - * }, - * emails?: array, - * templates?: array, - * } - * @psalm-type SyliusPromotionConfig = array{ - * promotion_action?: array{ - * validation_groups?: array, - * }, - * promotion_rule?: array{ - * validation_groups?: array, - * }, - * catalog_promotion_action?: array{ - * validation_groups?: array, - * }, - * catalog_promotion_scope?: array{ - * validation_groups?: array, - * }, - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * promotion_subject?: array{ - * classes?: array{ - * model?: scalar|Param|null, - * }, - * }, - * promotion?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\Promotion" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionTranslationType" - * }, - * }, - * }, - * catalog_promotion?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotion" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\CatalogPromotionType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\CatalogPromotionTranslationType" - * }, - * }, - * }, - * catalog_promotion_scope?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionScope" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionScopeInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" - * }, - * }, - * catalog_promotion_action?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionAction" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\CatalogPromotionActionInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" - * }, - * }, - * promotion_rule?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionRule" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionRuleInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionRuleType" - * }, - * }, - * promotion_action?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionAction" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionActionInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionActionType" - * }, - * }, - * promotion_coupon?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionCoupon" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Promotion\\Model\\PromotionCouponInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Controller\\PromotionCouponController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\PromotionBundle\\Form\\Type\\PromotionCouponType" - * }, - * }, - * }, - * } - * @psalm-type SyliusAddressingConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * provider?: scalar|Param|null, // Default: "sylius.province_name_provider" - * zone_member?: array{ - * validation_groups?: array, - * }, - * resources?: array{ - * address?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Address" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\AddressInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\AddressRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\AddressType" - * }, - * }, - * address_log_entry?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\AddressLogEntry" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * country?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Country" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\CountryInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\CountryRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\CountryType" - * }, - * }, - * province?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Province" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ProvinceInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\ProvinceRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ProvinceType" - * }, - * }, - * zone?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\Zone" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Repository\\ZoneRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ZoneType" - * }, - * }, - * zone_member?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneMember" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Addressing\\Model\\ZoneMemberInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Doctrine\\ORM\\ZoneMemberRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\AddressingBundle\\Form\\Type\\ZoneMemberType" - * }, - * }, - * }, - * scopes?: array, - * } - * @psalm-type SyliusInventoryConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * inventory_unit?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Inventory\\Model\\InventoryUnit" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Inventory\\Model\\InventoryUnitInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * }, - * } - * @psalm-type SyliusTaxonomyConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * taxon?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\Taxon" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\TranslatableFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxonomyBundle\\Form\\Type\\TaxonType" - * }, - * translation?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonTranslation" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Taxonomy\\Model\\TaxonTranslationInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\TaxonomyBundle\\Form\\Type\\TaxonTranslationType" - * }, - * }, - * }, - * }, - * } - * @psalm-type SyliusUserConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array, - * } - * @psalm-type SyliusCustomerConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array{ - * customer?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\Customer" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Form\\Type\\CustomerType" - * }, - * }, - * customer_group?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerGroup" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Customer\\Model\\CustomerGroupInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Doctrine\\ORM\\CustomerGroupRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CustomerBundle\\Form\\Type\\CustomerGroupType" - * }, - * }, - * }, - * } - * @psalm-type SyliusUiConfig = array{ - * twig_ux?: array{ - * live_component_tags?: array, - * anonymous_component_template_prefixes?: array, - * component_default_template?: scalar|Param|null, // Default: "@SyliusUi/components/default.html.twig" - * }, - * } - * @psalm-type SyliusReviewConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * resources?: array, - * } - * @psalm-type SyliusCoreConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * prepend_doctrine_migrations?: bool|Param, // Default: true - * shipping_address_based_taxation?: bool|Param, // Default: false - * order_by_identifier?: bool|Param, // Default: true - * process_shipments_before_recalculating_prices?: bool|Param, // Deprecated: The "sylius_core.process_shipments_before_recalculating_prices.process_shipments_before_recalculating_prices" parameter is deprecated and will be removed in 2.0. // Default: false - * order_token_length?: int|Param, // Default: 64 - * max_int_value?: int|Param, // Default: 2147483647 - * orders_statistics?: array{ - * intervals_map?: array, - * }, - * catalog_promotions?: array{ - * batch_size?: int|Param, // Default: 100 - * }, - * price_history?: array{ - * batch_size?: int|Param, // Default: 100 - * }, - * filesystem?: array{ - * adapter?: scalar|Param|null, // Default: "default" - * }, - * allowed_images_mime_types?: list, - * checkout?: array{ - * payment?: array{ - * allowed_states?: list, - * }, - * }, - * telemetry?: array{ - * enabled?: bool|Param, // Default: true - * business?: bool|Param, // Default: true - * technical?: bool|Param, // Default: true - * plugins?: bool|Param, // Default: true - * salt?: scalar|Param|null, // Default: null - * url?: scalar|Param|null, // Default: "https://prism.sylius.com/telemetry" - * query_timeout?: int|Param, // Default: 60000 - * }, - * resources?: array{ - * product_image?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductImage" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductImageInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * avatar_image?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\AvatarImage" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\AvatarImageInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * taxon_image?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\TaxonImage" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\TaxonImageInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * product_taxon?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductTaxon" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ProductTaxonInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Controller\\ProductTaxonController" - * repository?: scalar|Param|null, - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * channel_pricing?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricing" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * repository?: scalar|Param|null, - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Form\\Type\\Product\\ChannelPricingType" - * }, - * }, - * channel_pricing_log_entry?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingLogEntry" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPricingLogEntryInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * repository?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Doctrine\\ORM\\ChannelPricingLogEntryRepository" - * factory?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Factory\\ChannelPricingLogEntryFactory" - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" - * }, - * }, - * shop_billing_data?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ShopBillingData" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ShopBillingDataInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * repository?: scalar|Param|null, - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\CoreBundle\\Form\\Type\\ShopBillingDataType" - * }, - * }, - * channel_price_history_config?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPriceHistoryConfig" - * interface?: scalar|Param|null, // Default: "Sylius\\Component\\Core\\Model\\ChannelPriceHistoryConfigInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * repository?: scalar|Param|null, - * form?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Form\\Type\\DefaultResourceType" - * }, - * }, - * }, - * } - * @psalm-type SyliusResourceConfig = array{ - * resources?: array, - * settings?: array{ - * paginate?: mixed, // Default: null - * limit?: mixed, // Default: null - * allowed_paginate?: list, - * default_page_size?: int|Param, // Default: 10 - * default_templates_dir?: scalar|Param|null, // Default: null - * sortable?: bool|Param, // Default: false - * sorting?: mixed, // Default: null - * filterable?: bool|Param, // Default: false - * criteria?: mixed, // Default: null - * state_machine_component?: scalar|Param|null, // Default: null - * }, - * translation?: bool|array{ - * enabled?: bool|Param, // Default: true - * locale_provider?: scalar|Param|null, // Default: "sylius.translation_locale_provider.immutable" - * }, - * drivers?: list<"doctrine/orm"|"doctrine/mongodb-odm"|"doctrine/phpcr-odm"|Param>, - * mapping?: array{ - * imports?: list, - * paths?: list, - * }, - * authorization_checker?: scalar|Param|null, // Default: "sylius.resource_controller.authorization_checker.disabled" - * routing_path_bc_layer?: bool|Param, - * path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "sylius.metadata.path_segment_name_generator.dash" - * } - * @psalm-type SyliusGridConfig = array{ - * drivers?: list<"doctrine/orm"|"doctrine/phpcr-odm"|Param>, - * templates?: array{ - * filter?: array, - * action?: array, - * bulk_action?: array, - * }, - * grids?: array, - * }, - * sorting?: array, - * limits?: list, - * fields?: array, - * }>, - * filters?: array, - * form_options?: list, - * default_value?: mixed, - * }>, - * actions?: array, - * }>>, - * removals?: array, - * }>, - * } - * @psalm-type KnpGaufretteConfig = array{ - * adapters?: array, - * }, - * service?: array{ - * id?: scalar|Param|null, - * }, - * local?: array{ - * directory?: scalar|Param|null, - * create?: bool|Param, // Default: true - * }, - * safe_local?: array{ - * directory?: scalar|Param|null, - * create?: bool|Param, // Default: true - * }, - * async_aws_s3?: array{ - * service_id?: scalar|Param|null, - * bucket_name?: scalar|Param|null, - * detect_content_type?: bool|Param, // Default: false - * options?: array{ - * directory?: scalar|Param|null, // Default: "" - * create?: bool|Param, // Default: false - * acl?: scalar|Param|null, // Default: "private" - * }, - * }, - * aws_s3?: array{ - * service_id?: scalar|Param|null, - * bucket_name?: scalar|Param|null, - * detect_content_type?: bool|Param, // Default: false - * options?: array{ - * directory?: scalar|Param|null, // Default: "" - * create?: bool|Param, // Default: false - * acl?: scalar|Param|null, // Default: "private" - * }, - * }, - * doctrine_dbal?: array{ - * connection_name?: scalar|Param|null, - * table?: scalar|Param|null, - * columns?: array{ - * key?: scalar|Param|null, - * content?: scalar|Param|null, - * mtime?: scalar|Param|null, - * checksum?: scalar|Param|null, - * }, - * }, - * azure_blob_storage?: array{ - * blob_proxy_factory_id?: scalar|Param|null, - * container_name?: scalar|Param|null, - * create_container?: bool|Param, // Default: false - * detect_content_type?: bool|Param, // Default: true - * multi_container_mode?: bool|Param, // Default: false - * }, - * google_cloud_storage?: array{ - * service_id?: scalar|Param|null, - * bucket_name?: scalar|Param|null, - * detect_content_type?: bool|Param, // Default: true - * options?: array{ - * directory?: scalar|Param|null, // Default: "" - * acl?: scalar|Param|null, // Default: "private" - * project_id?: scalar|Param|null, - * bucket_location?: scalar|Param|null, - * create?: bool|Param, // Default: false - * }, - * }, - * gridfs?: array{ - * mongogridfs_id?: scalar|Param|null, - * }, - * ftp?: array{ - * directory?: scalar|Param|null, - * host?: scalar|Param|null, - * port?: scalar|Param|null, // Default: 21 - * username?: scalar|Param|null, // Default: null - * password?: scalar|Param|null, // Default: null - * timeout?: scalar|Param|null, // Default: 90 - * passive?: bool|Param, // Default: false - * create?: bool|Param, // Default: false - * ssl?: bool|Param, // Default: false - * utf8?: bool|Param, // Default: false - * mode?: scalar|Param|null, // Default: 1 - * }, - * phpseclib_sftp?: array{ - * phpseclib_sftp_id?: scalar|Param|null, - * directory?: scalar|Param|null, // Default: null - * create?: bool|Param, // Default: false - * }, - * }>, - * filesystems?: array, - * stream_wrapper?: array{ - * protocol?: scalar|Param|null, // Default: "gaufrette" - * filesystems?: array, - * }, - * factories?: array, - * } - * @psalm-type KnpMenuConfig = array{ - * providers?: array{ - * builder_alias?: bool|Param, // Default: true - * }, - * twig?: array{ - * template?: scalar|Param|null, // Default: "@KnpMenu/menu.html.twig" - * }, - * templating?: bool|Param, // Default: false - * default_renderer?: scalar|Param|null, // Default: "twig" - * } - * @psalm-type LiipImagineConfig = array{ - * resolvers?: array, - * get_options?: array, - * put_options?: array, - * proxies?: array, - * }, - * flysystem?: array{ - * filesystem_service?: scalar|Param|null, - * cache_prefix?: scalar|Param|null, // Default: "" - * root_url?: scalar|Param|null, - * visibility?: "public"|"private"|"noPredefinedVisibility"|Param, // Default: "public" - * }, - * }>, - * loaders?: array, - * allow_unresolvable_data_roots?: bool|Param, // Default: false - * bundle_resources?: array{ - * enabled?: bool|Param, // Default: false - * access_control_type?: "blacklist"|"whitelist"|Param, // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" - * access_control_list?: list, - * }, - * }, - * flysystem?: array{ - * filesystem_service?: scalar|Param|null, - * }, - * asset_mapper?: array, - * chain?: array{ - * loaders?: list, - * }, - * }>, - * driver?: scalar|Param|null, // Default: "gd" - * cache?: scalar|Param|null, // Default: "default" - * cache_base_path?: scalar|Param|null, // Default: "" - * data_loader?: scalar|Param|null, // Default: "default" - * default_image?: scalar|Param|null, // Default: null - * default_filter_set_settings?: array{ - * quality?: scalar|Param|null, // Default: 100 - * jpeg_quality?: scalar|Param|null, // Default: null - * png_compression_level?: scalar|Param|null, // Default: null - * png_compression_filter?: scalar|Param|null, // Default: null - * format?: scalar|Param|null, // Default: null - * animated?: bool|Param, // Default: false - * cache?: scalar|Param|null, // Default: null - * data_loader?: scalar|Param|null, // Default: null - * default_image?: scalar|Param|null, // Default: null - * filters?: array>, - * post_processors?: array>, - * }, - * controller?: array{ - * filter_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" - * filter_runtime_action?: scalar|Param|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" - * redirect_response_code?: int|Param, // Default: 302 - * }, - * filter_sets?: array>, - * post_processors?: array>, - * }>, - * twig?: array{ - * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" - * assets_version?: scalar|Param|null, // Default: null - * }, - * enqueue?: bool|Param, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false - * messenger?: bool|array{ // Enables integration with symfony/messenger if set true. Warmup image caches in background by sending messages to MQ. - * enabled?: bool|Param, // Default: false - * }, - * templating?: bool|Param, // Enables integration with symfony/templating component // Default: true - * webp?: array{ - * generate?: bool|Param, // Default: false - * quality?: int|Param, // Default: 100 - * cache?: scalar|Param|null, // Default: null - * data_loader?: scalar|Param|null, // Default: null - * post_processors?: array>, - * }, - * } - * @psalm-type PayumConfig = array{ - * security?: array{ - * token_storage?: array, - * propel2?: array, - * }>, - * }, - * dynamic_gateways?: array{ - * sonata_admin?: bool|Param, // Default: false - * config_storage?: array, - * propel2?: array, - * }>, - * encryption?: array{ - * defuse_secret_key?: scalar|Param|null, - * }, - * }, - * gateways?: array, - * storages?: array, - * factories?: array, - * }, - * filesystem?: array{ - * storage_dir?: scalar|Param|null, - * id_property?: scalar|Param|null, // Default: null - * }, - * doctrine?: string|array{ - * driver?: scalar|Param|null, - * }, - * custom?: string|array{ - * service?: scalar|Param|null, - * }, - * propel1?: array, - * propel2?: array, - * }>, - * } - * @psalm-type StofDoctrineExtensionsConfig = array{ - * orm?: array, - * mongodb?: array, - * class?: array{ - * translatable?: scalar|Param|null, // Default: "Gedmo\\Translatable\\TranslatableListener" - * timestampable?: scalar|Param|null, // Default: "Gedmo\\Timestampable\\TimestampableListener" - * blameable?: scalar|Param|null, // Default: "Gedmo\\Blameable\\BlameableListener" - * sluggable?: scalar|Param|null, // Default: "Gedmo\\Sluggable\\SluggableListener" - * tree?: scalar|Param|null, // Default: "Gedmo\\Tree\\TreeListener" - * loggable?: scalar|Param|null, // Default: "Gedmo\\Loggable\\LoggableListener" - * sortable?: scalar|Param|null, // Default: "Gedmo\\Sortable\\SortableListener" - * softdeleteable?: scalar|Param|null, // Default: "Gedmo\\SoftDeleteable\\SoftDeleteableListener" - * uploadable?: scalar|Param|null, // Default: "Gedmo\\Uploadable\\UploadableListener" - * reference_integrity?: scalar|Param|null, // Default: "Gedmo\\ReferenceIntegrity\\ReferenceIntegrityListener" - * }, - * softdeleteable?: array{ - * handle_post_flush_event?: bool|Param, // Default: false - * }, - * uploadable?: array{ - * default_file_path?: scalar|Param|null, // Default: null - * mime_type_guesser_class?: scalar|Param|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\MimeTypeGuesserAdapter" - * default_file_info_class?: scalar|Param|null, // Default: "Stof\\DoctrineExtensionsBundle\\Uploadable\\UploadedFileInfo" - * validate_writable_directory?: bool|Param, // Default: true - * }, - * default_locale?: scalar|Param|null, // Default: "en" - * translation_fallback?: bool|Param, // Default: false - * persist_default_translation?: bool|Param, // Default: false - * skip_translation_on_load?: bool|Param, // Default: false - * metadata_cache_pool?: scalar|Param|null, // Default: null - * } - * @psalm-type BabdevPagerfantaConfig = array{ - * default_view?: scalar|Param|null, // Default: "default" - * default_twig_template?: scalar|Param|null, // Default: "@BabDevPagerfanta/default.html.twig" - * exceptions_strategy?: array{ - * out_of_range_page?: "to_http_not_found"|"custom"|Param, // Default: "to_http_not_found" - * not_valid_current_page?: "to_http_not_found"|"custom"|Param, // Default: "to_http_not_found" - * }, - * } - * @psalm-type DoctrineMigrationsConfig = array{ - * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false - * migrations_paths?: array, - * services?: array, - * factories?: array, - * storage?: array{ // Storage to use for migration status metadata. - * table_storage?: array{ // The default metadata storage, implemented as a table in the database. - * table_name?: scalar|Param|null, // Default: null - * version_column_name?: scalar|Param|null, // Default: null - * version_column_length?: scalar|Param|null, // Default: null - * executed_at_column_name?: scalar|Param|null, // Default: null - * execution_time_column_name?: scalar|Param|null, // Default: null - * }, - * }, - * migrations?: list, - * connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null - * em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null - * all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false - * check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true - * custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null - * organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false - * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false - * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true - * } - * @psalm-type SyliusFixturesConfig = array{ - * suites?: array, - * }>, - * listeners?: array, - * }>, - * }>, - * } - * @psalm-type SyliusPayumConfig = array{ - * driver?: scalar|Param|null, // Default: "doctrine/orm" - * template?: array{ - * layout?: scalar|Param|null, // Default: "@SyliusPayum/layout.html.twig" - * obtain_credit_card?: scalar|Param|null, // Default: "@SyliusPayum/Action/obtainCreditCard.html.twig" - * }, - * resources?: array{ - * payment_security_token?: array{ - * classes?: array{ - * model?: scalar|Param|null, // Default: "Sylius\\Bundle\\PayumBundle\\Model\\PaymentSecurityToken" - * interface?: scalar|Param|null, // Default: "Sylius\\Bundle\\PayumBundle\\Model\\PaymentSecurityTokenInterface" - * controller?: scalar|Param|null, // Default: "Sylius\\Bundle\\ResourceBundle\\Controller\\ResourceController" - * factory?: scalar|Param|null, // Default: "Sylius\\Resource\\Factory\\Factory" - * }, - * }, - * }, - * } - * @psalm-type SyliusThemeConfig = array{ - * sources?: array{ - * filesystem?: bool|array{ - * enabled?: bool|Param, // Default: false - * filename?: scalar|Param|null, // Default: "composer.json" - * scan_depth?: scalar|Param|null, // Restrict depth to scan for configuration file inside theme folder // Default: 1 - * directories?: list, - * }, - * test?: bool|array{ - * enabled?: bool|Param, // Default: false - * }, - * }, - * assets?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * templating?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * translations?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * context?: scalar|Param|null, // Default: "sylius.theme.context.settable" - * legacy_mode?: bool|Param, // Deprecated: "legacy_mode" at path "sylius_theme.legacy_mode" is deprecated since Sylius/ThemeBundle 2.0 and will be removed in 3.0. // Default: false - * } - * @psalm-type SyliusAdminConfig = array{ - * notifications?: array{ - * enabled?: bool|Param, // Default: true - * hub_enabled?: bool|Param, // Default: true - * frequency?: int|Param, // Default: 1440 - * }, - * twig?: array{ - * payment_method?: array{ - * excluded_gateways?: list, - * }, - * }, - * } - * @psalm-type SyliusShopConfig = array{ - * locale_switcher?: "storage"|"url"|Param, // Default: "url" - * firewall_context_name?: scalar|Param|null, // Default: "shop" - * checkout_resolver?: array{ - * enabled?: bool|Param, // Default: true - * pattern?: scalar|Param|null, // Default: "/checkout/.+" - * route_map?: array, - * }, - * product_grid?: array{ - * include_all_descendants?: bool|Param, // Default: false - * }, - * order_pay?: array{ - * payment_request_pay_route?: scalar|Param|null, // Default: "sylius_shop_payment_request_pay" - * payment_request_pay_route_parameters?: array{ - * hash?: scalar|Param|null, // Default: "paymentRequest.getHash()" - * }, - * after_pay_route?: scalar|Param|null, // Default: "sylius_shop_order_after_pay" - * after_pay_route_parameters?: array{ - * hash?: scalar|Param|null, // Default: "paymentRequest.getHash()" - * }, - * final_route?: scalar|Param|null, // Default: "sylius_shop_order_thank_you" - * final_route_parameters?: array, - * retry_route?: scalar|Param|null, // Default: "sylius_shop_order_show" - * retry_route_parameters?: array{ - * tokenValue?: scalar|Param|null, // Default: "order.getTokenValue()" - * }, - * }, - * } - * @psalm-type DebugConfig = array{ - * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 - * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 - * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 - * dump_destination?: scalar|Param|null, // A stream URL where dumps should be written to. // Default: null - * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" - * } - * @psalm-type WebProfilerConfig = array{ - * toolbar?: bool|array{ // Profiler toolbar configuration - * enabled?: bool|Param, // Default: false - * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false - * }, - * intercept_redirects?: bool|Param, // Default: false - * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" - * } - * @psalm-type ApiPlatformConfig = array{ - * title?: scalar|Param|null, // The title of the API. // Default: "" - * description?: scalar|Param|null, // The description of the API. // Default: "" - * version?: scalar|Param|null, // The version of the API. // Default: "0.0.0" - * show_webby?: bool|Param, // If true, show Webby on the documentation page // Default: true - * use_symfony_listeners?: bool|Param, // Uses Symfony event listeners instead of the ApiPlatform\Symfony\Controller\MainController. // Default: false - * name_converter?: scalar|Param|null, // Specify a name converter to use. // Default: null - * asset_package?: scalar|Param|null, // Specify an asset package name to use. // Default: null - * path_segment_name_generator?: scalar|Param|null, // Specify a path name generator to use. // Default: "api_platform.metadata.path_segment_name_generator.underscore" - * inflector?: scalar|Param|null, // Specify an inflector to use. // Default: "api_platform.metadata.inflector" - * validator?: array{ - * serialize_payload_fields?: mixed, // Set to null to serialize all payload fields when a validation error is thrown, or set the fields you want to include explicitly. // Default: [] - * query_parameter_validation?: bool|Param, // Deprecated: Will be removed in API Platform 5.0. // Default: true - * }, - * jsonapi?: array{ - * use_iri_as_id?: bool|Param, // Set to false to use entity identifiers instead of IRIs as the "id" field in JSON:API responses. // Default: true - * allow_client_generated_id?: bool|Param, // Allow client-generated IDs on JSON:API POST per https://jsonapi.org/format/#crud-creating-client-ids. Off by default to prevent id spoofing on public endpoints. // Default: false - * }, - * eager_loading?: bool|array{ - * enabled?: bool|Param, // Default: true - * fetch_partial?: bool|Param, // Fetch only partial data according to serialization groups. If enabled, Doctrine ORM entities will not work as expected if any of the other fields are used. // Default: false - * max_joins?: int|Param, // Max number of joined relations before EagerLoading throws a RuntimeException // Default: 30 - * force_eager?: bool|Param, // Force join on every relation. If disabled, it will only join relations having the EAGER fetch mode. // Default: true - * }, - * handle_symfony_errors?: bool|Param, // Allows to handle symfony exceptions. // Default: false - * enable_swagger?: bool|Param, // Enable the Swagger documentation and export. // Default: true - * enable_json_streamer?: bool|Param, // Enable json streamer. // Default: false - * enable_swagger_ui?: bool|Param, // Enable Swagger UI // Default: true - * enable_re_doc?: bool|Param, // Enable ReDoc // Default: true - * enable_scalar?: bool|Param, // Enable Scalar API Reference // Default: true - * enable_entrypoint?: bool|Param, // Enable the entrypoint // Default: true - * enable_docs?: bool|Param, // Enable the docs // Default: true - * enable_profiler?: bool|Param, // Enable the data collector and the WebProfilerBundle integration. // Default: true - * enable_phpdoc_parser?: bool|Param, // Enable resource metadata collector using PHPStan PhpDocParser. // Default: true - * enable_link_security?: bool|Param, // Deprecated: This option is always enabled and will be removed in API Platform 5.0. // Enable security for Links (sub resources). // Default: true - * collection?: array{ - * exists_parameter_name?: scalar|Param|null, // The name of the query parameter to filter on nullable field values. // Default: "exists" - * order?: scalar|Param|null, // The default order of results. // Default: "ASC" - * order_parameter_name?: scalar|Param|null, // The name of the query parameter to order results. // Default: "order" - * order_nulls_comparison?: "nulls_smallest"|"nulls_largest"|"nulls_always_first"|"nulls_always_last"|Param|null, // The nulls comparison strategy. // Default: null - * pagination?: bool|array{ - * enabled?: bool|Param, // Default: true - * page_parameter_name?: scalar|Param|null, // The default name of the parameter handling the page number. // Default: "page" - * enabled_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable pagination. // Default: "pagination" - * items_per_page_parameter_name?: scalar|Param|null, // The name of the query parameter to set the number of items per page. // Default: "itemsPerPage" - * partial_parameter_name?: scalar|Param|null, // The name of the query parameter to enable or disable partial pagination. // Default: "partial" - * }, - * }, - * mapping?: array{ - * imports?: list, - * paths?: list, - * }, - * resource_class_directories?: list, - * serializer?: array{ - * hydra_prefix?: bool|Param, // Use the "hydra:" prefix. // Default: false - * }, - * doctrine?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * doctrine_mongodb_odm?: bool|array{ - * enabled?: bool|Param, // Default: false - * }, - * oauth?: bool|array{ - * enabled?: bool|Param, // Default: false - * clientId?: scalar|Param|null, // The oauth client id. // Default: "" - * clientSecret?: scalar|Param|null, // The OAuth client secret. Never use this parameter in your production environment. It exposes crucial security information. This feature is intended for dev/test environments only. Enable "oauth.pkce" instead // Default: "" - * pkce?: bool|Param, // Enable the oauth PKCE. // Default: false - * type?: scalar|Param|null, // The oauth type. // Default: "oauth2" - * flow?: scalar|Param|null, // The oauth flow grant type. // Default: "application" - * tokenUrl?: scalar|Param|null, // The oauth token url. // Default: "" - * authorizationUrl?: scalar|Param|null, // The oauth authentication url. // Default: "" - * refreshUrl?: scalar|Param|null, // The oauth refresh url. // Default: "" - * scopes?: list, - * }, - * graphql?: bool|array{ - * enabled?: bool|Param, // Default: false - * default_ide?: scalar|Param|null, // Default: "graphiql" - * graphiql?: bool|array{ - * enabled?: bool|Param, // Default: false - * }, - * introspection?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * max_query_depth?: int|Param, // Default: 20 - * graphql_playground?: bool|array{ // Deprecated: The "graphql_playground" configuration is deprecated and will be ignored. - * enabled?: bool|Param, // Default: false - * }, - * max_query_complexity?: int|Param, // Default: 500 - * nesting_separator?: scalar|Param|null, // The separator to use to filter nested fields. // Default: "_" - * collection?: array{ - * pagination?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * }, - * }, - * swagger?: array{ - * persist_authorization?: bool|Param, // Persist the SwaggerUI Authorization in the localStorage. // Default: false - * versions?: list, - * api_keys?: array, - * http_auth?: array, - * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] - * }, - * http_cache?: array{ - * public?: bool|Param|null, // To make all responses public by default. // Default: null - * invalidation?: bool|array{ // Enable the tags-based cache invalidation system. - * enabled?: bool|Param, // Default: false - * varnish_urls?: list, - * urls?: list, - * scoped_clients?: list, - * max_header_length?: int|Param, // Max header length supported by the cache server. // Default: 7500 - * request_options?: mixed, // To pass options to the client charged with the request. // Default: [] - * purger?: scalar|Param|null, // Specify a purger to use (available values: "api_platform.http_cache.purger.varnish.ban", "api_platform.http_cache.purger.varnish.xkey", "api_platform.http_cache.purger.souin"). // Default: "api_platform.http_cache.purger.varnish" - * xkey?: array{ // Deprecated: The "xkey" configuration is deprecated, use your own purger to customize surrogate keys or the appropriate parameters. - * glue?: scalar|Param|null, // xkey glue between keys // Default: " " - * }, - * }, - * }, - * mercure?: bool|array{ - * enabled?: bool|Param, // Default: false - * hub_url?: scalar|Param|null, // The URL sent in the Link HTTP header. If not set, will default to the URL for MercureBundle's default hub. // Default: null - * include_type?: bool|Param, // Always include @type in updates (including delete ones). // Default: false - * }, - * messenger?: bool|array{ - * enabled?: bool|Param, // Default: true - * }, - * elasticsearch?: bool|array{ - * enabled?: bool|Param, // Default: false - * hosts?: list, - * ssl_ca_bundle?: scalar|Param|null, // Path to the SSL CA bundle file for Elasticsearch SSL verification. // Default: null - * ssl_verification?: bool|Param, // Enable or disable SSL verification for Elasticsearch connections. // Default: true - * client?: "elasticsearch"|"opensearch"|Param, // The search engine client to use: "elasticsearch" or "opensearch". // Default: "elasticsearch" - * }, - * openapi?: array{ - * contact?: array{ - * name?: scalar|Param|null, // The identifying name of the contact person/organization. // Default: null - * url?: scalar|Param|null, // The URL pointing to the contact information. MUST be in the format of a URL. // Default: null - * email?: scalar|Param|null, // The email address of the contact person/organization. MUST be in the format of an email address. // Default: null - * }, - * termsOfService?: scalar|Param|null, // A URL to the Terms of Service for the API. MUST be in the format of a URL. // Default: null - * tags?: list, - * license?: array{ - * name?: scalar|Param|null, // The license name used for the API. // Default: null - * url?: scalar|Param|null, // URL to the license used for the API. MUST be in the format of a URL. // Default: null - * identifier?: scalar|Param|null, // An SPDX license expression for the API. The identifier field is mutually exclusive of the url field. // Default: null - * }, - * swagger_ui_extra_configuration?: mixed, // To pass extra configuration to Swagger UI, like docExpansion or filter. // Default: [] - * scalar_extra_configuration?: mixed, // To pass extra configuration to Scalar API Reference, like theme or darkMode. // Default: [] - * overrideResponses?: bool|Param, // Whether API Platform adds automatic responses to the OpenAPI documentation. // Default: true - * error_resource_class?: scalar|Param|null, // The class used to represent errors in the OpenAPI documentation. // Default: null - * validation_error_resource_class?: scalar|Param|null, // The class used to represent validation errors in the OpenAPI documentation. // Default: null - * }, - * maker?: bool|array{ - * enabled?: bool|Param, // Default: false - * namespace_prefix?: scalar|Param|null, // Add a prefix to all maker generated classes. e.g set it to "Api" to set the maker namespace to "App\Api\" (if the maker.root_namespace config is App). e.g. App\Api\State\MyStateProcessor // Default: "" - * }, - * mcp?: bool|array{ - * enabled?: bool|Param, // Default: true - * format?: scalar|Param|null, // The serialization format used for MCP tool input/output. Must be a format registered in api_platform.formats (e.g. "jsonld", "json", "jsonapi"). // Default: "jsonld" - * }, - * exception_to_status?: array, - * formats?: array, - * }>, - * patch_formats?: array, - * }>, - * docs_formats?: array, - * }>, - * error_formats?: array, - * }>, - * jsonschema_formats?: list, - * defaults?: array{ - * uri_template?: mixed, - * short_name?: mixed, - * description?: mixed, - * types?: mixed, - * operations?: mixed, - * formats?: mixed, - * input_formats?: mixed, - * output_formats?: mixed, - * uri_variables?: mixed, - * route_prefix?: mixed, - * defaults?: mixed, - * requirements?: mixed, - * options?: mixed, - * stateless?: mixed, - * sunset?: mixed, - * accept_patch?: mixed, - * status?: mixed, - * host?: mixed, - * schemes?: mixed, - * condition?: mixed, - * controller?: mixed, - * class?: mixed, - * url_generation_strategy?: mixed, - * deprecation_reason?: mixed, - * headers?: mixed, - * cache_headers?: mixed, - * normalization_context?: mixed, - * denormalization_context?: mixed, - * collect_denormalization_errors?: mixed, - * hydra_context?: mixed, - * openapi?: mixed, - * validation_context?: mixed, - * filters?: mixed, - * mercure?: mixed, - * messenger?: mixed, - * input?: mixed, - * output?: mixed, - * order?: mixed, - * fetch_partial?: mixed, - * force_eager?: mixed, - * pagination_client_enabled?: mixed, - * pagination_client_items_per_page?: mixed, - * pagination_client_partial?: mixed, - * pagination_via_cursor?: mixed, - * pagination_enabled?: mixed, - * pagination_fetch_join_collection?: mixed, - * pagination_use_output_walkers?: mixed, - * pagination_items_per_page?: mixed, - * pagination_maximum_items_per_page?: mixed, - * pagination_partial?: mixed, - * pagination_type?: mixed, - * security?: mixed, - * security_message?: mixed, - * security_post_denormalize?: mixed, - * security_post_denormalize_message?: mixed, - * security_post_validation?: mixed, - * security_post_validation_message?: mixed, - * composite_identifier?: mixed, - * exception_to_status?: mixed, - * query_parameter_validation_enabled?: mixed, - * links?: mixed, - * graph_ql_operations?: mixed, - * provider?: mixed, - * processor?: mixed, - * state_options?: mixed, - * rules?: mixed, - * policy?: mixed, - * middleware?: mixed, - * parameters?: array - * }>, - * strict_query_parameter_validation?: mixed, - * hide_hydra_operation?: mixed, - * json_stream?: mixed, - * extra_properties?: mixed, - * map?: mixed, - * mcp?: mixed, - * route_name?: mixed, - * errors?: mixed, - * read?: mixed, - * deserialize?: mixed, - * validate?: mixed, - * write?: mixed, - * serialize?: mixed, - * content_negotiation?: mixed, - * priority?: mixed, - * name?: mixed, - * allow_create?: mixed, - * item_uri_template?: mixed, - * ... - * }, - * } - * @psalm-type LexikJwtAuthenticationConfig = array{ - * public_key?: scalar|Param|null, // The key used to sign tokens (useless for HMAC). If not set, the key will be automatically computed from the secret key. // Default: null - * additional_public_keys?: list, - * secret_key?: scalar|Param|null, // The key used to sign tokens. It can be a raw secret (for HMAC), a raw RSA/ECDSA key or the path to a file itself being plaintext or PEM. // Default: null - * pass_phrase?: scalar|Param|null, // The key passphrase (useless for HMAC) // Default: "" - * token_ttl?: scalar|Param|null, // Default: 3600 - * allow_no_expiration?: bool|Param, // Allow tokens without "exp" claim (i.e. indefinitely valid, no lifetime) to be considered valid. Caution: usage of this should be rare. // Default: false - * clock_skew?: scalar|Param|null, // Default: 0 - * encoder?: array{ - * service?: scalar|Param|null, // Default: "lexik_jwt_authentication.encoder.lcobucci" - * signature_algorithm?: scalar|Param|null, // Default: "RS256" - * }, - * user_id_claim?: scalar|Param|null, // Default: "username" - * token_extractors?: array{ - * authorization_header?: bool|array{ - * enabled?: bool|Param, // Default: true - * prefix?: scalar|Param|null, // Default: "Bearer" - * name?: scalar|Param|null, // Default: "Authorization" - * }, - * cookie?: bool|array{ - * enabled?: bool|Param, // Default: false - * name?: scalar|Param|null, // Default: "BEARER" - * }, - * query_parameter?: bool|array{ - * enabled?: bool|Param, // Default: false - * name?: scalar|Param|null, // Default: "bearer" - * }, - * split_cookie?: bool|array{ - * enabled?: bool|Param, // Default: false - * cookies?: list, - * }, - * }, - * remove_token_from_body_when_cookies_used?: scalar|Param|null, // Default: true - * set_cookies?: array, - * }>, - * api_platform?: bool|array{ // API Platform compatibility: add check_path in OpenAPI documentation. - * enabled?: bool|Param, // Default: false - * check_path?: scalar|Param|null, // The login check path to add in OpenAPI. // Default: null - * username_path?: scalar|Param|null, // The path to the username in the JSON body. // Default: null - * password_path?: scalar|Param|null, // The path to the password in the JSON body. // Default: null - * }, - * access_token_issuance?: bool|array{ - * enabled?: bool|Param, // Default: false - * signature?: array{ - * algorithm?: scalar|Param|null, // The algorithm use to sign the access tokens. - * key?: scalar|Param|null, // The signature key. It shall be JWK encoded. - * }, - * encryption?: bool|array{ - * enabled?: bool|Param, // Default: false - * key_encryption_algorithm?: scalar|Param|null, // The key encryption algorithm is used to encrypt the token. - * content_encryption_algorithm?: scalar|Param|null, // The key encryption algorithm is used to encrypt the token. - * key?: scalar|Param|null, // The encryption key. It shall be JWK encoded. - * }, - * }, - * access_token_verification?: bool|array{ - * enabled?: bool|Param, // Default: false - * signature?: array{ - * header_checkers?: list, - * claim_checkers?: list, - * mandatory_claims?: list, - * allowed_algorithms?: list, - * keyset?: scalar|Param|null, // The signature keyset. It shall be JWKSet encoded. - * }, - * encryption?: bool|array{ - * enabled?: bool|Param, // Default: false - * continue_on_decryption_failure?: bool|Param, // If enable, non-encrypted tokens or tokens that failed during decryption or verification processes are accepted. // Default: false - * header_checkers?: list, - * allowed_key_encryption_algorithms?: list, - * allowed_content_encryption_algorithms?: list, - * keyset?: scalar|Param|null, // The encryption keyset. It shall be JWKSet encoded. - * }, - * }, - * blocklist_token?: bool|array{ - * enabled?: bool|Param, // Default: false - * cache?: scalar|Param|null, // Storage to track blocked tokens // Default: "cache.app" - * }, - * } - * @psalm-type SyliusApiConfig = array{ - * enabled?: bool|Param, // Default: false - * order_states_to_filter_out?: list, - * operations_to_remove?: list, - * default_image_filter?: mixed, // Default: "sylius_original" - * filter_eager_loading_extension?: array{ - * restricted_resources?: array, - * }>, - * }, - * } - * @psalm-type SyliusLabsDoctrineMigrationsExtraConfig = array{ - * migrations?: array>, - * } - * @psalm-type FlysystemConfig = array{ - * storages?: array, - * asyncaws?: array{ - * client?: scalar|Param|null, // The AsyncAws S3 client service name - * bucket?: scalar|Param|null, // The name of the AWS S3 bucket - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" - * }, - * aws?: array{ - * client?: scalar|Param|null, // The AWS S3 client service name - * bucket?: scalar|Param|null, // The name of the AWS S3 bucket - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" - * options?: list, - * streamReads?: bool|Param, // Whether to use streaming for file reads // Default: true - * }, - * azure?: array{ - * client?: scalar|Param|null, // The Azure Blob Storage client service name - * container?: scalar|Param|null, // The name of the Azure Blob Storage container - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all blob names // Default: "" - * }, - * ftp?: array{ - * host?: scalar|Param|null, // FTP host - * username?: scalar|Param|null, // FTP username - * password?: scalar|Param|null, // FTP password - * port?: int|Param, // FTP port number // Default: 21 - * root?: scalar|Param|null, // FTP root directory // Default: "" - * passive?: bool|Param, // Use passive mode // Default: true - * ssl?: bool|Param, // Use SSL/TLS encryption // Default: false - * timeout?: int|Param, // Connection timeout in seconds // Default: 90 - * ignore_passive_address?: scalar|Param|null, // Ignore passive address // Default: null - * utf8?: bool|Param, // Enable UTF8 mode // Default: false - * transfer_mode?: scalar|Param|null, // Transfer mode (FTP_ASCII or FTP_BINARY constante on ftp extension) // Default: null - * system_type?: null|"windows"|"unix"|Param, // FTP system type // Default: null - * timestamps_on_unix_listings_enabled?: bool|Param, // Enable timestamps on Unix listings // Default: false - * recurse_manually?: bool|Param, // Recurse directories manually // Default: true - * use_raw_list_options?: bool|Param|null, // Use raw list options // Default: null - * connectivityChecker?: scalar|Param|null, // Connectivity checker service name // Default: null - * permissions?: array{ // Unix permissions configuration for files and directories - * file?: array{ // File permissions - * public?: int|Param, // Public file permissions // Default: 420 - * private?: int|Param, // Private file permissions // Default: 384 - * }, - * dir?: array{ // Directory permissions - * public?: int|Param, // Public directory permissions // Default: 493 - * private?: int|Param, // Private directory permissions // Default: 448 - * }, - * }, - * }, - * gcloud?: array{ - * client?: scalar|Param|null, // The Google Cloud Storage client service name - * bucket?: scalar|Param|null, // The name of the Google Cloud Storage bucket - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all object keys // Default: "" - * visibility_handler?: scalar|Param|null, // Optional visibility handler service name // Default: null - * streamReads?: bool|Param, // Whether to use streaming for file reads // Default: false - * }, - * gridfs?: array{ - * bucket?: scalar|Param|null, // GridFS bucket service name (if using an existing bucket service) // Default: null - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all file names // Default: "" - * database?: scalar|Param|null, // MongoDB database name // Default: null - * doctrine_connection?: scalar|Param|null, // Doctrine MongoDB connection name (mutually exclusive with mongodb_uri) - * mongodb_uri?: scalar|Param|null, // MongoDB connection URI (mutually exclusive with doctrine_connection) - * mongodb_uri_options?: list, - * mongodb_driver_options?: list, - * }, - * lazy?: array{ // Lazy adapter for runtime storage selection - * source?: scalar|Param|null, // The service name of the storage to use at runtime - * }, - * local?: array{ - * directory?: scalar|Param|null, // Directory path for local storage - * lock?: int|Param, // Lock flags for file operations // Default: 0 - * skip_links?: bool|Param, // Whether to skip symbolic links // Default: false - * lazy_root_creation?: bool|Param, // Whether to create the root directory lazily // Default: false - * permissions?: array{ // Unix permissions configuration for files and directories - * file?: array{ // File permissions - * public?: int|Param, // Public file permissions // Default: 420 - * private?: int|Param, // Private file permissions // Default: 384 - * }, - * dir?: array{ // Directory permissions - * public?: int|Param, // Public directory permissions // Default: 493 - * private?: int|Param, // Private directory permissions // Default: 448 - * }, - * }, - * }, - * memory?: array, - * sftp?: array{ - * host?: scalar|Param|null, // SFTP host - * username?: scalar|Param|null, // SFTP username - * password?: scalar|Param|null, // SFTP password (optional if using private key) // Default: null - * privateKey?: scalar|Param|null, // Path to private key file or private key content // Default: null - * passphrase?: scalar|Param|null, // Private key passphrase // Default: null - * port?: int|Param, // SFTP port number // Default: 22 - * timeout?: int|Param, // Connection timeout in seconds // Default: 90 - * hostFingerprint?: scalar|Param|null, // Host fingerprint for verification // Default: null - * connectivityChecker?: scalar|Param|null, // Connectivity checker service name // Default: null - * preferredAlgorithms?: list, - * root?: scalar|Param|null, // SFTP root directory // Default: "" - * permissions?: array{ // Unix permissions configuration for files and directories - * file?: array{ // File permissions - * public?: int|Param, // Public file permissions // Default: 420 - * private?: int|Param, // Private file permissions // Default: 384 - * }, - * dir?: array{ // Directory permissions - * public?: int|Param, // Public directory permissions // Default: 493 - * private?: int|Param, // Private directory permissions // Default: 448 - * }, - * }, - * }, - * webdav?: array{ - * client?: scalar|Param|null, // The WebDAV client service name - * prefix?: scalar|Param|null, // Optional path prefix to prepend to all paths // Default: "" - * visibility_handling?: "throw"|"ignore"|Param, // How to handle visibility operations // Default: "throw" - * manual_copy?: bool|Param, // Whether to handle copy operations manually // Default: false - * manual_move?: bool|Param, // Whether to handle move operations manually // Default: false - * }, - * bunnycdn?: array{ - * client?: scalar|Param|null, // The BunnyCDN client service name - * pull_zone?: scalar|Param|null, // The BunnyCDN pull zone name // Default: "" - * }, - * service?: scalar|Param|null, // Reference to a custom adapter service (alternative to registered adapter types) - * visibility?: scalar|Param|null, // Default visibility for files // Default: null - * directory_visibility?: scalar|Param|null, // Default visibility for directories // Default: null - * retain_visibility?: scalar|Param|null, // Keeps the original file visibility (public/private) when copying or moving. // Default: null - * case_sensitive?: bool|Param, // Deprecated: The "case_sensitive" option is deprecated and will be removed in 4.0. // Default: true - * disable_asserts?: bool|Param, // Deprecated: The "disable_asserts" option is deprecated and will be removed in 4.0. // Default: false - * public_url?: list, - * path_normalizer?: scalar|Param|null, // Path normalizer service name (should implement League\Flysystem\PathNormalizer) // Default: null - * public_url_generator?: scalar|Param|null, // For adapter that do not provide public URLs or override adapter capabilities and public_url option, a public URL generator service name can be configured in the main Filesystem configuration (should implement League\Flysystem\PublicUrlGenerator) // Default: null - * temporary_url_generator?: scalar|Param|null, // For adapter that do not provide public URLs or override adapter capabilities, a temporary URL generator service name can be configured in the main Filesystem configuration (should implement League\Flysystem\TemporaryUrlGenerator) // Default: null - * read_only?: bool|Param, // Converts a file system to read-only // Default: false - * }>, - * } - * @psalm-type WebpackEncoreConfig = array{ - * output_path?: scalar|Param|null, // The path where Encore is building the assets - i.e. Encore.setOutputPath() - * crossorigin?: false|"anonymous"|"use-credentials"|Param, // crossorigin value when Encore.enableIntegrityHashes() is used, can be false (default), anonymous or use-credentials // Default: false - * preload?: bool|Param, // preload all rendered script and link tags automatically via the http2 Link header. // Default: false - * cache?: bool|Param, // Enable caching of the entry point file(s) // Default: false - * strict_mode?: bool|Param, // Throw an exception if the entrypoints.json file is missing or an entry is missing from the data // Default: true - * builds?: array, - * script_attributes?: array, - * link_attributes?: array, - * } - * @psalm-type SyliusTwigHooksConfig = array{ - * enable_autoprefixing?: bool|Param, // Default: false - * hook_name_section_separator?: scalar|Param|null, // Default: false - * supported_hookable_types?: array, - * hooks?: array, - * props?: array, - * configuration?: array, - * priority?: int|Param, // Default: null - * }>>, - * } - * @psalm-type TwigComponentConfig = array{ - * defaults?: array, - * anonymous_template_directory?: scalar|Param|null, // Defaults to `components` - * profiler?: bool|array{ // Enables the profiler for Twig Component - * enabled?: bool|Param, // Default: "%kernel.debug%" - * collect_components?: bool|Param, // Collect components instances // Default: true - * }, - * controllers_json?: scalar|Param|null, // Deprecated: The "twig_component.controllers_json" config option is deprecated, and will be removed in 3.0. // Default: null - * } - * @psalm-type LiveComponentConfig = array{ - * secret?: scalar|Param|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" - * fetch_credentials?: "same-origin"|"include"|"omit"|Param, // The default fetch credentials mode for all Live Components ('same-origin', 'include', 'omit') // Default: "same-origin" - * } - * @psalm-type StimulusConfig = array{ - * controller_paths?: list, - * controllers_json?: scalar|Param|null, // Default: "%kernel.project_dir%/assets/controllers.json" - * } - * @psalm-type SyliusTwigExtraConfig = array{ - * twig_ux?: array{ - * anonymous_component_template_prefixes?: array, - * }, - * } - * @psalm-type UxIconsConfig = array{ - * icon_dir?: scalar|Param|null, // The local directory where icons are stored. // Default: "%kernel.project_dir%/assets/icons" - * default_icon_attributes?: array, - * icon_sets?: array, - * suffixes?: array, - * }>, - * }>, - * aliases?: array, - * iconify?: bool|array{ // Configuration for the remote icon service. - * enabled?: bool|Param, // Default: true - * on_demand?: bool|Param, // Whether to download icons "on demand". // Default: true - * endpoint?: scalar|Param|null, // The endpoint for the Iconify icons API. // Default: "https://api.iconify.design" - * }, - * ignore_not_found?: bool|Param, // Ignore error when an icon is not found. Set to 'true' to fail silently. // Default: false - * } - * @psalm-type WhiteOctoberPagerfantaConfig = array{ // Deprecated: The "white_october_pagerfanta" configuration node is deprecated, migrate your configuration to the "babdev_pagerfanta" configuration node. - * exceptions_strategy?: array{ - * out_of_range_page?: scalar|Param|null, // Default: "to_http_not_found" - * not_valid_current_page?: scalar|Param|null, // Default: "to_http_not_found" - * }, - * default_view?: scalar|Param|null, // Default: "default" - * } - * @psalm-type ConfigType = array{ - * imports?: ImportsConfig, - * parameters?: ParametersConfig, - * services?: ServicesConfig, - * framework?: FrameworkConfig, - * monolog?: MonologConfig, - * security?: SecurityConfig, - * twig?: TwigConfig, - * doctrine?: DoctrineConfig, - * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, - * sylius_order?: SyliusOrderConfig, - * sylius_money?: SyliusMoneyConfig, - * sylius_currency?: SyliusCurrencyConfig, - * sylius_locale?: SyliusLocaleConfig, - * sylius_product?: SyliusProductConfig, - * sylius_channel?: SyliusChannelConfig, - * sylius_attribute?: SyliusAttributeConfig, - * sylius_taxation?: SyliusTaxationConfig, - * sylius_shipping?: SyliusShippingConfig, - * sylius_payment?: SyliusPaymentConfig, - * sylius_mailer?: SyliusMailerConfig, - * sylius_promotion?: SyliusPromotionConfig, - * sylius_addressing?: SyliusAddressingConfig, - * sylius_inventory?: SyliusInventoryConfig, - * sylius_taxonomy?: SyliusTaxonomyConfig, - * sylius_user?: SyliusUserConfig, - * sylius_customer?: SyliusCustomerConfig, - * sylius_ui?: SyliusUiConfig, - * sylius_review?: SyliusReviewConfig, - * sylius_core?: SyliusCoreConfig, - * sylius_resource?: SyliusResourceConfig, - * sylius_grid?: SyliusGridConfig, - * knp_gaufrette?: KnpGaufretteConfig, - * knp_menu?: KnpMenuConfig, - * liip_imagine?: LiipImagineConfig, - * payum?: PayumConfig, - * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, - * babdev_pagerfanta?: BabdevPagerfantaConfig, - * doctrine_migrations?: DoctrineMigrationsConfig, - * sylius_fixtures?: SyliusFixturesConfig, - * sylius_payum?: SyliusPayumConfig, - * sylius_theme?: SyliusThemeConfig, - * sylius_admin?: SyliusAdminConfig, - * sylius_shop?: SyliusShopConfig, - * debug?: DebugConfig, - * web_profiler?: WebProfilerConfig, - * api_platform?: ApiPlatformConfig, - * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, - * sylius_api?: SyliusApiConfig, - * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, - * flysystem?: FlysystemConfig, - * webpack_encore?: WebpackEncoreConfig, - * sylius_twig_hooks?: SyliusTwigHooksConfig, - * twig_component?: TwigComponentConfig, - * live_component?: LiveComponentConfig, - * stimulus?: StimulusConfig, - * sylius_twig_extra?: SyliusTwigExtraConfig, - * ux_icons?: UxIconsConfig, - * white_october_pagerfanta?: WhiteOctoberPagerfantaConfig, - * "when@dev"?: array{ - * imports?: ImportsConfig, - * parameters?: ParametersConfig, - * services?: ServicesConfig, - * framework?: FrameworkConfig, - * monolog?: MonologConfig, - * security?: SecurityConfig, - * twig?: TwigConfig, - * doctrine?: DoctrineConfig, - * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, - * sylius_order?: SyliusOrderConfig, - * sylius_money?: SyliusMoneyConfig, - * sylius_currency?: SyliusCurrencyConfig, - * sylius_locale?: SyliusLocaleConfig, - * sylius_product?: SyliusProductConfig, - * sylius_channel?: SyliusChannelConfig, - * sylius_attribute?: SyliusAttributeConfig, - * sylius_taxation?: SyliusTaxationConfig, - * sylius_shipping?: SyliusShippingConfig, - * sylius_payment?: SyliusPaymentConfig, - * sylius_mailer?: SyliusMailerConfig, - * sylius_promotion?: SyliusPromotionConfig, - * sylius_addressing?: SyliusAddressingConfig, - * sylius_inventory?: SyliusInventoryConfig, - * sylius_taxonomy?: SyliusTaxonomyConfig, - * sylius_user?: SyliusUserConfig, - * sylius_customer?: SyliusCustomerConfig, - * sylius_ui?: SyliusUiConfig, - * sylius_review?: SyliusReviewConfig, - * sylius_core?: SyliusCoreConfig, - * sylius_resource?: SyliusResourceConfig, - * sylius_grid?: SyliusGridConfig, - * knp_gaufrette?: KnpGaufretteConfig, - * knp_menu?: KnpMenuConfig, - * liip_imagine?: LiipImagineConfig, - * payum?: PayumConfig, - * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, - * babdev_pagerfanta?: BabdevPagerfantaConfig, - * doctrine_migrations?: DoctrineMigrationsConfig, - * sylius_fixtures?: SyliusFixturesConfig, - * sylius_payum?: SyliusPayumConfig, - * sylius_theme?: SyliusThemeConfig, - * sylius_admin?: SyliusAdminConfig, - * sylius_shop?: SyliusShopConfig, - * debug?: DebugConfig, - * web_profiler?: WebProfilerConfig, - * api_platform?: ApiPlatformConfig, - * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, - * sylius_api?: SyliusApiConfig, - * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, - * flysystem?: FlysystemConfig, - * webpack_encore?: WebpackEncoreConfig, - * sylius_twig_hooks?: SyliusTwigHooksConfig, - * twig_component?: TwigComponentConfig, - * live_component?: LiveComponentConfig, - * stimulus?: StimulusConfig, - * sylius_twig_extra?: SyliusTwigExtraConfig, - * ux_icons?: UxIconsConfig, - * }, - * "when@test"?: array{ - * imports?: ImportsConfig, - * parameters?: ParametersConfig, - * services?: ServicesConfig, - * framework?: FrameworkConfig, - * monolog?: MonologConfig, - * security?: SecurityConfig, - * twig?: TwigConfig, - * doctrine?: DoctrineConfig, - * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, - * sylius_order?: SyliusOrderConfig, - * sylius_money?: SyliusMoneyConfig, - * sylius_currency?: SyliusCurrencyConfig, - * sylius_locale?: SyliusLocaleConfig, - * sylius_product?: SyliusProductConfig, - * sylius_channel?: SyliusChannelConfig, - * sylius_attribute?: SyliusAttributeConfig, - * sylius_taxation?: SyliusTaxationConfig, - * sylius_shipping?: SyliusShippingConfig, - * sylius_payment?: SyliusPaymentConfig, - * sylius_mailer?: SyliusMailerConfig, - * sylius_promotion?: SyliusPromotionConfig, - * sylius_addressing?: SyliusAddressingConfig, - * sylius_inventory?: SyliusInventoryConfig, - * sylius_taxonomy?: SyliusTaxonomyConfig, - * sylius_user?: SyliusUserConfig, - * sylius_customer?: SyliusCustomerConfig, - * sylius_ui?: SyliusUiConfig, - * sylius_review?: SyliusReviewConfig, - * sylius_core?: SyliusCoreConfig, - * sylius_resource?: SyliusResourceConfig, - * sylius_grid?: SyliusGridConfig, - * knp_gaufrette?: KnpGaufretteConfig, - * knp_menu?: KnpMenuConfig, - * liip_imagine?: LiipImagineConfig, - * payum?: PayumConfig, - * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, - * babdev_pagerfanta?: BabdevPagerfantaConfig, - * doctrine_migrations?: DoctrineMigrationsConfig, - * sylius_fixtures?: SyliusFixturesConfig, - * sylius_payum?: SyliusPayumConfig, - * sylius_theme?: SyliusThemeConfig, - * sylius_admin?: SyliusAdminConfig, - * sylius_shop?: SyliusShopConfig, - * debug?: DebugConfig, - * web_profiler?: WebProfilerConfig, - * api_platform?: ApiPlatformConfig, - * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, - * sylius_api?: SyliusApiConfig, - * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, - * flysystem?: FlysystemConfig, - * webpack_encore?: WebpackEncoreConfig, - * sylius_twig_hooks?: SyliusTwigHooksConfig, - * twig_component?: TwigComponentConfig, - * live_component?: LiveComponentConfig, - * stimulus?: StimulusConfig, - * sylius_twig_extra?: SyliusTwigExtraConfig, - * ux_icons?: UxIconsConfig, - * }, - * "when@test_cached"?: array{ - * imports?: ImportsConfig, - * parameters?: ParametersConfig, - * services?: ServicesConfig, - * framework?: FrameworkConfig, - * monolog?: MonologConfig, - * security?: SecurityConfig, - * twig?: TwigConfig, - * doctrine?: DoctrineConfig, - * sylius_state_machine_abstraction?: SyliusStateMachineAbstractionConfig, - * sylius_order?: SyliusOrderConfig, - * sylius_money?: SyliusMoneyConfig, - * sylius_currency?: SyliusCurrencyConfig, - * sylius_locale?: SyliusLocaleConfig, - * sylius_product?: SyliusProductConfig, - * sylius_channel?: SyliusChannelConfig, - * sylius_attribute?: SyliusAttributeConfig, - * sylius_taxation?: SyliusTaxationConfig, - * sylius_shipping?: SyliusShippingConfig, - * sylius_payment?: SyliusPaymentConfig, - * sylius_mailer?: SyliusMailerConfig, - * sylius_promotion?: SyliusPromotionConfig, - * sylius_addressing?: SyliusAddressingConfig, - * sylius_inventory?: SyliusInventoryConfig, - * sylius_taxonomy?: SyliusTaxonomyConfig, - * sylius_user?: SyliusUserConfig, - * sylius_customer?: SyliusCustomerConfig, - * sylius_ui?: SyliusUiConfig, - * sylius_review?: SyliusReviewConfig, - * sylius_core?: SyliusCoreConfig, - * sylius_resource?: SyliusResourceConfig, - * sylius_grid?: SyliusGridConfig, - * knp_gaufrette?: KnpGaufretteConfig, - * knp_menu?: KnpMenuConfig, - * liip_imagine?: LiipImagineConfig, - * payum?: PayumConfig, - * stof_doctrine_extensions?: StofDoctrineExtensionsConfig, - * babdev_pagerfanta?: BabdevPagerfantaConfig, - * doctrine_migrations?: DoctrineMigrationsConfig, - * sylius_fixtures?: SyliusFixturesConfig, - * sylius_payum?: SyliusPayumConfig, - * sylius_theme?: SyliusThemeConfig, - * sylius_admin?: SyliusAdminConfig, - * sylius_shop?: SyliusShopConfig, - * debug?: DebugConfig, - * web_profiler?: WebProfilerConfig, - * api_platform?: ApiPlatformConfig, - * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, - * sylius_api?: SyliusApiConfig, - * sylius_labs_doctrine_migrations_extra?: SyliusLabsDoctrineMigrationsExtraConfig, - * flysystem?: FlysystemConfig, - * webpack_encore?: WebpackEncoreConfig, - * sylius_twig_hooks?: SyliusTwigHooksConfig, - * twig_component?: TwigComponentConfig, - * live_component?: LiveComponentConfig, - * stimulus?: StimulusConfig, - * sylius_twig_extra?: SyliusTwigExtraConfig, - * ux_icons?: UxIconsConfig, - * }, - * ..., - * }> - * } - */ -final class App -{ - /** - * @param ConfigType $config - * - * @psalm-return ConfigType - */ - public static function config(array $config): array - { - /** @var ConfigType $config */ - $config = AppReference::config($config); - - return $config; - } -} - -namespace Symfony\Component\Routing\Loader\Configurator; - -/** - * This class provides array-shapes for configuring the routes of an application. - * - * Example: - * - * ```php - * // config/routes.php - * namespace Symfony\Component\Routing\Loader\Configurator; - * - * return Routes::config([ - * 'controllers' => [ - * 'resource' => 'routing.controllers', - * ], - * ]); - * ``` - * - * @psalm-type RouteConfig = array{ - * path: string|array, - * controller?: string, - * methods?: string|list, - * requirements?: array, - * defaults?: array, - * options?: array, - * host?: string|array, - * schemes?: string|list, - * condition?: string, - * locale?: string, - * format?: string, - * utf8?: bool, - * stateless?: bool, - * } - * @psalm-type ImportConfig = array{ - * resource: string, - * type?: string, - * exclude?: string|list, - * prefix?: string|array, - * name_prefix?: string, - * trailing_slash_on_root?: bool, - * controller?: string, - * methods?: string|list, - * requirements?: array, - * defaults?: array, - * options?: array, - * host?: string|array, - * schemes?: string|list, - * condition?: string, - * locale?: string, - * format?: string, - * utf8?: bool, - * stateless?: bool, - * } - * @psalm-type AliasConfig = array{ - * alias: string, - * deprecated?: array{package:string, version:string, message?:string}, - * } - * @psalm-type RoutesConfig = array{ - * "when@dev"?: array, - * "when@test"?: array, - * "when@test_cached"?: array, - * ... - * } - */ -final class Routes -{ - /** - * @param RoutesConfig $config - * - * @psalm-return RoutesConfig - */ - public static function config(array $config): array - { - return $config; - } -}