From 29a88e341fbc1500048cc362850357535ae4b83c Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Fri, 27 Feb 2026 15:13:17 +0100 Subject: [PATCH] Fixes --- .../docker-compose/docker-compose.local.yml | 12 + src/new/composer.json | 2 + src/new/composer.lock | 2102 +++++---- src/new/config/bundles.php | 2 + src/new/config/packages/ai.yaml | 27 + src/new/config/packages/dev/monolog.php | 31 +- src/new/config/reference.php | 3766 +++++++++-------- src/new/config/routes.php | 2 + .../Resources/views/dashboard/index.html.twig | 116 + .../AiBundle/Controller/AiChatController.php | 34 + .../DependencyInjection/Configuration.php | 15 + .../PSCComponentAiExtension.php | 19 + .../AiBundle/PSCComponentAiBundle.php | 7 + .../Platform/Completions/ModelClient.php | 85 + .../Platform/Completions/ResultConverter.php | 89 + .../AiBundle/Platform/PlatformFactory.php | 35 + .../AiBundle/Resources/config/routing.yml | 4 + .../AiBundle/Resources/config/services.yml | 7 + .../AiBundle/Service/AiAgentService.php | 140 + .../Shop/EntityBundle/Document/Instance.php | 24 + .../OrderBundle/Ai/Tool/ChangeOrderStatus.php | 72 + .../Ai/Tool/GetAvailableOrderStatuses.php | 36 + .../PSC/Shop/OrderBundle/Ai/Tool/GetOrder.php | 70 + .../Shop/OrderBundle/Ai/Tool/SearchOrders.php | 82 + .../Transformer/Order/Position.php | 2 - .../Form/Backend/SettingsType.php | 39 +- .../views/backend/settings/index.html.twig | 91 +- src/new/symfony.lock | 24 +- 28 files changed, 4395 insertions(+), 2540 deletions(-) create mode 100644 src/new/config/packages/ai.yaml create mode 100644 src/new/src/PSC/Component/AiBundle/Controller/AiChatController.php create mode 100644 src/new/src/PSC/Component/AiBundle/DependencyInjection/Configuration.php create mode 100644 src/new/src/PSC/Component/AiBundle/DependencyInjection/PSCComponentAiExtension.php create mode 100644 src/new/src/PSC/Component/AiBundle/PSCComponentAiBundle.php create mode 100644 src/new/src/PSC/Component/AiBundle/Platform/Completions/ModelClient.php create mode 100644 src/new/src/PSC/Component/AiBundle/Platform/Completions/ResultConverter.php create mode 100644 src/new/src/PSC/Component/AiBundle/Platform/PlatformFactory.php create mode 100644 src/new/src/PSC/Component/AiBundle/Resources/config/routing.yml create mode 100644 src/new/src/PSC/Component/AiBundle/Resources/config/services.yml create mode 100644 src/new/src/PSC/Component/AiBundle/Service/AiAgentService.php create mode 100644 src/new/src/PSC/Shop/OrderBundle/Ai/Tool/ChangeOrderStatus.php create mode 100644 src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetAvailableOrderStatuses.php create mode 100644 src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetOrder.php create mode 100644 src/new/src/PSC/Shop/OrderBundle/Ai/Tool/SearchOrders.php diff --git a/.docker/docker-compose/docker-compose.local.yml b/.docker/docker-compose/docker-compose.local.yml index 02b03abf5..581b318e7 100644 --- a/.docker/docker-compose/docker-compose.local.yml +++ b/.docker/docker-compose/docker-compose.local.yml @@ -41,6 +41,18 @@ services: - ServerOptions__HostName=smtp4dev networks: - network + ollama: + image: ollama/ollama:latest + networks: + - network + restart: always + deploy: + resources: + reservations: + devices: + - driver: nvidia + count: 1 # alternatively, use `count: all` for all GPUs + capabilities: [gpu] webhook: image: tarampampam/webhook-tester:2 restart: always diff --git a/src/new/composer.json b/src/new/composer.json index 282947c38..1d1b5c1d1 100755 --- a/src/new/composer.json +++ b/src/new/composer.json @@ -67,6 +67,8 @@ "sofort/sofortlib-php": "3.3.2", "spatie/array-to-xml": "^3.4", "spiriitlabs/form-filter-bundle": "12.0.1", + "symfony/ai-agent": "^0.5.0", + "symfony/ai-bundle": "^0.5.0", "symfony/asset": "*", "symfony/asset-mapper": "7.4.*", "symfony/console": "*", diff --git a/src/new/composer.lock b/src/new/composer.lock index b9bf96190..a6e959b46 100755 --- a/src/new/composer.lock +++ b/src/new/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "59f5c6fa85a2165c7a1dccb2f12e1e60", + "content-hash": "10c58d73f259e7dfc5d7f7ddf71a0949", "packages": [ { "name": "apimatic/core", - "version": "0.3.16", + "version": "0.3.17", "source": { "type": "git", "url": "https://github.com/apimatic/core-lib-php.git", - "reference": "ae4ab4ca26a41be41718f33c703d67b7a767c07b" + "reference": "a48a583f686ee3786432b976c795a2817ec095b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/ae4ab4ca26a41be41718f33c703d67b7a767c07b", - "reference": "ae4ab4ca26a41be41718f33c703d67b7a767c07b", + "url": "https://api.github.com/repos/apimatic/core-lib-php/zipball/a48a583f686ee3786432b976c795a2817ec095b3", + "reference": "a48a583f686ee3786432b976c795a2817ec095b3", "shasum": "" }, "require": { @@ -57,9 +57,9 @@ ], "support": { "issues": "https://github.com/apimatic/core-lib-php/issues", - "source": "https://github.com/apimatic/core-lib-php/tree/0.3.16" + "source": "https://github.com/apimatic/core-lib-php/tree/0.3.17" }, - "time": "2025-11-25T04:42:27+00:00" + "time": "2026-01-27T05:14:10+00:00" }, { "name": "apimatic/core-interfaces", @@ -225,21 +225,21 @@ }, { "name": "azuyalabs/yasumi", - "version": "2.8.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/azuyalabs/yasumi.git", - "reference": "cc07874da062070fdc201a4297a7724f7d6aafb2" + "reference": "b9b26a70c3e0ba0b39723e7b756787bff4348536" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/azuyalabs/yasumi/zipball/cc07874da062070fdc201a4297a7724f7d6aafb2", - "reference": "cc07874da062070fdc201a4297a7724f7d6aafb2", + "url": "https://api.github.com/repos/azuyalabs/yasumi/zipball/b9b26a70c3e0ba0b39723e7b756787bff4348536", + "reference": "b9b26a70c3e0ba0b39723e7b756787bff4348536", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { "azuyalabs/php-cs-fixer-config": "^0.3", @@ -247,8 +247,7 @@ "mikey179/vfsstream": "^1.6", "phpstan/phpstan": "^2.1", "phpstan/phpstan-deprecation-rules": "^2.0", - "phpunit/phpunit": "^8.5 || ^9.6", - "vimeo/psalm": "^6.12" + "phpunit/phpunit": "^8.5 || ^9.6" }, "suggest": { "ext-calendar": "For calculating the date of Easter" @@ -295,7 +294,7 @@ "type": "other" } ], - "time": "2025-07-13T15:40:05+00:00" + "time": "2026-01-22T12:18:00+00:00" }, { "name": "behat/transliterator", @@ -1313,16 +1312,16 @@ }, { "name": "doctrine/collections", - "version": "2.4.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "9acfeea2e8666536edff3d77c531261c63680160" + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", - "reference": "9acfeea2e8666536edff3d77c531261c63680160", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", "shasum": "" }, "require": { @@ -1379,7 +1378,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.4.0" + "source": "https://github.com/doctrine/collections/tree/2.6.0" }, "funding": [ { @@ -1395,20 +1394,20 @@ "type": "tidelift" } ], - "time": "2025-10-25T09:18:13+00:00" + "time": "2026-01-15T10:01:58+00:00" }, { "name": "doctrine/dbal", - "version": "4.4.1", + "version": "4.4.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/476f7f0fa6ea4aa5364926db7fabdf6049075722", + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722", "shasum": "" }, "require": { @@ -1424,9 +1423,9 @@ "phpstan/phpstan": "2.1.30", "phpstan/phpstan-phpunit": "2.0.7", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "11.5.23", - "slevomat/coding-standard": "8.24.0", - "squizlabs/php_codesniffer": "4.0.0", + "phpunit/phpunit": "11.5.50", + "slevomat/coding-standard": "8.27.1", + "squizlabs/php_codesniffer": "4.0.1", "symfony/cache": "^6.3.8|^7.0|^8.0", "symfony/console": "^5.4|^6.3|^7.0|^8.0" }, @@ -1485,7 +1484,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.1" + "source": "https://github.com/doctrine/dbal/tree/4.4.2" }, "funding": [ { @@ -1501,33 +1500,33 @@ "type": "tidelift" } ], - "time": "2025-12-04T10:11:03+00:00" + "time": "2026-02-26T12:12:19+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.5", + "version": "1.1.6", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" + "phpunit/phpunit": "<=7.5 || >=14" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", + "doctrine/coding-standard": "^9 || ^12 || ^14", + "phpstan/phpstan": "1.4.10 || 2.1.30", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -1547,22 +1546,22 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" }, - "time": "2025-04-07T20:06:18+00:00" + "time": "2026-02-07T07:09:04+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "3.1.0", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "24417f4d508086e1a458cc7aea893853ba9e4423" + "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/24417f4d508086e1a458cc7aea893853ba9e4423", - "reference": "24417f4d508086e1a458cc7aea893853ba9e4423", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/af84173db6978c3d2688ea3bcf3a91720b0704ce", + "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce", "shasum": "" }, "require": { @@ -1581,7 +1580,6 @@ }, "conflict": { "doctrine/orm": "<3.0 || >=4.0", - "symfony/var-exporter": "< 6.4.1 || 7.0.0", "twig/twig": "<3.0.4" }, "require-dev": { @@ -1590,6 +1588,7 @@ "phpstan/phpstan": "2.1.1", "phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2.0", "phpunit/phpunit": "^12.3.10", "psr/log": "^3.0", "symfony/doctrine-messenger": "^6.4 || ^7.0 || ^8.0", @@ -1601,7 +1600,6 @@ "symfony/string": "^6.4 || ^7.0 || ^8.0", "symfony/twig-bridge": "^6.4 || ^7.0 || ^8.0", "symfony/validator": "^6.4 || ^7.0 || ^8.0", - "symfony/var-exporter": "^6.4.1 || ^7.0.1 || ^8.0", "symfony/web-profiler-bundle": "^6.4 || ^7.0 || ^8.0", "symfony/yaml": "^6.4 || ^7.0 || ^8.0", "twig/twig": "^3.21.1" @@ -1649,7 +1647,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/3.1.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/3.2.2" }, "funding": [ { @@ -1665,20 +1663,20 @@ "type": "tidelift" } ], - "time": "2025-11-28T22:34:19+00:00" + "time": "2025-12-24T12:24:29+00:00" }, { "name": "doctrine/event-manager", - "version": "2.0.1", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", - "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", "shasum": "" }, "require": { @@ -1688,10 +1686,10 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.8.8", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -1740,7 +1738,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.0.1" + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" }, "funding": [ { @@ -1756,7 +1754,7 @@ "type": "tidelift" } ], - "time": "2024-05-22T20:47:39+00:00" + "time": "2026-01-29T07:11:08+00:00" }, { "name": "doctrine/inflector", @@ -1850,30 +1848,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -1900,7 +1897,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -1916,7 +1913,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -1997,21 +1994,20 @@ }, { "name": "doctrine/mongodb-odm", - "version": "2.15.2", + "version": "2.16.1", "source": { "type": "git", "url": "https://github.com/doctrine/mongodb-odm.git", - "reference": "05d5b14cc4792ace1b47733407fd87b9bcfdfbcb" + "reference": "b34f2dce3ca5b2de8903419a31ad48837d852b74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/mongodb-odm/zipball/05d5b14cc4792ace1b47733407fd87b9bcfdfbcb", - "reference": "05d5b14cc4792ace1b47733407fd87b9bcfdfbcb", + "url": "https://api.github.com/repos/doctrine/mongodb-odm/zipball/b34f2dce3ca5b2de8903419a31ad48837d852b74", + "reference": "b34f2dce3ca5b2de8903419a31ad48837d852b74", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.5 || ^2.0", + "doctrine/collections": "^2.1", "doctrine/event-manager": "^1.0 || ^2.0", "doctrine/instantiator": "^1.1 || ^2", "doctrine/persistence": "^3.2 || ^4", @@ -2023,19 +2019,23 @@ "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/console": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symfony/deprecation-contracts": "^2.2 || ^3.0", + "symfony/polyfill-php84": "^1.33", "symfony/var-dumper": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symfony/var-exporter": "^6.4.1 || ^7.0 || ^8.0" }, "conflict": { - "doctrine/annotations": "<1.12 || >=3.0" + "doctrine/annotations": "<1.12 || >=3.0", + "doctrine/cache": "<1.11", + "doctrine/mongodb-odm-bundle": "<5" }, "require-dev": { "doctrine/annotations": "^1.12 || ^2.0", + "doctrine/cache": "^2.0", "doctrine/coding-standard": "^14.0", "doctrine/orm": "^3.2", "ext-bcmath": "*", "jmikola/geojson": "^1.0", - "phpbench/phpbench": "^1.0.0", + "phpbench/phpbench": "^1.4.0", "phpstan/phpstan": "^2.1", "phpstan/phpstan-deprecation-rules": "^2.0", "phpstan/phpstan-phpunit": "^2.0", @@ -2093,7 +2093,7 @@ ], "support": { "issues": "https://github.com/doctrine/mongodb-odm/issues", - "source": "https://github.com/doctrine/mongodb-odm/tree/2.15.2" + "source": "https://github.com/doctrine/mongodb-odm/tree/2.16.1" }, "funding": [ { @@ -2109,20 +2109,20 @@ "type": "tidelift" } ], - "time": "2025-12-10T14:54:03+00:00" + "time": "2026-01-29T11:33:08+00:00" }, { "name": "doctrine/mongodb-odm-bundle", - "version": "5.5.1", + "version": "5.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMongoDBBundle.git", - "reference": "502f2c0102d44de3d6a207833a6a475e54e1ba02" + "reference": "72a40244a4d4e13a54cb8d839ad73df4050b71e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMongoDBBundle/zipball/502f2c0102d44de3d6a207833a6a475e54e1ba02", - "reference": "502f2c0102d44de3d6a207833a6a475e54e1ba02", + "url": "https://api.github.com/repos/doctrine/DoctrineMongoDBBundle/zipball/72a40244a4d4e13a54cb8d839ad73df4050b71e7", + "reference": "72a40244a4d4e13a54cb8d839ad73df4050b71e7", "shasum": "" }, "require": { @@ -2195,22 +2195,22 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMongoDBBundle/issues", - "source": "https://github.com/doctrine/DoctrineMongoDBBundle/tree/5.5.1" + "source": "https://github.com/doctrine/DoctrineMongoDBBundle/tree/5.6.0" }, - "time": "2025-11-19T13:25:47+00:00" + "time": "2026-01-26T10:21:57+00:00" }, { "name": "doctrine/orm", - "version": "3.5.8", + "version": "3.6.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168" + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/78dd074266e8b47a83bcf60ab5fe06c91a639168", - "reference": "78dd074266e8b47a83bcf60ab5fe06c91a639168", + "url": "https://api.github.com/repos/doctrine/orm/zipball/4262eb495b4d2a53b45de1ac58881e0091f2970f", + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f", "shasum": "" }, "require": { @@ -2283,9 +2283,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.5.8" + "source": "https://github.com/doctrine/orm/tree/3.6.2" }, - "time": "2025-11-29T23:11:02+00:00" + "time": "2026-01-30T21:41:41+00:00" }, { "name": "doctrine/persistence", @@ -2382,16 +2382,16 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.5.3", + "version": "1.5.4", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", - "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/9563949f5cd3bd12a17d12fb980528bc141c5806", + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806", "shasum": "" }, "require": { @@ -2431,9 +2431,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.4" }, - "time": "2025-10-26T09:35:14+00:00" + "time": "2026-02-08T16:21:46+00:00" }, { "name": "egulias/email-validator", @@ -2811,22 +2811,22 @@ }, { "name": "goetas-webservices/xsd2php-runtime", - "version": "v0.2.17", + "version": "0.2.18", "source": { "type": "git", "url": "https://github.com/goetas-webservices/xsd2php-runtime.git", - "reference": "be15c48cda6adfab82e180a69dfa1937e208cfe1" + "reference": "1215ce8504f2726b1a0c5025478da86a2791a0ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/goetas-webservices/xsd2php-runtime/zipball/be15c48cda6adfab82e180a69dfa1937e208cfe1", - "reference": "be15c48cda6adfab82e180a69dfa1937e208cfe1", + "url": "https://api.github.com/repos/goetas-webservices/xsd2php-runtime/zipball/1215ce8504f2726b1a0c5025478da86a2791a0ba", + "reference": "1215ce8504f2726b1a0c5025478da86a2791a0ba", "shasum": "" }, "require": { "jms/serializer": "^1.2|^2.0|^3.0", "php": ">=7.1", - "symfony/yaml": "^2.2|^3.0|^4.0|^5.0|^6.0|^7.0" + "symfony/yaml": "^2.2|^3.0|^4.0|^5.0|^6.0|^7.0|^8.0" }, "conflict": { "jms/serializer": "1.4.1|1.6.1|1.6.2" @@ -2865,9 +2865,9 @@ ], "support": { "issues": "https://github.com/goetas-webservices/xsd2php-runtime/issues", - "source": "https://github.com/goetas-webservices/xsd2php-runtime/tree/v0.2.17" + "source": "https://github.com/goetas-webservices/xsd2php-runtime/tree/0.2.18" }, - "time": "2024-04-12T22:55:31+00:00" + "time": "2026-01-16T19:24:00+00:00" }, { "name": "gregwar/captcha", @@ -2929,25 +2929,25 @@ }, { "name": "gregwar/captcha-bundle", - "version": "v2.4.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/Gregwar/CaptchaBundle.git", - "reference": "090a3754f02cadb7ecdb531b090322dbe5c03c75" + "reference": "b129efda562bf8361ca6eb77043036813f749de6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/090a3754f02cadb7ecdb531b090322dbe5c03c75", - "reference": "090a3754f02cadb7ecdb531b090322dbe5c03c75", + "url": "https://api.github.com/repos/Gregwar/CaptchaBundle/zipball/b129efda562bf8361ca6eb77043036813f749de6", + "reference": "b129efda562bf8361ca6eb77043036813f749de6", "shasum": "" }, "require": { "ext-gd": "*", "gregwar/captcha": "^1.2.1", "php": ">=8.0.2", - "symfony/form": "~6.0|~7.0", - "symfony/framework-bundle": "~6.0|~7.0", - "symfony/translation": "~6.0|^7.0", + "symfony/form": "~6.0|~7.0|~8.0", + "symfony/framework-bundle": "~6.0|~7.0|~8.0", + "symfony/translation": "~6.0|~7.0|~8.0", "twig/twig": "^3.0" }, "require-dev": { @@ -2990,9 +2990,9 @@ ], "support": { "issues": "https://github.com/Gregwar/CaptchaBundle/issues", - "source": "https://github.com/Gregwar/CaptchaBundle/tree/v2.4.0" + "source": "https://github.com/Gregwar/CaptchaBundle/tree/v2.5.0" }, - "time": "2025-06-24T10:25:23+00:00" + "time": "2026-01-08T10:51:57+00:00" }, { "name": "guzzlehttp/guzzle", @@ -3433,16 +3433,16 @@ }, { "name": "horstoeko/zugferd", - "version": "v1.0.118", + "version": "v1.0.120", "source": { "type": "git", "url": "https://github.com/horstoeko/zugferd.git", - "reference": "5259a34da6a5e5e92a764e7dd39cd7330335a579" + "reference": "c143ec75a7ffc62e2b64a87d175db9f13ab843c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/5259a34da6a5e5e92a764e7dd39cd7330335a579", - "reference": "5259a34da6a5e5e92a764e7dd39cd7330335a579", + "url": "https://api.github.com/repos/horstoeko/zugferd/zipball/c143ec75a7ffc62e2b64a87d175db9f13ab843c1", + "reference": "c143ec75a7ffc62e2b64a87d175db9f13ab843c1", "shasum": "" }, "require": { @@ -3501,22 +3501,22 @@ ], "support": { "issues": "https://github.com/horstoeko/zugferd/issues", - "source": "https://github.com/horstoeko/zugferd/tree/v1.0.118" + "source": "https://github.com/horstoeko/zugferd/tree/v1.0.120" }, - "time": "2025-12-10T06:08:16+00:00" + "time": "2026-01-07T09:45:19+00:00" }, { "name": "imagine/imagine", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/php-imagine/Imagine.git", - "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04" + "reference": "f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/8b130cd281efdea67e52d5f0f998572eb62d2f04", - "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04", + "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c", + "reference": "f9ed796eefb77c2f0f2167e1d4e36bc2b5ed6b0c", "shasum": "" }, "require": { @@ -3563,9 +3563,9 @@ ], "support": { "issues": "https://github.com/php-imagine/Imagine/issues", - "source": "https://github.com/php-imagine/Imagine/tree/1.5.1" + "source": "https://github.com/php-imagine/Imagine/tree/1.5.2" }, - "time": "2025-12-09T15:27:47+00:00" + "time": "2026-01-09T10:45:12+00:00" }, { "name": "incenteev/composer-parameter-handler", @@ -4442,70 +4442,6 @@ ], "time": "2025-11-01T09:38:14+00:00" }, - { - "name": "lcobucci/clock", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/lcobucci/clock.git", - "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/a3139d9e97d47826f27e6a17bb63f13621f86058", - "reference": "a3139d9e97d47826f27e6a17bb63f13621f86058", - "shasum": "" - }, - "require": { - "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "psr/clock": "^1.0" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "require-dev": { - "infection/infection": "^0.31", - "lcobucci/coding-standard": "^11.2.0", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^2.0.0", - "phpstan/phpstan-deprecation-rules": "^2.0.0", - "phpstan/phpstan-phpunit": "^2.0.0", - "phpstan/phpstan-strict-rules": "^2.0.0", - "phpunit/phpunit": "^12.0.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Lcobucci\\Clock\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Luís Cobucci", - "email": "lcobucci@gmail.com" - } - ], - "description": "Yet another clock abstraction", - "support": { - "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/3.5.0" - }, - "funding": [ - { - "url": "https://github.com/lcobucci", - "type": "github" - }, - { - "url": "https://www.patreon.com/lcobucci", - "type": "patreon" - } - ], - "time": "2025-10-27T09:03:17+00:00" - }, { "name": "lcobucci/jwt", "version": "5.6.0", @@ -4581,44 +4517,44 @@ }, { "name": "lexik/jwt-authentication-bundle", - "version": "v3.1.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git", - "reference": "ebe0e2c6a0ae17b4702feffc89e32e3aaba6cb61" + "reference": "60df75dc70ee6f597929cb2f0812adda591dfa4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/ebe0e2c6a0ae17b4702feffc89e32e3aaba6cb61", - "reference": "ebe0e2c6a0ae17b4702feffc89e32e3aaba6cb61", + "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/60df75dc70ee6f597929cb2f0812adda591dfa4b", + "reference": "60df75dc70ee6f597929cb2f0812adda591dfa4b", "shasum": "" }, "require": { "ext-openssl": "*", - "lcobucci/clock": "^3.0", "lcobucci/jwt": "^5.0", "php": ">=8.2", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.4|^3.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/security-bundle": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^1.0|^2.0|^3.0" }, "require-dev": { "api-platform/core": "^3.0|^4.0", "rector/rector": "^1.2", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/framework-bundle": "^6.4|^7.0", - "symfony/phpunit-bridge": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "suggest": { "gesdinet/jwt-refresh-token-bundle": "Implements a refresh token system over Json Web Tokens in Symfony", @@ -4681,7 +4617,7 @@ ], "support": { "issues": "https://github.com/lexik/LexikJWTAuthenticationBundle/issues", - "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v3.1.1" + "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v3.2.0" }, "funding": [ { @@ -4693,7 +4629,7 @@ "type": "tidelift" } ], - "time": "2025-01-06T16:34:57+00:00" + "time": "2025-12-20T17:47:00+00:00" }, { "name": "liip/imagine-bundle", @@ -5172,16 +5108,16 @@ }, { "name": "monolog/monolog", - "version": "3.9.0", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/10d85740180ecba7896c87e06a166e0c95a0e3b6", - "reference": "10d85740180ecba7896c87e06a166e0c95a0e3b6", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -5199,7 +5135,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -5259,7 +5195,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.9.0" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -5271,7 +5207,7 @@ "type": "tidelift" } ], - "time": "2025-03-24T10:02:05+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "mpdf/mpdf", @@ -5469,16 +5405,16 @@ }, { "name": "mpdf/qrcode", - "version": "v1.2.1", + "version": "v1.2.2", "source": { "type": "git", "url": "https://github.com/mpdf/qrcode.git", - "reference": "5320c512776aa3c199bd8be8f707ec83d9779d85" + "reference": "d4fa19117a7241c30ac84902b6236a02c7a3f268" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mpdf/qrcode/zipball/5320c512776aa3c199bd8be8f707ec83d9779d85", - "reference": "5320c512776aa3c199bd8be8f707ec83d9779d85", + "url": "https://api.github.com/repos/mpdf/qrcode/zipball/d4fa19117a7241c30ac84902b6236a02c7a3f268", + "reference": "d4fa19117a7241c30ac84902b6236a02c7a3f268", "shasum": "" }, "require": { @@ -5486,7 +5422,7 @@ "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "mockery/mockery": "^0.9.5", + "mockery/mockery": "^0.9.5 || ^1.0", "squizlabs/php_codesniffer": "^3.4", "tracy/tracy": "^2.5", "yoast/phpunit-polyfills": "^1.0" @@ -5525,7 +5461,7 @@ ], "support": { "issues": "https://github.com/mpdf/qrcode/issues", - "source": "https://github.com/mpdf/qrcode/tree/v1.2.1" + "source": "https://github.com/mpdf/qrcode/tree/v1.2.2" }, "funding": [ { @@ -5533,7 +5469,7 @@ "type": "custom" } ], - "time": "2024-06-04T13:40:39+00:00" + "time": "2025-12-19T16:21:49+00:00" }, { "name": "myclabs/deep-copy", @@ -5660,16 +5596,16 @@ }, { "name": "nelmio/api-doc-bundle", - "version": "v4.38.6", + "version": "v4.38.7", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioApiDocBundle.git", - "reference": "3a087da90e3455af3590dfc5edeff6b67da50c32" + "reference": "1d53f99b8015ce466c64f7ffee908a48651273e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/3a087da90e3455af3590dfc5edeff6b67da50c32", - "reference": "3a087da90e3455af3590dfc5edeff6b67da50c32", + "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/1d53f99b8015ce466c64f7ffee908a48651273e8", + "reference": "1d53f99b8015ce466c64f7ffee908a48651273e8", "shasum": "" }, "require": { @@ -5770,7 +5706,7 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioApiDocBundle/issues", - "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.38.6" + "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v4.38.7" }, "funding": [ { @@ -5778,20 +5714,20 @@ "type": "github" } ], - "time": "2025-11-28T10:30:54+00:00" + "time": "2026-01-08T08:45:13+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "530217472204881cacd3671909f634b960c7b948" + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/530217472204881cacd3671909f634b960c7b948", - "reference": "530217472204881cacd3671909f634b960c7b948", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", + "reference": "3d80dbcd5d1eb5f8b20ed5199e1778d44c2e4d1c", "shasum": "" }, "require": { @@ -5841,22 +5777,22 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.0" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.6.1" }, - "time": "2025-10-23T06:57:22+00:00" + "time": "2026-01-12T15:59:08+00:00" }, { "name": "nesbot/carbon", - "version": "3.11.0", + "version": "3.11.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "bdb375400dcd162624531666db4799b36b64e4a1" + "reference": "f438fcc98f92babee98381d399c65336f3a3827f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1", - "reference": "bdb375400dcd162624531666db4799b36b64e4a1", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f", "shasum": "" }, "require": { @@ -5880,7 +5816,7 @@ "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan": "^2.1.22", "phpunit/phpunit": "^10.5.53", - "squizlabs/php_codesniffer": "^3.13.4" + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0" }, "bin": [ "bin/carbon" @@ -5923,14 +5859,14 @@ } ], "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", + "homepage": "https://carbonphp.github.io/carbon/", "keywords": [ "date", "datetime", "time" ], "support": { - "docs": "https://carbon.nesbot.com/docs", + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", "issues": "https://github.com/CarbonPHP/carbon/issues", "source": "https://github.com/CarbonPHP/carbon" }, @@ -5948,7 +5884,7 @@ "type": "tidelift" } ], - "time": "2025-12-02T21:04:28+00:00" + "time": "2026-01-29T09:26:29+00:00" }, { "name": "nicolab/php-ftp-client", @@ -6062,44 +5998,44 @@ }, { "name": "oneup/uploader-bundle", - "version": "5.0.1", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/1up-lab/OneupUploaderBundle.git", - "reference": "470b11eeee82946fbf93d5944c63749bcdf65f6f" + "reference": "3a3306ecf331140a45b695753132d3ee713c2969" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/470b11eeee82946fbf93d5944c63749bcdf65f6f", - "reference": "470b11eeee82946fbf93d5944c63749bcdf65f6f", + "url": "https://api.github.com/repos/1up-lab/OneupUploaderBundle/zipball/3a3306ecf331140a45b695753132d3ee713c2969", + "reference": "3a3306ecf331140a45b695753132d3ee713c2969", "shasum": "" }, "require": { "php": "^8.0", - "symfony/asset": "^5.4 || ^6.0 || ^7.0", + "symfony/asset": "^6.0 || ^7.0 || ^8.0", "symfony/event-dispatcher-contracts": "^1.0 || ^2.0 || ^3.0", - "symfony/finder": "^5.4 || ^6.0 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/mime": "^5.4 || ^6.0 || ^7.0", - "symfony/translation": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^6.0 || ^7.0 || ^8.0", + "symfony/framework-bundle": "^6.0 || ^7.0 || ^8.0", + "symfony/mime": "^6.0 || ^7.0 || ^8.0", + "symfony/translation": "^6.0 || ^7.0 || ^8.0", "symfony/translation-contracts": "^1.0 || ^2.0 || ^3.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^6.0 || ^7.0 || ^8.0", "twig/twig": "^2.4 || ^3.0" }, "require-dev": { "amazonwebservices/aws-sdk-for-php": "1.5.*", "doctrine/common": "^2.12 || ^3.0", - "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-bundle": "^2.4 || ^3.2", "friendsofphp/php-cs-fixer": "^3.40", "knplabs/gaufrette": "^0.9", "m2mtech/flysystem-stream-wrapper": "^1.0", "oneup/flysystem-bundle": "^4.1", "phpstan/phpstan": "^1.8", "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^6.0.17 || ^7.0", - "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0", + "symfony/browser-kit": "^6.0 || ^7.0 || ^8.0", + "symfony/phpunit-bridge": "^6.0.17 || ^7.0 || ^8.0", + "symfony/security-bundle": "^6.0 || ^7.0 || ^8.0", + "symfony/var-dumper": "^6.0 || ^7.0 || ^8.0", "twistor/flysystem-stream-wrapper": "^1.0" }, "suggest": { @@ -6148,9 +6084,60 @@ ], "support": { "issues": "https://github.com/1up-lab/OneupUploaderBundle/issues", - "source": "https://github.com/1up-lab/OneupUploaderBundle/tree/5.0.1" + "source": "https://github.com/1up-lab/OneupUploaderBundle/tree/5.1.2" }, - "time": "2024-04-04T06:57:10+00:00" + "time": "2026-02-17T09:07:03+00:00" + }, + { + "name": "oskarstark/enum-helper", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/OskarStark/enum-helper.git", + "reference": "c37c58bdd43530512dfb02cb2f8279b0afef89cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/OskarStark/enum-helper/zipball/c37c58bdd43530512dfb02cb2f8279b0afef89cf", + "reference": "c37c58bdd43530512dfb02cb2f8279b0afef89cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "conflict": { + "phpunit/phpunit": "<10" + }, + "require-dev": { + "ergebnis/php-cs-fixer-config": "^6.58", + "phpstan/phpstan": "^1.11.8", + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "OskarStark\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oskar Stark", + "email": "oskarstark@googlemail.com" + } + ], + "description": "This library provides helpers for several enum operations", + "keywords": [ + "enum" + ], + "support": { + "issues": "https://github.com/OskarStark/enum-helper/issues", + "source": "https://github.com/OskarStark/enum-helper/tree/1.8.3" + }, + "time": "2026-01-11T10:02:45+00:00" }, { "name": "oyejorge/less.php", @@ -6343,16 +6330,16 @@ }, { "name": "paypal/paypal-server-sdk", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/paypal/PayPal-PHP-Server-SDK.git", - "reference": "7d751fa920fec77353593d6190ff9653d5ae90ce" + "reference": "a57716159366aa13e7e1448dcf608077935aae94" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paypal/PayPal-PHP-Server-SDK/zipball/7d751fa920fec77353593d6190ff9653d5ae90ce", - "reference": "7d751fa920fec77353593d6190ff9653d5ae90ce", + "url": "https://api.github.com/repos/paypal/PayPal-PHP-Server-SDK/zipball/a57716159366aa13e7e1448dcf608077935aae94", + "reference": "a57716159366aa13e7e1448dcf608077935aae94", "shasum": "" }, "require": { @@ -6381,9 +6368,9 @@ "homepage": "https://github.com/paypal/PayPal-PHP-Server-SDK", "support": { "issues": "https://github.com/paypal/PayPal-PHP-Server-SDK/issues", - "source": "https://github.com/paypal/PayPal-PHP-Server-SDK/tree/2.1.0" + "source": "https://github.com/paypal/PayPal-PHP-Server-SDK/tree/2.2.0" }, - "time": "2025-12-04T21:51:20+00:00" + "time": "2026-01-21T22:02:20+00:00" }, { "name": "paypal/paypalhttp", @@ -6431,16 +6418,16 @@ }, { "name": "phenx/php-font-lib", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d" + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d", - "reference": "6137b7d4232b7f16c882c75e4ca3991dbcf6fe2d", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a6e9a688a2a80016ac080b97be73d3e10c444c9a", + "reference": "a6e9a688a2a80016ac080b97be73d3e10c444c9a", "shasum": "" }, "require": { @@ -6448,7 +6435,7 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" + "phpunit/phpunit": "^7.5 || ^8 || ^9 || ^10 || ^11 || ^12" }, "type": "library", "autoload": { @@ -6470,9 +6457,9 @@ "homepage": "https://github.com/dompdf/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/1.0.1" + "source": "https://github.com/dompdf/php-font-lib/tree/1.0.2" }, - "time": "2024-12-02T14:37:59+00:00" + "time": "2026-01-20T14:10:26+00:00" }, { "name": "php-jsonpointer/php-jsonpointer", @@ -6585,16 +6572,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.5", + "version": "5.6.6", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761" + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90614c73d3800e187615e2dd236ad0e2a01bf761", - "reference": "90614c73d3800e187615e2dd236ad0e2a01bf761", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", "shasum": "" }, "require": { @@ -6604,7 +6591,7 @@ "phpdocumentor/reflection-common": "^2.2", "phpdocumentor/type-resolver": "^1.7", "phpstan/phpdoc-parser": "^1.7|^2.0", - "webmozart/assert": "^1.9.1" + "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { "mockery/mockery": "~1.3.5 || ~1.6.0", @@ -6643,9 +6630,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.5" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" }, - "time": "2025-11-27T19:50:05+00:00" + "time": "2025-12-22T21:13:58+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -6769,16 +6756,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.30.1", + "version": "1.30.2", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "fa8257a579ec623473eabfe49731de5967306c4c" + "reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/fa8257a579ec623473eabfe49731de5967306c4c", - "reference": "fa8257a579ec623473eabfe49731de5967306c4c", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/09cdde5e2f078b9a3358dd217e2c8cb4dac84be2", + "reference": "09cdde5e2f078b9a3358dd217e2c8cb4dac84be2", "shasum": "" }, "require": { @@ -6801,12 +6788,11 @@ "markbaker/complex": "^3.0", "markbaker/matrix": "^3.0", "php": ">=7.4.0 <8.5.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { "dealerdirect/phpcodesniffer-composer-installer": "dev-main", + "doctrine/instantiator": "^1.5", "dompdf/dompdf": "^1.0 || ^2.0 || ^3.0", "friendsofphp/php-cs-fixer": "^3.2", "mitoteam/jpgraph": "^10.3", @@ -6853,6 +6839,9 @@ }, { "name": "Adrien Crivelli" + }, + { + "name": "Owen Leibman" } ], "description": "PHPSpreadsheet - Read, Create and Write Spreadsheet documents in PHP - Spreadsheet engine", @@ -6869,22 +6858,22 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.1" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.30.2" }, - "time": "2025-10-26T16:01:04+00:00" + "time": "2026-01-11T05:58:24+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.47", + "version": "3.0.49", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d" + "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/9d6ca36a6c2dd434765b1071b2644a1c683b385d", - "reference": "9d6ca36a6c2dd434765b1071b2644a1c683b385d", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/6233a1e12584754e6b5daa69fe1289b47775c1b9", + "reference": "6233a1e12584754e6b5daa69fe1289b47775c1b9", "shasum": "" }, "require": { @@ -6965,7 +6954,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.47" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.49" }, "funding": [ { @@ -6981,20 +6970,20 @@ "type": "tidelift" } ], - "time": "2025-10-06T01:07:24+00:00" + "time": "2026-01-27T09:17:28+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "2.3.0", + "version": "2.3.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495" + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495", - "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", "shasum": "" }, "require": { @@ -7026,9 +7015,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" }, - "time": "2025-08-30T15:50:23+00:00" + "time": "2026-01-25T14:56:51+00:00" }, { "name": "picqer/sendcloud-php-client", @@ -8469,16 +8458,16 @@ }, { "name": "smalot/pdfparser", - "version": "v2.12.2", + "version": "v2.12.3", "source": { "type": "git", "url": "https://github.com/smalot/pdfparser.git", - "reference": "370b7e983fafecb787a9bcfd73baab8038212ad1" + "reference": "61c9bcafcb92899b76d8ebda6508267bae77e264" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/smalot/pdfparser/zipball/370b7e983fafecb787a9bcfd73baab8038212ad1", - "reference": "370b7e983fafecb787a9bcfd73baab8038212ad1", + "url": "https://api.github.com/repos/smalot/pdfparser/zipball/61c9bcafcb92899b76d8ebda6508267bae77e264", + "reference": "61c9bcafcb92899b76d8ebda6508267bae77e264", "shasum": "" }, "require": { @@ -8514,9 +8503,9 @@ ], "support": { "issues": "https://github.com/smalot/pdfparser/issues", - "source": "https://github.com/smalot/pdfparser/tree/v2.12.2" + "source": "https://github.com/smalot/pdfparser/tree/v2.12.3" }, - "time": "2025-09-04T08:49:09+00:00" + "time": "2026-01-08T08:04:04+00:00" }, { "name": "sofort/sofortlib-php", @@ -8566,16 +8555,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "7b9202dccfe18d4e3a13303156d6bbcc1c61dabf" + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7b9202dccfe18d4e3a13303156d6bbcc1c61dabf", - "reference": "7b9202dccfe18d4e3a13303156d6bbcc1c61dabf", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/88b2f3852a922dd73177a68938f8eb2ec70c7224", + "reference": "88b2f3852a922dd73177a68938f8eb2ec70c7224", "shasum": "" }, "require": { @@ -8618,7 +8607,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.4.3" + "source": "https://github.com/spatie/array-to-xml/tree/3.4.4" }, "funding": [ { @@ -8630,7 +8619,7 @@ "type": "github" } ], - "time": "2025-11-27T09:08:26+00:00" + "time": "2025-12-15T09:00:41+00:00" }, { "name": "spiriitlabs/form-filter-bundle", @@ -8686,17 +8675,394 @@ "time": "2025-06-10T07:13:16+00:00" }, { - "name": "symfony/asset", - "version": "v7.4.0", + "name": "symfony/ai-agent", + "version": "v0.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f" + "url": "https://github.com/symfony/ai-agent.git", + "reference": "919caff0ee3f837c1de6fab0791bf05079feb971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/0f7bccb9ffa1f373cbd659774d90629b2773464f", - "reference": "0f7bccb9ffa1f373cbd659774d90629b2773464f", + "url": "https://api.github.com/repos/symfony/ai-agent/zipball/919caff0ee3f837c1de6fab0791bf05079feb971", + "reference": "919caff0ee3f837c1de6fab0791bf05079feb971", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=8.2", + "phpdocumentor/reflection-docblock": "^5.4", + "phpstan/phpdoc-parser": "^2.1", + "psr/log": "^3.0", + "symfony/ai-platform": "^0.5", + "symfony/clock": "^7.3|^8.0", + "symfony/http-client": "^7.3|^8.0", + "symfony/polyfill-php85": "^1.33", + "symfony/property-access": "^7.3|^8.0", + "symfony/property-info": "^7.3|^8.0", + "symfony/serializer": "^7.3|^8.0", + "symfony/type-info": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5.53", + "symfony/ai-store": "^0.5", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/translation-contracts": "^3.6" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ai", + "name": "symfony/ai" + } + }, + "autoload": { + "psr-4": { + "Symfony\\AI\\Agent\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christopher Hertel", + "email": "mail@christopher-hertel.de" + }, + { + "name": "Oskar Stark", + "email": "oskarstark@googlemail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "PHP library for building agentic applications.", + "keywords": [ + "Agent", + "ai", + "llm" + ], + "support": { + "source": "https://github.com/symfony/ai-agent/tree/v0.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-19T18:34:43+00:00" + }, + { + "name": "symfony/ai-bundle", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ai-bundle.git", + "reference": "8e40040389367724f4cdf3f56523c5d56df18f65" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ai-bundle/zipball/8e40040389367724f4cdf3f56523c5d56df18f65", + "reference": "8e40040389367724f4cdf3f56523c5d56df18f65", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/ai-platform": "^0.5", + "symfony/clock": "^7.3|^8.0", + "symfony/config": "^7.3|^8.0", + "symfony/console": "^7.3|^8.0", + "symfony/dependency-injection": "^7.3|^8.0", + "symfony/framework-bundle": "^7.3|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.3|^8.0" + }, + "require-dev": { + "google/auth": "^1.47", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5.53", + "symfony/ai-agent": "^0.5", + "symfony/ai-ai-ml-api-platform": "^0.5", + "symfony/ai-albert-platform": "^0.5", + "symfony/ai-anthropic-platform": "^0.5", + "symfony/ai-azure-platform": "^0.5", + "symfony/ai-azure-search-store": "^0.5", + "symfony/ai-bedrock-platform": "^0.5", + "symfony/ai-cache-message-store": "^0.5", + "symfony/ai-cache-platform": "^0.5", + "symfony/ai-cache-store": "^0.5", + "symfony/ai-cartesia-platform": "^0.5", + "symfony/ai-cerebras-platform": "^0.5", + "symfony/ai-chat": "^0.5", + "symfony/ai-chroma-db-store": "^0.5", + "symfony/ai-click-house-store": "^0.5", + "symfony/ai-cloudflare-message-store": "^0.5", + "symfony/ai-cloudflare-store": "^0.5", + "symfony/ai-decart-platform": "^0.5", + "symfony/ai-deep-seek-platform": "^0.5", + "symfony/ai-docker-model-runner-platform": "^0.5", + "symfony/ai-doctrine-message-store": "^0.5", + "symfony/ai-elasticsearch-store": "^0.5", + "symfony/ai-eleven-labs-platform": "^0.5", + "symfony/ai-failover-platform": "^0.5", + "symfony/ai-gemini-platform": "^0.5", + "symfony/ai-generic-platform": "^0.5", + "symfony/ai-hugging-face-platform": "^0.5", + "symfony/ai-lm-studio-platform": "^0.5", + "symfony/ai-manticore-search-store": "^0.5", + "symfony/ai-maria-db-store": "^0.5", + "symfony/ai-meilisearch-message-store": "^0.5", + "symfony/ai-meilisearch-store": "^0.5", + "symfony/ai-meta-platform": "^0.5", + "symfony/ai-milvus-store": "^0.5", + "symfony/ai-mistral-platform": "^0.5", + "symfony/ai-mongo-db-message-store": "^0.5", + "symfony/ai-mongo-db-store": "^0.5", + "symfony/ai-neo4j-store": "^0.5", + "symfony/ai-ollama-platform": "^0.5", + "symfony/ai-open-ai-platform": "^0.5", + "symfony/ai-open-responses-platform": "^0.5", + "symfony/ai-open-router-platform": "^0.5", + "symfony/ai-open-search-store": "^0.5", + "symfony/ai-perplexity-platform": "^0.5", + "symfony/ai-pinecone-store": "^0.5", + "symfony/ai-pogocache-message-store": "^0.5", + "symfony/ai-postgres-store": "^0.5", + "symfony/ai-qdrant-store": "^0.5", + "symfony/ai-redis-message-store": "^0.5", + "symfony/ai-redis-store": "^0.5", + "symfony/ai-replicate-platform": "^0.5", + "symfony/ai-scaleway-platform": "^0.5", + "symfony/ai-session-message-store": "^0.5", + "symfony/ai-store": "^0.5", + "symfony/ai-supabase-store": "^0.5", + "symfony/ai-surreal-db-message-store": "^0.5", + "symfony/ai-surreal-db-store": "^0.5", + "symfony/ai-transformers-php-platform": "^0.5", + "symfony/ai-typesense-store": "^0.5", + "symfony/ai-vertex-ai-platform": "^0.5", + "symfony/ai-voyage-platform": "^0.5", + "symfony/ai-weaviate-store": "^0.5", + "symfony/expression-language": "^7.3|^8.0", + "symfony/security-core": "^7.3|^8.0", + "symfony/translation": "^7.3|^8.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ai", + "name": "symfony/ai" + } + }, + "autoload": { + "psr-4": { + "Symfony\\AI\\AiBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christopher Hertel", + "email": "mail@christopher-hertel.de" + }, + { + "name": "Oskar Stark", + "email": "oskarstark@googlemail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Integration bundle for Symfony AI components", + "support": { + "source": "https://github.com/symfony/ai-bundle/tree/v0.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-20T10:38:35+00:00" + }, + { + "name": "symfony/ai-platform", + "version": "v0.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ai-platform.git", + "reference": "8c95f23a79fd7f0e6c48c182a81c08283aee4938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ai-platform/zipball/8c95f23a79fd7f0e6c48c182a81c08283aee4938", + "reference": "8c95f23a79fd7f0e6c48c182a81c08283aee4938", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "oskarstark/enum-helper": "^1.5", + "php": ">=8.2", + "phpdocumentor/reflection-docblock": "^5.4", + "phpstan/phpdoc-parser": "^2.1", + "psr/log": "^3.0", + "symfony/clock": "^7.3|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/property-access": "^7.3|^8.0", + "symfony/property-info": "^7.3|^8.0", + "symfony/serializer": "^7.3|^8.0", + "symfony/type-info": "^7.3|^8.0", + "symfony/uid": "^7.3|^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^11.5.53", + "symfony/cache": "^7.3|^8.0", + "symfony/console": "^7.3|^8.0", + "symfony/dotenv": "^7.3|^8.0", + "symfony/expression-language": "^7.3|^8.0", + "symfony/finder": "^7.3|^8.0", + "symfony/http-client": "^7.3|^8.0", + "symfony/http-client-contracts": "^3.5", + "symfony/process": "^7.3|^8.0", + "symfony/var-dumper": "^7.3|^8.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ai", + "name": "symfony/ai" + } + }, + "autoload": { + "psr-4": { + "Symfony\\AI\\Platform\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christopher Hertel", + "email": "mail@christopher-hertel.de" + }, + { + "name": "Oskar Stark", + "email": "oskarstark@googlemail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "PHP library for interacting with AI platform provider.", + "keywords": [ + "Gemini", + "OpenRouter", + "ai", + "aimlapi", + "albert", + "amazeeai", + "anthropic", + "azure", + "bedrock", + "cerebras", + "dockermodelrunner", + "elevenlabs", + "huggingface", + "inference", + "litellm", + "llama", + "lmstudio", + "meta", + "mistral", + "nova", + "ollama", + "openai", + "ovh", + "perplexity", + "replicate", + "transformers", + "vertexai", + "voyage" + ], + "support": { + "source": "https://github.com/symfony/ai-platform/tree/v0.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-02-18T23:13:41+00:00" + }, + { + "name": "symfony/asset", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "d944ae87e4697af05aadeacfc5e603c3c18ef4fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/d944ae87e4697af05aadeacfc5e603c3c18ef4fb", + "reference": "d944ae87e4697af05aadeacfc5e603c3c18ef4fb", "shasum": "" }, "require": { @@ -8736,7 +9102,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.4.0" + "source": "https://github.com/symfony/asset/tree/v7.4.6" }, "funding": [ { @@ -8756,20 +9122,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-02-09T09:33:46+00:00" }, { "name": "symfony/asset-mapper", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", - "reference": "90beb7ededfcfcf0ea2f58cac3c0340ee504f596" + "reference": "87b67d12754132339414a1eb7fd1f6640f4f71b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/90beb7ededfcfcf0ea2f58cac3c0340ee504f596", - "reference": "90beb7ededfcfcf0ea2f58cac3c0340ee504f596", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/87b67d12754132339414a1eb7fd1f6640f4f71b6", + "reference": "87b67d12754132339414a1eb7fd1f6640f4f71b6", "shasum": "" }, "require": { @@ -8821,7 +9187,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/v7.4.0" + "source": "https://github.com/symfony/asset-mapper/tree/v7.4.6" }, "funding": [ { @@ -8841,20 +9207,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T13:17:08+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/cache", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366" + "reference": "1d06192e8f164e2729b0031e6807d72a6195b8bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/21e0755783bbbab58f2bb6a7a57896d21d27a366", - "reference": "21e0755783bbbab58f2bb6a7a57896d21d27a366", + "url": "https://api.github.com/repos/symfony/cache/zipball/1d06192e8f164e2729b0031e6807d72a6195b8bb", + "reference": "1d06192e8f164e2729b0031e6807d72a6195b8bb", "shasum": "" }, "require": { @@ -8925,7 +9291,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.1" + "source": "https://github.com/symfony/cache/tree/v7.4.6" }, "funding": [ { @@ -8945,7 +9311,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:11:45+00:00" + "time": "2026-02-21T23:29:27+00:00" }, { "name": "symfony/cache-contracts", @@ -9103,16 +9469,16 @@ }, { "name": "symfony/config", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495" + "reference": "9400e2f9226b3b64ebb0a8ae967ae84e54e39640" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2c323304c354a43a48b61c5fa760fc4ed60ce495", - "reference": "2c323304c354a43a48b61c5fa760fc4ed60ce495", + "url": "https://api.github.com/repos/symfony/config/zipball/9400e2f9226b3b64ebb0a8ae967ae84e54e39640", + "reference": "9400e2f9226b3b64ebb0a8ae967ae84e54e39640", "shasum": "" }, "require": { @@ -9158,7 +9524,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.4.1" + "source": "https://github.com/symfony/config/tree/v7.4.6" }, "funding": [ { @@ -9178,20 +9544,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T07:52:08+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/console", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" + "reference": "6d643a93b47398599124022eb24d97c153c12f27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", - "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "url": "https://api.github.com/repos/symfony/console/zipball/6d643a93b47398599124022eb24d97c153c12f27", + "reference": "6d643a93b47398599124022eb24d97c153c12f27", "shasum": "" }, "require": { @@ -9256,7 +9622,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.1" + "source": "https://github.com/symfony/console/tree/v7.4.6" }, "funding": [ { @@ -9276,20 +9642,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T15:23:39+00:00" + "time": "2026-02-25T17:02:47+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.4.2", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b" + "reference": "a3f7d594ca53a34a7d39ae683fbca09408b0c598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", - "reference": "baf614f7c15b30ba6762d4b1ddabdf83dbf0d29b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/a3f7d594ca53a34a7d39ae683fbca09408b0c598", + "reference": "a3f7d594ca53a34a7d39ae683fbca09408b0c598", "shasum": "" }, "require": { @@ -9340,7 +9706,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.4.2" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.6" }, "funding": [ { @@ -9360,7 +9726,7 @@ "type": "tidelift" } ], - "time": "2025-12-08T06:57:04+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/deprecation-contracts", @@ -9431,16 +9797,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3" + "reference": "710cb7313446aa5ce67e2da06c01f1640dfbdcc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", - "reference": "7acd7ce1b71601b25d698bc2da6b52e43f3c72b3", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/710cb7313446aa5ce67e2da06c01f1640dfbdcc6", + "reference": "710cb7313446aa5ce67e2da06c01f1640dfbdcc6", "shasum": "" }, "require": { @@ -9520,7 +9886,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.1" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.6" }, "funding": [ { @@ -9540,20 +9906,20 @@ "type": "tidelift" } ], - "time": "2025-12-04T17:15:58+00:00" + "time": "2026-02-17T08:07:48+00:00" }, { "name": "symfony/dotenv", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364" + "reference": "db374255a1c99511d34d5e009dce5be75d0d9c23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/1658a4d34df028f3d93bcdd8e81f04423925a364", - "reference": "1658a4d34df028f3d93bcdd8e81f04423925a364", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/db374255a1c99511d34d5e009dce5be75d0d9c23", + "reference": "db374255a1c99511d34d5e009dce5be75d0d9c23", "shasum": "" }, "require": { @@ -9598,7 +9964,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.4.0" + "source": "https://github.com/symfony/dotenv/tree/v7.4.6" }, "funding": [ { @@ -9618,20 +9984,20 @@ "type": "tidelift" } ], - "time": "2025-11-16T10:14:42+00:00" + "time": "2026-02-13T11:43:08+00:00" }, { "name": "symfony/error-handler", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", - "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", "shasum": "" }, "require": { @@ -9680,7 +10046,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.0" + "source": "https://github.com/symfony/error-handler/tree/v7.4.4" }, "funding": [ { @@ -9700,20 +10066,20 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:29:59+00:00" + "time": "2026-01-20T16:42:42+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", - "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", "shasum": "" }, "require": { @@ -9765,7 +10131,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.4" }, "funding": [ { @@ -9785,7 +10151,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T09:38:46+00:00" + "time": "2026-01-05T11:45:34+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -9865,16 +10231,16 @@ }, { "name": "symfony/expression-language", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa" + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/8b9bbbb8c71f79a09638f6ea77c531e511139efa", - "reference": "8b9bbbb8c71f79a09638f6ea77c531e511139efa", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", "shasum": "" }, "require": { @@ -9909,7 +10275,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.4.0" + "source": "https://github.com/symfony/expression-language/tree/v7.4.4" }, "funding": [ { @@ -9929,20 +10295,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:39:26+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/filesystem", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d551b38811096d0be9c4691d406991b47c0c630a" + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", - "reference": "d551b38811096d0be9c4691d406991b47c0c630a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3ebc794fa5315e59fd122561623c2e2e4280538e", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e", "shasum": "" }, "require": { @@ -9979,7 +10345,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.0" + "source": "https://github.com/symfony/filesystem/tree/v7.4.6" }, "funding": [ { @@ -9999,20 +10365,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/finder", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", - "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", + "url": "https://api.github.com/repos/symfony/finder/zipball/8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf", "shasum": "" }, "require": { @@ -10047,7 +10413,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.0" + "source": "https://github.com/symfony/finder/tree/v7.4.6" }, "funding": [ { @@ -10067,7 +10433,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T05:42:40+00:00" + "time": "2026-01-29T09:40:50+00:00" }, { "name": "symfony/flex", @@ -10144,16 +10510,16 @@ }, { "name": "symfony/form", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "04984c79b08c70dc106498fc250917060d88aee2" + "reference": "1ec55f7b1a6152760a670415c334f70a08d264f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/04984c79b08c70dc106498fc250917060d88aee2", - "reference": "04984c79b08c70dc106498fc250917060d88aee2", + "url": "https://api.github.com/repos/symfony/form/zipball/1ec55f7b1a6152760a670415c334f70a08d264f9", + "reference": "1ec55f7b1a6152760a670415c334f70a08d264f9", "shasum": "" }, "require": { @@ -10223,7 +10589,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.4.1" + "source": "https://github.com/symfony/form/tree/v7.4.6" }, "funding": [ { @@ -10243,20 +10609,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3" + "reference": "a4022da7530f794aa64cea34b388439afb6323a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", - "reference": "2fa3b3ad6ed75ce0cc8cad8a5027b4f25b990bc3", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/a4022da7530f794aa64cea34b388439afb6323a3", + "reference": "a4022da7530f794aa64cea34b388439afb6323a3", "shasum": "" }, "require": { @@ -10264,8 +10630,8 @@ "ext-xml": "*", "php": ">=8.2", "symfony/cache": "^6.4.12|^7.0|^8.0", - "symfony/config": "^7.4|^8.0", - "symfony/dependency-injection": "^7.4|^8.0", + "symfony/config": "^7.4.4|^8.0.4", + "symfony/dependency-injection": "^7.4.4|^8.0.4", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^7.3|^8.0", "symfony/event-dispatcher": "^6.4|^7.0|^8.0", @@ -10279,8 +10645,8 @@ }, "conflict": { "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/asset": "<6.4", "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.4", @@ -10312,7 +10678,7 @@ "require-dev": { "doctrine/persistence": "^1.3|^2|^3", "dragonmantank/cron-expression": "^3.1", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "seld/jsonlint": "^1.10", "symfony/asset": "^6.4|^7.0|^8.0", "symfony/asset-mapper": "^6.4|^7.0|^8.0", @@ -10381,7 +10747,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.4.1" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.6" }, "funding": [ { @@ -10401,20 +10767,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "26cc224ea7103dda90e9694d9e139a389092d007" + "reference": "2bde8afd5ab2fe0b05a9c2d4c3c0e28ceb98a154" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/26cc224ea7103dda90e9694d9e139a389092d007", - "reference": "26cc224ea7103dda90e9694d9e139a389092d007", + "url": "https://api.github.com/repos/symfony/http-client/zipball/2bde8afd5ab2fe0b05a9c2d4c3c0e28ceb98a154", + "reference": "2bde8afd5ab2fe0b05a9c2d4c3c0e28ceb98a154", "shasum": "" }, "require": { @@ -10482,7 +10848,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.1" + "source": "https://github.com/symfony/http-client/tree/v7.4.6" }, "funding": [ { @@ -10502,7 +10868,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T21:12:57+00:00" + "time": "2026-02-18T09:46:18+00:00" }, { "name": "symfony/http-client-contracts", @@ -10584,16 +10950,16 @@ }, { "name": "symfony/http-foundation", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" + "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", - "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fd97d5e926e988a363cef56fbbf88c5c528e9065", + "reference": "fd97d5e926e988a363cef56fbbf88c5c528e9065", "shasum": "" }, "require": { @@ -10642,7 +11008,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.6" }, "funding": [ { @@ -10662,20 +11028,20 @@ "type": "tidelift" } ], - "time": "2025-12-07T11:13:10+00:00" + "time": "2026-02-21T16:25:55+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.2", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f" + "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f", - "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", + "reference": "002ac0cf4cd972a7fd0912dcd513a95e8a81ce83", "shasum": "" }, "require": { @@ -10717,7 +11083,7 @@ "symfony/config": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", "symfony/css-selector": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4.1|^7.0.1|^8.0", "symfony/dom-crawler": "^6.4|^7.0|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", @@ -10761,7 +11127,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.2" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.6" }, "funding": [ { @@ -10781,20 +11147,20 @@ "type": "tidelift" } ], - "time": "2025-12-08T07:43:37+00:00" + "time": "2026-02-26T08:30:57+00:00" }, { "name": "symfony/intl", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c" + "reference": "6d6a398b18f73b3110140dbb030dcee2ae4ea81f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/2fa074de6c7faa6b54f2891fc22708f42245ed5c", - "reference": "2fa074de6c7faa6b54f2891fc22708f42245ed5c", + "url": "https://api.github.com/repos/symfony/intl/zipball/6d6a398b18f73b3110140dbb030dcee2ae4ea81f", + "reference": "6d6a398b18f73b3110140dbb030dcee2ae4ea81f", "shasum": "" }, "require": { @@ -10851,7 +11217,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v7.4.0" + "source": "https://github.com/symfony/intl/tree/v7.4.6" }, "funding": [ { @@ -10871,20 +11237,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-02-09T09:33:46+00:00" }, { "name": "symfony/lock", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "8ba5de8ab1b2d1766b654f60f1551bf4aefc542f" + "reference": "c39d02f61a039ef660e44f36719b1440414fe493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/8ba5de8ab1b2d1766b654f60f1551bf4aefc542f", - "reference": "8ba5de8ab1b2d1766b654f60f1551bf4aefc542f", + "url": "https://api.github.com/repos/symfony/lock/zipball/c39d02f61a039ef660e44f36719b1440414fe493", + "reference": "c39d02f61a039ef660e44f36719b1440414fe493", "shasum": "" }, "require": { @@ -10934,7 +11300,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v7.4.1" + "source": "https://github.com/symfony/lock/tree/v7.4.6" }, "funding": [ { @@ -10954,20 +11320,20 @@ "type": "tidelift" } ], - "time": "2025-12-04T21:29:12+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", - "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9", "shasum": "" }, "require": { @@ -11018,7 +11384,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.0" + "source": "https://github.com/symfony/mailer/tree/v7.4.6" }, "funding": [ { @@ -11038,20 +11404,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/mime", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" + "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", - "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", + "url": "https://api.github.com/repos/symfony/mime/zipball/9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", + "reference": "9fc881d95feae4c6c48678cb6372bd8a7ba04f5f", "shasum": "" }, "require": { @@ -11062,15 +11428,15 @@ }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/mailer": "<6.4", "symfony/serializer": "<6.4.3|>7.0,<7.0.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", "symfony/process": "^6.4|^7.0|^8.0", "symfony/property-access": "^6.4|^7.0|^8.0", @@ -11107,7 +11473,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.0" + "source": "https://github.com/symfony/mime/tree/v7.4.6" }, "funding": [ { @@ -11127,20 +11493,20 @@ "type": "tidelift" } ], - "time": "2025-11-16T10:14:42+00:00" + "time": "2026-02-05T15:57:06+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21" + "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/189d16466ff83d9c51fad26382bf0beeb41bda21", - "reference": "189d16466ff83d9c51fad26382bf0beeb41bda21", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/69e98e7e10dae3daa896ef0f20e17a3928362d88", + "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88", "shasum": "" }, "require": { @@ -11190,7 +11556,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.6" }, "funding": [ { @@ -11210,7 +11576,7 @@ "type": "tidelift" } ], - "time": "2025-11-01T09:17:33+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/monolog-bundle", @@ -11293,16 +11659,16 @@ }, { "name": "symfony/notifier", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", - "reference": "3acae3ec78e920d251361adabb270e8d724a525a" + "reference": "f2033239ef9bc095fcac2305ccdd91a11fa2b7aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/notifier/zipball/3acae3ec78e920d251361adabb270e8d724a525a", - "reference": "3acae3ec78e920d251361adabb270e8d724a525a", + "url": "https://api.github.com/repos/symfony/notifier/zipball/f2033239ef9bc095fcac2305ccdd91a11fa2b7aa", + "reference": "f2033239ef9bc095fcac2305ccdd91a11fa2b7aa", "shasum": "" }, "require": { @@ -11316,7 +11682,9 @@ "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/http-client": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/messenger": "^6.4|^7.0|^8.0" @@ -11351,7 +11719,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/v7.4.0" + "source": "https://github.com/symfony/notifier/tree/v7.4.6" }, "funding": [ { @@ -11371,7 +11739,7 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2026-02-18T09:40:04+00:00" }, { "name": "symfony/options-resolver", @@ -11446,16 +11814,16 @@ }, { "name": "symfony/password-hasher", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e" + "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/aa075ce6f54fe931f03c1e382597912f4fd94e1e", - "reference": "aa075ce6f54fe931f03c1e382597912f4fd94e1e", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/376755eb9c9857d78aedb68341ad2f46d1908b29", + "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29", "shasum": "" }, "require": { @@ -11498,7 +11866,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.4.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.6" }, "funding": [ { @@ -11518,7 +11886,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T16:46:49+00:00" + "time": "2026-02-11T16:03:16+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -12352,17 +12720,100 @@ "time": "2025-06-23T16:12:55+00:00" }, { - "name": "symfony/process", - "version": "v7.4.0", + "name": "symfony/polyfill-uuid", + "version": "v1.33.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", - "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "reference": "21533be36c24be3f4b1669c4725c7d1d2bab4ae2", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.33.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v7.4.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "608476f4604102976d687c483ac63a79ba18cc97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", "shasum": "" }, "require": { @@ -12394,7 +12845,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.0" + "source": "https://github.com/symfony/process/tree/v7.4.5" }, "funding": [ { @@ -12414,25 +12865,25 @@ "type": "tidelift" } ], - "time": "2025-10-16T11:21:06+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/property-access", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4" + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/537626149d2910ca43eb9ce465654366bf4442f4", - "reference": "537626149d2910ca43eb9ce465654366bf4442f4", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0|^8.0" + "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" }, "require-dev": { "symfony/cache": "^6.4|^7.0|^8.0", @@ -12475,7 +12926,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.0" + "source": "https://github.com/symfony/property-access/tree/v7.4.4" }, "funding": [ { @@ -12495,37 +12946,37 @@ "type": "tidelift" } ], - "time": "2025-09-08T21:14:32+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae" + "reference": "6396b28f44d7c28b209a1bd73acf0dd985a0a4ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/912aafe70bee5cfd09fec5916fe35b83f04ae6ae", - "reference": "912aafe70bee5cfd09fec5916fe35b83f04ae6ae", + "url": "https://api.github.com/repos/symfony/property-info/zipball/6396b28f44d7c28b209a1bd73acf0dd985a0a4ef", + "reference": "6396b28f44d7c28b209a1bd73acf0dd985a0a4ef", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "~7.3.8|^7.4.1|^8.0.1" + "symfony/type-info": "~7.3.10|^7.4.4|^8.0.4" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/reflection-docblock": "<5.2|>=7", "phpdocumentor/type-resolver": "<1.5.1", "symfony/cache": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/serializer": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "phpstan/phpdoc-parser": "^1.0|^2.0", "symfony/cache": "^6.4|^7.0|^8.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", @@ -12565,7 +13016,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.1" + "source": "https://github.com/symfony/property-info/tree/v7.4.6" }, "funding": [ { @@ -12585,7 +13036,7 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2026-02-13T11:51:31+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -12660,16 +13111,16 @@ }, { "name": "symfony/routing", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4720254cb2644a0b876233d258a32bf017330db7" + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", - "reference": "4720254cb2644a0b876233d258a32bf017330db7", + "url": "https://api.github.com/repos/symfony/routing/zipball/238d749c56b804b31a9bf3e26519d93b65a60938", + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938", "shasum": "" }, "require": { @@ -12721,7 +13172,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.0" + "source": "https://github.com/symfony/routing/tree/v7.4.6" }, "funding": [ { @@ -12741,7 +13192,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/runtime", @@ -12828,16 +13279,16 @@ }, { "name": "symfony/security-bundle", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9" + "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/48a64e746857464a5e8fd7bab84b31c9ba967eb9", - "reference": "48a64e746857464a5e8fd7bab84b31c9ba967eb9", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d79c6d9a373fe8585e85bcfca4c24b9783214263", + "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263", "shasum": "" }, "require": { @@ -12916,7 +13367,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.4.0" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.6" }, "funding": [ { @@ -12936,20 +13387,20 @@ "type": "tidelift" } ], - "time": "2025-11-14T09:57:20+00:00" + "time": "2026-02-22T22:01:45+00:00" }, { "name": "symfony/security-core", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51" + "reference": "958a70725a8d669bec6721f4cd318d209712e944" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/fe4d25e5700a2f3b605bf23f520be57504ae5c51", - "reference": "fe4d25e5700a2f3b605bf23f520be57504ae5c51", + "url": "https://api.github.com/repos/symfony/security-core/zipball/958a70725a8d669bec6721f4cd318d209712e944", + "reference": "958a70725a8d669bec6721f4cd318d209712e944", "shasum": "" }, "require": { @@ -13007,7 +13458,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.0" + "source": "https://github.com/symfony/security-core/tree/v7.4.4" }, "funding": [ { @@ -13027,20 +13478,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2026-01-14T09:36:49+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab" + "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", - "reference": "ec41009e83589d0b3d86bd131d07e6fc8ecf35ab", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", + "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", "shasum": "" }, "require": { @@ -13081,7 +13532,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.4.0" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.6" }, "funding": [ { @@ -13101,20 +13552,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T15:26:00+00:00" + "time": "2026-02-11T16:03:16+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea" + "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/46a4432ad2fab65735216d113e18f1f9eb6d28ea", - "reference": "46a4432ad2fab65735216d113e18f1f9eb6d28ea", + "url": "https://api.github.com/repos/symfony/security-http/zipball/52ce5ef5708900dcab9f55750cf81250a0ebba9f", + "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f", "shasum": "" }, "require": { @@ -13173,7 +13624,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.1" + "source": "https://github.com/symfony/security-http/tree/v7.4.6" }, "funding": [ { @@ -13193,20 +13644,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T08:41:26+00:00" + "time": "2026-02-18T09:46:18+00:00" }, { "name": "symfony/serializer", - "version": "v7.4.2", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "1a957acb613b520e443c2c659a67c782b67794bc" + "reference": "83c3cbd6dcb96c1dbe197499a0714f8dceb0f274" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/1a957acb613b520e443c2c659a67c782b67794bc", - "reference": "1a957acb613b520e443c2c659a67c782b67794bc", + "url": "https://api.github.com/repos/symfony/serializer/zipball/83c3cbd6dcb96c1dbe197499a0714f8dceb0f274", + "reference": "83c3cbd6dcb96c1dbe197499a0714f8dceb0f274", "shasum": "" }, "require": { @@ -13216,17 +13667,18 @@ "symfony/polyfill-php84": "^1.30" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/dependency-injection": "<6.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", + "symfony/type-info": "<7.2.5", "symfony/uid": "<6.4", "symfony/validator": "<6.4", "symfony/yaml": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", "symfony/cache": "^6.4|^7.0|^8.0", @@ -13243,7 +13695,7 @@ "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/property-info": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/type-info": "^7.1.8|^8.0", + "symfony/type-info": "^7.2.5|^8.0", "symfony/uid": "^6.4|^7.0|^8.0", "symfony/validator": "^6.4|^7.0|^8.0", "symfony/var-dumper": "^6.4|^7.0|^8.0", @@ -13276,7 +13728,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.4.2" + "source": "https://github.com/symfony/serializer/tree/v7.4.6" }, "funding": [ { @@ -13296,7 +13748,7 @@ "type": "tidelift" } ], - "time": "2025-12-07T17:35:40+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/service-contracts", @@ -13387,16 +13839,16 @@ }, { "name": "symfony/stimulus-bundle", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/stimulus-bundle.git", - "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0" + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", - "reference": "c5ea8ee2ccd45447b7f4b6b82f704ee5e76127f0", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/dfbf6b443bb381cb611e06f64dc23603b614b575", + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575", "shasum": "" }, "require": { @@ -13436,7 +13888,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.31.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.32.0" }, "funding": [ { @@ -13456,20 +13908,20 @@ "type": "tidelift" } ], - "time": "2025-09-24T13:27:42+00:00" + "time": "2025-12-02T07:12:06+00:00" }, { "name": "symfony/string", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", - "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", + "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b", + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b", "shasum": "" }, "require": { @@ -13527,7 +13979,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.0" + "source": "https://github.com/symfony/string/tree/v7.4.6" }, "funding": [ { @@ -13547,20 +13999,20 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-02-09T09:33:46+00:00" }, { "name": "symfony/translation", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" + "reference": "1888cf064399868af3784b9e043240f1d89d25ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", - "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "url": "https://api.github.com/repos/symfony/translation/zipball/1888cf064399868af3784b9e043240f1d89d25ce", + "reference": "1888cf064399868af3784b9e043240f1d89d25ce", "shasum": "" }, "require": { @@ -13627,7 +14079,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.0" + "source": "https://github.com/symfony/translation/tree/v7.4.6" }, "funding": [ { @@ -13647,7 +14099,7 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/translation-contracts", @@ -13733,16 +14185,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8" + "reference": "8903bc9a64cf624ffe522893f3626d5a0b97175c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/9103559ef3e9f06708d8bff6810f6335b8f1eee8", - "reference": "9103559ef3e9f06708d8bff6810f6335b8f1eee8", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/8903bc9a64cf624ffe522893f3626d5a0b97175c", + "reference": "8903bc9a64cf624ffe522893f3626d5a0b97175c", "shasum": "" }, "require": { @@ -13752,10 +14204,10 @@ "twig/twig": "^3.21" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/console": "<6.4", - "symfony/form": "<6.4", + "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", "symfony/mime": "<6.4", @@ -13766,7 +14218,7 @@ "require-dev": { "egulias/email-validator": "^2.1.10|^3|^4", "league/html-to-markdown": "^5.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "symfony/asset": "^6.4|^7.0|^8.0", "symfony/asset-mapper": "^6.4|^7.0|^8.0", "symfony/console": "^6.4|^7.0|^8.0", @@ -13774,7 +14226,7 @@ "symfony/emoji": "^7.1|^8.0", "symfony/expression-language": "^6.4|^7.0|^8.0", "symfony/finder": "^6.4|^7.0|^8.0", - "symfony/form": "^6.4.30|~7.3.8|^7.4.1|^8.0.1", + "symfony/form": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", "symfony/html-sanitizer": "^6.4|^7.0|^8.0", "symfony/http-foundation": "^7.3|^8.0", "symfony/http-kernel": "^6.4|^7.0|^8.0", @@ -13824,7 +14276,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.1" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.6" }, "funding": [ { @@ -13844,20 +14296,20 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef" + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f83f530d00d1bbc6f7fafeb433077887c83326ef", - "reference": "f83f530d00d1bbc6f7fafeb433077887c83326ef", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e8829e02ff96a391ed0703bac9e7ff0537480b6b", + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b", "shasum": "" }, "require": { @@ -13865,6 +14317,7 @@ "php": ">=8.2", "symfony/config": "^7.4|^8.0", "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", "symfony/twig-bridge": "^7.3|^8.0", @@ -13913,7 +14366,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.4.0" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.4" }, "funding": [ { @@ -13933,20 +14386,20 @@ "type": "tidelift" } ], - "time": "2025-10-02T07:41:02+00:00" + "time": "2026-01-06T12:34:24+00:00" }, { "name": "symfony/type-info", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202" + "reference": "4855ceea609b2c09e48ff76e12a97a3955531735" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/ac5ab66b21c758df71b7210cf1033d1ac807f202", - "reference": "ac5ab66b21c758df71b7210cf1033d1ac807f202", + "url": "https://api.github.com/repos/symfony/type-info/zipball/4855ceea609b2c09e48ff76e12a97a3955531735", + "reference": "4855ceea609b2c09e48ff76e12a97a3955531735", "shasum": "" }, "require": { @@ -13996,7 +14449,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.1" + "source": "https://github.com/symfony/type-info/tree/v7.4.6" }, "funding": [ { @@ -14016,20 +14469,98 @@ "type": "tidelift" } ], - "time": "2025-12-05T14:04:53+00:00" + "time": "2026-02-17T14:00:31+00:00" }, { - "name": "symfony/ux-autocomplete", - "version": "v2.31.0", + "name": "symfony/uid", + "version": "v7.4.4", "source": { "type": "git", - "url": "https://github.com/symfony/ux-autocomplete.git", - "reference": "35063b65e9648eed2257d4fdc5c66fe26e3d7e53" + "url": "https://github.com/symfony/uid.git", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-autocomplete/zipball/35063b65e9648eed2257d4fdc5c66fe26e3d7e53", - "reference": "35063b65e9648eed2257d4fdc5c66fe26e3d7e53", + "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v7.4.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-01-03T23:30:35+00:00" + }, + { + "name": "symfony/ux-autocomplete", + "version": "v2.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-autocomplete.git", + "reference": "d4259531cadaf6c36c611a325fe0fe4b9955c279" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-autocomplete/zipball/d4259531cadaf6c36c611a325fe0fe4b9955c279", + "reference": "d4259531cadaf6c36c611a325fe0fe4b9955c279", "shasum": "" }, "require": { @@ -14045,7 +14576,7 @@ }, "require-dev": { "doctrine/collections": "^1.6.8|^2.0", - "doctrine/doctrine-bundle": "^2.4.3", + "doctrine/doctrine-bundle": "^2.4.3|^3.0|^4.0", "doctrine/orm": "^2.9.4|^3.0", "fakerphp/faker": "^1.22", "mtdowling/jmespath.php": "^2.6", @@ -14090,7 +14621,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-autocomplete/tree/v2.31.0" + "source": "https://github.com/symfony/ux-autocomplete/tree/v2.32.0" }, "funding": [ { @@ -14110,20 +14641,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T07:24:06+00:00" + "time": "2026-01-01T14:41:17+00:00" }, { "name": "symfony/ux-chartjs", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-chartjs.git", - "reference": "17f3e24bca0444a2316e408c4d4d13d89598a187" + "reference": "5d65b055255a546801eec8a6d48eca7b98d4c613" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-chartjs/zipball/17f3e24bca0444a2316e408c4d4d13d89598a187", - "reference": "17f3e24bca0444a2316e408c4d4d13d89598a187", + "url": "https://api.github.com/repos/symfony/ux-chartjs/zipball/5d65b055255a546801eec8a6d48eca7b98d4c613", + "reference": "5d65b055255a546801eec8a6d48eca7b98d4c613", "shasum": "" }, "require": { @@ -14174,7 +14705,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-chartjs/tree/v2.31.0" + "source": "https://github.com/symfony/ux-chartjs/tree/v2.32.0" }, "funding": [ { @@ -14194,20 +14725,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T07:24:06+00:00" + "time": "2025-12-16T07:08:36+00:00" }, { "name": "symfony/ux-live-component", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-live-component.git", - "reference": "10776be28e15b731ba9d6e3eb43e840434442d67" + "reference": "0beb730fa9fc2c3f95410085130aa19147714178" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/10776be28e15b731ba9d6e3eb43e840434442d67", - "reference": "10776be28e15b731ba9d6e3eb43e840434442d67", + "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/0beb730fa9fc2c3f95410085130aa19147714178", + "reference": "0beb730fa9fc2c3f95410085130aa19147714178", "shasum": "" }, "require": { @@ -14227,10 +14758,10 @@ "require-dev": { "doctrine/annotations": "^1.0|^2.0", "doctrine/collections": "^1.6.8|^2.0", - "doctrine/doctrine-bundle": "^2.4.3", + "doctrine/doctrine-bundle": "^2.4.3|^3.0|^4.0", "doctrine/orm": "^2.9.4|^3.0", - "doctrine/persistence": "^2.5.2|^3.0", - "phpdocumentor/reflection-docblock": "5.x-dev", + "doctrine/persistence": "^2.5.2|^3.0|^4.0", + "phpdocumentor/reflection-docblock": "^5.6.2", "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0", "symfony/expression-language": "^5.4|^6.0|^7.0|^8.0", "symfony/form": "^5.4|^6.0|^7.0|^8.0", @@ -14275,7 +14806,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-live-component/tree/v2.31.0" + "source": "https://github.com/symfony/ux-live-component/tree/v2.32.0" }, "funding": [ { @@ -14295,20 +14826,20 @@ "type": "tidelift" } ], - "time": "2025-10-22T02:51:40+00:00" + "time": "2026-01-03T23:25:02+00:00" }, { "name": "symfony/ux-twig-component", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-twig-component.git", - "reference": "6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa" + "reference": "0a300088327d1b766733fdcd81ae4a77852d6177" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa", - "reference": "6f7ecc103cdb51adb6d76d32e374fcd1d33ff2fa", + "url": "https://api.github.com/repos/symfony/ux-twig-component/zipball/0a300088327d1b766733fdcd81ae4a77852d6177", + "reference": "0a300088327d1b766733fdcd81ae4a77852d6177", "shasum": "" }, "require": { @@ -14362,7 +14893,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-twig-component/tree/v2.31.0" + "source": "https://github.com/symfony/ux-twig-component/tree/v2.32.0" }, "funding": [ { @@ -14382,20 +14913,20 @@ "type": "tidelift" } ], - "time": "2025-10-17T06:14:35+00:00" + "time": "2025-12-25T09:25:01+00:00" }, { "name": "symfony/ux-vue", - "version": "v2.31.0", + "version": "v2.32.0", "source": { "type": "git", "url": "https://github.com/symfony/ux-vue.git", - "reference": "9362a99ace71d35c6c5df8fdf5a7b0a6be273f2b" + "reference": "3d10660f49bfb2063aca881dfd11c5f50e17b7fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-vue/zipball/9362a99ace71d35c6c5df8fdf5a7b0a6be273f2b", - "reference": "9362a99ace71d35c6c5df8fdf5a7b0a6be273f2b", + "url": "https://api.github.com/repos/symfony/ux-vue/zipball/3d10660f49bfb2063aca881dfd11c5f50e17b7fc", + "reference": "3d10660f49bfb2063aca881dfd11c5f50e17b7fc", "shasum": "" }, "require": { @@ -14446,7 +14977,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-vue/tree/v2.31.0" + "source": "https://github.com/symfony/ux-vue/tree/v2.32.0" }, "funding": [ { @@ -14466,20 +14997,20 @@ "type": "tidelift" } ], - "time": "2025-10-16T07:24:06+00:00" + "time": "2025-12-02T07:12:06+00:00" }, { "name": "symfony/validator", - "version": "v7.4.2", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "569b71d1243ccc58e8f1d21e279669239e78f60d" + "reference": "a1ceaf285712ed8034819a76b5fbba23eaf3e54d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/569b71d1243ccc58e8f1d21e279669239e78f60d", - "reference": "569b71d1243ccc58e8f1d21e279669239e78f60d", + "url": "https://api.github.com/repos/symfony/validator/zipball/a1ceaf285712ed8034819a76b5fbba23eaf3e54d", + "reference": "a1ceaf285712ed8034819a76b5fbba23eaf3e54d", "shasum": "" }, "require": { @@ -14550,7 +15081,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.2" + "source": "https://github.com/symfony/validator/tree/v7.4.6" }, "funding": [ { @@ -14570,20 +15101,20 @@ "type": "tidelift" } ], - "time": "2025-12-07T17:35:40+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", - "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/045321c440ac18347b136c63d2e9bf28a2dc0291", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291", "shasum": "" }, "require": { @@ -14637,7 +15168,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.6" }, "funding": [ { @@ -14657,7 +15188,7 @@ "type": "tidelift" } ], - "time": "2025-10-27T20:36:44+00:00" + "time": "2026-02-15T10:53:20+00:00" }, { "name": "symfony/var-exporter", @@ -14742,16 +15273,16 @@ }, { "name": "symfony/web-link", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942" + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/c62edd6b52e31cf2f6f38fd3386725f364f19942", - "reference": "c62edd6b52e31cf2f6f38fd3386725f364f19942", + "url": "https://api.github.com/repos/symfony/web-link/zipball/9ff1f19069e3d2d341d60729392a4a6dfc45052a", + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a", "shasum": "" }, "require": { @@ -14805,7 +15336,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.4.0" + "source": "https://github.com/symfony/web-link/tree/v7.4.4" }, "funding": [ { @@ -14825,20 +15356,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-01-01T22:13:48+00:00" }, { "name": "symfony/yaml", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "24dd4de28d2e3988b311751ac49e684d783e2345" + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/24dd4de28d2e3988b311751ac49e684d783e2345", - "reference": "24dd4de28d2e3988b311751ac49e684d783e2345", + "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391", "shasum": "" }, "require": { @@ -14881,7 +15412,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.1" + "source": "https://github.com/symfony/yaml/tree/v7.4.6" }, "funding": [ { @@ -14901,7 +15432,7 @@ "type": "tidelift" } ], - "time": "2025-12-04T18:11:45+00:00" + "time": "2026-02-09T09:33:46+00:00" }, { "name": "symfonycasts/dynamic-forms", @@ -15185,16 +15716,16 @@ }, { "name": "twig/extra-bundle", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "b6534bc925bec930004facca92fccebd0c809247" + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/b6534bc925bec930004facca92fccebd0c809247", - "reference": "b6534bc925bec930004facca92fccebd0c809247", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/7a27e784dc56eddfef5e9295829b290ce06f1682", + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682", "shasum": "" }, "require": { @@ -15243,7 +15774,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.22.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.23.0" }, "funding": [ { @@ -15255,20 +15786,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2025-12-18T20:46:15+00:00" }, { "name": "twig/intl-extra", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1" + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", - "reference": "93ac31e53cdd3f2e541f42690cd0c54ca8138ab1", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", + "reference": "32f15a38d45a8d0ec11bc8a3d97d3ac2a261499f", "shasum": "" }, "require": { @@ -15307,7 +15838,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.22.1" + "source": "https://github.com/twigphp/intl-extra/tree/v3.23.0" }, "funding": [ { @@ -15319,20 +15850,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2026-01-17T13:57:47+00:00" }, { "name": "twig/string-extra", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13" + "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/d5f16e0bec548bc96cce255b5f43d90492b8ce13", - "reference": "d5f16e0bec548bc96cce255b5f43d90492b8ce13", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/6ec8f2e8ca9b2193221a02cb599dc92c36384368", + "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368", "shasum": "" }, "require": { @@ -15374,7 +15905,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.22.1" + "source": "https://github.com/twigphp/string-extra/tree/v3.23.0" }, "funding": [ { @@ -15386,20 +15917,20 @@ "type": "tidelift" } ], - "time": "2025-11-02T11:00:49+00:00" + "time": "2025-12-02T14:45:16+00:00" }, { "name": "twig/twig", - "version": "v3.22.1", + "version": "v3.23.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3" + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", - "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", "shasum": "" }, "require": { @@ -15453,7 +15984,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.22.1" + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" }, "funding": [ { @@ -15465,7 +15996,7 @@ "type": "tidelift" } ], - "time": "2025-11-16T16:01:12+00:00" + "time": "2026-01-23T21:00:41+00:00" }, { "name": "webmozart/assert", @@ -15559,16 +16090,16 @@ }, { "name": "zircote/swagger-php", - "version": "5.7.6", + "version": "5.8.2", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "e4727bad28cf426b026421162af384f893c0142c" + "reference": "18ee6592518238a5a6c9905aae4926d5bbc65754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/e4727bad28cf426b026421162af384f893c0142c", - "reference": "e4727bad28cf426b026421162af384f893c0142c", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/18ee6592518238a5a6c9905aae4926d5bbc65754", + "reference": "18ee6592518238a5a6c9905aae4926d5bbc65754", "shasum": "" }, "require": { @@ -15590,7 +16121,7 @@ "friendsofphp/php-cs-fixer": "^3.62.0", "phpstan/phpstan": "^1.6 || ^2.0", "phpunit/phpunit": "^9.0", - "rector/rector": "^1.0 || ^2.0", + "rector/rector": "^1.0 || ^2.3.1", "vimeo/psalm": "^4.30 || ^5.0" }, "suggest": { @@ -15641,9 +16172,15 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/5.7.6" + "source": "https://github.com/zircote/swagger-php/tree/5.8.2" }, - "time": "2025-12-04T01:33:01+00:00" + "funding": [ + { + "url": "https://github.com/zircote", + "type": "github" + } + ], + "time": "2026-02-10T20:10:15+00:00" } ], "packages-dev": [ @@ -15895,35 +16432,36 @@ }, { "name": "hautelook/alice-bundle", - "version": "2.16.0", + "version": "2.17.2", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc" + "reference": "f6add53c2d0b14229c6d5af0092f611c1fb15244" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc", - "reference": "69c9e3e6b85fcb3ed0dd430e8f790489aaa0cbcc", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/f6add53c2d0b14229c6d5af0092f611c1fb15244", + "reference": "f6add53c2d0b14229c6d5af0092f611c1fb15244", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.7 || ^2.0", - "doctrine/doctrine-bundle": "^2.11.3 || ^3.0", + "doctrine/doctrine-bundle": "^2.18.2 || ^3.0", "doctrine/orm": "^3.1", "doctrine/persistence": "^3.3.1 || ^4.0", - "php": "^8.2", + "php": "^8.4", "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/finder": "^6.4 || ^7.0", - "symfony/framework-bundle": "^6.4 || ^7.0", - "theofidry/alice-data-fixtures": "^1.7" + "symfony/doctrine-bridge": "^7.4 || ^8.0", + "symfony/finder": "^7.4 || ^8.0", + "symfony/framework-bundle": "^7.4 || ^8.0", + "theofidry/alice-data-fixtures": "^1.10" }, "require-dev": { "monolog/monolog": "^3.5", "phpspec/prophecy": "^1.14.0", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.6.17", - "symfony/phpunit-bridge": "^6.4.4 || ^7.0" + "phpunit/phpunit": "^11.5.46", + "symfony/runtime": "*" }, "type": "symfony-bundle", "extra": { @@ -15963,9 +16501,9 @@ ], "support": { "issues": "https://github.com/theofidry/AliceBundle/issues", - "source": "https://github.com/theofidry/AliceBundle/tree/2.16.0" + "source": "https://github.com/theofidry/AliceBundle/tree/2.17.2" }, - "time": "2025-10-24T09:03:19+00:00" + "time": "2026-01-05T09:47:07+00:00" }, { "name": "maglnet/composer-require-checker", @@ -16200,16 +16738,16 @@ }, { "name": "nelmio/alice", - "version": "3.16.0", + "version": "3.16.1", "source": { "type": "git", "url": "https://github.com/nelmio/alice.git", - "reference": "a1101609a2d78cadbc0dfea54a763c233fe474a6" + "reference": "56dd770a6ba7f43cea91375f4b7d1b4bed80d6b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/alice/zipball/a1101609a2d78cadbc0dfea54a763c233fe474a6", - "reference": "a1101609a2d78cadbc0dfea54a763c233fe474a6", + "url": "https://api.github.com/repos/nelmio/alice/zipball/56dd770a6ba7f43cea91375f4b7d1b4bed80d6b9", + "reference": "56dd770a6ba7f43cea91375f4b7d1b4bed80d6b9", "shasum": "" }, "require": { @@ -16219,7 +16757,7 @@ "sebastian/comparator": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php84": "^1.31", "symfony/property-access": "^7.4 || ^8.0", - "symfony/yaml": "^6.0 || ^7.4" + "symfony/yaml": "^7.4 || ^8.0" }, "conflict": { "symfony/framework-bundle": "<7.4.0" @@ -16283,7 +16821,7 @@ ], "support": { "issues": "https://github.com/nelmio/alice/issues", - "source": "https://github.com/nelmio/alice/tree/3.16.0" + "source": "https://github.com/nelmio/alice/tree/3.16.1" }, "funding": [ { @@ -16291,7 +16829,7 @@ "type": "github" } ], - "time": "2025-12-09T12:44:34+00:00" + "time": "2025-12-17T08:56:35+00:00" }, { "name": "phar-io/manifest", @@ -16417,12 +16955,12 @@ "source": { "type": "git", "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", - "reference": "04d7a69ef68eb86ad0f81cf79012301e02260710" + "reference": "6ddfd6b3eb280721b82405b2537494a1e80da54e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/04d7a69ef68eb86ad0f81cf79012301e02260710", - "reference": "04d7a69ef68eb86ad0f81cf79012301e02260710", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6ddfd6b3eb280721b82405b2537494a1e80da54e", + "reference": "6ddfd6b3eb280721b82405b2537494a1e80da54e", "shasum": "" }, "require": { @@ -16475,20 +17013,20 @@ "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/develop" }, - "time": "2025-11-25T00:10:03+00:00" + "time": "2025-12-15T20:47:28+00:00" }, { "name": "php-webdriver/webdriver", - "version": "1.15.2", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/php-webdriver/php-webdriver.git", - "reference": "998e499b786805568deaf8cbf06f4044f05d91bf" + "reference": "ac0662863aa120b4f645869f584013e4c4dba46a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/998e499b786805568deaf8cbf06f4044f05d91bf", - "reference": "998e499b786805568deaf8cbf06f4044f05d91bf", + "url": "https://api.github.com/repos/php-webdriver/php-webdriver/zipball/ac0662863aa120b4f645869f584013e4c4dba46a", + "reference": "ac0662863aa120b4f645869f584013e4c4dba46a", "shasum": "" }, "require": { @@ -16497,7 +17035,7 @@ "ext-zip": "*", "php": "^7.3 || ^8.0", "symfony/polyfill-mbstring": "^1.12", - "symfony/process": "^5.0 || ^6.0 || ^7.0" + "symfony/process": "^5.0 || ^6.0 || ^7.0 || ^8.0" }, "replace": { "facebook/webdriver": "*" @@ -16510,10 +17048,10 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpunit/phpunit": "^9.3", "squizlabs/php_codesniffer": "^3.5", - "symfony/var-dumper": "^5.0 || ^6.0 || ^7.0" + "symfony/var-dumper": "^5.0 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { - "ext-SimpleXML": "For Firefox profile creation" + "ext-simplexml": "For Firefox profile creation" }, "type": "library", "autoload": { @@ -16539,17 +17077,17 @@ ], "support": { "issues": "https://github.com/php-webdriver/php-webdriver/issues", - "source": "https://github.com/php-webdriver/php-webdriver/tree/1.15.2" + "source": "https://github.com/php-webdriver/php-webdriver/tree/1.16.0" }, - "time": "2024-11-21T15:12:59+00:00" + "time": "2025-12-28T23:57:40+00:00" }, { "name": "phpstan/phpstan", - "version": "2.1.33", + "version": "2.1.40", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", "shasum": "" }, "require": { @@ -16594,7 +17132,7 @@ "type": "github" } ], - "time": "2025-12-05T10:24:31+00:00" + "time": "2026-02-23T15:04:35+00:00" }, { "name": "phpunit/php-code-coverage", @@ -16919,16 +17457,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.60", + "version": "10.5.63", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f2e26f52f80ef77832e359205f216eeac00e320c" + "reference": "33198268dad71e926626b618f3ec3966661e4d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f2e26f52f80ef77832e359205f216eeac00e320c", - "reference": "f2e26f52f80ef77832e359205f216eeac00e320c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/33198268dad71e926626b618f3ec3966661e4d90", + "reference": "33198268dad71e926626b618f3ec3966661e4d90", "shasum": "" }, "require": { @@ -16949,7 +17487,7 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.4", + "sebastian/comparator": "^5.0.5", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", "sebastian/exporter": "^5.1.4", @@ -17000,7 +17538,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.60" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.63" }, "funding": [ { @@ -17024,7 +17562,7 @@ "type": "tidelift" } ], - "time": "2025-12-06T07:50:42+00:00" + "time": "2026-01-27T05:48:37+00:00" }, { "name": "sebastian/cli-parser", @@ -17196,16 +17734,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.4", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e" + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e", - "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55dfef806eb7dfeb6e7a6935601fef866f8ca48d", + "reference": "55dfef806eb7dfeb6e7a6935601fef866f8ca48d", "shasum": "" }, "require": { @@ -17261,7 +17799,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.5" }, "funding": [ { @@ -17281,7 +17819,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T05:25:07+00:00" + "time": "2026-01-24T09:25:16+00:00" }, { "name": "sebastian/complexity", @@ -18060,16 +18598,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.0", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb" + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/3bb26dafce31633b1f699894c86379eefc8af5bb", - "reference": "3bb26dafce31633b1f699894c86379eefc8af5bb", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bed167eadaaba641f51fc842c9227aa5e251309e", + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e", "shasum": "" }, "require": { @@ -18109,7 +18647,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.4.0" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.4" }, "funding": [ { @@ -18129,20 +18667,20 @@ "type": "tidelift" } ], - "time": "2025-11-05T14:29:59+00:00" + "time": "2026-01-13T10:40:19+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", - "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/2e7c52c647b406e2107dd867db424a4dbac91864", + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864", "shasum": "" }, "require": { @@ -18178,7 +18716,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.0" + "source": "https://github.com/symfony/css-selector/tree/v7.4.6" }, "funding": [ { @@ -18198,7 +18736,7 @@ "type": "tidelift" } ], - "time": "2025-10-30T13:39:42+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/debug-bundle", @@ -18277,16 +18815,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.4.1", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "0c5e8f20c74c78172a8ee72b125909b505033597" + "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0c5e8f20c74c78172a8ee72b125909b505033597", - "reference": "0c5e8f20c74c78172a8ee72b125909b505033597", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/487ba8fa43da9a8e6503fe939b45ecd96875410e", + "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e", "shasum": "" }, "require": { @@ -18325,7 +18863,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.1" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.6" }, "funding": [ { @@ -18345,20 +18883,20 @@ "type": "tidelift" } ], - "time": "2025-12-06T15:47:47+00:00" + "time": "2026-02-17T07:53:42+00:00" }, { "name": "symfony/panther", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/panther.git", - "reference": "7d96ff386394ffc02ff320253e7fb6585e3cb76e" + "reference": "2d810395942e71aea2f7ea8e8b5f82326bb4b8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/panther/zipball/7d96ff386394ffc02ff320253e7fb6585e3cb76e", - "reference": "7d96ff386394ffc02ff320253e7fb6585e3cb76e", + "url": "https://api.github.com/repos/symfony/panther/zipball/2d810395942e71aea2f7ea8e8b5f82326bb4b8b4", + "reference": "2d810395942e71aea2f7ea8e8b5f82326bb4b8b4", "shasum": "" }, "require": { @@ -18370,7 +18908,7 @@ "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0", "symfony/deprecation-contracts": "^2.4 || ^3", "symfony/dom-crawler": "^6.4 || ^7.3 || ^8.0", - "symfony/http-client": "^6.4 || ^7.0", + "symfony/http-client": "^6.4 || ^7.0 || ^8.0", "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0", "symfony/process": "^6.4 || ^7.3 || ^8.0" }, @@ -18418,7 +18956,7 @@ ], "support": { "issues": "https://github.com/symfony/panther/issues", - "source": "https://github.com/symfony/panther/tree/v2.3.0" + "source": "https://github.com/symfony/panther/tree/v2.4.0" }, "funding": [ { @@ -18434,20 +18972,20 @@ "type": "tidelift" } ], - "time": "2025-11-21T14:10:51+00:00" + "time": "2026-01-08T05:29:21+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v7.4.0", + "version": "v7.4.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b" + "reference": "f933e68bb9df29d08077a37e1515a23fea8562ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/059b051b38f2138ef104dd848fa48f0cbbb7d78b", - "reference": "059b051b38f2138ef104dd848fa48f0cbbb7d78b", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/f933e68bb9df29d08077a37e1515a23fea8562ab", + "reference": "f933e68bb9df29d08077a37e1515a23fea8562ab", "shasum": "" }, "require": { @@ -18499,7 +19037,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.0" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.3" }, "funding": [ { @@ -18519,7 +19057,7 @@ "type": "tidelift" } ], - "time": "2025-10-28T22:44:23+00:00" + "time": "2025-12-09T15:33:45+00:00" }, { "name": "symfony/stopwatch", @@ -18589,16 +19127,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.0", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696" + "reference": "952fbb5ea12e101e05510069eacf01e169955100" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/dcd955ca9c60f2942194854518049f8ae4dbd696", - "reference": "dcd955ca9c60f2942194854518049f8ae4dbd696", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/952fbb5ea12e101e05510069eacf01e169955100", + "reference": "952fbb5ea12e101e05510069eacf01e169955100", "shasum": "" }, "require": { @@ -18655,7 +19193,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.6" }, "funding": [ { @@ -18675,7 +19213,7 @@ "type": "tidelift" } ], - "time": "2025-11-19T14:48:01+00:00" + "time": "2026-02-11T16:03:16+00:00" }, { "name": "symplify/config-transformer", @@ -18726,23 +19264,23 @@ }, { "name": "theofidry/alice-data-fixtures", - "version": "1.9.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/theofidry/AliceDataFixtures.git", - "reference": "2098f47253571fab4bce13f75cd96da9ff5139ab" + "reference": "011a482252ab416f2e4681731e954554d250695e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/2098f47253571fab4bce13f75cd96da9ff5139ab", - "reference": "2098f47253571fab4bce13f75cd96da9ff5139ab", + "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/011a482252ab416f2e4681731e954554d250695e", + "reference": "011a482252ab416f2e4681731e954554d250695e", "shasum": "" }, "require": { "nelmio/alice": "^3.10", - "php": "^8.3", + "php": "^8.4", "psr/log": "^1 || ^2 || ^3", - "webmozart/assert": "^1.10" + "webmozart/assert": "^1.10 || ^2.0" }, "conflict": { "doctrine/data-fixtures": "<1.7.0", @@ -18754,9 +19292,9 @@ "doctrine/persistence": "<2.5.7 || >=3.0 <3.4.0", "doctrine/phpcr-bundle": "<3.0", "doctrine/phpcr-odm": "<2.0.0", - "illuminate/database": "<10.0", + "illuminate/database": "<12.0", "ocramius/proxy-manager": "<2.1", - "symfony/framework-bundle": ">=6.0 <6.4.19", + "symfony/framework-bundle": "<7.4.0", "zendframework/zend-code": "<3.3.1" }, "require-dev": { @@ -18764,10 +19302,9 @@ "phpspec/prophecy": "^1.20.0", "phpspec/prophecy-phpunit": "^2.3.0", "phpunit/phpunit": "^11.5.12", - "symfony/phpunit-bridge": "^7.2" + "symfony/runtime": "*" }, "suggest": { - "alcaeus/mongo-php-adapter": "To use Doctrine with the MongoDB flavour", "doctrine/data-fixtures": "To use Doctrine", "doctrine/dbal": "To use Doctrine with the PHPCR flavour", "doctrine/mongodb": "To use Doctrine with the MongoDB flavour", @@ -18775,8 +19312,7 @@ "doctrine/orm": "To use Doctrine ORM", "doctrine/phpcr-odm": "To use Doctrine with the PHPCR flavour", "illuminate/database": "To use Eloquent", - "jackalope/jackalope-doctrine-dbal": "To use Doctrine with the PHPCR flavour", - "ocramius/proxy-manager": "To avoid database connection on kernel boot" + "jackalope/jackalope-doctrine-dbal": "To use Doctrine with the PHPCR flavour" }, "type": "library", "extra": { @@ -18815,7 +19351,7 @@ ], "support": { "issues": "https://github.com/theofidry/AliceDataFixtures/issues", - "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.9.0" + "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.11.0" }, "funding": [ { @@ -18823,7 +19359,7 @@ "type": "github" } ], - "time": "2025-03-09T12:39:40+00:00" + "time": "2025-12-18T23:35:24+00:00" }, { "name": "theseer/tokenizer", @@ -18938,37 +19474,37 @@ }, { "name": "vincentlanglet/twig-cs-fixer", - "version": "3.11.0", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/VincentLanglet/Twig-CS-Fixer.git", - "reference": "866af065fd09980b6390ee5c69e45b08053101e8" + "reference": "599f110f192c31af5deb5736d6c1a970afdf51f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/866af065fd09980b6390ee5c69e45b08053101e8", - "reference": "866af065fd09980b6390ee5c69e45b08053101e8", + "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/599f110f192c31af5deb5736d6c1a970afdf51f3", + "reference": "599f110f192c31af5deb5736d6c1a970afdf51f3", "shasum": "" }, "require": { "composer-runtime-api": "^2.0.0", "ext-ctype": "*", - "ext-json": "*", - "php": ">=8.0", + "php": ">=8.1", "symfony/console": "^5.4.9 || ^6.4 || ^7.0 || ^8.0", "symfony/filesystem": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symfony/finder": "^5.4 || ^6.4 || ^7.0 || ^8.0", "symfony/string": "^5.4.42 || ^6.4.10 || ~7.0.10 || ^7.1.3 || ^8.0", "twig/twig": "^3.4", - "webmozart/assert": "^1.10" + "webmozart/assert": "^1.10 || ^2.0" }, "require-dev": { "composer/semver": "^3.2.0", "dereuromark/composer-prefer-lowest": "^0.1.10", "ergebnis/composer-normalize": "^2.29", "friendsofphp/php-cs-fixer": "^3.13.0", - "infection/infection": "^0.26.16 || ^0.29.14", + "infection/infection": "^0.26.16 || ^0.32.0", "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0", "phpstan/phpstan-phpunit": "^2.0", "phpstan/phpstan-strict-rules": "^2.0", "phpstan/phpstan-symfony": "^2.0", @@ -19003,7 +19539,7 @@ "homepage": "https://github.com/VincentLanglet/Twig-CS-Fixer", "support": { "issues": "https://github.com/VincentLanglet/Twig-CS-Fixer/issues", - "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/3.11.0" + "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/3.14.0" }, "funding": [ { @@ -19011,7 +19547,7 @@ "type": "github" } ], - "time": "2025-11-24T18:13:18+00:00" + "time": "2026-02-23T13:21:35+00:00" }, { "name": "webmozart/glob", diff --git a/src/new/config/bundles.php b/src/new/config/bundles.php index aff078d16..85f9e742e 100755 --- a/src/new/config/bundles.php +++ b/src/new/config/bundles.php @@ -44,6 +44,7 @@ return [ PSC\Shop\CommunicationBundle\PSCShopCommunicationBundle::class => ['all' => true], PSC\Component\SteplayouterBundle\PSCComponentSteplayouterBundle::class => ['all' => true], PSC\Component\ApiBundle\PSCComponentApiBundle::class => ['all' => true], + PSC\Component\AiBundle\PSCComponentAiBundle::class => ['all' => true], PSC\Component\ConfigurationlayouterBundle\PSCComponentConfigurationlayouterBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], Nelmio\ApiDocBundle\NelmioApiDocBundle::class => ['all' => true], @@ -62,4 +63,5 @@ return [ Symfonycasts\SassBundle\SymfonycastsSassBundle::class => ['all' => true], Symfony\UX\Vue\VueBundle::class => ['all' => true], Spiriit\Bundle\FormFilterBundle\SpiriitFormFilterBundle::class => ['all' => true], + Symfony\AI\AiBundle\AiBundle::class => ['all' => true], ]; diff --git a/src/new/config/packages/ai.yaml b/src/new/config/packages/ai.yaml new file mode 100644 index 000000000..89f8e7aee --- /dev/null +++ b/src/new/config/packages/ai.yaml @@ -0,0 +1,27 @@ +ai: + platform: + # Inference Platform configuration + # see https://github.com/symfony/ai/tree/main/src/platform#platform-bridges + + # openai: + # api_key: '%env(OPENAI_API_KEY)%' + + agent: + # Agent configuration + # see https://symfony.com/doc/current/ai/bundles/ai-bundle.html + + # default: + # platform: 'ai.platform.openai' + # model: 'gpt-5-mini' + # prompt: | + # You are a pirate and you write funny. + # tools: + # - 'Symfony\AI\Agent\Bridge\Clock\Clock' + + store: + # Store configuration + + # chromadb: + # default: + # client: 'client.service.id' + # collection: 'my_collection' diff --git a/src/new/config/packages/dev/monolog.php b/src/new/config/packages/dev/monolog.php index 5c0acd269..c4a60f488 100755 --- a/src/new/config/packages/dev/monolog.php +++ b/src/new/config/packages/dev/monolog.php @@ -7,23 +7,32 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura return static function (ContainerConfigurator $containerConfigurator): void { $containerConfigurator->extension( 'monolog', [ + 'channels' => ['ai'], 'handlers' => [ + 'ai' => [ + 'type' => 'stream', + 'path' => '%kernel.logs_dir%/ai.log', + 'level' => 'debug', + 'channels' => ['ai'], + ], 'main' => [ - 'type' => 'stream', - 'path' => '%kernel.logs_dir%/%kernel.environment%.log', - 'level' => 'debug', + 'type' => 'stream', + 'path' => '%kernel.logs_dir%/%kernel.environment%.log', + 'level' => 'debug', 'channels' => [ - '!event', - '!php' + '!event', + '!php', + '!ai', ] - ], + ], 'console' => [ - 'type' => 'console', - 'process_psr_3_messages' => false, + 'type' => 'console', + 'process_psr_3_messages' => false, 'channels' => [ - '!event', - '!doctrine', - '!console' + '!event', + '!doctrine', + '!console', + '!ai', ] ] ] diff --git a/src/new/config/reference.php b/src/new/config/reference.php index 1875f986e..a52f4b18b 100644 --- a/src/new/config/reference.php +++ b/src/new/config/reference.php @@ -4,6 +4,8 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; +use Symfony\Component\Config\Loader\ParamConfigurator as Param; + /** * This class provides array-shapes for configuring the services and bundles of an application. * @@ -31,7 +33,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * type?: string|null, * ignore_errors?: bool, * }> - * @psalm-type ParametersConfig = array|null>|null> + * @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 @@ -125,545 +127,545 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * @psalm-type ExtensionType = array * @psalm-type DoctrineConfig = array{ * dbal?: array{ - * default_connection?: scalar|null, + * default_connection?: scalar|Param|null, * types?: array, - * driver_schemes?: array, + * driver_schemes?: array, * connections?: array, - * mapping_types?: array, - * default_table_options?: array, - * schema_manager_factory?: scalar|null, // Default: "doctrine.dbal.default_schema_manager_factory" - * result_cache?: scalar|null, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|Param|null, * replicas?: array, * }>, * }, * orm?: array{ - * default_entity_manager?: scalar|null, - * enable_native_lazy_objects?: bool, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in DoctrineBundle 4.0, as native lazy objects are now always enabled. // Default: true + * default_entity_manager?: scalar|Param|null, + * enable_native_lazy_objects?: bool|Param, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in DoctrineBundle 4.0, as native lazy objects are now always enabled. // Default: true * controller_resolver?: bool|array{ - * enabled?: bool, // Default: true - * auto_mapping?: bool, // Deprecated: The "auto_mapping" option is deprecated and will be removed in DoctrineBundle 4.0, as it only accepts `false` since 3.0. // Set to true to enable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: false - * evict_cache?: bool, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|Param, // Deprecated: The "doctrine.orm.controller_resolver.auto_mapping.auto_mapping" option is deprecated and will be removed in DoctrineBundle 4.0, as it only accepts `false` since 3.0. // Set to true to enable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: false + * 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|null, - * class_metadata_factory_name?: scalar|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" - * default_repository_class?: scalar|null, // Default: "Doctrine\\ORM\\EntityRepository" - * auto_mapping?: scalar|null, // Default: false - * naming_strategy?: scalar|null, // Default: "doctrine.orm.naming_strategy.default" - * quote_strategy?: scalar|null, // Default: "doctrine.orm.quote_strategy.default" - * typed_field_mapper?: scalar|null, // Default: "doctrine.orm.typed_field_mapper.default" - * entity_listener_resolver?: scalar|null, // Default: null - * fetch_mode_subselect_batch_size?: scalar|null, - * repository_factory?: scalar|null, // Default: "doctrine.orm.container_repository_factory" - * schema_ignore_classes?: list, - * validate_xml_mapping?: bool, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false + * 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, + * 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 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false * second_level_cache?: array{ * region_cache_driver?: string|array{ - * type?: scalar|null, // Default: null - * id?: scalar|null, - * pool?: scalar|null, + * type?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * pool?: scalar|Param|null, * }, - * region_lock_lifetime?: scalar|null, // Default: 60 - * log_enabled?: bool, // Default: true - * region_lifetime?: scalar|null, // Default: 3600 - * enabled?: bool, // Default: true - * factory?: scalar|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, + * hydrators?: array, * mappings?: array, * dql?: array{ - * string_functions?: array, - * numeric_functions?: array, - * datetime_functions?: array, + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, * }, * filters?: array, * }>, - * identity_generation_preferences?: array, + * identity_generation_preferences?: array, * }>, - * resolve_target_entities?: array, + * resolve_target_entities?: array, * }, * } * @psalm-type DoctrineMongodbConfig = array{ * document_managers?: array, * }>, * metadata_cache_driver?: string|array{ - * type?: scalar|null, // Default: "array" - * class?: scalar|null, - * host?: scalar|null, - * port?: int, - * instance_class?: scalar|null, - * id?: scalar|null, - * namespace?: scalar|null, + * type?: scalar|Param|null, // Default: "array" + * class?: scalar|Param|null, + * host?: scalar|Param|null, + * port?: int|Param, + * instance_class?: scalar|Param|null, + * id?: scalar|Param|null, + * namespace?: scalar|Param|null, * }, - * use_transactional_flush?: bool, // Default: false + * use_transactional_flush?: bool|Param, // Default: false * mappings?: array, * }>, * connections?: array>, - * replicaSet?: scalar|null, - * socketTimeoutMS?: int, - * ssl?: bool, - * tls?: bool, - * tlsAllowInvalidCertificates?: bool, - * tlsAllowInvalidHostnames?: bool, - * tlsCAFile?: scalar|null, - * tlsCertificateKeyFile?: scalar|null, - * tlsCertificateKeyFilePassword?: scalar|null, - * tlsDisableCertificateRevocationCheck?: bool, - * tlsDisableOCSPEndpointCheck?: bool, - * tlsInsecure?: bool, - * username?: scalar|null, - * retryReads?: bool, - * retryWrites?: bool, - * w?: scalar|null, - * wTimeoutMS?: int, + * authMechanism?: "SCRAM-SHA-1"|"SCRAM-SHA-256"|"MONGODB-CR"|"MONGODB-X509"|"PLAIN"|"GSSAPI"|Param, + * connectTimeoutMS?: int|Param, + * db?: scalar|Param|null, + * authSource?: scalar|Param|null, + * journal?: bool|Param, + * password?: scalar|Param|null, + * readPreference?: "primary"|"primaryPreferred"|"secondary"|"secondaryPreferred"|"nearest"|Param, + * readPreferenceTags?: list>, + * replicaSet?: scalar|Param|null, + * socketTimeoutMS?: int|Param, + * ssl?: bool|Param, + * tls?: bool|Param, + * tlsAllowInvalidCertificates?: bool|Param, + * tlsAllowInvalidHostnames?: bool|Param, + * tlsCAFile?: scalar|Param|null, + * tlsCertificateKeyFile?: scalar|Param|null, + * tlsCertificateKeyFilePassword?: scalar|Param|null, + * tlsDisableCertificateRevocationCheck?: bool|Param, + * tlsDisableOCSPEndpointCheck?: bool|Param, + * tlsInsecure?: bool|Param, + * username?: scalar|Param|null, + * retryReads?: bool|Param, + * retryWrites?: bool|Param, + * w?: scalar|Param|null, + * wTimeoutMS?: int|Param, * }, * driver_options?: array{ - * context?: scalar|null, // Deprecated: The "context" driver option is deprecated and will be removed in 3.0. This option is ignored by the MongoDB driver version 2. // Default: null + * context?: scalar|Param|null, // Deprecated: The "context" driver option is deprecated and will be removed in 3.0. This option is ignored by the MongoDB driver version 2. // Default: null * }, * autoEncryption?: array{ - * bypassAutoEncryption?: bool, - * keyVaultClient?: scalar|null, - * keyVaultNamespace?: scalar|null, + * bypassAutoEncryption?: bool|Param, + * keyVaultClient?: scalar|Param|null, + * keyVaultNamespace?: scalar|Param|null, * masterKey?: list, - * kmsProvider: array{ - * type: scalar|null, - * accessKeyId?: scalar|null, - * secretAccessKey?: scalar|null, - * sessionToken?: scalar|null, - * tenantId?: scalar|null, - * clientId?: scalar|null, - * clientSecret?: scalar|null, - * keyVaultEndpoint?: scalar|null, - * identityPlatformEndpoint?: scalar|null, - * keyName?: scalar|null, - * keyVersion?: scalar|null, - * email?: scalar|null, - * privateKey?: scalar|null, - * endpoint?: scalar|null, - * projectId?: scalar|null, - * location?: scalar|null, - * keyRing?: scalar|null, - * key?: scalar|null, + * kmsProvider?: array{ + * type?: scalar|Param|null, + * accessKeyId?: scalar|Param|null, + * secretAccessKey?: scalar|Param|null, + * sessionToken?: scalar|Param|null, + * tenantId?: scalar|Param|null, + * clientId?: scalar|Param|null, + * clientSecret?: scalar|Param|null, + * keyVaultEndpoint?: scalar|Param|null, + * identityPlatformEndpoint?: scalar|Param|null, + * keyName?: scalar|Param|null, + * keyVersion?: scalar|Param|null, + * email?: scalar|Param|null, + * privateKey?: scalar|Param|null, + * endpoint?: scalar|Param|null, + * projectId?: scalar|Param|null, + * location?: scalar|Param|null, + * keyRing?: scalar|Param|null, + * key?: scalar|Param|null, * }, * schemaMap?: list, * encryptedFieldsMap?: array, * }>, * extraOptions?: array{ - * mongocryptdURI?: scalar|null, - * mongocryptdBypassSpawn?: bool, - * mongocryptdSpawnPath?: scalar|null, - * mongocryptdSpawnArgs?: list, - * cryptSharedLibPath?: scalar|null, - * cryptSharedLibRequired?: bool, + * mongocryptdURI?: scalar|Param|null, + * mongocryptdBypassSpawn?: bool|Param, + * mongocryptdSpawnPath?: scalar|Param|null, + * mongocryptdSpawnArgs?: list, + * cryptSharedLibPath?: scalar|Param|null, + * cryptSharedLibRequired?: bool|Param, * }, - * bypassQueryAnalysis?: bool, + * bypassQueryAnalysis?: bool|Param, * tlsOptions?: array{ - * tlsCAFile?: scalar|null, - * tlsCertificateKeyFile?: scalar|null, - * tlsCertificateKeyFilePassword?: scalar|null, - * tlsDisableOCSPEndpointCheck?: bool, + * tlsCAFile?: scalar|Param|null, + * tlsCertificateKeyFile?: scalar|Param|null, + * tlsCertificateKeyFilePassword?: scalar|Param|null, + * tlsDisableOCSPEndpointCheck?: bool|Param, * }, * }, * }>, - * resolve_target_documents?: array, + * resolve_target_documents?: array, * types?: array, - * proxy_namespace?: scalar|null, // Default: "MongoDBODMProxies" - * proxy_dir?: scalar|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/Proxies" - * enable_native_lazy_objects?: bool, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in 6.0. Native Lazy Objects are enable by default when using PHP 8.4+ and doctrine/mongodb-odm 2.14+. // Requires PHP 8.4+ and doctrine/mongodb-odm 2.14+ // Default: true - * enable_lazy_ghost_objects?: bool, // Deprecated: The "enable_lazy_ghost_objects" option is deprecated and will be removed in 6.0. Native Lazy Objects are enable by default when using PHP 8.4+ and doctrine/mongodb-odm 2.14+. // Requires doctrine/mongodb-odm 2.12+ // Default: true - * auto_generate_proxy_classes?: scalar|null, // Default: 3 - * hydrator_namespace?: scalar|null, // Default: "Hydrators" - * hydrator_dir?: scalar|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/Hydrators" - * auto_generate_hydrator_classes?: scalar|null, // Default: 0 - * persistent_collection_namespace?: scalar|null, // Default: "PersistentCollections" - * persistent_collection_dir?: scalar|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/PersistentCollections" - * auto_generate_persistent_collection_classes?: scalar|null, // Default: 0 - * default_document_manager?: scalar|null, - * default_connection?: scalar|null, - * default_database?: scalar|null, // Default: "default" + * proxy_namespace?: scalar|Param|null, // Default: "MongoDBODMProxies" + * proxy_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/Proxies" + * enable_native_lazy_objects?: bool|Param, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in 6.0. Native Lazy Objects are enable by default when using PHP 8.4+ and doctrine/mongodb-odm 2.14+. // Requires PHP 8.4+ and doctrine/mongodb-odm 2.14+ // Default: true + * enable_lazy_ghost_objects?: bool|Param, // Deprecated: The "enable_lazy_ghost_objects" option is deprecated and will be removed in 6.0. Symfony Lazy Ghost Objects are enabled by default with doctrine/mongodb-odm 2.10+. // Requires doctrine/mongodb-odm 2.10+ // Default: true + * auto_generate_proxy_classes?: scalar|Param|null, // Default: 3 + * hydrator_namespace?: scalar|Param|null, // Default: "Hydrators" + * hydrator_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/Hydrators" + * auto_generate_hydrator_classes?: scalar|Param|null, // Default: 0 + * persistent_collection_namespace?: scalar|Param|null, // Default: "PersistentCollections" + * persistent_collection_dir?: scalar|Param|null, // Default: "%kernel.cache_dir%/doctrine/odm/mongodb/PersistentCollections" + * auto_generate_persistent_collection_classes?: scalar|Param|null, // Default: 0 + * default_document_manager?: scalar|Param|null, + * default_connection?: scalar|Param|null, + * default_database?: scalar|Param|null, // Default: "default" * default_commit_options?: array{ - * j?: bool, - * timeout?: int, - * w?: scalar|null, - * wtimeout?: int, + * j?: bool|Param, + * timeout?: int|Param, + * w?: scalar|Param|null, + * wtimeout?: int|Param, * }, * controller_resolver?: bool|array{ - * enabled?: bool, // Default: true - * auto_mapping?: bool, // Set to false to disable using route placeholders as lookup criteria when the object id doesn't match the argument name // Default: true + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|Param, // Set to false to disable using route placeholders as lookup criteria when the object id doesn't match the argument name // Default: true * }, * } * @psalm-type JmsSerializerConfig = array{ - * twig_enabled?: scalar|null, // Default: "default" - * profiler?: scalar|null, // Default: true - * enum_support?: scalar|null, // Default: false - * default_value_property_reader_support?: scalar|null, // Default: false + * twig_enabled?: scalar|Param|null, // Default: "default" + * profiler?: scalar|Param|null, // Default: true + * enum_support?: scalar|Param|null, // Default: false + * default_value_property_reader_support?: scalar|Param|null, // Default: false * handlers?: array{ * datetime?: array{ - * default_format?: scalar|null, // Default: "Y-m-d\\TH:i:sP" - * default_deserialization_formats?: list, - * default_timezone?: scalar|null, // Default: "UTC" - * cdata?: scalar|null, // Default: true + * default_format?: scalar|Param|null, // Default: "Y-m-d\\TH:i:sP" + * default_deserialization_formats?: list, + * default_timezone?: scalar|Param|null, // Default: "Europe/Berlin" + * cdata?: scalar|Param|null, // Default: true * }, * array_collection?: array{ - * initialize_excluded?: bool, // Default: false + * initialize_excluded?: bool|Param, // Default: false * }, * symfony_uid?: array{ - * default_format?: scalar|null, // Default: "canonical" - * cdata?: scalar|null, // Default: true + * default_format?: scalar|Param|null, // Default: "canonical" + * cdata?: scalar|Param|null, // Default: true * }, * }, * subscribers?: array{ * doctrine_proxy?: array{ - * initialize_excluded?: bool, // Default: false - * initialize_virtual_types?: bool, // Default: false + * initialize_excluded?: bool|Param, // Default: false + * initialize_virtual_types?: bool|Param, // Default: false * }, * }, * object_constructors?: array{ * doctrine?: bool|array{ - * enabled?: bool, // Default: true - * fallback_strategy?: "null"|"exception"|"fallback", // Default: "null" + * enabled?: bool|Param, // Default: true + * fallback_strategy?: "null"|"exception"|"fallback"|Param, // Default: "null" * }, * }, * property_naming?: string|array{ - * id?: scalar|null, - * separator?: scalar|null, // Default: "_" - * lower_case?: bool, // Default: true + * id?: scalar|Param|null, + * separator?: scalar|Param|null, // Default: "_" + * lower_case?: bool|Param, // Default: true * }, * expression_evaluator?: string|array{ - * id?: scalar|null, // Default: "jms_serializer.expression_evaluator" + * id?: scalar|Param|null, // Default: "jms_serializer.expression_evaluator" * }, * metadata?: array{ * warmup?: array{ * paths?: array{ - * included?: list, - * excluded?: list, + * included?: list, + * excluded?: list, * }, * }, - * cache?: scalar|null, // Default: "file" - * debug?: bool, // Default: true + * cache?: scalar|Param|null, // Default: "file" + * debug?: bool|Param, // Default: true * file_cache?: array{ - * dir?: scalar|null, // Default: null + * dir?: scalar|Param|null, // Default: null * }, - * include_interfaces?: bool, // Default: false - * auto_detection?: bool, // Default: true - * infer_types_from_doc_block?: bool, // Default: false - * infer_types_from_doctrine_metadata?: bool, // Infers type information from Doctrine metadata if no explicit type has been defined for a property. // Default: true + * include_interfaces?: bool|Param, // Default: false + * auto_detection?: bool|Param, // Default: true + * infer_types_from_doc_block?: bool|Param, // Default: false + * infer_types_from_doctrine_metadata?: bool|Param, // Infers type information from Doctrine metadata if no explicit type has been defined for a property. // Default: true * directories?: array, * }, * visitors?: array{ * json_serialization?: array{ - * depth?: scalar|null, - * options?: scalar|null, // Default: 1024 + * depth?: scalar|Param|null, + * options?: scalar|Param|null, // Default: 1024 * }, * json_deserialization?: array{ - * options?: scalar|null, // Default: 0 - * strict?: bool, // Default: false + * options?: scalar|Param|null, // Default: 0 + * strict?: bool|Param, // Default: false * }, * xml_serialization?: array{ - * version?: scalar|null, - * encoding?: scalar|null, - * format_output?: bool, // Default: false - * default_root_name?: scalar|null, - * default_root_ns?: scalar|null, // Default: "" + * version?: scalar|Param|null, + * encoding?: scalar|Param|null, + * format_output?: bool|Param, // Default: false + * default_root_name?: scalar|Param|null, + * default_root_ns?: scalar|Param|null, // Default: "" * }, * xml_deserialization?: array{ - * doctype_whitelist?: list, - * external_entities?: bool, // Default: false - * options?: scalar|null, // Default: 0 + * doctype_whitelist?: list, + * external_entities?: bool|Param, // Default: false + * options?: scalar|Param|null, // Default: 0 * }, * }, * default_context?: array{ * serialization?: string|array{ - * id?: scalar|null, - * serialize_null?: scalar|null, // Flag if null values should be serialized - * enable_max_depth_checks?: scalar|null, // Flag to enable the max-depth exclusion strategy - * attributes?: array, - * groups?: list, - * version?: scalar|null, // Application version to use in exclusion strategies + * id?: scalar|Param|null, + * serialize_null?: scalar|Param|null, // Flag if null values should be serialized + * enable_max_depth_checks?: scalar|Param|null, // Flag to enable the max-depth exclusion strategy + * attributes?: array, + * groups?: list, + * version?: scalar|Param|null, // Application version to use in exclusion strategies * }, * deserialization?: string|array{ - * id?: scalar|null, - * serialize_null?: scalar|null, // Flag if null values should be serialized - * enable_max_depth_checks?: scalar|null, // Flag to enable the max-depth exclusion strategy - * attributes?: array, - * groups?: list, - * version?: scalar|null, // Application version to use in exclusion strategies + * id?: scalar|Param|null, + * serialize_null?: scalar|Param|null, // Flag if null values should be serialized + * enable_max_depth_checks?: scalar|Param|null, // Flag to enable the max-depth exclusion strategy + * attributes?: array, + * groups?: list, + * version?: scalar|Param|null, // Application version to use in exclusion strategies * }, * }, * instances?: array, - * default_timezone?: scalar|null, // Default: "UTC" - * cdata?: scalar|null, // Default: true + * default_format?: scalar|Param|null, // Default: "Y-m-d\\TH:i:sP" + * default_deserialization_formats?: list, + * default_timezone?: scalar|Param|null, // Default: "Europe/Berlin" + * cdata?: scalar|Param|null, // Default: true * }, * array_collection?: array{ - * initialize_excluded?: bool, // Default: false + * initialize_excluded?: bool|Param, // Default: false * }, * symfony_uid?: array{ - * default_format?: scalar|null, // Default: "canonical" - * cdata?: scalar|null, // Default: true + * default_format?: scalar|Param|null, // Default: "canonical" + * cdata?: scalar|Param|null, // Default: true * }, * }, * subscribers?: array{ * doctrine_proxy?: array{ - * initialize_excluded?: bool, // Default: false - * initialize_virtual_types?: bool, // Default: false + * initialize_excluded?: bool|Param, // Default: false + * initialize_virtual_types?: bool|Param, // Default: false * }, * }, * object_constructors?: array{ * doctrine?: bool|array{ - * enabled?: bool, // Default: true - * fallback_strategy?: "null"|"exception"|"fallback", // Default: "null" + * enabled?: bool|Param, // Default: true + * fallback_strategy?: "null"|"exception"|"fallback"|Param, // Default: "null" * }, * }, * property_naming?: string|array{ - * id?: scalar|null, - * separator?: scalar|null, // Default: "_" - * lower_case?: bool, // Default: true + * id?: scalar|Param|null, + * separator?: scalar|Param|null, // Default: "_" + * lower_case?: bool|Param, // Default: true * }, * expression_evaluator?: string|array{ - * id?: scalar|null, // Default: "jms_serializer.expression_evaluator" + * id?: scalar|Param|null, // Default: "jms_serializer.expression_evaluator" * }, * metadata?: array{ * warmup?: array{ * paths?: array{ - * included?: list, - * excluded?: list, + * included?: list, + * excluded?: list, * }, * }, - * cache?: scalar|null, // Default: "file" - * debug?: bool, // Default: true + * cache?: scalar|Param|null, // Default: "file" + * debug?: bool|Param, // Default: true * file_cache?: array{ - * dir?: scalar|null, // Default: null + * dir?: scalar|Param|null, // Default: null * }, - * include_interfaces?: bool, // Default: false - * auto_detection?: bool, // Default: true - * infer_types_from_doc_block?: bool, // Default: false - * infer_types_from_doctrine_metadata?: bool, // Infers type information from Doctrine metadata if no explicit type has been defined for a property. // Default: true + * include_interfaces?: bool|Param, // Default: false + * auto_detection?: bool|Param, // Default: true + * infer_types_from_doc_block?: bool|Param, // Default: false + * infer_types_from_doctrine_metadata?: bool|Param, // Infers type information from Doctrine metadata if no explicit type has been defined for a property. // Default: true * directories?: array, * }, * visitors?: array{ * json_serialization?: array{ - * depth?: scalar|null, - * options?: scalar|null, // Default: 1024 + * depth?: scalar|Param|null, + * options?: scalar|Param|null, // Default: 1024 * }, * json_deserialization?: array{ - * options?: scalar|null, // Default: 0 - * strict?: bool, // Default: false + * options?: scalar|Param|null, // Default: 0 + * strict?: bool|Param, // Default: false * }, * xml_serialization?: array{ - * version?: scalar|null, - * encoding?: scalar|null, - * format_output?: bool, // Default: false - * default_root_name?: scalar|null, - * default_root_ns?: scalar|null, // Default: "" + * version?: scalar|Param|null, + * encoding?: scalar|Param|null, + * format_output?: bool|Param, // Default: false + * default_root_name?: scalar|Param|null, + * default_root_ns?: scalar|Param|null, // Default: "" * }, * xml_deserialization?: array{ - * doctype_whitelist?: list, - * external_entities?: bool, // Default: false - * options?: scalar|null, // Default: 0 + * doctype_whitelist?: list, + * external_entities?: bool|Param, // Default: false + * options?: scalar|Param|null, // Default: 0 * }, * }, * default_context?: array{ * serialization?: string|array{ - * id?: scalar|null, - * serialize_null?: scalar|null, // Flag if null values should be serialized - * enable_max_depth_checks?: scalar|null, // Flag to enable the max-depth exclusion strategy - * attributes?: array, - * groups?: list, - * version?: scalar|null, // Application version to use in exclusion strategies + * id?: scalar|Param|null, + * serialize_null?: scalar|Param|null, // Flag if null values should be serialized + * enable_max_depth_checks?: scalar|Param|null, // Flag to enable the max-depth exclusion strategy + * attributes?: array, + * groups?: list, + * version?: scalar|Param|null, // Application version to use in exclusion strategies * }, * deserialization?: string|array{ - * id?: scalar|null, - * serialize_null?: scalar|null, // Flag if null values should be serialized - * enable_max_depth_checks?: scalar|null, // Flag to enable the max-depth exclusion strategy - * attributes?: array, - * groups?: list, - * version?: scalar|null, // Application version to use in exclusion strategies + * id?: scalar|Param|null, + * serialize_null?: scalar|Param|null, // Flag if null values should be serialized + * enable_max_depth_checks?: scalar|Param|null, // Flag to enable the max-depth exclusion strategy + * attributes?: array, + * groups?: list, + * version?: scalar|Param|null, // Application version to use in exclusion strategies * }, * }, * }>, @@ -672,1870 +674,2263 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * adapters?: array, * }, * service?: array{ - * id: scalar|null, + * id?: scalar|Param|null, * }, * local?: array{ - * directory: scalar|null, - * create?: bool, // Default: true + * directory?: scalar|Param|null, + * create?: bool|Param, // Default: true * }, * safe_local?: array{ - * directory: scalar|null, - * create?: bool, // Default: true + * directory?: scalar|Param|null, + * create?: bool|Param, // Default: true * }, * async_aws_s3?: array{ - * service_id: scalar|null, - * bucket_name: scalar|null, - * detect_content_type?: bool, // Default: false + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: false * options?: array{ - * directory?: scalar|null, // Default: "" - * create?: bool, // Default: false - * acl?: scalar|null, // Default: "private" + * directory?: scalar|Param|null, // Default: "" + * create?: bool|Param, // Default: false + * acl?: scalar|Param|null, // Default: "private" * }, * }, * aws_s3?: array{ - * service_id: scalar|null, - * bucket_name: scalar|null, - * detect_content_type?: bool, // Default: false + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: false * options?: array{ - * directory?: scalar|null, // Default: "" - * create?: bool, // Default: false - * acl?: scalar|null, // Default: "private" + * directory?: scalar|Param|null, // Default: "" + * create?: bool|Param, // Default: false + * acl?: scalar|Param|null, // Default: "private" * }, * }, * doctrine_dbal?: array{ - * connection_name: scalar|null, - * table: scalar|null, + * connection_name?: scalar|Param|null, + * table?: scalar|Param|null, * columns?: array{ - * key?: scalar|null, - * content?: scalar|null, - * mtime?: scalar|null, - * checksum?: scalar|null, + * 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|null, - * container_name: scalar|null, - * create_container?: bool, // Default: false - * detect_content_type?: bool, // Default: true - * multi_container_mode?: bool, // Default: false + * 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|null, - * bucket_name: scalar|null, - * detect_content_type?: bool, // Default: true + * service_id?: scalar|Param|null, + * bucket_name?: scalar|Param|null, + * detect_content_type?: bool|Param, // Default: true * options?: array{ - * directory?: scalar|null, // Default: "" - * acl?: scalar|null, // Default: "private" - * project_id?: scalar|null, - * bucket_location?: scalar|null, - * create?: bool, // Default: false + * 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|null, + * mongogridfs_id?: scalar|Param|null, * }, * ftp?: array{ - * directory: scalar|null, - * host: scalar|null, - * port?: scalar|null, // Default: 21 - * username?: scalar|null, // Default: null - * password?: scalar|null, // Default: null - * timeout?: scalar|null, // Default: 90 - * passive?: bool, // Default: false - * create?: bool, // Default: false - * ssl?: bool, // Default: false - * utf8?: bool, // Default: false - * mode?: scalar|null, // Default: 1 + * 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|null, - * directory?: scalar|null, // Default: null - * create?: bool, // Default: false + * phpseclib_sftp_id?: scalar|Param|null, + * directory?: scalar|Param|null, // Default: null + * create?: bool|Param, // Default: false * }, * }>, * filesystems?: array, * stream_wrapper?: array{ - * protocol?: scalar|null, // Default: "gaufrette" - * filesystems?: array, + * protocol?: scalar|Param|null, // Default: "gaufrette" + * filesystems?: array, * }, * factories?: array, * } * @psalm-type KnpMenuConfig = array{ * providers?: array{ - * builder_alias?: bool, // Default: true + * builder_alias?: bool|Param, // Default: true * }, * twig?: array{ - * template?: scalar|null, // Default: "@KnpMenu/menu.html.twig" + * template?: scalar|Param|null, // Default: "@KnpMenu/menu.html.twig" * }, - * templating?: bool, // Default: false - * default_renderer?: scalar|null, // Default: "twig" + * templating?: bool|Param, // Default: false + * default_renderer?: scalar|Param|null, // Default: "twig" * } * @psalm-type KnpPaginatorConfig = array{ * default_options?: array{ - * sort_field_name?: scalar|null, // Default: "sort" - * sort_direction_name?: scalar|null, // Default: "direction" - * filter_field_name?: scalar|null, // Default: "filterField" - * filter_value_name?: scalar|null, // Default: "filterValue" - * page_name?: scalar|null, // Default: "page" - * distinct?: bool, // Default: true - * page_out_of_range?: scalar|null, // Default: "ignore" - * default_limit?: scalar|null, // Default: 10 + * sort_field_name?: scalar|Param|null, // Default: "sort" + * sort_direction_name?: scalar|Param|null, // Default: "direction" + * filter_field_name?: scalar|Param|null, // Default: "filterField" + * filter_value_name?: scalar|Param|null, // Default: "filterValue" + * page_name?: scalar|Param|null, // Default: "page" + * distinct?: bool|Param, // Default: true + * page_out_of_range?: scalar|Param|null, // Default: "ignore" + * default_limit?: scalar|Param|null, // Default: 10 * }, * template?: array{ - * pagination?: scalar|null, // Default: "@KnpPaginator/Pagination/sliding.html.twig" - * rel_links?: scalar|null, // Default: "@KnpPaginator/Pagination/rel_links.html.twig" - * filtration?: scalar|null, // Default: "@KnpPaginator/Pagination/filtration.html.twig" - * sortable?: scalar|null, // Default: "@KnpPaginator/Pagination/sortable_link.html.twig" + * pagination?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/sliding.html.twig" + * rel_links?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/rel_links.html.twig" + * filtration?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/filtration.html.twig" + * sortable?: scalar|Param|null, // Default: "@KnpPaginator/Pagination/sortable_link.html.twig" * }, - * page_range?: scalar|null, // Default: 5 - * page_limit?: scalar|null, // Default: null - * convert_exception?: bool, // Default: false - * remove_first_page_param?: bool, // Default: false + * page_range?: scalar|Param|null, // Default: 5 + * page_limit?: scalar|Param|null, // Default: null + * convert_exception?: bool|Param, // Default: false + * remove_first_page_param?: bool|Param, // Default: false * } * @psalm-type LiipImagineConfig = array{ * resolvers?: array, - * get_options?: array, - * put_options?: array, - * proxies?: array, + * bucket?: scalar|Param|null, + * cache?: scalar|Param|null, // Default: false + * use_psr_cache?: bool|Param, // Default: false + * acl?: scalar|Param|null, // Default: "public-read" + * cache_prefix?: scalar|Param|null, // Default: "" + * client_id?: scalar|Param|null, // Default: null + * client_config?: list, + * get_options?: array, + * put_options?: array, + * proxies?: array, * }, * flysystem?: array{ - * filesystem_service: scalar|null, - * cache_prefix?: scalar|null, // Default: "" - * root_url: scalar|null, - * visibility?: "public"|"private"|"noPredefinedVisibility", // Default: "public" + * 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, // Default: false + * locator?: "filesystem"|"filesystem_insecure"|Param, // Using the "filesystem_insecure" locator is not recommended due to a less secure resolver mechanism, but is provided for those using heavily symlinked projects. // Default: "filesystem" + * data_root?: list, + * allow_unresolvable_data_roots?: bool|Param, // Default: false * bundle_resources?: array{ - * enabled?: bool, // Default: false - * access_control_type?: "blacklist"|"whitelist", // Sets the access control method applied to bundle names in "access_control_list" into a blacklist or whitelist. // Default: "blacklist" - * access_control_list?: list, + * 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|null, + * filesystem_service?: scalar|Param|null, * }, * chain?: array{ - * loaders: list, + * loaders?: list, * }, * }>, - * driver?: scalar|null, // Default: "gd" - * cache?: scalar|null, // Default: "default" - * cache_base_path?: scalar|null, // Default: "" - * data_loader?: scalar|null, // Default: "default" - * default_image?: scalar|null, // Default: null + * 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|null, // Default: 100 - * jpeg_quality?: scalar|null, // Default: null - * png_compression_level?: scalar|null, // Default: null - * png_compression_filter?: scalar|null, // Default: null - * format?: scalar|null, // Default: null - * animated?: bool, // Default: false - * cache?: scalar|null, // Default: null - * data_loader?: scalar|null, // Default: null - * default_image?: scalar|null, // Default: null + * 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|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterAction" - * filter_runtime_action?: scalar|null, // Default: "Liip\\ImagineBundle\\Controller\\ImagineController::filterRuntimeAction" - * redirect_response_code?: int, // Default: 302 + * 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", // Twig mode: none/lazy/legacy (default) // Default: "legacy" - * assets_version?: scalar|null, // Default: null + * mode?: "none"|"lazy"|"legacy"|Param, // Twig mode: none/lazy/legacy (default) // Default: "legacy" + * assets_version?: scalar|Param|null, // Default: null * }, - * enqueue?: bool, // Enables integration with enqueue if set true. Allows resolve image caches in background by sending messages to MQ. // Default: false + * 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, // Default: false + * enabled?: bool|Param, // Default: false * }, - * templating?: bool, // Enables integration with symfony/templating component // Default: true + * templating?: bool|Param, // Enables integration with symfony/templating component // Default: true * webp?: array{ - * generate?: bool, // Default: false - * quality?: int, // Default: 100 - * cache?: scalar|null, // Default: null - * data_loader?: scalar|null, // Default: null + * 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 OneupUploaderConfig = array{ * chunks?: array{ - * maxage?: scalar|null, // Default: 604800 + * maxage?: scalar|Param|null, // Default: 604800 * storage?: array{ - * type?: "filesystem"|"gaufrette"|"flysystem", // Default: "filesystem" - * filesystem?: scalar|null, // Default: null - * directory?: scalar|null, // Default: null - * stream_wrapper?: scalar|null, // Default: null - * sync_buffer_size?: scalar|null, // Default: "100K" - * prefix?: scalar|null, // Default: "chunks" + * type?: "filesystem"|"gaufrette"|"flysystem"|Param, // Default: "filesystem" + * filesystem?: scalar|Param|null, // Default: null + * directory?: scalar|Param|null, // Default: null + * stream_wrapper?: scalar|Param|null, // Default: null + * sync_buffer_size?: scalar|Param|null, // Default: "100K" + * prefix?: scalar|Param|null, // Default: "chunks" * }, - * load_distribution?: bool, // Default: true + * load_distribution?: bool|Param, // Default: true * }, * orphanage?: array{ - * maxage?: scalar|null, // Default: 604800 - * directory?: scalar|null, // Default: null + * maxage?: scalar|Param|null, // Default: 604800 + * directory?: scalar|Param|null, // Default: null * }, - * twig?: scalar|null, // Default: true - * mappings: array>, - * disallowed_mimetypes?: list, - * error_handler?: scalar|null, // Default: null - * max_size?: scalar|null, // Set max_size to -1 for gracefully downgrade this number to the systems max upload size. // Default: 9223372036854775807 - * use_orphanage?: bool, // Default: false - * enable_progress?: bool, // Default: false - * enable_cancelation?: bool, // Default: false - * namer?: scalar|null, // Default: "oneup_uploader.namer.uniqid" - * root_folder?: bool, // Default: false + * allowed_mimetypes?: array>, + * disallowed_mimetypes?: list, + * error_handler?: scalar|Param|null, // Default: null + * max_size?: scalar|Param|null, // Set max_size to -1 for gracefully downgrade this number to the systems max upload size. // Default: 9223372036854775807 + * use_orphanage?: bool|Param, // Default: false + * enable_progress?: bool|Param, // Default: false + * enable_cancelation?: bool|Param, // Default: false + * namer?: scalar|Param|null, // Default: "oneup_uploader.namer.uniqid" + * root_folder?: bool|Param, // Default: false * }>, * } * @psalm-type FrameworkConfig = array{ - * secret?: scalar|null, - * http_method_override?: bool, // 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?: list|null, - * trust_x_sendfile_type_header?: scalar|null, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" - * ide?: scalar|null, // Default: "%env(default::SYMFONY_IDE)%" - * test?: bool, - * default_locale?: scalar|null, // Default: "en" - * set_locale_from_accept_language?: bool, // 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, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false - * enabled_locales?: list, - * trusted_hosts?: list, + * 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?: list|null, + * 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?: list, * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] - * trusted_headers?: list, - * error_controller?: scalar|null, // Default: "error_controller" - * handle_all_throwables?: bool, // HttpKernel will handle all kinds of \Throwable. // Default: true + * trusted_headers?: 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|null, // Default: null - * stateless_token_ids?: list, - * check_header?: scalar|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false - * cookie_name?: scalar|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * 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, // Default: true - * csrf_protection?: array{ - * enabled?: scalar|null, // Default: null - * token_id?: scalar|null, // Default: null - * field_name?: scalar|null, // Default: "_token" - * field_attr?: array, + * 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, // Default: false - * debug?: bool, // Default: "%kernel.debug%" - * trace_level?: "none"|"short"|"full", - * trace_header?: scalar|null, - * default_ttl?: int, - * private_headers?: list, - * skip_response_headers?: list, - * allow_reload?: bool, - * allow_revalidate?: bool, - * stale_while_revalidate?: int, - * stale_if_error?: int, - * terminate_on_cache_hit?: bool, + * 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, // Default: false + * enabled?: bool|Param, // Default: false * }, * ssi?: bool|array{ // SSI configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * fragments?: bool|array{ // Fragments configuration - * enabled?: bool, // Default: false - * hinclude_default_template?: scalar|null, // Default: null - * path?: scalar|null, // Default: "/_fragment" + * 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, // Default: false - * collect?: bool, // Default: true - * collect_parameter?: scalar|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null - * only_exceptions?: bool, // Default: false - * only_main_requests?: bool, // Default: false - * dsn?: scalar|null, // Default: "file:%kernel.cache_dir%/profiler" - * collect_serializer_data?: bool, // Enables the serializer data collector and profiler panel. // Default: false + * 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, // Default: false + * enabled?: bool|Param, // Default: false * workflows?: array, - * definition_validators?: list, - * support_strategy?: scalar|null, - * initial_marking?: list, - * events_to_dispatch?: list|null, + * supports?: list, + * definition_validators?: list, + * support_strategy?: scalar|Param|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, * places?: list, + * name?: scalar|Param|null, + * metadata?: array, * }>, - * transitions: list, * to?: list, - * weight?: int, // Default: 1 - * metadata?: list, + * weight?: int|Param, // Default: 1 + * metadata?: array, * }>, - * metadata?: list, + * metadata?: array, * }>, * }, * router?: bool|array{ // Router configuration - * enabled?: bool, // Default: false - * resource: scalar|null, - * type?: scalar|null, - * cache_dir?: scalar|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|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null - * http_port?: scalar|null, // Default: 80 - * https_port?: scalar|null, // Default: 443 - * strict_requirements?: scalar|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, // Default: true + * 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, // Default: false - * storage_factory_id?: scalar|null, // Default: "session.storage.factory.native" - * handler_id?: scalar|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. - * name?: scalar|null, - * cookie_lifetime?: scalar|null, - * cookie_path?: scalar|null, - * cookie_domain?: scalar|null, - * cookie_secure?: true|false|"auto", // Default: "auto" - * cookie_httponly?: bool, // Default: true - * cookie_samesite?: null|"lax"|"strict"|"none", // Default: "lax" - * use_cookies?: bool, - * gc_divisor?: scalar|null, - * gc_probability?: scalar|null, - * gc_maxlifetime?: scalar|null, - * save_path?: scalar|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. - * metadata_update_threshold?: int, // Seconds to wait between 2 session metadata updates. // Default: 0 - * sid_length?: int, // 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, // 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. + * 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, // Default: false - * formats?: array>, + * enabled?: bool|Param, // Default: false + * formats?: array>, * }, * assets?: bool|array{ // Assets configuration - * enabled?: bool, // Default: true - * strict_mode?: bool, // Throw an exception if an entry is missing from the manifest.json. // Default: false - * version_strategy?: scalar|null, // Default: null - * version?: scalar|null, // Default: null - * version_format?: scalar|null, // Default: "%%s?%%s" - * json_manifest_path?: scalar|null, // Default: null - * base_path?: scalar|null, // Default: "" - * base_urls?: list, + * 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?: list, * packages?: array, + * 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, + * version_format?: scalar|Param|null, // Default: null + * json_manifest_path?: scalar|Param|null, // Default: null + * base_path?: scalar|Param|null, // Default: "" + * base_urls?: list, * }>, * }, * asset_mapper?: bool|array{ // Asset Mapper configuration - * enabled?: bool, // Default: true - * paths?: array, - * excluded_patterns?: list, - * exclude_dotfiles?: bool, // If true, any files starting with "." will be excluded from the asset mapper. // Default: true - * server?: bool, // 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|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", // 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|null, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" - * importmap_polyfill?: scalar|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|null, // The directory to store JavaScript vendors. // Default: "%kernel.project_dir%/assets/vendor" + * enabled?: bool|Param, // Default: true + * paths?: 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, // Default: false - * formats?: list, - * extensions?: list, + * enabled?: bool|Param, // Default: false + * formats?: list, + * extensions?: list, * }, * }, * translator?: bool|array{ // Translator configuration - * enabled?: bool, // Default: true - * fallbacks?: list, - * logging?: bool, // Default: false - * formatter?: scalar|null, // Default: "translator.formatter.default" - * cache_dir?: scalar|null, // Default: "%kernel.cache_dir%/translations" - * default_path?: scalar|null, // The default path used to load translations. // Default: "%kernel.project_dir%/translations" - * paths?: list, + * enabled?: bool|Param, // Default: true + * fallbacks?: 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, // Default: false - * accents?: bool, // Default: true - * expansion_factor?: float, // Default: 1.0 - * brackets?: bool, // Default: true - * parse_html?: bool, // Default: false - * localizable_html_attributes?: list, + * 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, + * dsn?: scalar|Param|null, + * domains?: list, + * locales?: list, * }>, * globals?: array, - * domain?: string, + * message?: string|Param, + * parameters?: array, + * domain?: string|Param, * }>, * }, * validation?: bool|array{ // Validation configuration - * enabled?: bool, // Default: true - * cache?: scalar|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. - * enable_attributes?: bool, // Default: true - * static_method?: list, - * translation_domain?: scalar|null, // Default: "validators" - * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose", // Default: "html5" + * 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?: 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, + * paths?: list, * }, * not_compromised_password?: bool|array{ - * enabled?: bool, // When disabled, compromised passwords will be accepted as valid. // Default: true - * endpoint?: scalar|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * 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, // Default: false + * disable_translation?: bool|Param, // Default: false * auto_mapping?: array, + * services?: list, * }>, * }, * annotations?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * serializer?: bool|array{ // Serializer configuration - * enabled?: bool, // Default: true - * enable_attributes?: bool, // Default: true - * name_converter?: scalar|null, - * circular_reference_handler?: scalar|null, - * max_depth_handler?: scalar|null, + * 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, + * paths?: list, * }, - * default_context?: list, + * default_context?: array, * named_serializers?: array, - * include_built_in_normalizers?: bool, // Whether to include the built-in normalizers // Default: true - * include_built_in_encoders?: bool, // Whether to include the built-in encoders // Default: true + * name_converter?: scalar|Param|null, + * default_context?: 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, // Default: true - * magic_call?: bool, // Default: false - * magic_get?: bool, // Default: true - * magic_set?: bool, // Default: true - * throw_exception_on_invalid_index?: bool, // Default: false - * throw_exception_on_invalid_property_path?: bool, // Default: true + * 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, // Default: true - * aliases?: array, + * enabled?: bool|Param, // Default: true + * aliases?: array, * }, * property_info?: bool|array{ // Property info configuration - * enabled?: bool, // Default: true - * with_constructor_extractor?: bool, // Registers the constructor extractor. + * enabled?: bool|Param, // Default: true + * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. * }, * cache?: array{ // Cache configuration - * prefix_seed?: scalar|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" - * app?: scalar|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" - * system?: scalar|null, // System related cache pools configuration. // Default: "cache.adapter.system" - * directory?: scalar|null, // Default: "%kernel.share_dir%/pools/app" - * default_psr6_provider?: scalar|null, - * default_redis_provider?: scalar|null, // Default: "redis://localhost" - * default_valkey_provider?: scalar|null, // Default: "valkey://localhost" - * default_memcached_provider?: scalar|null, // Default: "memcached://localhost" - * default_doctrine_dbal_provider?: scalar|null, // Default: "database_connection" - * default_pdo_provider?: scalar|null, // Default: null + * 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|null, // Default: null - * public?: bool, // Default: false - * default_lifetime?: scalar|null, // Default lifetime of the pool. - * provider?: scalar|null, // Overwrite the setting from the default provider for this adapter. - * early_expiration_message_bus?: scalar|null, - * clearer?: scalar|null, + * adapters?: list, + * 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, // Throw PHP errors as \ErrorException instances. // Default: true + * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true * }, * exceptions?: array, * web_link?: bool|array{ // Web links configuration - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * lock?: bool|string|array{ // Lock configuration - * enabled?: bool, // Default: true - * resources?: array>, + * enabled?: bool|Param, // Default: true + * resources?: array>, * }, * semaphore?: bool|string|array{ // Semaphore configuration - * enabled?: bool, // Default: false - * resources?: array, + * enabled?: bool|Param, // Default: false + * resources?: array, * }, * messenger?: bool|array{ // Messenger configuration - * enabled?: bool, // Default: false - * routing?: array, + * enabled?: bool|Param, // Default: false + * routing?: array, * }>, * serializer?: array{ - * default_serializer?: scalar|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * 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|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * 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|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * dsn?: scalar|Param|null, + * serializer?: scalar|Param|null, // Service id of a custom serializer to use. // Default: null + * options?: 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|null, // Service id to override the retry strategy entirely. // Default: null - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * 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|null, // Rate limiter name to use when processing messages. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null * }>, - * failure_transport?: scalar|null, // Transport name to send failed messages to (after all retries have failed). // Default: null - * stop_worker_on_signals?: list, - * default_bus?: scalar|null, // 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?: list, + * default_bus?: scalar|Param|null, // Default: null * buses?: array, * }>, * }>, * }, * scheduler?: bool|array{ // Scheduler configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, - * disallow_search_engine_index?: bool, // Enabled by default when debug is enabled. // Default: true + * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true * http_client?: bool|array{ // HTTP Client configuration - * enabled?: bool, // Default: true - * max_host_connections?: int, // The maximum number of connections to a single host. + * 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, // The maximum number of redirects to follow. - * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null, // A certificate authority file. - * capath?: scalar|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null, // A PEM formatted certificate file. - * local_pk?: scalar|null, // A private key file. - * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * 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|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * 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|null, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. - * enabled?: bool, // Default: false - * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * 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, // Default: false - * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, + * code?: int|Param, + * methods?: list, * }>, - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * 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|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * 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, + * scope?: scalar|Param|null, // The regular expression that the request URL must match before adding the other options. When none is provided, the base URI is used instead. + * base_uri?: scalar|Param|null, // The URI to resolve relative URLs, following rules in RFC 3985, section 2. + * auth_basic?: scalar|Param|null, // An HTTP Basic authentication "username:password". + * auth_bearer?: scalar|Param|null, // A token enabling HTTP Bearer authorization. + * auth_ntlm?: scalar|Param|null, // A "username:password" pair to use Microsoft NTLM authentication (requires the cURL extension). + * query?: array, * headers?: array, - * max_redirects?: int, // The maximum number of redirects to follow. - * http_version?: scalar|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. - * resolve?: array, - * proxy?: scalar|null, // The URL of the proxy to pass requests through or null for automatic detection. - * no_proxy?: scalar|null, // A comma separated list of hosts that do not require a proxy to be reached. - * timeout?: float, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. - * max_duration?: float, // The maximum execution time for the request+response as a whole. - * bindto?: scalar|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. - * verify_peer?: bool, // Indicates if the peer should be verified in a TLS context. - * verify_host?: bool, // Indicates if the host should exist as a certificate common name. - * cafile?: scalar|null, // A certificate authority file. - * capath?: scalar|null, // A directory that contains multiple certificate authority files. - * local_cert?: scalar|null, // A PEM formatted certificate file. - * local_pk?: scalar|null, // A private key file. - * passphrase?: scalar|null, // The passphrase used to encrypt the "local_pk" file. - * ciphers?: scalar|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * 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|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * 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|null, // Rate limiter name to use for throttling requests. // Default: null + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null * caching?: bool|array{ // Caching configuration. - * enabled?: bool, // Default: false - * cache_pool?: string, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" - * shared?: bool, // Indicates whether the cache is shared (public) or private. // Default: true - * max_ttl?: int, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * 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, // Default: false - * retry_strategy?: scalar|null, // service id to override the retry strategy. // Default: null + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null * http_codes?: array, + * code?: int|Param, + * methods?: list, * }>, - * max_retries?: int, // Default: 3 - * delay?: int, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 - * multiplier?: float, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 - * max_delay?: int, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 - * jitter?: float, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * 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, // Default: true - * message_bus?: scalar|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null - * dsn?: scalar|null, // Default: null - * transports?: array, + * 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|null, - * recipients?: list, - * allowed_recipients?: list, + * sender?: scalar|Param|null, + * recipients?: list, + * allowed_recipients?: list, * }, * headers?: array, * dkim_signer?: bool|array{ // DKIM signer configuration - * enabled?: bool, // Default: false - * key?: scalar|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" - * domain?: scalar|null, // Default: "" - * select?: scalar|null, // Default: "" - * passphrase?: scalar|null, // The private key passphrase // Default: "" + * 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, // Default: false - * key?: scalar|null, // Path to key (in PEM format) // Default: "" - * certificate?: scalar|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" - * passphrase?: scalar|null, // The private key passphrase // Default: null - * extra_certificates?: scalar|null, // Default: null - * sign_options?: int, // Default: null + * 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, // Default: false - * repository?: scalar|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" - * cipher?: int, // A set of algorithms used to encrypt the message // Default: null + * 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, // Default: true - * vault_directory?: scalar|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" - * local_dotenv_file?: scalar|null, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" - * decryption_env_var?: scalar|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * 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, // Default: true - * message_bus?: scalar|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, // Default: false - * channel_policy?: array>, + * 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 + * 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, // Default: false + * enabled?: bool|Param, // Default: false * limiters?: array, - * limit?: int, // The maximum allowed hits in a fixed interval or burst. - * interval?: scalar|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). + * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by this limiter (or null to disable locking). // Default: "auto" + * cache_pool?: scalar|Param|null, // The cache pool to use for storing the current limiter state. // Default: "cache.rate_limiter" + * storage_service?: scalar|Param|null, // The service ID of a custom storage implementation, this precedes any configured "cache_pool". // Default: null + * policy?: "fixed_window"|"token_bucket"|"sliding_window"|"compound"|"no_limit"|Param, // The algorithm to be used by this limiter. + * limiters?: list, + * 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|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, // Amount of tokens to add each interval. // Default: 1 + * 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, // Default: false - * default_uuid_version?: 7|6|4|1, // Default: 7 - * name_based_uuid_version?: 5|3, // Default: 5 - * name_based_uuid_namespace?: scalar|null, - * time_based_uuid_version?: 7|6|1, // Default: 7 - * time_based_uuid_node?: scalar|null, + * 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, // Default: false + * enabled?: bool|Param, // Default: false * sanitizers?: array, - * block_elements?: list, - * drop_elements?: list, + * block_elements?: list, + * drop_elements?: list, * allow_attributes?: array, * drop_attributes?: array, - * force_attributes?: array>, - * force_https_urls?: bool, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false - * allowed_link_schemes?: list, - * allowed_link_hosts?: list|null, - * allow_relative_links?: bool, // Allows relative URLs to be used in links href attributes. // Default: false - * allowed_media_schemes?: list, - * allowed_media_hosts?: list|null, - * allow_relative_medias?: bool, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false - * with_attribute_sanitizers?: list, - * without_attribute_sanitizers?: list, - * max_input_length?: int, // The maximum length allowed for the sanitized input. // Default: 0 + * 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?: list, + * allowed_link_hosts?: list|null, + * allow_relative_links?: bool|Param, // Allows relative URLs to be used in links href attributes. // Default: false + * allowed_media_schemes?: list, + * allowed_media_hosts?: list|null, + * allow_relative_medias?: bool|Param, // Allows relative URLs to be used in media source attributes (img, audio, video, ...). // Default: false + * with_attribute_sanitizers?: list, + * without_attribute_sanitizers?: list, + * max_input_length?: int|Param, // The maximum length allowed for the sanitized input. // Default: 0 * }>, * }, * webhook?: bool|array{ // Webhook configuration - * enabled?: bool, // Default: false - * message_bus?: scalar|null, // The message bus to use. // Default: "messenger.default_bus" + * 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, // Default: false + * enabled?: bool|Param, // Default: false * }, * json_streamer?: bool|array{ // JSON streamer configuration - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * } * @psalm-type TwigConfig = array{ - * form_themes?: list, + * form_themes?: list, * globals?: array, - * autoescape_service?: scalar|null, // Default: null - * autoescape_service_method?: scalar|null, // Default: null - * base_template_class?: scalar|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. - * cache?: scalar|null, // Default: true - * charset?: scalar|null, // Default: "%kernel.charset%" - * debug?: bool, // Default: "%kernel.debug%" - * strict_variables?: bool, // Default: "%kernel.debug%" - * auto_reload?: scalar|null, - * optimizations?: int, - * default_path?: scalar|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" - * file_name_pattern?: list, + * 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?: list, * paths?: array, * date?: array{ // The default format options used by the date filter. - * format?: scalar|null, // Default: "F j, Y H:i" - * interval_format?: scalar|null, // Default: "%d days" - * timezone?: scalar|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * 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, // Default: 0 - * decimal_point?: scalar|null, // Default: "." - * thousands_separator?: scalar|null, // Default: "," + * decimals?: int|Param, // Default: 0 + * decimal_point?: scalar|Param|null, // Default: "." + * thousands_separator?: scalar|Param|null, // Default: "," * }, * mailer?: array{ - * html_to_text_converter?: scalar|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null * }, * } * @psalm-type TwigExtraConfig = array{ * cache?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * html?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * markdown?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * intl?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * cssinliner?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * inky?: bool|array{ - * enabled?: bool, // Default: false + * enabled?: bool|Param, // Default: false * }, * string?: bool|array{ - * enabled?: bool, // Default: true + * enabled?: bool|Param, // Default: true * }, * commonmark?: array{ * renderer?: array{ // Array of options for rendering HTML. - * block_separator?: scalar|null, - * inner_separator?: scalar|null, - * soft_break?: scalar|null, + * block_separator?: scalar|Param|null, + * inner_separator?: scalar|Param|null, + * soft_break?: scalar|Param|null, * }, - * html_input?: "strip"|"allow"|"escape", // How to handle HTML input. - * allow_unsafe_links?: bool, // Remove risky link and image URLs by setting this to false. // Default: true - * max_nesting_level?: int, // The maximum nesting level for blocks. // Default: 9223372036854775807 - * max_delimiters_per_line?: int, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 + * html_input?: "strip"|"allow"|"escape"|Param, // How to handle HTML input. + * allow_unsafe_links?: bool|Param, // Remove risky link and image URLs by setting this to false. // Default: true + * max_nesting_level?: int|Param, // The maximum nesting level for blocks. // Default: 9223372036854775807 + * max_delimiters_per_line?: int|Param, // The maximum number of strong/emphasis delimiters per line. // Default: 9223372036854775807 * slug_normalizer?: array{ // Array of options for configuring how URL-safe slugs are created. * instance?: mixed, - * max_length?: int, // Default: 255 + * max_length?: int|Param, // Default: 255 * unique?: mixed, * }, * commonmark?: array{ // Array of options for configuring the CommonMark core extension. - * enable_em?: bool, // Default: true - * enable_strong?: bool, // Default: true - * use_asterisk?: bool, // Default: true - * use_underscore?: bool, // Default: true - * unordered_list_markers?: list, + * enable_em?: bool|Param, // Default: true + * enable_strong?: bool|Param, // Default: true + * use_asterisk?: bool|Param, // Default: true + * use_underscore?: bool|Param, // Default: true + * unordered_list_markers?: list, * }, * ... * }, * } * @psalm-type SecurityConfig = array{ - * access_denied_url?: scalar|null, // Default: null - * session_fixation_strategy?: "none"|"migrate"|"invalidate", // Default: "migrate" - * hide_user_not_found?: bool, // 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, // Default: "none" - * erase_credentials?: bool, // Default: true + * 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", - * service?: scalar|null, - * strategy_service?: scalar|null, - * allow_if_all_abstain?: bool, // Default: false - * allow_if_equal_granted_denied?: bool, // Default: true + * 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|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|null, // Default: 40 - * ignore_case?: bool, // Default: false - * encode_as_base64?: bool, // Default: true - * iterations?: scalar|null, // Default: 5000 - * cost?: int, // Default: null - * memory_cost?: scalar|null, // Default: null - * time_cost?: scalar|null, // Default: null - * id?: scalar|null, + * algorithm?: scalar|Param|null, + * migrate_from?: list, + * 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, + * providers?: list, * }, * entity?: array{ - * class: scalar|null, // The full entity class name of your user class. - * property?: scalar|null, // Default: null - * manager_name?: scalar|null, // Default: null + * 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 * }, * mongodb?: array{ - * class: scalar|null, // The full entity class name of your user class. - * property?: scalar|null, // Default: null - * manager_name?: scalar|null, // Default: null + * 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 * }, * memory?: array{ * users?: array, + * password?: scalar|Param|null, // Default: null + * roles?: list, * }>, * }, * ldap?: array{ - * service: scalar|null, - * base_dn: scalar|null, - * search_dn?: scalar|null, // Default: null - * search_password?: scalar|null, // Default: null - * extra_fields?: list, - * default_roles?: list, - * role_fetcher?: scalar|null, // Default: null - * uid_key?: scalar|null, // Default: "sAMAccountName" - * filter?: scalar|null, // Default: "({uid_key}={user_identifier})" - * password_attribute?: scalar|null, // Default: null + * 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?: 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 * }, * lexik_jwt?: array{ - * class?: scalar|null, // Default: "Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\User\\JWTUser" + * class?: scalar|Param|null, // Default: "Lexik\\Bundle\\JWTAuthenticationBundle\\Security\\User\\JWTUser" * }, * }>, - * firewalls: array, - * security?: bool, // Default: true - * user_checker?: scalar|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" - * request_matcher?: scalar|null, - * access_denied_url?: scalar|null, - * access_denied_handler?: scalar|null, - * entry_point?: scalar|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". - * provider?: scalar|null, - * stateless?: bool, // Default: false - * lazy?: bool, // Default: false - * context?: scalar|null, + * 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|null, // Default: null - * csrf_token_id?: scalar|null, // Default: "logout" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_manager?: scalar|null, - * path?: scalar|null, // Default: "/logout" - * target?: scalar|null, // Default: "/" - * invalidate_session?: bool, // Default: true - * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts">, + * 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?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, * delete_cookies?: array, * }, * switch_user?: array{ - * provider?: scalar|null, - * parameter?: scalar|null, // Default: "_switch_user" - * role?: scalar|null, // Default: "ROLE_ALLOWED_TO_SWITCH" - * target_route?: scalar|null, // Default: null + * 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, + * required_badges?: list, + * custom_authenticators?: list, * login_throttling?: array{ - * limiter?: scalar|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". - * max_attempts?: int, // Default: 5 - * interval?: scalar|null, // Default: "1 minute" - * lock_factory?: scalar|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null - * cache_pool?: string, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" - * storage_service?: string, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * 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|null, - * user?: scalar|null, // Default: "SSL_CLIENT_S_DN_Email" - * credentials?: scalar|null, // Default: "SSL_CLIENT_S_DN" - * user_identifier?: scalar|null, // Default: "emailAddress" + * 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|null, - * user?: scalar|null, // Default: "REMOTE_USER" + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "REMOTE_USER" * }, * jwt?: array{ - * provider?: scalar|null, // Default: null - * authenticator?: scalar|null, // Default: "lexik_jwt_authentication.security.jwt_authenticator" + * provider?: scalar|Param|null, // Default: null + * authenticator?: scalar|Param|null, // Default: "lexik_jwt_authentication.security.jwt_authenticator" * }, * login_link?: array{ - * check_route: scalar|null, // Route that will validate the login link - e.g. "app_login_link_verify". - * check_post_only?: scalar|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false - * signature_properties: list, - * lifetime?: int, // The lifetime of the login link in seconds. // Default: 600 - * max_uses?: int, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null - * used_link_cache?: scalar|null, // Cache service id used to expired links of max_uses is set. - * success_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. - * failure_handler?: scalar|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. - * provider?: scalar|null, // The user provider to load users from. - * secret?: scalar|null, // Default: "%kernel.secret%" - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * login_path?: scalar|null, // Default: "/login" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * 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|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_parameter?: scalar|null, // Default: "_username" - * password_parameter?: scalar|null, // Default: "_password" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|null, // Default: "authenticate" - * enable_csrf?: bool, // Default: false - * post_only?: bool, // Default: true - * form_only?: bool, // Default: false - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" + * 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|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_parameter?: scalar|null, // Default: "_username" - * password_parameter?: scalar|null, // Default: "_password" - * csrf_parameter?: scalar|null, // Default: "_csrf_token" - * csrf_token_id?: scalar|null, // Default: "authenticate" - * enable_csrf?: bool, // Default: false - * post_only?: bool, // Default: true - * form_only?: bool, // Default: false - * always_use_default_target_path?: bool, // Default: false - * default_target_path?: scalar|null, // Default: "/" - * target_path_parameter?: scalar|null, // Default: "_target_path" - * use_referer?: bool, // Default: false - * failure_path?: scalar|null, // Default: null - * failure_forward?: bool, // Default: false - * failure_path_parameter?: scalar|null, // Default: "_failure_path" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * 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|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_path?: scalar|null, // Default: "username" - * password_path?: scalar|null, // Default: "password" + * 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|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * check_path?: scalar|null, // Default: "/login_check" - * use_forward?: bool, // Default: false - * login_path?: scalar|null, // Default: "/login" - * username_path?: scalar|null, // Default: "username" - * password_path?: scalar|null, // Default: "password" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * 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|null, - * remember_me?: bool, // Default: true - * success_handler?: scalar|null, - * failure_handler?: scalar|null, - * realm?: scalar|null, // Default: null - * token_extractors?: list, - * token_handler: string|array{ - * id?: scalar|null, + * 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?: list, + * token_handler?: string|array{ + * id?: scalar|Param|null, * oidc_user_info?: string|array{ - * base_uri: scalar|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). + * 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|null, // Cache service id to use to cache the OIDC discovery configuration. + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" - * client?: scalar|null, // HttpClient service id to use to call the OIDC server. + * 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: list, + * base_uri?: list, * cache?: array{ - * id: scalar|null, // Cache service id to use to cache the OIDC discovery configuration. + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. * }, * }, - * claim?: scalar|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" - * audience: scalar|null, // Audience set in the token, for validation purpose. - * issuers: list, + * 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|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|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * 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, // Default: false - * enforce?: bool, // When enabled, the token shall be encrypted. // Default: false - * algorithms: list, - * keyset: scalar|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * 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|null, // CAS server validation URL - * prefix?: scalar|null, // CAS prefix // Default: "cas" - * http_client?: scalar|null, // HTTP Client service // Default: null + * 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|null, + * oauth2?: scalar|Param|null, * }, * }, * http_basic?: array{ - * provider?: scalar|null, - * realm?: scalar|null, // Default: "Secured Area" + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" * }, * http_basic_ldap?: array{ - * provider?: scalar|null, - * realm?: scalar|null, // Default: "Secured Area" - * service?: scalar|null, // Default: "ldap" - * dn_string?: scalar|null, // Default: "{user_identifier}" - * query_string?: scalar|null, - * search_dn?: scalar|null, // Default: "" - * search_password?: scalar|null, // Default: "" + * 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|null, // Default: "%kernel.secret%" - * service?: scalar|null, - * user_providers?: list, - * catch_exceptions?: bool, // Default: true - * signature_properties?: list, + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * service?: scalar|Param|null, + * user_providers?: list, + * catch_exceptions?: bool|Param, // Default: true + * signature_properties?: list, * token_provider?: string|array{ - * service?: scalar|null, // The service ID of a custom remember-me token provider. + * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. * doctrine?: bool|array{ - * enabled?: bool, // Default: false - * connection?: scalar|null, // Default: null + * enabled?: bool|Param, // Default: false + * connection?: scalar|Param|null, // Default: null * }, * }, - * token_verifier?: scalar|null, // The service ID of a custom rememberme token verifier. - * name?: scalar|null, // Default: "REMEMBERME" - * lifetime?: int, // Default: 31536000 - * path?: scalar|null, // Default: "/" - * domain?: scalar|null, // Default: null - * secure?: true|false|"auto", // Default: false - * httponly?: bool, // Default: true - * samesite?: null|"lax"|"strict"|"none", // Default: "lax" - * always_remember_me?: bool, // Default: false - * remember_me_parameter?: scalar|null, // Default: "_remember_me" + * 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: "lax" + * always_remember_me?: bool|Param, // Default: false + * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" * }, * refresh_jwt?: array{ - * check_path?: scalar|null, // Default: null - * provider?: scalar|null, - * success_handler?: scalar|null, - * failure_handler?: scalar|null, + * check_path?: scalar|Param|null, // Default: null + * provider?: scalar|Param|null, + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, * }, * }>, * access_control?: list, - * attributes?: array, - * route?: scalar|null, // Default: null - * methods?: list, - * allow_if?: scalar|null, // Default: null - * roles?: list, + * request_matcher?: scalar|Param|null, // Default: null + * requires_channel?: scalar|Param|null, // Default: null + * path?: scalar|Param|null, // Use the urldecoded format. // Default: null + * host?: scalar|Param|null, // Default: null + * port?: int|Param, // Default: null + * ips?: list, + * attributes?: array, + * route?: scalar|Param|null, // Default: null + * methods?: list, + * allow_if?: scalar|Param|null, // Default: null + * roles?: list, * }>, - * role_hierarchy?: array>, + * role_hierarchy?: array>, * } * @psalm-type WebProfilerConfig = array{ * toolbar?: bool|array{ // Profiler toolbar configuration - * enabled?: bool, // Default: false - * ajax_replace?: bool, // Replace toolbar on AJAX requests // Default: false + * enabled?: bool|Param, // Default: false + * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false * }, - * intercept_redirects?: bool, // Default: false - * excluded_ajax_paths?: scalar|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * intercept_redirects?: bool|Param, // Default: false + * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" * } * @psalm-type MonologConfig = array{ - * use_microseconds?: scalar|null, // Default: true - * channels?: list, + * use_microseconds?: scalar|Param|null, // Default: true + * channels?: list, * handlers?: array, + * code?: scalar|Param|null, + * urls?: list, * }>, - * accepted_levels?: list, - * min_level?: scalar|null, // Default: "DEBUG" - * max_level?: scalar|null, // Default: "EMERGENCY" - * buffer_size?: scalar|null, // Default: 0 - * flush_on_overflow?: bool, // Default: false - * handler?: scalar|null, - * url?: scalar|null, - * exchange?: scalar|null, - * exchange_name?: scalar|null, // Default: "log" - * channel?: scalar|null, // Default: null - * bot_name?: scalar|null, // Default: "Monolog" - * use_attachment?: scalar|null, // Default: true - * use_short_attachment?: scalar|null, // Default: false - * include_extra?: scalar|null, // Default: false - * icon_emoji?: scalar|null, // Default: null - * webhook_url?: scalar|null, - * exclude_fields?: list, - * token?: scalar|null, - * region?: scalar|null, - * source?: scalar|null, - * use_ssl?: bool, // Default: true + * 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" + * 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, + * token?: scalar|Param|null, + * region?: scalar|Param|null, + * source?: scalar|Param|null, + * use_ssl?: bool|Param, // Default: true * user?: mixed, - * title?: scalar|null, // Default: null - * host?: scalar|null, // Default: null - * port?: scalar|null, // Default: 514 - * config?: list, - * members?: list, - * connection_string?: scalar|null, - * timeout?: scalar|null, - * time?: scalar|null, // Default: 60 - * deduplication_level?: scalar|null, // Default: 400 - * store?: scalar|null, // Default: null - * connection_timeout?: scalar|null, - * persistent?: bool, - * message_type?: scalar|null, // Default: 0 - * parse_mode?: scalar|null, // Default: null - * disable_webpage_preview?: bool|null, // Default: null - * disable_notification?: bool|null, // Default: null - * split_long_messages?: bool, // Default: false - * delay_between_messages?: bool, // Default: false - * topic?: int, // Default: null - * factor?: int, // Default: 1 - * tags?: list, + * 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, + * 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?: list, * console_formatter_options?: mixed, // Default: [] - * formatter?: scalar|null, - * nested?: bool, // Default: false + * formatter?: scalar|Param|null, + * nested?: bool|Param, // Default: false * publisher?: string|array{ - * id?: scalar|null, - * hostname?: scalar|null, - * port?: scalar|null, // Default: 12201 - * chunk_size?: scalar|null, // Default: 1420 - * encoder?: "json"|"compressed_json", + * 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, * }, * mongodb?: string|array{ - * id?: scalar|null, // ID of a MongoDB\Client service - * uri?: scalar|null, - * username?: scalar|null, - * password?: scalar|null, - * database?: scalar|null, // Default: "monolog" - * collection?: scalar|null, // Default: "logs" + * 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|null, - * hosts?: list, - * host?: scalar|null, - * port?: scalar|null, // Default: 9200 - * transport?: scalar|null, // Default: "Http" - * user?: scalar|null, // Default: null - * password?: scalar|null, // Default: null + * 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|null, // Default: "monolog" - * document_type?: scalar|null, // Default: "logs" - * ignore_error?: scalar|null, // Default: false + * 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|null, - * host?: scalar|null, - * password?: scalar|null, // Default: null - * port?: scalar|null, // Default: 6379 - * database?: scalar|null, // Default: 0 - * key_name?: scalar|null, // Default: "monolog_redis" + * 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|null, - * host?: scalar|null, + * id?: scalar|Param|null, + * host?: scalar|Param|null, * }, - * from_email?: scalar|null, - * to_email?: list, - * subject?: scalar|null, - * content_type?: scalar|null, // Default: null - * headers?: list, - * mailer?: scalar|null, // Default: null + * from_email?: scalar|Param|null, + * to_email?: 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|null, - * method?: scalar|null, // Default: null + * id?: scalar|Param|null, + * method?: scalar|Param|null, // Default: null * }, * verbosity_levels?: array{ - * VERBOSITY_QUIET?: scalar|null, // Default: "ERROR" - * VERBOSITY_NORMAL?: scalar|null, // Default: "WARNING" - * VERBOSITY_VERBOSE?: scalar|null, // Default: "NOTICE" - * VERBOSITY_VERY_VERBOSE?: scalar|null, // Default: "INFO" - * VERBOSITY_DEBUG?: scalar|null, // Default: "DEBUG" + * 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|null, - * elements?: list, + * type?: scalar|Param|null, + * elements?: list, * }, * }>, * } * @psalm-type DebugConfig = array{ - * max_items?: int, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 - * min_depth?: int, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 - * max_string_length?: int, // Max length of displayed strings, -1 means no limit. // Default: -1 - * dump_destination?: scalar|null, // A stream URL where dumps should be written to. // Default: null - * theme?: "dark"|"light", // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * 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 PscSystemPluginConfig = array - * @psalm-type PscSystemUpdateConfig = array - * @psalm-type PscShopThemeConfig = array - * @psalm-type PscLibrariesAceEditorConfig = array - * @psalm-type PscEntityConfig = array - * @psalm-type PscShopUserConfig = array - * @psalm-type PscShopCreateConfig = array - * @psalm-type PscBackendDashboardConfig = array - * @psalm-type PscShopSettingsConfig = array - * @psalm-type PscSystemSettingsConfig = array - * @psalm-type PscBackendToolsConfig = array - * @psalm-type PscShopOrderConfig = array - * @psalm-type PscShopContactConfig = array * @psalm-type PscShopMediaConfig = array{ - * default_context: scalar|null, + * default_context?: scalar|Param|null, * admin_format?: array{ // Configures the thumbnail preview for the admin - * width?: scalar|null, // Default: 200 - * height?: scalar|null, // Default: null - * quality?: scalar|null, // Default: 90 - * format?: scalar|null, // Default: "jpg" - * constraint?: scalar|null, // Default: true + * width?: scalar|Param|null, // Default: 200 + * height?: scalar|Param|null, // Default: null + * quality?: scalar|Param|null, // Default: 90 + * format?: scalar|Param|null, // Default: "jpg" + * constraint?: scalar|Param|null, // Default: true * }, * contexts?: array, + * providers?: list, * formats?: array, + * width?: scalar|Param|null, // Default: null + * height?: scalar|Param|null, // Default: null + * quality?: scalar|Param|null, // Default: 80 + * format?: scalar|Param|null, // Default: "jpg" + * constraint?: scalar|Param|null, // Default: true + * resizer?: scalar|Param|null, // Default: null + * resizer_options?: array, * }>, * }>, * filesystem?: array{ * local?: array{ - * directory?: scalar|null, // Default: "%kernel.project_dir%/web/uploads/media" - * create?: scalar|null, // Default: false + * directory?: scalar|Param|null, // Default: "%kernel.project_dir%/web/uploads/media" + * create?: scalar|Param|null, // Default: false * }, * ftp?: array{ - * directory: scalar|null, - * host: scalar|null, - * username: scalar|null, - * password: scalar|null, - * port?: scalar|null, // Default: 21 - * passive?: scalar|null, // Default: false - * create?: scalar|null, // Default: false - * mode?: scalar|null, // Default: 2 + * directory?: scalar|Param|null, + * host?: scalar|Param|null, + * username?: scalar|Param|null, + * password?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 21 + * passive?: scalar|Param|null, // Default: false + * create?: scalar|Param|null, // Default: false + * mode?: scalar|Param|null, // Default: 2 * }, * s3?: array{ - * directory?: scalar|null, // Default: "" - * bucket: scalar|null, - * accessKey: scalar|null, - * secretKey: scalar|null, - * create?: scalar|null, // Default: false - * storage?: scalar|null, // Default: "standard" - * cache_control?: scalar|null, // Default: "" - * acl?: scalar|null, // Default: "public" - * encryption?: scalar|null, // Default: "" - * region?: scalar|null, // Default: "s3.amazonaws.com" - * version?: scalar|null, // Default: "latest" - * sdk_version?: 2|3, // Default: 2 - * meta?: array, + * directory?: scalar|Param|null, // Default: "" + * bucket?: scalar|Param|null, + * accessKey?: scalar|Param|null, + * secretKey?: scalar|Param|null, + * create?: scalar|Param|null, // Default: false + * storage?: scalar|Param|null, // Default: "standard" + * cache_control?: scalar|Param|null, // Default: "" + * acl?: scalar|Param|null, // Default: "public" + * encryption?: scalar|Param|null, // Default: "" + * region?: scalar|Param|null, // Default: "s3.amazonaws.com" + * version?: scalar|Param|null, // Default: "latest" + * sdk_version?: 2|3|Param, // Default: 2 + * meta?: array, * }, * mogilefs?: array{ - * domain: scalar|null, - * hosts: list, + * domain?: scalar|Param|null, + * hosts?: list, * }, * replicate?: array{ - * master: scalar|null, - * slave: scalar|null, + * master?: scalar|Param|null, + * slave?: scalar|Param|null, * }, * openstack?: array{ - * url: scalar|null, + * url?: scalar|Param|null, * secret?: array{ - * username: scalar|null, - * password: scalar|null, + * username?: scalar|Param|null, + * password?: scalar|Param|null, * }, - * region?: scalar|null, - * containerName?: scalar|null, // Default: "media" - * create_container?: scalar|null, // Default: false + * region?: scalar|Param|null, + * containerName?: scalar|Param|null, // Default: "media" + * create_container?: scalar|Param|null, // Default: false * }, * rackspace?: array{ - * url: scalar|null, + * url?: scalar|Param|null, * secret?: array{ - * username: scalar|null, - * apiKey: scalar|null, + * username?: scalar|Param|null, + * apiKey?: scalar|Param|null, * }, - * region: scalar|null, - * containerName?: scalar|null, // Default: "media" - * create_container?: scalar|null, // Default: false + * region?: scalar|Param|null, + * containerName?: scalar|Param|null, // Default: "media" + * create_container?: scalar|Param|null, // Default: false * }, * }, * providers?: array{ * file?: array{ - * service?: scalar|null, // Default: "psc.shop.media.provider.file" - * resizer?: scalar|null, // Default: false - * filesystem?: scalar|null, // Default: "psc.shop.media.filesystem.local" - * cdn?: scalar|null, // Default: "psc.shop.media.cdn.server" - * generator?: scalar|null, // Default: "psc.shop.media.generator.default" - * thumbnail?: scalar|null, // Default: "psc.shop.media.thumbnail.format" - * allowed_extensions?: list, - * allowed_mime_types?: list, + * service?: scalar|Param|null, // Default: "psc.shop.media.provider.file" + * resizer?: scalar|Param|null, // Default: false + * filesystem?: scalar|Param|null, // Default: "psc.shop.media.filesystem.local" + * cdn?: scalar|Param|null, // Default: "psc.shop.media.cdn.server" + * generator?: scalar|Param|null, // Default: "psc.shop.media.generator.default" + * thumbnail?: scalar|Param|null, // Default: "psc.shop.media.thumbnail.format" + * allowed_extensions?: list, + * allowed_mime_types?: list, * }, * image?: array{ - * service?: scalar|null, // Default: "psc.shop.media.provider.image" - * resizer?: scalar|null, // Default: "psc.shop.media.resizer.default" - * filesystem?: scalar|null, // Default: "psc.shop.media.filesystem.local" - * cdn?: scalar|null, // Default: "psc.shop.media.cdn.server" - * generator?: scalar|null, // Default: "psc.shop.media.generator.default" - * thumbnail?: scalar|null, // Default: "psc.shop.media.thumbnail.format" - * adapter?: scalar|null, // Default: "psc.shop.media.adapter.image.default" - * allowed_extensions?: list, - * allowed_mime_types?: list, + * service?: scalar|Param|null, // Default: "psc.shop.media.provider.image" + * resizer?: scalar|Param|null, // Default: "psc.shop.media.resizer.default" + * filesystem?: scalar|Param|null, // Default: "psc.shop.media.filesystem.local" + * cdn?: scalar|Param|null, // Default: "psc.shop.media.cdn.server" + * generator?: scalar|Param|null, // Default: "psc.shop.media.generator.default" + * thumbnail?: scalar|Param|null, // Default: "psc.shop.media.thumbnail.format" + * adapter?: scalar|Param|null, // Default: "psc.shop.media.adapter.image.default" + * allowed_extensions?: list, + * allowed_mime_types?: list, * }, * }, * cdn?: array{ * server?: array{ - * path?: scalar|null, // Default: "/uploads/media" + * path?: scalar|Param|null, // Default: "/uploads/media" * }, * panther?: array{ - * path: scalar|null, // e.g. http://domain.pantherportal.com/uploads/media - * site_id: scalar|null, - * password: scalar|null, - * username: scalar|null, + * path?: scalar|Param|null, // e.g. http://domain.pantherportal.com/uploads/media + * site_id?: scalar|Param|null, + * password?: scalar|Param|null, + * username?: scalar|Param|null, * }, * cloudfront?: array{ - * path: scalar|null, // e.g. http://xxxxxxxxxxxxxx.cloudfront.net/uploads/media - * distribution_id: scalar|null, - * key: scalar|null, - * secret: scalar|null, + * path?: scalar|Param|null, // e.g. http://xxxxxxxxxxxxxx.cloudfront.net/uploads/media + * distribution_id?: scalar|Param|null, + * key?: scalar|Param|null, + * secret?: scalar|Param|null, * }, * fallback?: array{ - * master: scalar|null, - * fallback: scalar|null, + * master?: scalar|Param|null, + * fallback?: scalar|Param|null, * }, * }, * resizer?: array{ * simple?: array{ - * mode?: scalar|null, // Default: "inset" + * mode?: scalar|Param|null, // Default: "inset" * }, * square?: array{ - * mode?: scalar|null, // Default: "inset" + * mode?: scalar|Param|null, // Default: "inset" * }, * }, * resizers?: array{ - * default?: scalar|null, // Default: "psc.shop.media.resizer.simple" + * default?: scalar|Param|null, // Default: "psc.shop.media.resizer.simple" * }, * adapters?: array{ - * default?: scalar|null, // Default: "psc.shop.media.adapter.image.gd" + * default?: scalar|Param|null, // Default: "psc.shop.media.adapter.image.gd" * }, * } - * @psalm-type PscShopAccountConfig = array - * @psalm-type PscShopVoucherConfig = array - * @psalm-type PscShopNewsConfig = array - * @psalm-type PscShopProductConfig = array - * @psalm-type PscShopShippingConfig = array - * @psalm-type PscShopCmsConfig = array - * @psalm-type PscShopQueueConfig = array - * @psalm-type PscShopBasketConfig = array - * @psalm-type PscShopPaymentConfig = array - * @psalm-type PscBackendDomainConfig = array - * @psalm-type PscComponentSteplayouterConfig = array - * @psalm-type PscComponentApiConfig = array - * @psalm-type PscComponentConfigurationlayouterConfig = array * @psalm-type NelmioCorsConfig = array{ * defaults?: array{ - * allow_credentials?: bool, // Default: false - * allow_origin?: list, - * allow_headers?: list, - * allow_methods?: list, - * allow_private_network?: bool, // Default: false - * expose_headers?: list, - * max_age?: scalar|null, // Default: 0 - * hosts?: list, - * origin_regex?: bool, // Default: false - * forced_allow_origin_value?: scalar|null, // Default: null - * skip_same_as_origin?: bool, // Default: true + * allow_credentials?: bool|Param, // Default: false + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool|Param, // Default: false + * expose_headers?: list, + * max_age?: scalar|Param|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool|Param, // Default: false + * forced_allow_origin_value?: scalar|Param|null, // Default: null + * skip_same_as_origin?: bool|Param, // Default: true * }, * paths?: array, - * allow_headers?: list, - * allow_methods?: list, - * allow_private_network?: bool, - * expose_headers?: list, - * max_age?: scalar|null, // Default: 0 - * hosts?: list, - * origin_regex?: bool, - * forced_allow_origin_value?: scalar|null, // Default: null - * skip_same_as_origin?: bool, + * allow_credentials?: bool|Param, + * allow_origin?: list, + * allow_headers?: list, + * allow_methods?: list, + * allow_private_network?: bool|Param, + * expose_headers?: list, + * max_age?: scalar|Param|null, // Default: 0 + * hosts?: list, + * origin_regex?: bool|Param, + * forced_allow_origin_value?: scalar|Param|null, // Default: null + * skip_same_as_origin?: bool|Param, * }>, * } * @psalm-type NelmioApiDocConfig = array{ - * type_info?: bool, // Use the symfony/type-info component for determining types. // Default: false - * use_validation_groups?: bool, // If true, `groups` passed to @Model annotations will be used to limit validation constraints // Default: false + * type_info?: bool|Param, // Use the symfony/type-info component for determining types. // Default: false + * use_validation_groups?: bool|Param, // If true, `groups` passed to @Model annotations will be used to limit validation constraints // Default: false * cache?: array{ - * pool?: scalar|null, // define cache pool to use // Default: null - * item_id?: scalar|null, // define cache item id // Default: null + * pool?: scalar|Param|null, // define cache pool to use // Default: null + * item_id?: scalar|Param|null, // define cache item id // Default: null * }, * documentation?: array, - * media_types?: list, + * media_types?: list, * html_config?: array{ // UI configuration options - * assets_mode?: scalar|null, // Default: "cdn" + * assets_mode?: scalar|Param|null, // Default: "cdn" * swagger_ui_config?: array, * redocly_config?: array, * stoplight_config?: array, * }, * areas?: array, - * host_patterns?: list, - * name_patterns?: list, - * with_annotation?: bool, // Deprecated: The "with_annotation" option is deprecated. Use "with_attribute" instead. // whether to filter by annotation // Default: false - * with_attribute?: bool, // whether to filter by attribute // Default: false - * disable_default_routes?: bool, // if set disables default routes without annotations // Default: false + * path_patterns?: list, + * host_patterns?: list, + * name_patterns?: list, + * with_annotation?: bool|Param, // Deprecated: The "with_annotation" option is deprecated. Use "with_attribute" instead. // whether to filter by annotation // Default: false + * with_attribute?: bool|Param, // whether to filter by attribute // Default: false + * disable_default_routes?: bool|Param, // if set disables default routes without annotations // Default: false * documentation?: array, * cache?: array{ - * pool?: scalar|null, // define cache pool to use // Default: null - * item_id?: scalar|null, // define cache item id // Default: null + * pool?: scalar|Param|null, // define cache pool to use // Default: null + * item_id?: scalar|Param|null, // define cache item id // Default: null * }, * }>, * models?: array{ - * use_jms?: bool, // Default: false + * use_jms?: bool|Param, // Default: false * names?: list, - * areas?: list, + * areas?: list, * }>, * }, * } * @psalm-type LexikJwtAuthenticationConfig = array{ - * public_key?: scalar|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|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|null, // The key passphrase (useless for HMAC) // Default: "" - * token_ttl?: scalar|null, // Default: 3600 - * allow_no_expiration?: bool, // 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|null, // Default: 0 + * 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|null, // Default: "lexik_jwt_authentication.encoder.lcobucci" - * signature_algorithm?: scalar|null, // Default: "RS256" + * service?: scalar|Param|null, // Default: "lexik_jwt_authentication.encoder.lcobucci" + * signature_algorithm?: scalar|Param|null, // Default: "RS256" * }, - * user_id_claim?: scalar|null, // Default: "username" + * user_id_claim?: scalar|Param|null, // Default: "username" * token_extractors?: array{ * authorization_header?: bool|array{ - * enabled?: bool, // Default: true - * prefix?: scalar|null, // Default: "Bearer" - * name?: scalar|null, // Default: "Authorization" + * enabled?: bool|Param, // Default: true + * prefix?: scalar|Param|null, // Default: "Bearer" + * name?: scalar|Param|null, // Default: "Authorization" * }, * cookie?: bool|array{ - * enabled?: bool, // Default: false - * name?: scalar|null, // Default: "BEARER" + * enabled?: bool|Param, // Default: false + * name?: scalar|Param|null, // Default: "BEARER" * }, * query_parameter?: bool|array{ - * enabled?: bool, // Default: false - * name?: scalar|null, // Default: "bearer" + * enabled?: bool|Param, // Default: false + * name?: scalar|Param|null, // Default: "bearer" * }, * split_cookie?: bool|array{ - * enabled?: bool, // Default: false - * cookies?: list, + * enabled?: bool|Param, // Default: false + * cookies?: list, * }, * }, - * remove_token_from_body_when_cookies_used?: scalar|null, // Default: true + * remove_token_from_body_when_cookies_used?: scalar|Param|null, // Default: true * set_cookies?: array, + * lifetime?: scalar|Param|null, // The cookie lifetime. If null, the "token_ttl" option value will be used // Default: null + * samesite?: "none"|"lax"|"strict"|Param, // Default: "lax" + * path?: scalar|Param|null, // Default: "/" + * domain?: scalar|Param|null, // Default: null + * secure?: scalar|Param|null, // Default: true + * httpOnly?: scalar|Param|null, // Default: true + * partitioned?: scalar|Param|null, // Default: false + * split?: list, * }>, * api_platform?: bool|array{ // API Platform compatibility: add check_path in OpenAPI documentation. - * enabled?: bool, // Default: false - * check_path?: scalar|null, // The login check path to add in OpenAPI. // Default: null - * username_path?: scalar|null, // The path to the username in the JSON body. // Default: null - * password_path?: scalar|null, // The path to the password in the JSON body. // Default: null + * 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, // Default: false + * enabled?: bool|Param, // Default: false * signature?: array{ - * algorithm: scalar|null, // The algorithm use to sign the access tokens. - * key: scalar|null, // The signature key. It shall be JWK encoded. + * 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, // Default: false - * key_encryption_algorithm: scalar|null, // The key encryption algorithm is used to encrypt the token. - * content_encryption_algorithm: scalar|null, // The key encryption algorithm is used to encrypt the token. - * key: scalar|null, // The encryption key. It shall be JWK encoded. + * 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, // Default: false + * enabled?: bool|Param, // Default: false * signature?: array{ - * header_checkers?: list, - * claim_checkers?: list, - * mandatory_claims?: list, - * allowed_algorithms?: list, - * keyset: scalar|null, // The signature keyset. It shall be JWKSet encoded. + * 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, // Default: false - * continue_on_decryption_failure?: bool, // 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|null, // The encryption keyset. It shall be JWKSet encoded. + * 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, // Default: false - * cache?: scalar|null, // Storage to track blocked tokens // Default: "cache.app" + * enabled?: bool|Param, // Default: false + * cache?: scalar|Param|null, // Storage to track blocked tokens // Default: "cache.app" * }, * } * @psalm-type GesdinetJwtRefreshTokenConfig = array{ - * ttl?: int, // The default TTL for all authenticators. // Default: 2592000 - * ttl_update?: bool, // The default update TTL flag for all authenticators. // Default: false - * firewall?: scalar|null, // Deprecated: The "firewall" node is deprecated without replacement. // Default: "api" - * user_provider?: scalar|null, // Deprecated: The "user_provider" node is deprecated without replacement. // Default: null - * user_identity_field?: scalar|null, // Deprecated: The "user_identity_field" node is deprecated without replacement. // Default: "username" - * manager_type?: scalar|null, // Set the type of object manager to use (default: orm) // Default: "orm" - * refresh_token_class?: scalar|null, // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null - * object_manager?: scalar|null, // Set the object manager to use (default: doctrine.orm.entity_manager) // Default: null - * user_checker?: scalar|null, // Deprecated: The "user_checker" node is deprecated without replacement. // Default: "security.user_checker" - * refresh_token_entity?: scalar|null, // Deprecated: The "refresh_token_entity" node is deprecated, use the "refresh_token_class" node instead. // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null - * entity_manager?: scalar|null, // Deprecated: The "entity_manager" node is deprecated, use the "object_manager" node instead. // Set the entity manager to use // Default: null - * single_use?: scalar|null, // When true, generate a new refresh token on consumption (deleting the old one) // Default: false - * token_parameter_name?: scalar|null, // The default request parameter name containing the refresh token for all authenticators. // Default: "refresh_token" - * doctrine_mappings?: bool, // Deprecated: The "doctrine_mappings" node is deprecated without replacement. // When true, resolving of Doctrine mapping is done automatically to use either ORM or ODM object manager // Default: true + * ttl?: int|Param, // The default TTL for all authenticators. // Default: 2592000 + * ttl_update?: bool|Param, // The default update TTL flag for all authenticators. // Default: false + * firewall?: scalar|Param|null, // Deprecated: The "firewall" node is deprecated without replacement. // Default: "api" + * user_provider?: scalar|Param|null, // Deprecated: The "user_provider" node is deprecated without replacement. // Default: null + * user_identity_field?: scalar|Param|null, // Deprecated: The "user_identity_field" node is deprecated without replacement. // Default: "username" + * manager_type?: scalar|Param|null, // Set the type of object manager to use (default: orm) // Default: "orm" + * refresh_token_class?: scalar|Param|null, // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null + * object_manager?: scalar|Param|null, // Set the object manager to use (default: doctrine.orm.entity_manager) // Default: null + * user_checker?: scalar|Param|null, // Deprecated: The "user_checker" node is deprecated without replacement. // Default: "security.user_checker" + * refresh_token_entity?: scalar|Param|null, // Deprecated: The "refresh_token_entity" node is deprecated, use the "refresh_token_class" node instead. // Set the refresh token class to use (default: Gesdinet\JWTRefreshTokenBundle\Entity\RefreshToken) // Default: null + * entity_manager?: scalar|Param|null, // Deprecated: The "entity_manager" node is deprecated, use the "object_manager" node instead. // Set the entity manager to use // Default: null + * single_use?: scalar|Param|null, // When true, generate a new refresh token on consumption (deleting the old one) // Default: false + * token_parameter_name?: scalar|Param|null, // The default request parameter name containing the refresh token for all authenticators. // Default: "refresh_token" + * doctrine_mappings?: bool|Param, // Deprecated: The "doctrine_mappings" node is deprecated without replacement. // When true, resolving of Doctrine mapping is done automatically to use either ORM or ODM object manager // Default: true * cookie?: bool|array{ - * enabled?: bool, // Default: false - * same_site?: "none"|"lax"|"strict", // Default: "lax" - * path?: scalar|null, // Default: "/" - * domain?: scalar|null, // Default: null - * http_only?: scalar|null, // Default: true - * secure?: scalar|null, // Default: true - * partitioned?: scalar|null, // Default: false - * remove_token_from_body?: scalar|null, // Default: true + * enabled?: bool|Param, // Default: false + * same_site?: "none"|"lax"|"strict"|Param, // Default: "lax" + * path?: scalar|Param|null, // Default: "/" + * domain?: scalar|Param|null, // Default: null + * http_only?: scalar|Param|null, // Default: true + * secure?: scalar|Param|null, // Default: true + * partitioned?: scalar|Param|null, // Default: false + * remove_token_from_body?: scalar|Param|null, // Default: true * }, - * logout_firewall?: scalar|null, // Name of the firewall that triggers the logout event to hook into (default: api) // Default: "api" - * return_expiration?: scalar|null, // When true, the response will include the token expiration timestamp // Default: false - * return_expiration_parameter_name?: scalar|null, // The default response parameter name containing the refresh token expiration timestamp // Default: "refresh_token_expiration" + * logout_firewall?: scalar|Param|null, // Name of the firewall that triggers the logout event to hook into (default: api) // Default: "api" + * return_expiration?: scalar|Param|null, // When true, the response will include the token expiration timestamp // Default: false + * return_expiration_parameter_name?: scalar|Param|null, // The default response parameter name containing the refresh token expiration timestamp // Default: "refresh_token_expiration" * } * @psalm-type NelmioAliceConfig = array{ - * locale?: scalar|null, // Default locale for the Faker Generator // Default: "en_US" - * seed?: scalar|null, // Value used make sure Faker generates data consistently across runs, set to null to disable. // Default: 1 - * functions_blacklist?: list, - * loading_limit?: int, // Alice may do some recursion to resolve certain values. This parameter defines a limit which will stop the resolution once reached. // Default: 5 - * max_unique_values_retry?: int, // Maximum number of time Alice can try to generate a unique value before stopping and failing. // Default: 150 + * locale?: scalar|Param|null, // Default locale for the Faker Generator // Default: "en_US" + * seed?: scalar|Param|null, // Value used make sure Faker generates data consistently across runs, set to null to disable. // Default: 1 + * functions_blacklist?: list, + * loading_limit?: int|Param, // Alice may do some recursion to resolve certain values. This parameter defines a limit which will stop the resolution once reached. // Default: 5 + * max_unique_values_retry?: int|Param, // Maximum number of time Alice can try to generate a unique value before stopping and failing. // Default: 150 * } * @psalm-type FidryAliceDataFixturesConfig = array{ - * default_purge_mode?: scalar|null, // Default: "delete" + * default_purge_mode?: scalar|Param|null, // Default: "delete" * db_drivers?: array{ // The list of enabled drivers. - * doctrine_orm?: bool|null, // Default: null - * doctrine_mongodb_odm?: bool|null, // Default: null - * doctrine_phpcr_odm?: bool|null, // Default: null - * eloquent_orm?: bool|null, // Default: null + * doctrine_orm?: bool|Param|null, // Default: null + * doctrine_mongodb_odm?: bool|Param|null, // Default: null + * doctrine_phpcr_odm?: bool|Param|null, // Default: null + * eloquent_orm?: bool|Param|null, // Default: null * }, * } * @psalm-type HautelookAliceConfig = array{ - * fixtures_path?: list, - * root_dirs?: list, + * fixtures_path?: list, + * root_dirs?: list, * } * @psalm-type GregwarCaptchaConfig = array{ - * length?: scalar|null, // Default: 5 - * width?: scalar|null, // Default: 130 - * height?: scalar|null, // Default: 50 - * font?: scalar|null, // Default: "/data/www/new/vendor/gregwar/captcha-bundle/DependencyInjection/../Generator/Font/captcha.ttf" - * keep_value?: scalar|null, // Default: false - * charset?: scalar|null, // Default: "abcdefhjkmnprstuvwxyz23456789" - * as_file?: scalar|null, // Default: false - * as_url?: scalar|null, // Default: false - * reload?: scalar|null, // Default: false - * image_folder?: scalar|null, // Default: "captcha" - * web_path?: scalar|null, // Default: "%kernel.project_dir%/public" - * gc_freq?: scalar|null, // Default: 100 - * expiration?: scalar|null, // Default: 60 - * quality?: scalar|null, // Default: 50 - * invalid_message?: scalar|null, // Default: "Bad code value" - * bypass_code?: scalar|null, // Default: null - * whitelist_key?: scalar|null, // Default: "captcha_whitelist_key" - * humanity?: scalar|null, // Default: 0 - * distortion?: scalar|null, // Default: true - * max_front_lines?: scalar|null, // Default: null - * max_behind_lines?: scalar|null, // Default: null - * interpolation?: scalar|null, // Default: true - * text_color?: list, - * background_color?: list, - * background_images?: list, - * disabled?: scalar|null, // Default: false - * ignore_all_effects?: scalar|null, // Default: false - * session_key?: scalar|null, // Default: "captcha" + * length?: scalar|Param|null, // Default: 5 + * width?: scalar|Param|null, // Default: 130 + * height?: scalar|Param|null, // Default: 50 + * font?: scalar|Param|null, // Default: "/data/www/new/vendor/gregwar/captcha-bundle/DependencyInjection/../Generator/Font/captcha.ttf" + * keep_value?: scalar|Param|null, // Default: false + * charset?: scalar|Param|null, // Default: "abcdefhjkmnprstuvwxyz23456789" + * as_file?: scalar|Param|null, // Default: false + * as_url?: scalar|Param|null, // Default: false + * reload?: scalar|Param|null, // Default: false + * image_folder?: scalar|Param|null, // Default: "captcha" + * web_path?: scalar|Param|null, // Default: "%kernel.project_dir%/public" + * gc_freq?: scalar|Param|null, // Default: 100 + * expiration?: scalar|Param|null, // Default: 60 + * quality?: scalar|Param|null, // Default: 50 + * invalid_message?: scalar|Param|null, // Default: "Bad code value" + * bypass_code?: scalar|Param|null, // Default: null + * whitelist_key?: scalar|Param|null, // Default: "captcha_whitelist_key" + * humanity?: scalar|Param|null, // Default: 0 + * distortion?: scalar|Param|null, // Default: true + * max_front_lines?: scalar|Param|null, // Default: null + * max_behind_lines?: scalar|Param|null, // Default: null + * interpolation?: scalar|Param|null, // Default: true + * text_color?: list, + * background_color?: list, + * background_images?: list, + * disabled?: scalar|Param|null, // Default: false + * ignore_all_effects?: scalar|Param|null, // Default: false + * session_key?: scalar|Param|null, // Default: "captcha" * } * @psalm-type TwigComponentConfig = array{ * defaults?: array, - * anonymous_template_directory?: scalar|null, // Defaults to `components` - * profiler?: bool, // Enables the profiler for Twig Component (in debug mode) // Default: "%kernel.debug%" - * controllers_json?: scalar|null, // Deprecated: The "twig_component.controllers_json" config option is deprecated, and will be removed in 3.0. // Default: null + * 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|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" + * secret?: scalar|Param|null, // The secret used to compute fingerprints and checksums // Default: "%kernel.secret%" * } * @psalm-type StimulusConfig = array{ - * controller_paths?: list, - * controllers_json?: scalar|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * controller_paths?: list, + * controllers_json?: scalar|Param|null, // Default: "%kernel.project_dir%/assets/controllers.json" * } * @psalm-type SymfonycastsTailwindConfig = array{ - * input_css?: list, - * config_file?: scalar|null, // Path to the tailwind.config.js file // Default: "%kernel.project_dir%/tailwind.config.js" - * binary?: scalar|null, // The tailwind binary to use instead of downloading a new one // Default: null - * binary_version?: scalar|null, // Tailwind CLI version to download - null means the latest version // Default: "v3.4.17" - * postcss_config_file?: scalar|null, // Path to PostCSS config file which is passed to the Tailwind CLI // Default: null + * input_css?: list, + * config_file?: scalar|Param|null, // Path to the tailwind.config.js file // Default: "%kernel.project_dir%/tailwind.config.js" + * binary?: scalar|Param|null, // The tailwind binary to use instead of downloading a new one // Default: null + * binary_version?: scalar|Param|null, // Tailwind CLI version to download - null means the latest version // Default: "v3.4.17" + * postcss_config_file?: scalar|Param|null, // Path to PostCSS config file which is passed to the Tailwind CLI // Default: null * } * @psalm-type SymfonycastsSassConfig = array{ - * root_sass?: list, - * binary?: scalar|null, // The Sass binary to use // Default: null + * root_sass?: list, + * binary?: scalar|Param|null, // The Sass binary to use // Default: null * sass_options?: array{ - * style?: "compressed"|"expanded", // The style of the generated CSS: compressed or expanded. // Default: "expanded" - * charset?: bool, // Whether to include the charset declaration in the generated Sass. - * error_css?: bool, // Emit a CSS file when an error occurs. - * source_map?: bool, // Whether to generate source maps. // Default: true - * embed_sources?: bool, // Embed source file contents in source maps. - * embed_source_map?: bool, // Embed source map contents in CSS. // Default: "%kernel.debug%" - * load_path?: list, - * quiet?: bool, // Don't print warnings. - * quiet_deps?: bool, // Don't print compiler warnings from dependencies. - * stop_on_error?: bool, // Don't compile more files once an error is encountered. - * trace?: bool, // Print full Dart stack traces for exceptions. + * style?: "compressed"|"expanded"|Param, // The style of the generated CSS: compressed or expanded. // Default: "expanded" + * charset?: bool|Param, // Whether to include the charset declaration in the generated Sass. + * error_css?: bool|Param, // Emit a CSS file when an error occurs. + * source_map?: bool|Param, // Whether to generate source maps. // Default: true + * embed_sources?: bool|Param, // Embed source file contents in source maps. + * embed_source_map?: bool|Param, // Embed source map contents in CSS. // Default: "%kernel.debug%" + * load_path?: list, + * quiet?: bool|Param, // Don't print warnings. + * quiet_deps?: bool|Param, // Don't print compiler warnings from dependencies. + * stop_on_error?: bool|Param, // Don't compile more files once an error is encountered. + * trace?: bool|Param, // Print full Dart stack traces for exceptions. * }, - * embed_sourcemap?: bool|null, // Deprecated: Option "embed_sourcemap" at "symfonycasts_sass.embed_sourcemap" is deprecated. Use "sass_options.embed_source_map" instead". // Default: null + * embed_sourcemap?: bool|Param|null, // Deprecated: Option "embed_sourcemap" at "symfonycasts_sass.embed_sourcemap" is deprecated. Use "sass_options.embed_source_map" instead". // Default: null * } * @psalm-type VueConfig = array{ - * controllers_path?: scalar|null, // The path to the directory where Vue controller components are stored - relevant only when using symfony/asset-mapper. // Default: "%kernel.project_dir%/assets/vue/controllers" - * name_glob?: list, + * controllers_path?: scalar|Param|null, // The path to the directory where Vue controller components are stored - relevant only when using symfony/asset-mapper. // Default: "%kernel.project_dir%/assets/vue/controllers" + * name_glob?: list, * } * @psalm-type SpiriitFormFilterConfig = array{ * listeners?: array{ - * doctrine_orm?: bool, // Default: true + * doctrine_orm?: bool|Param, // Default: true * }, - * where_method?: scalar|null, // Defined the doctrine query builder method the bundle will use to add the entire filter condition. // Default: "and" - * condition_pattern?: scalar|null, // Default condition pattern for TextFilterType // Default: "text.starts" - * force_case_insensitivity?: bool, // Whether to do case insensitive LIKE comparisons. // Default: false - * encoding?: scalar|null, // Encoding for case insensitive LIKE comparisons. // Default: null + * where_method?: scalar|Param|null, // Defined the doctrine query builder method the bundle will use to add the entire filter condition. // Default: "and" + * condition_pattern?: scalar|Param|null, // Default condition pattern for TextFilterType // Default: "text.starts" + * force_case_insensitivity?: bool|Param, // Whether to do case insensitive LIKE comparisons. // Default: false + * encoding?: scalar|Param|null, // Encoding for case insensitive LIKE comparisons. // Default: null + * } + * @psalm-type AiConfig = array{ + * platform?: array{ + * albert?: array{ + * api_key?: string|Param, + * base_url?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * amazeeai?: array{ + * base_url?: string|Param, + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * anthropic?: array{ + * api_key?: string|Param, + * version?: string|Param, // Default: null + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * azure?: array, + * bedrock?: array, + * cache?: array, + * cartesia?: array{ + * api_key?: string|Param, + * version?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * cerebras?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * decart?: array{ + * api_key?: string|Param, + * host?: string|Param, // Default: "https://api.decart.ai/v1" + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * deepseek?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * dockermodelrunner?: array{ + * host_url?: string|Param, // Default: "http://127.0.0.1:12434" + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * elevenlabs?: array{ + * api_key?: string|Param, + * endpoint?: string|Param, // Default: "https://api.elevenlabs.io/v1/" + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * api_catalog?: bool|Param, // If set, the ElevenLabs API will be used to build the catalog and retrieve models information, using this option leads to additional HTTP calls + * }, + * failover?: array, + * rate_limiter?: string|Param, + * }>, + * gemini?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * generic?: array, + * huggingface?: array{ + * api_key?: string|Param, + * provider?: string|Param, // Default: "hf-inference" + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * lmstudio?: array{ + * host_url?: string|Param, // Default: "http://127.0.0.1:1234" + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * mistral?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * ollama?: array{ + * endpoint?: string|Param, // Endpoint for Ollama (e.g. "http://127.0.0.1:11434" for local, or a cloud endpoint). If null, the http_client is used as-is and must already be configured with a base URI. // Default: null + * api_key?: string|Param, // API key for Ollama Cloud authentication (optional for local usage) // Default: null + * http_client?: string|Param, // Service ID of the HTTP client to use. When "endpoint" is null, this client must be pre-configured (e.g. with a base_uri). // Default: "http_client" + * api_catalog?: bool|Param, // If set, the Ollama API will be used to build the catalog and retrieve models information, using this option leads to additional HTTP calls + * }, + * openai?: array{ + * api_key?: string|Param, + * region?: scalar|Param|null, // The region for OpenAI API (EU, US, or null for default) // Default: null + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * openrouter?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * ovh?: array{ + * api_key?: scalar|Param|null, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * perplexity?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * scaleway?: array{ + * api_key?: scalar|Param|null, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * transformersphp?: array, + * vertexai?: array{ + * location?: string|Param, + * project_id?: string|Param, + * api_key?: string|Param, // Default: null + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * voyage?: array{ + * api_key?: string|Param, + * http_client?: string|Param, // Service ID of the HTTP client to use // Default: "http_client" + * }, + * }, + * model?: array|\Symfony\AI\Platform\Capability|Param>, + * }>>, + * agent?: array, + * }, + * keep_tool_messages?: bool|Param, // Keep tool messages in the conversation history // Default: false + * include_sources?: bool|Param, // Include sources exposed by tools as part of the tool result metadata // Default: false + * fault_tolerant_toolbox?: bool|Param, // Continue the agent run even if a tool call fails // Default: true + * }>, + * multi_agent?: array>, + * fallback?: string|Param, // Service ID of the fallback agent for unmatched requests + * }>, + * store?: array{ + * azuresearch?: array, + * cache?: array, + * chromadb?: array, + * clickhouse?: array, + * cloudflare?: array, + * elasticsearch?: array, + * manticoresearch?: array, + * mariadb?: array, + * meilisearch?: array, + * memory?: array, + * milvus?: array, + * mongodb?: array, + * neo4j?: array, + * opensearch?: array, + * pinecone?: array, + * top_k?: int|Param, + * }>, + * postgres?: array, + * qdrant?: array, + * redis?: array, + * supabase?: array, + * surrealdb?: array, + * typesense?: array, + * weaviate?: array, + * }, + * message_store?: array{ + * cache?: array, + * cloudflare?: array, + * doctrine?: array{ + * dbal?: array, + * }, + * meilisearch?: array, + * memory?: array, + * mongodb?: array, + * pogocache?: array, + * redis?: array, + * session?: array, + * surrealdb?: array, + * }, + * chat?: array, + * vectorizer?: array, + * indexer?: array, + * filters?: list, + * vectorizer?: scalar|Param|null, // Service name of vectorizer // Default: "Symfony\\AI\\Store\\Document\\VectorizerInterface" + * store?: string|Param, // Service name of store // Default: "Symfony\\AI\\Store\\StoreInterface" + * }>, + * retriever?: array, * } * @psalm-type ConfigType = array{ * imports?: ImportsConfig, @@ -2554,33 +2949,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, - * psc_system_plugin?: PscSystemPluginConfig, - * psc_system_update?: PscSystemUpdateConfig, - * psc_shop_theme?: PscShopThemeConfig, - * psc_libraries_ace_editor?: PscLibrariesAceEditorConfig, - * psc_entity?: PscEntityConfig, - * psc_shop_user?: PscShopUserConfig, - * psc_shop_create?: PscShopCreateConfig, - * psc_backend_dashboard?: PscBackendDashboardConfig, - * psc_shop_settings?: PscShopSettingsConfig, - * psc_system_settings?: PscSystemSettingsConfig, - * psc_backend_tools?: PscBackendToolsConfig, - * psc_shop_order?: PscShopOrderConfig, - * psc_shop_contact?: PscShopContactConfig, * psc_shop_media?: PscShopMediaConfig, - * psc_shop_account?: PscShopAccountConfig, - * psc_shop_voucher?: PscShopVoucherConfig, - * psc_shop_news?: PscShopNewsConfig, - * psc_shop_product?: PscShopProductConfig, - * psc_shop_shipping?: PscShopShippingConfig, - * psc_shop_cms?: PscShopCmsConfig, - * psc_shop_queue?: PscShopQueueConfig, - * psc_shop_basket?: PscShopBasketConfig, - * psc_shop_payment?: PscShopPaymentConfig, - * psc_backend_domain?: PscBackendDomainConfig, - * psc_component_steplayouter?: PscComponentSteplayouterConfig, - * psc_component_api?: PscComponentApiConfig, - * psc_component_configurationlayouter?: PscComponentConfigurationlayouterConfig, * nelmio_cors?: NelmioCorsConfig, * nelmio_api_doc?: NelmioApiDocConfig, * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, @@ -2593,6 +2962,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * symfonycasts_sass?: SymfonycastsSassConfig, * vue?: VueConfig, * spiriit_form_filter?: SpiriitFormFilterConfig, + * ai?: AiConfig, * "when@dev"?: array{ * imports?: ImportsConfig, * parameters?: ParametersConfig, @@ -2612,33 +2982,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, * debug?: DebugConfig, - * psc_system_plugin?: PscSystemPluginConfig, - * psc_system_update?: PscSystemUpdateConfig, - * psc_shop_theme?: PscShopThemeConfig, - * psc_libraries_ace_editor?: PscLibrariesAceEditorConfig, - * psc_entity?: PscEntityConfig, - * psc_shop_user?: PscShopUserConfig, - * psc_shop_create?: PscShopCreateConfig, - * psc_backend_dashboard?: PscBackendDashboardConfig, - * psc_shop_settings?: PscShopSettingsConfig, - * psc_system_settings?: PscSystemSettingsConfig, - * psc_backend_tools?: PscBackendToolsConfig, - * psc_shop_order?: PscShopOrderConfig, - * psc_shop_contact?: PscShopContactConfig, * psc_shop_media?: PscShopMediaConfig, - * psc_shop_account?: PscShopAccountConfig, - * psc_shop_voucher?: PscShopVoucherConfig, - * psc_shop_news?: PscShopNewsConfig, - * psc_shop_product?: PscShopProductConfig, - * psc_shop_shipping?: PscShopShippingConfig, - * psc_shop_cms?: PscShopCmsConfig, - * psc_shop_queue?: PscShopQueueConfig, - * psc_shop_basket?: PscShopBasketConfig, - * psc_shop_payment?: PscShopPaymentConfig, - * psc_backend_domain?: PscBackendDomainConfig, - * psc_component_steplayouter?: PscComponentSteplayouterConfig, - * psc_component_api?: PscComponentApiConfig, - * psc_component_configurationlayouter?: PscComponentConfigurationlayouterConfig, * nelmio_cors?: NelmioCorsConfig, * nelmio_api_doc?: NelmioApiDocConfig, * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, @@ -2654,6 +2998,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * symfonycasts_sass?: SymfonycastsSassConfig, * vue?: VueConfig, * spiriit_form_filter?: SpiriitFormFilterConfig, + * ai?: AiConfig, * }, * "when@prod"?: array{ * imports?: ImportsConfig, @@ -2672,33 +3017,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * twig_extra?: TwigExtraConfig, * security?: SecurityConfig, * monolog?: MonologConfig, - * psc_system_plugin?: PscSystemPluginConfig, - * psc_system_update?: PscSystemUpdateConfig, - * psc_shop_theme?: PscShopThemeConfig, - * psc_libraries_ace_editor?: PscLibrariesAceEditorConfig, - * psc_entity?: PscEntityConfig, - * psc_shop_user?: PscShopUserConfig, - * psc_shop_create?: PscShopCreateConfig, - * psc_backend_dashboard?: PscBackendDashboardConfig, - * psc_shop_settings?: PscShopSettingsConfig, - * psc_system_settings?: PscSystemSettingsConfig, - * psc_backend_tools?: PscBackendToolsConfig, - * psc_shop_order?: PscShopOrderConfig, - * psc_shop_contact?: PscShopContactConfig, * psc_shop_media?: PscShopMediaConfig, - * psc_shop_account?: PscShopAccountConfig, - * psc_shop_voucher?: PscShopVoucherConfig, - * psc_shop_news?: PscShopNewsConfig, - * psc_shop_product?: PscShopProductConfig, - * psc_shop_shipping?: PscShopShippingConfig, - * psc_shop_cms?: PscShopCmsConfig, - * psc_shop_queue?: PscShopQueueConfig, - * psc_shop_basket?: PscShopBasketConfig, - * psc_shop_payment?: PscShopPaymentConfig, - * psc_backend_domain?: PscBackendDomainConfig, - * psc_component_steplayouter?: PscComponentSteplayouterConfig, - * psc_component_api?: PscComponentApiConfig, - * psc_component_configurationlayouter?: PscComponentConfigurationlayouterConfig, * nelmio_cors?: NelmioCorsConfig, * nelmio_api_doc?: NelmioApiDocConfig, * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, @@ -2711,6 +3030,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * symfonycasts_sass?: SymfonycastsSassConfig, * vue?: VueConfig, * spiriit_form_filter?: SpiriitFormFilterConfig, + * ai?: AiConfig, * }, * "when@test"?: array{ * imports?: ImportsConfig, @@ -2731,33 +3051,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * web_profiler?: WebProfilerConfig, * monolog?: MonologConfig, * debug?: DebugConfig, - * psc_system_plugin?: PscSystemPluginConfig, - * psc_system_update?: PscSystemUpdateConfig, - * psc_shop_theme?: PscShopThemeConfig, - * psc_libraries_ace_editor?: PscLibrariesAceEditorConfig, - * psc_entity?: PscEntityConfig, - * psc_shop_user?: PscShopUserConfig, - * psc_shop_create?: PscShopCreateConfig, - * psc_backend_dashboard?: PscBackendDashboardConfig, - * psc_shop_settings?: PscShopSettingsConfig, - * psc_system_settings?: PscSystemSettingsConfig, - * psc_backend_tools?: PscBackendToolsConfig, - * psc_shop_order?: PscShopOrderConfig, - * psc_shop_contact?: PscShopContactConfig, * psc_shop_media?: PscShopMediaConfig, - * psc_shop_account?: PscShopAccountConfig, - * psc_shop_voucher?: PscShopVoucherConfig, - * psc_shop_news?: PscShopNewsConfig, - * psc_shop_product?: PscShopProductConfig, - * psc_shop_shipping?: PscShopShippingConfig, - * psc_shop_cms?: PscShopCmsConfig, - * psc_shop_queue?: PscShopQueueConfig, - * psc_shop_basket?: PscShopBasketConfig, - * psc_shop_payment?: PscShopPaymentConfig, - * psc_backend_domain?: PscBackendDomainConfig, - * psc_component_steplayouter?: PscComponentSteplayouterConfig, - * psc_component_api?: PscComponentApiConfig, - * psc_component_configurationlayouter?: PscComponentConfigurationlayouterConfig, * nelmio_cors?: NelmioCorsConfig, * nelmio_api_doc?: NelmioApiDocConfig, * lexik_jwt_authentication?: LexikJwtAuthenticationConfig, @@ -2773,6 +3067,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; * symfonycasts_sass?: SymfonycastsSassConfig, * vue?: VueConfig, * spiriit_form_filter?: SpiriitFormFilterConfig, + * ai?: AiConfig, * }, * ...import('@PSCComponentApiBundle/Resources/config/routing.yml'); + $routingConfigurator->import('@PSCComponentAiBundle/Resources/config/routing.yml'); + $routingConfigurator->import('@PSCBackendDashboardBundle/Resources/config/routing.yml'); $routingConfigurator->import('@PSCBackendDomainBundle/Resources/config/routing.yml'); diff --git a/src/new/src/PSC/Backend/DashboardBundle/Resources/views/dashboard/index.html.twig b/src/new/src/PSC/Backend/DashboardBundle/Resources/views/dashboard/index.html.twig index 366dd26c6..14ff99678 100755 --- a/src/new/src/PSC/Backend/DashboardBundle/Resources/views/dashboard/index.html.twig +++ b/src/new/src/PSC/Backend/DashboardBundle/Resources/views/dashboard/index.html.twig @@ -136,6 +136,122 @@ + {% if instance.aiProvider %} +
{ + const el = this.$refs.messages; + el.scrollTop = el.scrollHeight; + }); + try { + const res = await fetch(this.chatUrl, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ message: userMsg, history: this.history.slice(0, -1) }) + }); + const data = await res.json(); + if (data.error) { + this.error = data.error; + this.history.pop(); + } else { + this.history.push({ role: 'assistant', content: data.reply }); + } + } catch (e) { + this.error = 'Verbindungsfehler: ' + e.message; + this.history.pop(); + } finally { + this.loading = false; + this.$nextTick(() => { + const el = this.$refs.messages; + el.scrollTop = el.scrollHeight; + }); + } + } + }"> +
+
+
+

+ + + + KI Assistent + ({{ instance.aiProvider }}{% if instance.aiModel %} · {{ instance.aiModel }}{% endif %}) +

+
+ +
+ + {# Message history #} +
+ + + +
+ + {# Error #} + + + {# Input #} +
+
+ + +
+
+
+
+ {% endif %} + {% endif %} {% endblock %} diff --git a/src/new/src/PSC/Component/AiBundle/Controller/AiChatController.php b/src/new/src/PSC/Component/AiBundle/Controller/AiChatController.php new file mode 100644 index 000000000..bbfc3b738 --- /dev/null +++ b/src/new/src/PSC/Component/AiBundle/Controller/AiChatController.php @@ -0,0 +1,34 @@ +getContent(), true); + $message = trim($data['message'] ?? ''); + $history = $data['history'] ?? []; + + if (empty($message)) { + return new JsonResponse(['error' => 'Nachricht ist leer'], Response::HTTP_BAD_REQUEST); + } + + try { + $reply = $agentService->chat($message, $history); + return new JsonResponse(['reply' => $reply]); + } catch (\Exception $e) { + return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_INTERNAL_SERVER_ERROR); + } + } +} diff --git a/src/new/src/PSC/Component/AiBundle/DependencyInjection/Configuration.php b/src/new/src/PSC/Component/AiBundle/DependencyInjection/Configuration.php new file mode 100644 index 000000000..eabae4568 --- /dev/null +++ b/src/new/src/PSC/Component/AiBundle/DependencyInjection/Configuration.php @@ -0,0 +1,15 @@ +processConfiguration($configuration, $configs); + $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); + $loader->load('services.yml'); + } +} diff --git a/src/new/src/PSC/Component/AiBundle/PSCComponentAiBundle.php b/src/new/src/PSC/Component/AiBundle/PSCComponentAiBundle.php new file mode 100644 index 000000000..35964e2ed --- /dev/null +++ b/src/new/src/PSC/Component/AiBundle/PSCComponentAiBundle.php @@ -0,0 +1,7 @@ +httpClient = $httpClient instanceof EventSourceHttpClient + ? $httpClient + : new EventSourceHttpClient($httpClient); + } + + public function supports(Model $model): bool + { + return $model->supports(Capability::INPUT_MESSAGES) + || $model->supports(Capability::TOOL_CALLING); + } + + /** + * @param array $payload + * @param array $options + */ + public function request(Model $model, array|string $payload, array $options = []): RawResultInterface + { + $headers = ['Content-Type' => 'application/json']; + if ($this->apiKey) { + $headers['Authorization'] = 'Bearer ' . $this->apiKey; + } + + $body = array_merge($payload, ['model' => $model->getName()]); + + // Tools in OpenAI-Format bringen: {type: "function", function: {name, description, parameters}} + if (!empty($options['tools'])) { + $body['tools'] = array_map( + static function (array $tool): array { + // Contract liefert flache Objekte {name, description, parameters} + // OpenAI erwartet {type: "function", function: {...}} + if (!isset($tool['type'])) { + return ['type' => 'function', 'function' => $tool]; + } + return $tool; + }, + $options['tools'] + ); + $body['tool_choice'] = 'auto'; + } + + $this->logger->debug('AI request body', [ + 'url' => rtrim($this->baseUrl, '/') . $this->path, + 'model' => $model->getName(), + 'tools' => array_column($body['tools'] ?? [], 'function'), + 'messages' => count($body['messages'] ?? []), + ]); + + $response = $this->httpClient->request('POST', rtrim($this->baseUrl, '/') . $this->path, [ + 'headers' => $headers, + 'json' => $body, + 'timeout' => 120, + ]); + + return new RawHttpResult($response); + } +} diff --git a/src/new/src/PSC/Component/AiBundle/Platform/Completions/ResultConverter.php b/src/new/src/PSC/Component/AiBundle/Platform/Completions/ResultConverter.php new file mode 100644 index 000000000..a46b4a4bf --- /dev/null +++ b/src/new/src/PSC/Component/AiBundle/Platform/Completions/ResultConverter.php @@ -0,0 +1,89 @@ +supports(Capability::INPUT_MESSAGES) + || $model->supports(Capability::TOOL_CALLING); + } + + /** + * @param array $options + */ + public function convert(RawResultInterface $result, array $options = []): ResultInterface + { + $data = $result->getData(); + + $choice = $data['choices'][0] ?? null; + $this->logger->debug('AI response received', [ + 'finish_reason' => $choice['finish_reason'] ?? null, + 'has_tool_calls' => !empty($choice['message']['tool_calls']), + 'content_preview' => substr((string) ($choice['message']['content'] ?? ''), 0, 150), + ]); + if (!$choice) { + return new TextResult(''); + } + + $message = $choice['message'] ?? []; + + // Tool calls zurückgeben wenn vorhanden + if (!empty($message['tool_calls'])) { + $toolCalls = []; + foreach ($message['tool_calls'] as $tc) { + $args = $tc['function']['arguments'] ?? '{}'; + if (is_string($args)) { + $args = json_decode($args, true, flags: \JSON_THROW_ON_ERROR); + } + $toolCalls[] = new ToolCall( + id: $tc['id'], + name: $tc['function']['name'], + arguments: $args, + ); + } + return new ToolCallResult(...$toolCalls); + } + + $content = $message['content'] ?? ''; + + // Manche Modelle (z.B. Ollama mit reasoning) nutzen 'thinking' + 'content' + if (is_array($content)) { + $text = ''; + foreach ($content as $part) { + if (($part['type'] ?? '') === 'text') { + $text .= $part['text']; + } + } + $content = $text; + } + + return new TextResult((string) $content); + } + + public function getTokenUsageExtractor(): ?TokenUsageExtractorInterface + { + return null; + } +} diff --git a/src/new/src/PSC/Component/AiBundle/Platform/PlatformFactory.php b/src/new/src/PSC/Component/AiBundle/Platform/PlatformFactory.php new file mode 100644 index 000000000..4d00c191c --- /dev/null +++ b/src/new/src/PSC/Component/AiBundle/Platform/PlatformFactory.php @@ -0,0 +1,35 @@ + $history + */ + public function chat(string $message, array $history = []): string + { + $instance = $this->instanceService->getInstance(); + $provider = $instance->getAiProvider(); + + if (!$provider) { + throw new \RuntimeException('Kein KI Anbieter konfiguriert.'); + } + + $platform = $this->createPlatform($instance); + $model = $instance->getAiModel() ?: 'llama3.2'; + + $this->logger->info('AI chat request', [ + 'provider' => $provider, + 'model' => $model, + 'message' => $message, + ]); + + $toolbox = new Toolbox( + tools: [ + $this->getOrder, + $this->searchOrders, + $this->changeOrderStatus, + $this->getAvailableOrderStatuses, + ], + logger: $this->logger, + ); + + $agentProcessor = new AgentProcessor($toolbox); + + $systemPrompt = $this->buildSystemPrompt($instance); + $systemPromptProcessor = new SystemPromptInputProcessor($systemPrompt); + + $agent = new Agent( + platform: $platform, + model: $model, + inputProcessors: [$systemPromptProcessor, $agentProcessor], + outputProcessors: [$agentProcessor], + ); + + $messages = new MessageBag(); + foreach ($history as $h) { + if ($h['role'] === 'user') { + $messages->add(Message::ofUser($h['content'])); + } elseif ($h['role'] === 'assistant') { + $messages->add(Message::ofAssistant($h['content'])); + } + } + $messages->add(Message::ofUser($message)); + + $result = $agent->call($messages); + + if ($result instanceof TextResult) { + return $result->getContent(); + } + + return (string) $result; + } + + private function createPlatform($instance): PlatformInterface + { + $provider = $instance->getAiProvider(); + $apiKey = $instance->getAiApiKey(); + $baseUrl = $instance->getAiBaseUrl(); + + $baseUrl = match ($provider) { + 'ollama' => rtrim($baseUrl ?: 'http://localhost:11434', '/'), + 'openai' => 'https://api.openai.com', + 'mistral' => 'https://api.mistral.ai', + 'azure' => rtrim($baseUrl ?: '', '/'), + default => rtrim($baseUrl ?: 'http://localhost:11434', '/'), + }; + return PlatformFactory::create(baseUrl: $baseUrl, apiKey: $apiKey ?: null, httpClient: $this->httpClient, logger: $this->logger); + } + + private function buildSystemPrompt($instance): string + { + $shop = $this->instanceService->getShop(); + + $statusLines = []; + foreach ($this->statusService->getOrderStatuse() as $status) { + $statusLines[] = sprintf(' - Code %d: %s', $status->getCode(), $status->getInternalName()); + } + $statusList = implode("\n", $statusLines); + + return sprintf( + 'Du bist ein KI-Assistent für das PrintshopCreator Backend des Shops "%s". ' + . 'Du hilfst bei der Verwaltung von Aufträgen, Kunden und Produkten. ' + . 'Antworte immer auf Deutsch. ' + . 'Nutze die verfügbaren Tools um Daten abzurufen oder Änderungen vorzunehmen. ' + . 'Fasse alle durchgeführten Aktionen am Ende kurz zusammen. ' + . 'Das heutige Datum ist: %s.' . "\n\n" + . "Verfügbare Auftragsstatus:\n%s\n" + . 'Nutze beim Statuswechsel immer den Code aus dieser Liste, auch wenn der Nutzer den Namen nur ungefähr nennt.', + $shop->getTitle(), + date('d.m.Y'), + $statusList, + ); + } +} diff --git a/src/new/src/PSC/Shop/EntityBundle/Document/Instance.php b/src/new/src/PSC/Shop/EntityBundle/Document/Instance.php index 600c2dbd2..cf1ee4cfd 100755 --- a/src/new/src/PSC/Shop/EntityBundle/Document/Instance.php +++ b/src/new/src/PSC/Shop/EntityBundle/Document/Instance.php @@ -141,6 +141,18 @@ class Instance implements UserInterface #[Field(type: 'bool')] protected $supportlogin; + #[Field(type: 'string')] + protected ?string $aiProvider = null; + + #[Field(type: 'string')] + protected ?string $aiApiKey = null; + + #[Field(type: 'string')] + protected ?string $aiModel = null; + + #[Field(type: 'string')] + protected ?string $aiBaseUrl = null; + /** * @return mixed */ @@ -634,6 +646,18 @@ class Instance implements UserInterface $this->parcelCancelationNumberStart = $parcelCancelationNumberStart; } + public function getAiProvider(): ?string { return $this->aiProvider; } + public function setAiProvider(?string $aiProvider): void { $this->aiProvider = $aiProvider; } + + public function getAiApiKey(): ?string { return $this->aiApiKey; } + public function setAiApiKey(?string $aiApiKey): void { $this->aiApiKey = $aiApiKey; } + + public function getAiModel(): ?string { return $this->aiModel; } + public function setAiModel(?string $aiModel): void { $this->aiModel = $aiModel; } + + public function getAiBaseUrl(): ?string { return $this->aiBaseUrl; } + public function setAiBaseUrl(?string $aiBaseUrl): void { $this->aiBaseUrl = $aiBaseUrl; } + public function getRoles(): array { return ['ROLE_API']; diff --git a/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/ChangeOrderStatus.php b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/ChangeOrderStatus.php new file mode 100644 index 000000000..abc2086b4 --- /dev/null +++ b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/ChangeOrderStatus.php @@ -0,0 +1,72 @@ +entityManager->getRepository(Order::class); + + /** @var Order|null $order */ + $order = $repo->findOneBy(['alias' => $identifier]) + ?? $repo->findOneBy(['uuid' => $identifier]) + ?? $repo->findOneBy(['uid' => $identifier]); + + if (!$order) { + return json_encode(['error' => 'Auftrag nicht gefunden: ' . $identifier]); + } + + $oldStatusName = $this->statusService->getStatusText($order->getStatus(), Status::$InternalName); + $newStatusName = $this->statusService->getStatusText($statusCode, Status::$InternalName); + + if ($newStatusName === 'not found') { + return json_encode(['error' => 'Ungültiger Statuscode: ' . $statusCode . '. Bitte get_available_order_statuses verwenden.']); + } + + $order->setStatus($statusCode); + $this->entityManager->persist($order); + $this->entityManager->flush(); + + // Event auslösen (Queue / Benachrichtigungen) + $event = new StatusChangeEvent(); + $event->setShop($this->shopService->getShopByDomain()->getUID()); + $event->setOrder($order->getUuid()); + $event->setStatus($order->getStatus()); + $this->eventManager->addJob($event); + + return json_encode([ + 'success' => true, + 'alias' => $order->getAlias(), + 'old_status' => $oldStatusName, + 'new_status' => $newStatusName, + ], JSON_UNESCAPED_UNICODE); + } +} diff --git a/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetAvailableOrderStatuses.php b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetAvailableOrderStatuses.php new file mode 100644 index 000000000..240755a0f --- /dev/null +++ b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetAvailableOrderStatuses.php @@ -0,0 +1,36 @@ +statusService->getOrderStatuse(); + + $result = []; + foreach ($statuses as $status) { + $result[] = [ + 'code' => $status->getCode(), + 'name' => $status->getInternalName(), + ]; + } + + return json_encode(['statuses' => $result], JSON_UNESCAPED_UNICODE); + } +} diff --git a/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetOrder.php b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetOrder.php new file mode 100644 index 000000000..afc6c11dc --- /dev/null +++ b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/GetOrder.php @@ -0,0 +1,70 @@ +entityManager->getRepository(Order::class); + + /** @var Order|null $order */ + $order = + $repo->findOneBy(['alias' => $identifier]) ?? $repo->findOneBy([ + 'uuid' => $identifier, + ]) ?? $repo->findOneBy(['uid' => $identifier]); + + if (!$order) { + return json_encode(['error' => 'Auftrag nicht gefunden: ' . $identifier]); + } + + $contact = $order->getContact(); + $statusName = $this->statusService->getStatusText($order->getStatus(), Status::$InternalName); + + $model = $this->orderService->getOrderByUid($order->getUid()); + $positions = []; + foreach ($model->getPositions() as $pos) { + $positions[] = [ + 'product' => $pos->getProduct()->getTitle(), + 'quantity' => $pos->getPrice()->getCount(), + 'price' => $pos->getPrice()->getAllGross(), + ]; + } + + return json_encode([ + 'uid' => $order->getUid(), + 'uuid' => $order->getUuid(), + 'alias' => $order->getAlias(), + 'status_code' => $order->getStatus(), + 'status_name' => $statusName, + 'created' => $order->getCreated()?->format('d.m.Y H:i'), + 'customer_email' => $contact?->getEmail(), + 'customer_name' => trim($contact?->getFirstname() . ' ' . $contact?->getLastname()), + 'company' => $contact?->getCompany(), + 'total_brutto' => $order->getBrutto(), + 'positions' => $positions, + ], JSON_UNESCAPED_UNICODE); + } +} diff --git a/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/SearchOrders.php b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/SearchOrders.php new file mode 100644 index 000000000..2810ebd51 --- /dev/null +++ b/src/new/src/PSC/Shop/OrderBundle/Ai/Tool/SearchOrders.php @@ -0,0 +1,82 @@ +entityManager->getRepository(Order::class); + + $criteria = []; + if ($statusCode !== null) { + $criteria['status'] = $statusCode; + } + + /** @var Order[] $orders */ + $orders = $repo->findBy($criteria, ['created' => 'DESC'], min($limit, 50)); + + // Filtern nach Kundenname/-email wenn angegeben + if ($customer !== null) { + $customerLower = strtolower($customer); + $orders = array_filter($orders, function (Order $order) use ($customerLower) { + $contact = $order->getContact(); + if (!$contact) { + return false; + } + $searchIn = strtolower(implode(' ', [ + $contact->getEmail() ?? '', + $contact->getFirstname() ?? '', + $contact->getLastname() ?? '', + $contact->getCompany() ?? '', + ])); + return str_contains($searchIn, $customerLower); + }); + } + + $result = []; + foreach (array_slice($orders, 0, $limit) as $order) { + $contact = $order->getContact(); + $statusName = $this->statusService->getStatusText($order->getStatus(), Status::$InternalName); + $result[] = [ + 'alias' => $order->getAlias(), + 'uuid' => $order->getUuid(), + 'status_code' => $order->getStatus(), + 'status_name' => $statusName, + 'created' => $order->getCreated()?->format('d.m.Y'), + 'customer_email' => $contact?->getEmail(), + 'customer_name' => trim($contact?->getFirstname() . ' ' . $contact?->getLastname()), + 'total_brutto' => $order->getBrutto(), + ]; + } + + if (empty($result)) { + return json_encode(['message' => 'Keine Aufträge gefunden.'], JSON_UNESCAPED_UNICODE); + } + + return json_encode(['count' => count($result), 'orders' => $result], JSON_UNESCAPED_UNICODE); + } +} diff --git a/src/new/src/PSC/Shop/OrderBundle/Transformer/Order/Position.php b/src/new/src/PSC/Shop/OrderBundle/Transformer/Order/Position.php index fe7c06ad0..3e710b49f 100755 --- a/src/new/src/PSC/Shop/OrderBundle/Transformer/Order/Position.php +++ b/src/new/src/PSC/Shop/OrderBundle/Transformer/Order/Position.php @@ -185,8 +185,6 @@ class Position extends Base $position->setAdditionalInfos($positionDoc->getAdditionalInfos()); } $position->setCustomerInfo((string) $positionDoc->getCustomerInfo()); - var_dump(count($this->uploadObjectTypes)); - var_dump($positionDoc->getUploadMode()); if ($positionDoc->getUploadMode() != '') { } diff --git a/src/new/src/PSC/System/SettingsBundle/Form/Backend/SettingsType.php b/src/new/src/PSC/System/SettingsBundle/Form/Backend/SettingsType.php index 399956fa6..96d6543ef 100755 --- a/src/new/src/PSC/System/SettingsBundle/Form/Backend/SettingsType.php +++ b/src/new/src/PSC/System/SettingsBundle/Form/Backend/SettingsType.php @@ -18,6 +18,7 @@ use PSC\Shop\EntityBundle\Entity\Shop; use PSC\System\PluginBundle\Form\Chain\Field; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\FormType; use Symfony\Component\Form\Extension\Core\Type\NumberType; use Symfony\Component\Form\Extension\Core\Type\PasswordType; @@ -103,7 +104,43 @@ class SettingsType extends AbstractType 'attr' => ['checked' => 'checked', 'readonly' => true], 'label' => 'PSC Support Login erlauben', ]) - ->add('monitoringkey', TextType::class, ['required' => false, 'label' => 'Monitoring Key']); + ->add('monitoringkey', TextType::class, ['required' => false, 'label' => 'Monitoring Key']) + ->add('aiProvider', ChoiceType::class, [ + 'required' => false, + 'label' => 'KI Anbieter', + 'placeholder' => '-- Kein KI Anbieter --', + 'choices' => [ + '🏠 Selbstgehostet' => null, + 'Ollama (lokal)' => 'ollama', + '☁️ Cloud Anbieter' => null, + 'Anthropic (Claude)' => 'anthropic', + 'OpenAI (ChatGPT)' => 'openai', + 'Google (Gemini)' => 'google', + 'Mistral AI' => 'mistral', + 'Azure OpenAI' => 'azure', + 'AWS Bedrock' => 'bedrock', + ], + 'group_by' => function ($choice, $key) { + if (in_array($choice, ['ollama'])) return 'Selbstgehostet'; + if (in_array($choice, ['anthropic', 'openai', 'google', 'mistral', 'azure', 'bedrock'])) return 'Cloud'; + return null; + }, + ]) + ->add('aiApiKey', TextType::class, [ + 'required' => false, + 'label' => 'API Key', + 'attr' => ['autocomplete' => 'off'], + ]) + ->add('aiModel', TextType::class, [ + 'required' => false, + 'label' => 'Modell', + 'attr' => ['placeholder' => 'z.B. claude-sonnet-4-6, gpt-4o, llama3.2'], + ]) + ->add('aiBaseUrl', TextType::class, [ + 'required' => false, + 'label' => 'Base URL', + 'attr' => ['placeholder' => 'z.B. http://localhost:11434 (Ollama Standard)'], + ]); /** @var \PSC\System\PluginBundle\Form\Interfaces\Field $field */ foreach ($this->fields->getFields(\PSC\System\PluginBundle\Form\Interfaces\Field::System) as $field) { $builder->add($field->buildForm($this->formFactory->createNamedBuilder( diff --git a/src/new/src/PSC/System/SettingsBundle/Resources/views/backend/settings/index.html.twig b/src/new/src/PSC/System/SettingsBundle/Resources/views/backend/settings/index.html.twig index b46904e1e..557832da6 100755 --- a/src/new/src/PSC/System/SettingsBundle/Resources/views/backend/settings/index.html.twig +++ b/src/new/src/PSC/System/SettingsBundle/Resources/views/backend/settings/index.html.twig @@ -46,6 +46,9 @@ +
@@ -414,6 +417,52 @@
+
+
+ KI Anbieter Konfiguration +
+ +
+ {{ form_widget(form.aiProvider, {attr: {class: 'form-select', id: 'ai_provider_select'}}) }} +
+
+
+ +
+ {{ form_widget(form.aiApiKey) }} + Wird nicht angezeigt nach dem Speichern. +
+
+
+ +
+ {{ form_widget(form.aiModel) }} + +
+
+
+ +
+ {{ form_widget(form.aiBaseUrl) }} +
+
+
+
+ Unterstützte Anbieter:
+ + + + + + + + + + + +
AnbieterEmpfohlenes ModellAPI Key nötigBase URL
Ollamallama3.2 / mistralNeinhttp://localhost:11434
Anthropicclaude-sonnet-4-6Ja-
OpenAIgpt-4oJa-
Googlegemini-2.0-flashJa-
Mistralmistral-large-latestJa-
Azure OpenAIgpt-4oJaDeployment URL
AWS Bedrockanthropic.claude-3-5-sonnetJa (Access Key)-
+
+
@@ -435,12 +484,42 @@ {% block javascripts %} {{ parent() }} {% endblock %} diff --git a/src/new/symfony.lock b/src/new/symfony.lock index 1d7e9ec0d..3614dd839 100755 --- a/src/new/symfony.lock +++ b/src/new/symfony.lock @@ -175,9 +175,6 @@ "laminas/laminas-code": { "version": "4.5.x-dev" }, - "lcobucci/clock": { - "version": "2.0.x-dev" - }, "lcobucci/jwt": { "version": "4.2.x-dev" }, @@ -498,6 +495,18 @@ "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" } }, + "symfony/ai-bundle": { + "version": "0.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "0.1", + "ref": "917b2a3da78a22e9488e99e1847d1f019d18da76" + }, + "files": [ + "config/packages/ai.yaml" + ] + }, "symfony/asset": { "version": "v4.4.7" }, @@ -847,6 +856,15 @@ "templates/base.html.twig" ] }, + "symfony/uid": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.0", + "ref": "0df5844274d871b37fc3816c57a768ffc60a43a5" + } + }, "symfony/ux-autocomplete": { "version": "2.14", "recipe": {