From 6a7b3be7f42ed69abfc4e9bce3b9d9aee2ae5b3d Mon Sep 17 00:00:00 2001 From: Ploush Date: Sat, 21 Mar 2026 13:38:18 +0100 Subject: [PATCH] init project --- .editorconfig | 17 + .env | 48 + .env.dev | 4 + .env.test | 3 + .gitignore | 22 + assets/app.js | 12 + assets/controllers.json | 15 + .../controllers/csrf_protection_controller.js | 81 + assets/controllers/hello_controller.js | 16 + assets/images/bg-dark.png | Bin 0 -> 290413 bytes assets/images/bg-light.png | Bin 0 -> 48360 bytes assets/js/header.js | 53 + assets/stimulus_bootstrap.js | 5 + assets/styles/app.css | 1 + assets/styles/header.css | 360 + bin/console | 21 + bin/phpunit | 4 + compose.override.yaml | 18 + compose.yaml | 25 + composer.json | 107 + composer.lock | 10151 ++++++++++++++++ config/bundles.php | 16 + config/packages/asset_mapper.yaml | 11 + config/packages/cache.yaml | 19 + config/packages/csrf.yaml | 11 + config/packages/debug.yaml | 5 + config/packages/doctrine.yaml | 54 + config/packages/doctrine_migrations.yaml | 6 + config/packages/framework.yaml | 15 + config/packages/mailer.yaml | 3 + config/packages/messenger.yaml | 26 + config/packages/monolog.yaml | 55 + config/packages/notifier.yaml | 12 + config/packages/property_info.yaml | 3 + config/packages/routing.yaml | 10 + config/packages/security.yaml | 53 + config/packages/translation.yaml | 5 + config/packages/twig.yaml | 6 + config/packages/ux_turbo.yaml | 4 + config/packages/validator.yaml | 11 + config/packages/web_profiler.yaml | 13 + config/preload.php | 5 + config/reference.php | 1672 +++ config/routes.yaml | 11 + config/routes/framework.yaml | 4 + config/routes/security.yaml | 3 + config/routes/web_profiler.yaml | 8 + config/services.yaml | 23 + importmap.php | 38 + migrations/.gitignore | 0 migrations/Version20260320225432.php | 107 + phpunit.dist.xml | 44 + public/index.php | 9 + src/Controller/.gitignore | 0 src/Controller/SecurityController.php | 32 + src/Controller/VitrineController.php | 18 + src/Entity/.gitignore | 0 src/Entity/CategoriePublication.php | 78 + src/Entity/Constitue.php | 69 + src/Entity/Illustration.php | 51 + src/Entity/Joueur.php | 137 + src/Entity/Mod.php | 183 + src/Entity/Modpack.php | 78 + src/Entity/Publication.php | 103 + src/Entity/Session.php | 66 + src/Entity/Territoire.php | 103 + src/Entity/User.php | 255 + src/Kernel.php | 11 + src/Repository/.gitignore | 0 .../CategoriePublicationRepository.php | 43 + src/Repository/ConstitueRepository.php | 43 + src/Repository/IllustrationRepository.php | 43 + src/Repository/JoueurRepository.php | 43 + src/Repository/ModRepository.php | 43 + src/Repository/ModpackRepository.php | 43 + src/Repository/PublicationRepository.php | 43 + src/Repository/SessionRepository.php | 43 + src/Repository/TerritoireRepository.php | 43 + src/Repository/UserRepository.php | 60 + symfony.lock | 325 + templates/base.html.twig | 37 + templates/partials/_header.html.twig | 42 + templates/partials/_login_dropdown.html.twig | 60 + templates/partials/_theme_toggle.html.twig | 30 + templates/security/login.html.twig | 38 + templates/vitrine/index.html.twig | 6 + tests/bootstrap.php | 13 + translations/.gitignore | 0 88 files changed, 15407 insertions(+) create mode 100644 .editorconfig create mode 100644 .env create mode 100644 .env.dev create mode 100644 .env.test create mode 100644 .gitignore create mode 100644 assets/app.js create mode 100644 assets/controllers.json create mode 100644 assets/controllers/csrf_protection_controller.js create mode 100644 assets/controllers/hello_controller.js create mode 100755 assets/images/bg-dark.png create mode 100644 assets/images/bg-light.png create mode 100644 assets/js/header.js create mode 100644 assets/stimulus_bootstrap.js create mode 100644 assets/styles/app.css create mode 100644 assets/styles/header.css create mode 100755 bin/console create mode 100755 bin/phpunit create mode 100644 compose.override.yaml create mode 100644 compose.yaml create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/bundles.php create mode 100644 config/packages/asset_mapper.yaml create mode 100644 config/packages/cache.yaml create mode 100644 config/packages/csrf.yaml create mode 100644 config/packages/debug.yaml create mode 100644 config/packages/doctrine.yaml create mode 100644 config/packages/doctrine_migrations.yaml create mode 100644 config/packages/framework.yaml create mode 100644 config/packages/mailer.yaml create mode 100644 config/packages/messenger.yaml create mode 100644 config/packages/monolog.yaml create mode 100644 config/packages/notifier.yaml create mode 100644 config/packages/property_info.yaml create mode 100644 config/packages/routing.yaml create mode 100644 config/packages/security.yaml create mode 100644 config/packages/translation.yaml create mode 100644 config/packages/twig.yaml create mode 100644 config/packages/ux_turbo.yaml create mode 100644 config/packages/validator.yaml create mode 100644 config/packages/web_profiler.yaml create mode 100644 config/preload.php create mode 100644 config/reference.php create mode 100644 config/routes.yaml create mode 100644 config/routes/framework.yaml create mode 100644 config/routes/security.yaml create mode 100644 config/routes/web_profiler.yaml create mode 100644 config/services.yaml create mode 100644 importmap.php create mode 100644 migrations/.gitignore create mode 100644 migrations/Version20260320225432.php create mode 100644 phpunit.dist.xml create mode 100644 public/index.php create mode 100644 src/Controller/.gitignore create mode 100644 src/Controller/SecurityController.php create mode 100644 src/Controller/VitrineController.php create mode 100644 src/Entity/.gitignore create mode 100644 src/Entity/CategoriePublication.php create mode 100644 src/Entity/Constitue.php create mode 100644 src/Entity/Illustration.php create mode 100644 src/Entity/Joueur.php create mode 100644 src/Entity/Mod.php create mode 100644 src/Entity/Modpack.php create mode 100644 src/Entity/Publication.php create mode 100644 src/Entity/Session.php create mode 100644 src/Entity/Territoire.php create mode 100644 src/Entity/User.php create mode 100644 src/Kernel.php create mode 100644 src/Repository/.gitignore create mode 100644 src/Repository/CategoriePublicationRepository.php create mode 100644 src/Repository/ConstitueRepository.php create mode 100644 src/Repository/IllustrationRepository.php create mode 100644 src/Repository/JoueurRepository.php create mode 100644 src/Repository/ModRepository.php create mode 100644 src/Repository/ModpackRepository.php create mode 100644 src/Repository/PublicationRepository.php create mode 100644 src/Repository/SessionRepository.php create mode 100644 src/Repository/TerritoireRepository.php create mode 100644 src/Repository/UserRepository.php create mode 100644 symfony.lock create mode 100644 templates/base.html.twig create mode 100644 templates/partials/_header.html.twig create mode 100644 templates/partials/_login_dropdown.html.twig create mode 100644 templates/partials/_theme_toggle.html.twig create mode 100644 templates/security/login.html.twig create mode 100644 templates/vitrine/index.html.twig create mode 100644 tests/bootstrap.php create mode 100644 translations/.gitignore diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6699076 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,17 @@ +# editorconfig.org + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[{compose.yaml,compose.*.yaml}] +indent_size = 2 + +[*.md] +trim_trailing_whitespace = false diff --git a/.env b/.env new file mode 100644 index 0000000..1ab5b95 --- /dev/null +++ b/.env @@ -0,0 +1,48 @@ +# In all environments, the following files are loaded if they exist, +# the latter taking precedence over the former: +# +# * .env contains default values for the environment variables needed by the app +# * .env.local uncommitted file with local overrides +# * .env.$APP_ENV committed environment-specific defaults +# * .env.$APP_ENV.local uncommitted environment-specific overrides +# +# Real environment variables win over .env files. +# +# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# https://symfony.com/doc/current/configuration/secrets.html +# +# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). +# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET= +APP_SHARE_DIR=var/share +###< symfony/framework-bundle ### + +###> symfony/routing ### +# Configure how to generate URLs in non-HTTP contexts, such as CLI commands. +# See https://symfony.com/doc/current/routing.html#generating-urls-in-commands +DEFAULT_URI=http://localhost +###< symfony/routing ### + +###> doctrine/doctrine-bundle ### +# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url +# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml +# +# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_%kernel.environment%.db" +# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" +# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" + +###< doctrine/doctrine-bundle ### + +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 +###< symfony/messenger ### + +###> symfony/mailer ### +MAILER_DSN=null://null +###< symfony/mailer ### diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..b29da8e --- /dev/null +++ b/.env.dev @@ -0,0 +1,4 @@ + +###> symfony/framework-bundle ### +APP_SECRET=372d954ac8cc9525d4a118fc6152b94d +###< symfony/framework-bundle ### diff --git a/.env.test b/.env.test new file mode 100644 index 0000000..64bd111 --- /dev/null +++ b/.env.test @@ -0,0 +1,3 @@ +# define your env variables for the test env here +KERNEL_CLASS='App\Kernel' +APP_SECRET='$ecretf0rt3st' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..31d3290 --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +.idea + + +###> symfony/framework-bundle ### +/.env.local +/.env.local.php +/.env.*.local +/config/secrets/prod/prod.decrypt.private.php +/public/bundles/ +/var/ +/vendor/ +###< symfony/framework-bundle ### + +###> phpunit/phpunit ### +/phpunit.xml +/.phpunit.cache/ +###< phpunit/phpunit ### + +###> symfony/asset-mapper ### +/public/assets/ +/assets/vendor/ +###< symfony/asset-mapper ### diff --git a/assets/app.js b/assets/app.js new file mode 100644 index 0000000..b82a059 --- /dev/null +++ b/assets/app.js @@ -0,0 +1,12 @@ +import 'bootstrap'; +import 'bootstrap/dist/css/bootstrap.min.css'; +import './stimulus_bootstrap.js'; +/* + * Welcome to your app's main JavaScript file! + * + * This file will be included onto the page via the importmap() Twig function, + * which should already be in your base.html.twig. + */ +import './styles/app.css'; + +console.log('This log comes from assets/app.js - welcome to AssetMapper! πŸŽ‰'); diff --git a/assets/controllers.json b/assets/controllers.json new file mode 100644 index 0000000..29ea244 --- /dev/null +++ b/assets/controllers.json @@ -0,0 +1,15 @@ +{ + "controllers": { + "@symfony/ux-turbo": { + "turbo-core": { + "enabled": true, + "fetch": "eager" + }, + "mercure-turbo-stream": { + "enabled": false, + "fetch": "eager" + } + } + }, + "entrypoints": [] +} diff --git a/assets/controllers/csrf_protection_controller.js b/assets/controllers/csrf_protection_controller.js new file mode 100644 index 0000000..511fffa --- /dev/null +++ b/assets/controllers/csrf_protection_controller.js @@ -0,0 +1,81 @@ +const nameCheck = /^[-_a-zA-Z0-9]{4,22}$/; +const tokenCheck = /^[-_/+a-zA-Z0-9]{24,}$/; + +// Generate and double-submit a CSRF token in a form field and a cookie, as defined by Symfony's SameOriginCsrfTokenManager +// Use `form.requestSubmit()` to ensure that the submit event is triggered. Using `form.submit()` will not trigger the event +// and thus this event-listener will not be executed. +document.addEventListener('submit', function (event) { + generateCsrfToken(event.target); +}, true); + +// When @hotwired/turbo handles form submissions, send the CSRF token in a header in addition to a cookie +// The `framework.csrf_protection.check_header` config option needs to be enabled for the header to be checked +document.addEventListener('turbo:submit-start', function (event) { + const h = generateCsrfHeaders(event.detail.formSubmission.formElement); + Object.keys(h).map(function (k) { + event.detail.formSubmission.fetchRequest.headers[k] = h[k]; + }); +}); + +// When @hotwired/turbo handles form submissions, remove the CSRF cookie once a form has been submitted +document.addEventListener('turbo:submit-end', function (event) { + removeCsrfToken(event.detail.formSubmission.formElement); +}); + +export function generateCsrfToken (formElement) { + const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]'); + + if (!csrfField) { + return; + } + + let csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value'); + let csrfToken = csrfField.value; + + if (!csrfCookie && nameCheck.test(csrfToken)) { + csrfField.setAttribute('data-csrf-protection-cookie-value', csrfCookie = csrfToken); + csrfField.defaultValue = csrfToken = btoa(String.fromCharCode.apply(null, (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(18)))); + } + csrfField.dispatchEvent(new Event('change', { bubbles: true })); + + if (csrfCookie && tokenCheck.test(csrfToken)) { + const cookie = csrfCookie + '_' + csrfToken + '=' + csrfCookie + '; path=/; samesite=strict'; + document.cookie = window.location.protocol === 'https:' ? '__Host-' + cookie + '; secure' : cookie; + } +} + +export function generateCsrfHeaders (formElement) { + const headers = {}; + const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]'); + + if (!csrfField) { + return headers; + } + + const csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value'); + + if (tokenCheck.test(csrfField.value) && nameCheck.test(csrfCookie)) { + headers[csrfCookie] = csrfField.value; + } + + return headers; +} + +export function removeCsrfToken (formElement) { + const csrfField = formElement.querySelector('input[data-controller="csrf-protection"], input[name="_csrf_token"]'); + + if (!csrfField) { + return; + } + + const csrfCookie = csrfField.getAttribute('data-csrf-protection-cookie-value'); + + if (tokenCheck.test(csrfField.value) && nameCheck.test(csrfCookie)) { + const cookie = csrfCookie + '_' + csrfField.value + '=0; path=/; samesite=strict; max-age=0'; + + document.cookie = window.location.protocol === 'https:' ? '__Host-' + cookie + '; secure' : cookie; + } +} + +/* stimulusFetch: 'lazy' */ +export default 'csrf-protection-controller'; diff --git a/assets/controllers/hello_controller.js b/assets/controllers/hello_controller.js new file mode 100644 index 0000000..e847027 --- /dev/null +++ b/assets/controllers/hello_controller.js @@ -0,0 +1,16 @@ +import { Controller } from '@hotwired/stimulus'; + +/* + * This is an example Stimulus controller! + * + * Any element with a data-controller="hello" attribute will cause + * this controller to be executed. The name "hello" comes from the filename: + * hello_controller.js -> "hello" + * + * Delete this file or adapt it for your use! + */ +export default class extends Controller { + connect() { + this.element.textContent = 'Hello Stimulus! Edit me in assets/controllers/hello_controller.js'; + } +} diff --git a/assets/images/bg-dark.png b/assets/images/bg-dark.png new file mode 100755 index 0000000000000000000000000000000000000000..a8f602353f3937a4d61ba4b5c1a95de58bfff5b4 GIT binary patch literal 290413 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

UC3aEv#Va}3q@)*6%jk42+y{Q3kI`@ybqpKx z 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 literal 0 HcmV?d00001 diff --git a/assets/images/bg-light.png b/assets/images/bg-light.png new file mode 100644 index 0000000000000000000000000000000000000000..accc1dc1c64c956d13cabda67269ae36e3f88033 GIT binary patch literal 48360 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 literal 0 HcmV?d00001 diff --git a/assets/js/header.js b/assets/js/header.js new file mode 100644 index 0000000..41749a3 --- /dev/null +++ b/assets/js/header.js @@ -0,0 +1,53 @@ +/** + * public/js/header.js + * Comportements interactifs du header : + * - Bascule thΓ¨me clair / sombre + * - Ouverture / fermeture du dropdown de connexion + */ + +document.addEventListener('DOMContentLoaded', function () { + + // ── THÈME ─────────────────────────────────────────────────── + const themeToggle = document.getElementById('themeToggle'); + + themeToggle.addEventListener('click', function () { + const current = document.documentElement.getAttribute('data-theme'); + const next = current === 'dark' ? 'light' : 'dark'; + + document.documentElement.setAttribute('data-theme', next); + localStorage.setItem('mc-theme', next); + }); + + // ── DROPDOWN CONNEXION ────────────────────────────────────── + const loginWrapper = document.getElementById('loginWrapper'); + const loginToggle = document.getElementById('loginToggle'); + const loginDropdown = document.getElementById('loginDropdown'); + + /** Ouvre ou ferme le dropdown */ + function toggleDropdown(force) { + const willOpen = force !== undefined ? force : !loginDropdown.classList.contains('open'); + loginDropdown.classList.toggle('open', willOpen); + loginToggle.setAttribute('aria-expanded', String(willOpen)); + } + + // Clic sur le bouton + loginToggle.addEventListener('click', function (e) { + e.stopPropagation(); + toggleDropdown(); + }); + + // Clic en dehors β†’ fermeture + document.addEventListener('click', function (e) { + if (!loginWrapper.contains(e.target)) { + toggleDropdown(false); + } + }); + + // Touche Γ‰chap β†’ fermeture + document.addEventListener('keydown', function (e) { + if (e.key === 'Escape') { + toggleDropdown(false); + } + }); + +}); diff --git a/assets/stimulus_bootstrap.js b/assets/stimulus_bootstrap.js new file mode 100644 index 0000000..d4e50c9 --- /dev/null +++ b/assets/stimulus_bootstrap.js @@ -0,0 +1,5 @@ +import { startStimulusApp } from '@symfony/stimulus-bundle'; + +const app = startStimulusApp(); +// register any custom, 3rd party controllers here +// app.register('some_controller_name', SomeImportedController); diff --git a/assets/styles/app.css b/assets/styles/app.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/assets/styles/app.css @@ -0,0 +1 @@ + diff --git a/assets/styles/header.css b/assets/styles/header.css new file mode 100644 index 0000000..c51030f --- /dev/null +++ b/assets/styles/header.css @@ -0,0 +1,360 @@ +/* ================================================================ + public/css/header.css + Styles du header β€” thΓ¨me clair & sombre + ================================================================ */ + +/* ── RESET MINIMAL ─────────────────────────────────────────────── */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +/* ── VARIABLES ─────────────────────────────────────────────────── */ +:root { + --violet: #7C3AED; + --violet-light: #A78BFA; + --violet-glow: rgba(124, 58, 237, 0.18); + + --nav-bg-light: rgba(255, 255, 255, 0.78); + --nav-bg-dark: rgba(12, 10, 18, 0.82); + + --text-light: #1a1625; + --text-dark: #ede9f6; + --muted-light: #6b7280; + --muted-dark: #9ca3af; + + --border-light: rgba(0, 0, 0, 0.08); + --border-dark: rgba(255, 255, 255, 0.08); + + --pill-bg-light: rgba(124, 58, 237, 0.08); + --pill-bg-dark: rgba(124, 58, 237, 0.20); +} + +/* ── BODY / BACKGROUND ─────────────────────────────────────────── */ +html, body { + min-height: 100vh; + font-family: 'DM Sans', sans-serif; + transition: background 0.4s ease; +} +body { + background-image: url('../images/bg-light.png'); /* assets/images/bg-light.png */ + background-size: cover; + background-position: center; + background-attachment: fixed; + padding-top: 64px; /* compense le header fixe */ +} +[data-theme="dark"] body { + background-image: url('../images/bg-dark.png'); /* assets/images/bg-dark.png */ +} + +/* ── HEADER ────────────────────────────────────────────────────── */ +header { + position: fixed; + top: 0; left: 0; right: 0; + z-index: 100; + height: 64px; + padding: 0 2rem; + display: flex; + align-items: center; + justify-content: space-between; + gap: 1.5rem; + + background: var(--nav-bg-light); + backdrop-filter: blur(20px) saturate(1.4); + -webkit-backdrop-filter: blur(20px) saturate(1.4); + border-bottom: 1px solid var(--border-light); + transition: background 0.4s ease, border-color 0.4s ease; +} +[data-theme="dark"] header { + background: var(--nav-bg-dark); + border-bottom-color: var(--border-dark); +} + +/* ── LOGO ──────────────────────────────────────────────────────── */ +.logo { + display: flex; + align-items: center; + gap: 0.55rem; + text-decoration: none; + flex-shrink: 0; +} +.logo-mark { + width: 30px; + height: 30px; + background: var(--violet); + border-radius: 8px; + display: flex; + align-items: center; + justify-content: center; + transition: transform 0.25s ease, box-shadow 0.25s ease; +} +.logo:hover .logo-mark { + transform: rotate(-6deg) scale(1.08); + box-shadow: 0 0 18px var(--violet-glow); +} +.logo-name { + font-weight: 800; + font-size: 1.05rem; + letter-spacing: -0.02em; + color: var(--text-light); + transition: color 0.4s ease; +} +[data-theme="dark"] .logo-name { color: var(--text-dark); } + +/* ── NAVIGATION ────────────────────────────────────────────────── */ +nav { + display: flex; + align-items: center; + gap: 0.5rem; + flex: 1; + justify-content: center; +} + +.nav-link { + position: relative; + padding: 0.6rem 1.5rem; + border-radius: 10px; + font-family: 'Syne', sans-serif; + font-weight: 600; + font-size: 0.9rem; + letter-spacing: 0.04em; + text-transform: uppercase; + color: var(--muted-light); + text-decoration: none; + white-space: nowrap; + transition: color 0.2s ease, background 0.2s ease, transform 0.15s ease; +} +[data-theme="dark"] .nav-link { color: var(--muted-dark); } + +.nav-link::after { + content: ''; + position: absolute; + bottom: 4px; + left: 50%; + transform: translateX(-50%) scaleX(0); + width: 16px; + height: 2px; + border-radius: 2px; + background: var(--violet); + transition: transform 0.25s ease; +} + +.nav-link:hover { + color: var(--text-light); + background: rgba(0, 0, 0, 0.05); + transform: translateY(-1px); +} +[data-theme="dark"] .nav-link:hover { + color: var(--text-dark); + background: rgba(255, 255, 255, 0.07); +} +.nav-link:hover::after { + transform: translateX(-50%) scaleX(1); +} + +/* Onglet actif */ +.nav-link.active { + color: var(--violet); + background: var(--pill-bg-light); + font-weight: 700; +} +[data-theme="dark"] .nav-link.active { + color: var(--violet-light); + background: var(--pill-bg-dark); +} +.nav-link.active::after { + transform: translateX(-50%) scaleX(1); +} +[data-theme="dark"] .nav-link.active::after { + background: var(--violet-light); +} + +/* ActualitΓ© */ +.nav-link:has(.badge-dot) { + display: flex; + align-items: center; + gap: 0.45rem; +} +.badge-dot { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--violet); + flex-shrink: 0; + animation: pulse-dot 2.5s ease-in-out infinite; +} +[data-theme="dark"] .badge-dot { background: var(--violet-light); } + +@keyframes pulse-dot { + 0%, 100% { opacity: 1; transform: scale(1); } + 50% { opacity: 0.5; transform: scale(0.7); } +} + +/* ── ACTIONS ───────────────────────────────────────────────────── */ +.header-actions { + display: flex; + align-items: center; + gap: 0.6rem; + flex-shrink: 0; +} + +/* ── BOUTON THÈME ──────────────────────────────────────────────── */ +.theme-btn { + width: 36px; + height: 36px; + border-radius: 10px; + border: 1px solid var(--border-light); + background: transparent; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--muted-light); + transition: color 0.25s, background 0.25s, border-color 0.25s, transform 0.3s; +} +[data-theme="dark"] .theme-btn { + border-color: var(--border-dark); + color: var(--muted-dark); +} +.theme-btn:hover { + background: rgba(0, 0, 0, 0.06); + color: var(--violet); + transform: rotate(20deg); +} +[data-theme="dark"] .theme-btn:hover { + background: rgba(255, 255, 255, 0.08); + color: var(--violet-light); +} + +/* IcΓ΄nes soleil / lune */ +.icon-sun { display: block; } +.icon-moon { display: none; } +[data-theme="dark"] .icon-sun { display: none; } +[data-theme="dark"] .icon-moon { display: block; } + +/* ── BOUTON CONNEXION ──────────────────────────────────────────── */ +.login-btn { + display: flex; + align-items: center; + gap: 0.45rem; + padding: 0.4rem 1.1rem; + border-radius: 10px; + border: 1px solid var(--border-light); + background: transparent; + cursor: pointer; + font-family: 'DM Sans', sans-serif; + font-weight: 500; + font-size: 0.875rem; + color: var(--text-light); + text-decoration: none; + transition: background 0.2s, border-color 0.2s, color 0.2s, box-shadow 0.2s; +} +[data-theme="dark"] .login-btn { + border-color: var(--border-dark); + color: var(--text-dark); +} +.login-btn:hover { + background: var(--violet); + border-color: var(--violet); + color: #fff; + box-shadow: 0 4px 20px rgba(124, 58, 237, 0.35); +} + +/* ── DROPDOWN CONNEXION ────────────────────────────────────────── */ +.login-wrapper { position: relative; } + +.login-dropdown { + position: absolute; + top: calc(100% + 10px); + right: 0; + width: 260px; + background: var(--nav-bg-light); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border: 1px solid var(--border-light); + border-radius: 14px; + padding: 1.25rem; + box-shadow: 0 16px 40px rgba(0, 0, 0, 0.12); + display: none; + flex-direction: column; + gap: 0.75rem; + animation: dropdown-in 0.2s ease; +} +[data-theme="dark"] .login-dropdown { + background: var(--nav-bg-dark); + border-color: var(--border-dark); + box-shadow: 0 16px 40px rgba(0, 0, 0, 0.4); +} +.login-dropdown.open { display: flex; } + +@keyframes dropdown-in { + from { opacity: 0; transform: translateY(-6px); } + to { opacity: 1; transform: translateY(0); } +} + +/* ── FORMULAIRE DANS LE DROPDOWN ───────────────────────────────── */ +.dropdown-title { + font-family: 'Syne', sans-serif; + font-weight: 700; + font-size: 0.95rem; + color: var(--text-light); +} +[data-theme="dark"] .dropdown-title { color: var(--text-dark); } + +.form-field { + display: flex; + flex-direction: column; + gap: 0.3rem; +} +.form-field label { + font-size: 0.72rem; + font-weight: 500; + letter-spacing: 0.06em; + text-transform: uppercase; + color: var(--muted-light); +} +[data-theme="dark"] .form-field label { color: var(--muted-dark); } + +.form-field input { + height: 36px; + border-radius: 8px; + border: 1px solid var(--border-light); + background: rgba(0, 0, 0, 0.03); + padding: 0 0.75rem; + font-family: 'DM Sans', sans-serif; + font-size: 0.875rem; + color: var(--text-light); + outline: none; + transition: border-color 0.2s, box-shadow 0.2s; +} +[data-theme="dark"] .form-field input { + border-color: var(--border-dark); + background: rgba(255, 255, 255, 0.04); + color: var(--text-dark); +} +.form-field input:focus { + border-color: var(--violet); + box-shadow: 0 0 0 3px var(--violet-glow); +} + +.submit-btn { + width: 100%; + height: 36px; + border-radius: 8px; + border: none; + background: var(--violet); + color: #fff; + font-family: 'DM Sans', sans-serif; + font-weight: 600; + font-size: 0.875rem; + cursor: pointer; + transition: background 0.2s, box-shadow 0.2s, transform 0.15s; +} +.submit-btn:hover { + background: #6d28d9; + box-shadow: 0 4px 16px rgba(124, 58, 237, 0.4); + transform: translateY(-1px); +} + +/* ── MOBILE ────────────────────────────────────────────────────── */ +@media (max-width: 640px) { + nav { display: none; } + header { padding: 0 1rem; } +} diff --git a/bin/console b/bin/console new file mode 100755 index 0000000..d8d530e --- /dev/null +++ b/bin/console @@ -0,0 +1,21 @@ +#!/usr/bin/env php + doctrine/doctrine-bundle ### + database: + ports: + - "5432" +###< doctrine/doctrine-bundle ### + +###> symfony/mailer ### + mailer: + image: axllent/mailpit + ports: + - "1025" + - "8025" + environment: + MP_SMTP_AUTH_ACCEPT_ANY: 1 + MP_SMTP_AUTH_ALLOW_INSECURE: 1 +###< symfony/mailer ### diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..89c74d1 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,25 @@ + +services: +###> doctrine/doctrine-bundle ### + database: + image: postgres:${POSTGRES_VERSION:-16}-alpine + environment: + POSTGRES_DB: ${POSTGRES_DB:-app} + # You should definitely change the password in production + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-!ChangeMe!} + POSTGRES_USER: ${POSTGRES_USER:-app} + healthcheck: + test: ["CMD", "pg_isready", "-d", "${POSTGRES_DB:-app}", "-U", "${POSTGRES_USER:-app}"] + timeout: 5s + retries: 5 + start_period: 60s + volumes: + - database_data:/var/lib/postgresql/data:rw + # You may use a bind-mounted host directory instead, so that it is harder to accidentally remove the volume and lose all your data! + # - ./docker/db/data:/var/lib/postgresql/data:rw +###< doctrine/doctrine-bundle ### + +volumes: +###> doctrine/doctrine-bundle ### + database_data: +###< doctrine/doctrine-bundle ### diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..49cb762 --- /dev/null +++ b/composer.json @@ -0,0 +1,107 @@ +{ + "type": "project", + "license": "proprietary", + "minimum-stability": "stable", + "prefer-stable": true, + "require": { + "php": ">=8.2", + "ext-ctype": "*", + "ext-iconv": "*", + "doctrine/doctrine-bundle": "^2.18", + "doctrine/doctrine-migrations-bundle": "^3.7", + "doctrine/orm": "^3.6", + "phpdocumentor/reflection-docblock": "^6.0", + "phpstan/phpdoc-parser": "^2.3", + "symfony/asset": "7.4.*", + "symfony/asset-mapper": "7.4.*", + "symfony/console": "7.4.*", + "symfony/doctrine-messenger": "7.4.*", + "symfony/dotenv": "7.4.*", + "symfony/expression-language": "7.4.*", + "symfony/flex": "^2", + "symfony/form": "7.4.*", + "symfony/framework-bundle": "7.4.*", + "symfony/http-client": "7.4.*", + "symfony/intl": "7.4.*", + "symfony/mailer": "7.4.*", + "symfony/mime": "7.4.*", + "symfony/monolog-bundle": "^3.0|^4.0", + "symfony/notifier": "7.4.*", + "symfony/process": "7.4.*", + "symfony/property-access": "7.4.*", + "symfony/property-info": "7.4.*", + "symfony/runtime": "7.4.*", + "symfony/security-bundle": "7.4.*", + "symfony/serializer": "7.4.*", + "symfony/stimulus-bundle": "^2.32", + "symfony/string": "7.4.*", + "symfony/translation": "7.4.*", + "symfony/twig-bundle": "7.4.*", + "symfony/ux-turbo": "^2.32", + "symfony/validator": "7.4.*", + "symfony/web-link": "7.4.*", + "symfony/yaml": "7.4.*", + "twig/extra-bundle": "^2.12|^3.0", + "twig/twig": "^2.12|^3.0" + }, + "config": { + "allow-plugins": { + "php-http/discovery": true, + "symfony/flex": true, + "symfony/runtime": true + }, + "bump-after-update": true, + "sort-packages": true + }, + "autoload": { + "psr-4": { + "App\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "App\\Tests\\": "tests/" + } + }, + "replace": { + "symfony/polyfill-ctype": "*", + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php72": "*", + "symfony/polyfill-php73": "*", + "symfony/polyfill-php74": "*", + "symfony/polyfill-php80": "*", + "symfony/polyfill-php81": "*", + "symfony/polyfill-php82": "*" + }, + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install %PUBLIC_DIR%": "symfony-cmd", + "importmap:install": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, + "extra": { + "symfony": { + "allow-contrib": false, + "require": "7.4.*" + } + }, + "require-dev": { + "phpunit/phpunit": "^12.5", + "symfony/browser-kit": "7.4.*", + "symfony/css-selector": "7.4.*", + "symfony/debug-bundle": "7.4.*", + "symfony/maker-bundle": "^1.0", + "symfony/stopwatch": "7.4.*", + "symfony/web-profiler-bundle": "7.4.*" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..8e656fe --- /dev/null +++ b/composer.lock @@ -0,0 +1,10151 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "faee5257947705b3a43aff6b00ecf576", + "packages": [ + { + "name": "composer/semver", + "version": "3.4.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + } + ], + "time": "2025-08-20T19:15:30+00:00" + }, + { + "name": "doctrine/collections", + "version": "2.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", + "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1", + "php": "^8.1", + "symfony/polyfill-php84": "^1.30" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "ext-json": "*", + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Collections\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", + "homepage": "https://www.doctrine-project.org/projects/collections.html", + "keywords": [ + "array", + "collections", + "iterators", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/2.6.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2026-01-15T10:01:58+00:00" + }, + { + "name": "doctrine/dbal", + "version": "4.4.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/476f7f0fa6ea4aa5364926db7fabdf6049075722", + "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "14.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.2", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "2.0.7", + "phpstan/phpstan-strict-rules": "^2", + "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" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/4.4.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdbal", + "type": "tidelift" + } + ], + "time": "2026-02-26T12:12:19+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "reference": "d4fe3e6fd9bb9e72557a19674f44d8ac7db4c6ca", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=14" + }, + "require-dev": { + "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.4 || ^13.0", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.6" + }, + "time": "2026-02-07T07:09:04+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "2.18.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "0ff098b29b8b3c68307c8987dcaed7fd829c6546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0ff098b29b8b3c68307c8987dcaed7fd829c6546", + "reference": "0ff098b29b8b3c68307c8987dcaed7fd829c6546", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/deprecations": "^1.0", + "doctrine/persistence": "^3.1 || ^4", + "doctrine/sql-formatter": "^1.0.1", + "php": "^8.1", + "symfony/cache": "^6.4 || ^7.0", + "symfony/config": "^6.4 || ^7.0", + "symfony/console": "^6.4 || ^7.0", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/service-contracts": "^2.5 || ^3" + }, + "conflict": { + "doctrine/annotations": ">=3.0", + "doctrine/cache": "< 1.11", + "doctrine/orm": "<2.17 || >=4.0", + "symfony/var-exporter": "< 6.4.1 || 7.0.0", + "twig/twig": "<2.13 || >=3.0 <3.0.4" + }, + "require-dev": { + "doctrine/annotations": "^1 || ^2", + "doctrine/cache": "^1.11 || ^2.0", + "doctrine/coding-standard": "^14", + "doctrine/orm": "^2.17 || ^3.1", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.53 || ^12.3.10", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/doctrine-messenger": "^6.4 || ^7.0", + "symfony/expression-language": "^6.4 || ^7.0", + "symfony/messenger": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.0", + "symfony/security-bundle": "^6.4 || ^7.0", + "symfony/stopwatch": "^6.4 || ^7.0", + "symfony/string": "^6.4 || ^7.0", + "symfony/twig-bridge": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/var-exporter": "^6.4.1 || ^7.0.1", + "symfony/web-profiler-bundle": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0", + "twig/twig": "^2.14.7 || ^3.0.4" + }, + "suggest": { + "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\DoctrineBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org/" + } + ], + "description": "Symfony DoctrineBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database", + "dbal", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineBundle/issues", + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.2" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2025-12-20T21:35:32+00:00" + }, + { + "name": "doctrine/doctrine-migrations-bundle", + "version": "3.7.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "shasum": "" + }, + "require": { + "doctrine/doctrine-bundle": "^2.4 || ^3.0", + "doctrine/migrations": "^3.2", + "php": "^7.2 || ^8.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/semver": "^3.0", + "doctrine/coding-standard": "^12 || ^14", + "doctrine/orm": "^2.6 || ^3", + "phpstan/phpstan": "^1.4 || ^2", + "phpstan/phpstan-deprecation-rules": "^1 || ^2", + "phpstan/phpstan-phpunit": "^1 || ^2", + "phpstan/phpstan-strict-rules": "^1.1 || ^2", + "phpstan/phpstan-symfony": "^1.3 || ^2", + "phpunit/phpunit": "^8.5 || ^9.5", + "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", + "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\MigrationsBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Doctrine Project", + "homepage": "https://www.doctrine-project.org" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DoctrineMigrationsBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "dbal", + "migrations", + "schema" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2025-11-15T19:02:59+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2026-01-29T07:11:08+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" + }, + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.21" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2024-02-05T11:56:58+00:00" + }, + { + "name": "doctrine/migrations", + "version": "3.9.6", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/ffd8355cdd8505fc650d9604f058bf62aedd80a1", + "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/dbal": "^3.6 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", + "psr/log": "^1.1.3 || ^2 || ^3", + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", + "doctrine/sql-formatter": "^1.0", + "ext-pdo_sqlite": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" + }, + "suggest": { + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "symfony/yaml": "Allows the use of yaml for migration configuration files." + }, + "bin": [ + "bin/doctrine-migrations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Migrations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Michael Simonson", + "email": "contact@mikesimonson.com" + } + ], + "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", + "homepage": "https://www.doctrine-project.org/projects/migrations.html", + "keywords": [ + "database", + "dbal", + "migrations" + ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.9.6" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fmigrations", + "type": "tidelift" + } + ], + "time": "2026-02-11T06:46:11+00:00" + }, + { + "name": "doctrine/orm", + "version": "3.6.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/4262eb495b4d2a53b45de1ac58881e0091f2970f", + "reference": "4262eb495b4d2a53b45de1ac58881e0091f2970f", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/collections": "^2.2", + "doctrine/dbal": "^3.8.2 || ^4", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", + "doctrine/inflector": "^1.4 || ^2.0", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^3", + "doctrine/persistence": "^3.3.1 || ^4", + "ext-ctype": "*", + "php": "^8.1", + "psr/cache": "^1 || ^2 || ^3", + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^14.0", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "2.1.23", + "phpstan/phpstan-deprecation-rules": "^2", + "phpunit/phpunit": "^10.5.0 || ^11.5", + "psr/log": "^1 || ^2 || ^3", + "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" + }, + "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", + "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\ORM\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Object-Relational-Mapper for PHP", + "homepage": "https://www.doctrine-project.org/projects/orm.html", + "keywords": [ + "database", + "orm" + ], + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/3.6.2" + }, + "time": "2026-01-30T21:41:41+00:00" + }, + { + "name": "doctrine/persistence", + "version": "4.1.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/persistence.git", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^1 || ^2", + "php": "^8.1", + "psr/cache": "^1.0 || ^2.0 || ^3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Persistence\\": "src/Persistence" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", + "keywords": [ + "mapper", + "object", + "odm", + "orm", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/4.1.1" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2025-10-16T20:13:18+00:00" + }, + { + "name": "doctrine/sql-formatter", + "version": "1.5.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/9563949f5cd3bd12a17d12fb980528bc141c5806", + "reference": "9563949f5cd3bd12a17d12fb980528bc141c5806", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "ergebnis/phpunit-slow-test-detector": "^2.20", + "phpstan/phpstan": "^2.1.31", + "phpunit/phpunit": "^10.5.58" + }, + "bin": [ + "bin/sql-formatter" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\SqlFormatter\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jeremy Dorn", + "email": "jeremy@jeremydorn.com", + "homepage": "https://jeremydorn.com/" + } + ], + "description": "a PHP SQL highlighting library", + "homepage": "https://github.com/doctrine/sql-formatter/", + "keywords": [ + "highlight", + "sql" + ], + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.4" + }, + "time": "2026-02-08T16:21:46+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "reference": "d42c8731f0624ad6bdc8d3e5e9a4524f68801cfa", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2025-03-06T22:45:56+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.10.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "fcf91eb64359852f00d921887b219479b4f21251" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/fcf91eb64359852f00d921887b219479b4f21251", + "reference": "fcf91eb64359852f00d921887b219479b4f21251", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" + }, + "time": "2025-07-25T09:04:22+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.10.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8 || ^2.0", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", + "predis/predis": "^1.1 || ^2", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2026-01-02T08:56:05+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.4", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3 <3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-08-01T08:46:24+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.7.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + }, + "time": "2025-12-06T11:56:16+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "6.0.2", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "897b5986ece6b4f9d8413fea345c7d49c757d6bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/897b5986ece6b4f9d8413fea345c7d49c757d6bf", + "reference": "897b5986ece6b4f9d8413fea345c7d49c757d6bf", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^2.0", + "phpstan/phpdoc-parser": "^2.0", + "webmozart/assert": "^1.9.1 || ^2" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26", + "shipmonk/dead-code-detector": "^0.5.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.2" + }, + "time": "2026-03-01T18:43:49+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9", + "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev", + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0" + }, + "time": "2026-01-06T21:53:42+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "2.3.2", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", + "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" + }, + "time": "2026-01-25T14:56:51+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "12.5.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b015312f28dd75b75d3422ca37dff2cd1a565e8d", + "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.7.0", + "php": ">=8.3", + "phpunit/php-file-iterator": "^6.0", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0.3", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" + }, + "require-dev": { + "phpunit/phpunit": "^12.5.1" + }, + "suggest": { + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "12.5.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2026-02-06T06:01:44+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" + } + ], + "time": "2026-02-02T14:04:18+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:58+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:16+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "8.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:59:38+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "12.5.14", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/47283cfd98d553edcb1353591f4e255dc1bb61f0", + "reference": "47283cfd98d553edcb1353591f4e255dc1bb61f0", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.4", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.3", + "phpunit/php-file-iterator": "^6.0.1", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.0", + "sebastian/comparator": "^7.1.4", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.0.3", + "sebastian/exporter": "^7.0.2", + "sebastian/global-state": "^8.0.2", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", + "sebastian/type": "^6.0.3", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "12.5-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.14" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2026-02-18T12:38:40+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/link", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "84b159194ecfd7eaa472280213976e96415433f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/84b159194ecfd7eaa472280213976e96415433f7", + "reference": "84b159194ecfd7eaa472280213976e96415433f7", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "suggest": { + "fig/link-util": "Provides some useful PSR-13 utilities" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/2.0.1" + }, + "time": "2021-03-11T23:00:27+00:00" + }, + { + "name": "psr/log", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.2" + }, + "time": "2024-09-11T13:17:53+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" + } + ], + "time": "2025-09-14T09:36:45+00:00" + }, + { + "name": "sebastian/comparator", + "version": "7.1.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/6a7de5df2e094f9a80b40a522391a7e6022df5f6", + "reference": "6a7de5df2e094f9a80b40a522391a7e6022df5f6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.2" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" + } + ], + "time": "2026-01-24T09:28:48+00:00" + }, + { + "name": "sebastian/complexity", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:25+00:00" + }, + { + "name": "sebastian/diff", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:55:46+00:00" + }, + { + "name": "sebastian/environment", + "version": "8.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "reference": "7b8842c2d8e85d0c3a5831236bf5869af6ab2a11", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/8.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" + } + ], + "time": "2026-03-15T07:05:40+00:00" + }, + { + "name": "sebastian/exporter", + "version": "7.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" + } + ], + "time": "2025-09-24T06:16:11+00:00" + }, + { + "name": "sebastian/global-state", + "version": "8.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" + } + ], + "time": "2025-08-29T11:29:25+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^5.0", + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:57:28+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "7.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "shasum": "" + }, + "require": { + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:57:48+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:17+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "7.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" + } + ], + "time": "2025-08-13T04:44:59+00:00" + }, + { + "name": "sebastian/type", + "version": "6.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "require-dev": { + "phpunit/phpunit": "^12.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" + } + ], + "time": "2025-08-09T06:57:12+00:00" + }, + { + "name": "sebastian/version", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", + "shasum": "" + }, + "require": { + "php": ">=8.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T05:00:38+00:00" + }, + { + "name": "staabm/side-effects-detector", + "version": "1.0.5", + "source": { + "type": "git", + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "lib/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" + ], + "support": { + "issues": "https://github.com/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" + }, + "funding": [ + { + "url": "https://github.com/staabm", + "type": "github" + } + ], + "time": "2024-10-20T05:08:20+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": { + "php": ">=8.2" + }, + "conflict": { + "symfony/http-foundation": "<6.4" + }, + "require-dev": { + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Asset\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset/tree/v7.4.6" + }, + "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-09T09:33:46+00:00" + }, + { + "name": "symfony/asset-mapper", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset-mapper.git", + "reference": "87b67d12754132339414a1eb7fd1f6640f4f71b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/87b67d12754132339414a1eb7fd1f6640f4f71b6", + "reference": "87b67d12754132339414a1eb7fd1f6640f4f71b6", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/framework-bundle": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4.13|^7.1.6|^8.0", + "symfony/event-dispatcher-contracts": "^3.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\AssetMapper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.6" + }, + "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-17T07:53:42+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bed167eadaaba641f51fc842c9227aa5e251309e", + "reference": "bed167eadaaba641f51fc842c9227aa5e251309e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/dom-crawler": "^6.4|^7.0|^8.0" + }, + "require-dev": { + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.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-13T10:40:19+00:00" + }, + { + "name": "symfony/cache", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "665522ec357540e66c294c08583b40ee576574f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/665522ec357540e66c294c08583b40ee576574f0", + "reference": "665522ec357540e66c294c08583b40ee576574f0", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^3.6", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.4|^7.0|^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.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/filesystem": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v7.4.7" + }, + "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-03-06T08:14:57+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", + "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Cache\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-03-13T15:25:07+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.4.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": "2025-11-12T15:39:26+00:00" + }, + { + "name": "symfony/config", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "6c17162555bfb58957a55bb0e43e00035b6ae3d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/6c17162555bfb58957a55bb0e43e00035b6ae3d5", + "reference": "6c17162555bfb58957a55bb0e43e00035b6ae3d5", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.1|^8.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.7" + }, + "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-03-06T10:41:14+00:00" + }, + { + "name": "symfony/console", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/e1e6770440fb9c9b0cf725f81d1361ad1835329d", + "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.2|^8.0" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.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/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v7.4.7" + }, + "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-03-06T14:06:20+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/2e7c52c647b406e2107dd867db424a4dbac91864", + "reference": "2e7c52c647b406e2107dd867db424a4dbac91864", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-FranΓ§ois Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v7.4.6" + }, + "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-17T07:53:42+00:00" + }, + { + "name": "symfony/debug-bundle", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "7affd8924ef9a7739ec53284c2fc30afeeae7124" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7affd8924ef9a7739ec53284c2fc30afeeae7124", + "reference": "7affd8924ef9a7739ec53284c2fc30afeeae7124", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.2", + "symfony/config": "^7.3|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "require-dev": { + "symfony/web-profiler-bundle": "^6.4|^7.0|^8.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/debug-bundle/tree/v7.4.7" + }, + "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-03-03T07:48:48+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db", + "reference": "0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^6.4.20|^7.2.5|^8.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2", + "symfony/config": "<6.4", + "symfony/finder": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.7" + }, + "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-03-03T07:48:48+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "4fc5e2dd41be3c0b6321e0373072782edeff45ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/4fc5e2dd41be3c0b6321e0373072782edeff45ed", + "reference": "4fc5e2dd41be3c0b6321e0373072782edeff45ed", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^2", + "doctrine/persistence": "^3.1|^4", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/collections": "<1.8", + "doctrine/dbal": "<3.6", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.15", + "symfony/cache": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/form": "<6.4.6|>=7,<7.0.6", + "symfony/http-foundation": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/lock": "<6.4", + "symfony/messenger": "<6.4", + "symfony/property-info": "<6.4", + "symfony/security-bundle": "<6.4", + "symfony/security-core": "<6.4", + "symfony/validator": "<7.4" + }, + "require-dev": { + "doctrine/collections": "^1.8|^2.0", + "doctrine/data-fixtures": "^1.1|^2", + "doctrine/dbal": "^3.6|^4", + "doctrine/orm": "^2.15|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/doctrine-messenger": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.2|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Doctrine with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.7" + }, + "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-03-05T08:16:50+00:00" + }, + { + "name": "symfony/doctrine-messenger", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-messenger.git", + "reference": "a429cd95983eaea2371ea279bed3b8a93b9ecdd3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/a429cd95983eaea2371ea279bed3b8a93b9ecdd3", + "reference": "a429cd95983eaea2371ea279bed3b8a93b9ecdd3", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^3.6|^4", + "php": ">=8.2", + "symfony/messenger": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/persistence": "^1.3|^2|^3", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0" + }, + "type": "symfony-messenger-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Doctrine Messenger Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.4.6" + }, + "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-18T09:40:04+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/487ba8fa43da9a8e6503fe939b45ecd96875410e", + "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e", + "shasum": "" + }, + "require": { + "masterminds/html5": "^2.6", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.6" + }, + "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-17T07:53:42+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "7e5529a0b02395cb4614cdf507495a4cef3115c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/7e5529a0b02395cb4614cdf507495a4cef3115c5", + "reference": "7e5529a0b02395cb4614cdf507495a4cef3115c5", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/process": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v7.4.7" + }, + "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-03-03T07:48:48+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/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-20T16:42:42+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", + "reference": "dc2c0eba1af673e736bb851d747d266108aea746", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.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-05T11:45:34+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/expression-language", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", + "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ExpressionLanguage\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an engine that can compile and evaluate expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/expression-language/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-05T08:47:25+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3ebc794fa5315e59fd122561623c2e2e4280538e", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.6" + }, + "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-25T16:50:00+00:00" + }, + { + "name": "symfony/finder", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v7.4.6" + }, + "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-29T09:40:50+00:00" + }, + { + "name": "symfony/flex", + "version": "v2.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/flex.git", + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/flex/zipball/9cd384775973eabbf6e8b05784dda279fc67c28d", + "reference": "9cd384775973eabbf6e8b05784dda279fc67c28d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.1", + "php": ">=8.1" + }, + "conflict": { + "composer/semver": "<1.7.2", + "symfony/dotenv": "<5.4" + }, + "require-dev": { + "composer/composer": "^2.1", + "symfony/dotenv": "^6.4|^7.4|^8.0", + "symfony/filesystem": "^6.4|^7.4|^8.0", + "symfony/phpunit-bridge": "^6.4|^7.4|^8.0", + "symfony/process": "^6.4|^7.4|^8.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Flex\\Flex" + }, + "autoload": { + "psr-4": { + "Symfony\\Flex\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "Composer plugin for Symfony", + "support": { + "issues": "https://github.com/symfony/flex/issues", + "source": "https://github.com/symfony/flex/tree/v2.10.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": "2025-11-16T09:38:19+00:00" + }, + { + "name": "symfony/form", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "5f24175103fd0a62b98442207c240688210fd88b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/5f24175103fd0a62b98442207c240688210fd88b", + "reference": "5f24175103fd0a62b98442207c240688210fd88b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/options-resolver": "^7.3|^8.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/error-handler": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/intl": "<7.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "doctrine/collections": "^1.0|^2.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/html-sanitizer": "^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/intl": "^7.4|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4.12|^7.1.5|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Form\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows to easily create, process and reuse HTML forms", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/form/tree/v7.4.7" + }, + "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-03-05T12:30:09+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "c94bc78c85d76af67918404a95d44940f66a7c2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c94bc78c85d76af67918404a95d44940f66a7c2f", + "reference": "c94bc78c85d76af67918404a95d44940f66a7c2f", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.2", + "symfony/cache": "^6.4.12|^7.0|^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", + "symfony/filesystem": "^7.1|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php85": "^1.32", + "symfony/routing": "^7.4|^8.0" + }, + "conflict": { + "doctrine/persistence": "<1.3", + "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", + "symfony/console": "<6.4", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/form": "<7.4", + "symfony/http-client": "<6.4", + "symfony/lock": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<7.4", + "symfony/mime": "<6.4", + "symfony/property-access": "<6.4", + "symfony/property-info": "<6.4", + "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", + "symfony/security-core": "<6.4", + "symfony/security-csrf": "<7.2", + "symfony/serializer": "<7.2.5", + "symfony/stopwatch": "<6.4", + "symfony/translation": "<7.3", + "symfony/twig-bridge": "<6.4", + "symfony/twig-bundle": "<6.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/webhook": "<7.2", + "symfony/workflow": "<7.4" + }, + "require-dev": { + "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", + "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", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/json-streamer": "^7.3|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/notifier": "^6.4|^7.0|^8.0", + "symfony/object-mapper": "^7.3|^8.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/scheduler": "^6.4.4|^7.0.4|^8.0", + "symfony/security-bundle": "^6.4|^7.0|^8.0", + "symfony/semaphore": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.2.5|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^7.3|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/webhook": "^7.2|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.3|^8.0", + "twig/twig": "^3.12" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides 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.7" + }, + "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-03-06T15:39:55+00:00" + }, + { + "name": "symfony/http-client", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "1010624285470eb60e88ed10035102c75b4ea6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/1010624285470eb60e88ed10035102c75b4ea6af", + "reference": "1010624285470eb60e88ed10035102c75b4ea6af", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/polyfill-php83": "^1.29", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "amphp/amp": "<2.5", + "amphp/socket": "<1.1", + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/http-client": "^4.2.1|^5.0", + "amphp/http-tunnel": "^1.0|^2.0", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.4.7" + }, + "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-03-05T11:16:58+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "75d7043853a42837e68111812f4d964b01e5101c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", + "reference": "75d7043853a42837e68111812f4d964b01e5101c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-04-29T11:18:49+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f94b3e7b7dafd40e666f0c9ff2084133bae41e81", + "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v7.4.7" + }, + "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-03-06T13:15:18+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3b3fcf386c809be990c922e10e4c620d6367cab1", + "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.12" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "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.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", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "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", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides 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.7" + }, + "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-03-06T16:33:18+00:00" + }, + { + "name": "symfony/intl", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "6d6a398b18f73b3110140dbb030dcee2ae4ea81f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/6d6a398b18f73b3110140dbb030dcee2ae4ea81f", + "reference": "6d6a398b18f73b3110140dbb030dcee2ae4ea81f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/string": "<7.1" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/Resources/data/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Eriksen Costa", + "email": "eriksen.costa@infranology.com.br" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides access to the localization data of the ICU library", + "homepage": "https://symfony.com", + "keywords": [ + "i18n", + "icu", + "internationalization", + "intl", + "l10n", + "localization" + ], + "support": { + "source": "https://github.com/symfony/intl/tree/v7.4.6" + }, + "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-09T09:33:46+00:00" + }, + { + "name": "symfony/mailer", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.2", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v7.4.6" + }, + "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-25T16:50:00+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.66.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "b5b4afa2a570b926682e9f34615a6766dd560ff4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/b5b4afa2a570b926682e9f34615a6766dd560ff4", + "reference": "b5b4afa2a570b926682e9f34615a6766dd560ff4", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "nikic/php-parser": "^5.0", + "php": ">=8.1", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.2|^3", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" + }, + "conflict": { + "doctrine/doctrine-bundle": "<2.10", + "doctrine/orm": "<2.15" + }, + "require-dev": { + "composer/semver": "^3.0", + "doctrine/doctrine-bundle": "^2.10|^3.0", + "doctrine/orm": "^2.15|^3", + "doctrine/persistence": "^3.1|^4.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.0|^4.x-dev" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MakerBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", + "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", + "keywords": [ + "code generator", + "dev", + "generator", + "scaffold", + "scaffolding" + ], + "support": { + "issues": "https://github.com/symfony/maker-bundle/issues", + "source": "https://github.com/symfony/maker-bundle/tree/v1.66.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-09T08:55:54+00:00" + }, + { + "name": "symfony/messenger", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/messenger.git", + "reference": "13a00f01a46ba7d47ac7f0e3d9a901d19f9432f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/messenger/zipball/13a00f01a46ba7d47ac7f0e3d9a901d19f9432f0", + "reference": "13a00f01a46ba7d47ac7f0e3d9a901d19f9432f0", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<7.2", + "symfony/event-dispatcher": "<6.4", + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/framework-bundle": "<6.4", + "symfony/http-kernel": "<7.3", + "symfony/lock": "<7.4", + "symfony/serializer": "<6.4.32|>=7.3,<7.3.10|>=7.4,<7.4.4|>=8.0,<8.0.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/console": "^7.2|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^7.3|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.32|~7.3.10|^7.4.4|^8.0.4", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Roze", + "email": "samuel.roze@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps applications send and receive messages to/from other applications or via message queues", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/messenger/tree/v7.4.7" + }, + "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-03-04T13:54:41+00:00" + }, + { + "name": "symfony/mime", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/da5ab4fde3f6c88ab06e96185b9922f48b677cd1", + "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.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": "^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", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v7.4.7" + }, + "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-03-05T15:24:09+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/69e98e7e10dae3daa896ef0f20e17a3928362d88", + "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88", + "shasum": "" + }, + "require": { + "monolog/monolog": "^3", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/console": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/security-core": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/mailer": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Monolog\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Monolog with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.6" + }, + "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-17T07:53:42+00:00" + }, + { + "name": "symfony/monolog-bundle", + "version": "v4.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "3b4ee2717ee56c5e1edb516140a175eb2a72bc66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/3b4ee2717ee56c5e1edb516140a175eb2a72bc66", + "reference": "3b4ee2717ee56c5e1edb516140a175eb2a72bc66", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0", + "monolog/monolog": "^3.5", + "php": ">=8.2", + "symfony/config": "^7.3 || ^8.0", + "symfony/dependency-injection": "^7.3 || ^8.0", + "symfony/http-kernel": "^7.3 || ^8.0", + "symfony/monolog-bridge": "^7.3 || ^8.0", + "symfony/polyfill-php84": "^1.30" + }, + "require-dev": { + "phpunit/phpunit": "^11.5.41 || ^12.3", + "symfony/console": "^7.3 || ^8.0", + "symfony/yaml": "^7.3 || ^8.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\MonologBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony MonologBundle", + "homepage": "https://symfony.com", + "keywords": [ + "log", + "logging" + ], + "support": { + "issues": "https://github.com/symfony/monolog-bundle/issues", + "source": "https://github.com/symfony/monolog-bundle/tree/v4.0.1" + }, + "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": "2025-12-08T08:00:13+00:00" + }, + { + "name": "symfony/notifier", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/notifier.git", + "reference": "f2033239ef9bc095fcac2305ccdd91a11fa2b7aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/notifier/zipball/f2033239ef9bc095fcac2305ccdd91a11fa2b7aa", + "reference": "f2033239ef9bc095fcac2305ccdd91a11fa2b7aa", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/event-dispatcher": "<6.4", + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/http-client-contracts": "<2.5", + "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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Notifier\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Sends notifications via one or more channels (email, SMS, ...)", + "homepage": "https://symfony.com", + "keywords": [ + "notification", + "notifier" + ], + "support": { + "source": "https://github.com/symfony/notifier/tree/v7.4.6" + }, + "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-18T09:40:04+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "b38026df55197f9e39a44f3215788edf83187b80" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b38026df55197f9e39a44f3215788edf83187b80", + "reference": "b38026df55197f9e39a44f3215788edf83187b80", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.4.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": "2025-11-12T15:39:26+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/376755eb9c9857d78aedb68341ad2f46d1908b29", + "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "conflict": { + "symfony/security-core": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PasswordHasher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Robin Chalas", + "email": "robin.chalas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides password hashing utilities", + "homepage": "https://symfony.com", + "keywords": [ + "hashing", + "password" + ], + "support": { + "source": "https://github.com/symfony/password-hasher/tree/v7.4.6" + }, + "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-11T16:03:16+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/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": "2025-06-27T09:58:17+00:00" + }, + { + "name": "symfony/polyfill-intl-icu", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-icu.git", + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", + "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance and support of other locales than \"en\"" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's ICU-related data and classes", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "icu", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-icu/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": "2025-06-20T22:24:30+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/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-10T14:38:51+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/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/polyfill-mbstring", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/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-12-23T08:48:59+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/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": "2025-07-08T02:45:35+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/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": "2025-06-24T13:30:11+00:00" + }, + { + "name": "symfony/polyfill-php85", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "reference": "d4e5fcd4ab3d998ab16c0db48e6cbb9a01993f91", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php85\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php85/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": "2025-06-23T16:12:55+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": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.4.5" + }, + "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-26T15:07:59+00:00" + }, + { + "name": "symfony/property-access", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "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", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "homepage": "https://symfony.com", + "keywords": [ + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property-path", + "reflection" + ], + "support": { + "source": "https://github.com/symfony/property-access/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-05T08:47:25+00:00" + }, + { + "name": "symfony/property-info", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "02501d75fd834345da3ecdd8e3200ced39e370f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/02501d75fd834345da3ecdd8e3200ced39e370f8", + "reference": "02501d75fd834345da3ecdd8e3200ced39e370f8", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" + }, + "conflict": { + "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|^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", + "symfony/serializer": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\PropertyInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KΓ©vin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts information about PHP class' properties using metadata of popular sources", + "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], + "support": { + "source": "https://github.com/symfony/property-info/tree/v7.4.7" + }, + "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-03-04T15:53:26+00:00" + }, + { + "name": "symfony/routing", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/238d749c56b804b31a9bf3e26519d93b65a60938", + "reference": "238d749c56b804b31a9bf3e26519d93b65a60938", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v7.4.6" + }, + "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-25T16:50:00+00:00" + }, + { + "name": "symfony/runtime", + "version": "v7.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/runtime.git", + "reference": "876f902a6cb6b26c003de244188c06b2ba1c172f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/runtime/zipball/876f902a6cb6b26c003de244188c06b2ba1c172f", + "reference": "876f902a6cb6b26c003de244188c06b2ba1c172f", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=8.2" + }, + "conflict": { + "symfony/dotenv": "<6.4" + }, + "require-dev": { + "composer/composer": "^2.6", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dotenv": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin" + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Runtime\\": "", + "Symfony\\Runtime\\Symfony\\Component\\": "Internal/" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Enables decoupling PHP applications from global state", + "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], + "support": { + "source": "https://github.com/symfony/runtime/tree/v7.4.1" + }, + "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": "2025-12-05T14:04:53+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d79c6d9a373fe8585e85bcfca4c24b9783214263", + "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.2", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/browser-kit": "<6.4", + "symfony/console": "<6.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-client": "<6.4", + "symfony/ldap": "<6.4", + "symfony/serializer": "<6.4", + "symfony/twig-bundle": "<6.4", + "symfony/validator": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15", + "web-token/jwt-library": "^3.3.2|^4.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides 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.6" + }, + "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-22T22:01:45+00:00" + }, + { + "name": "symfony/security-core", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "958a70725a8d669bec6721f4cd318d209712e944" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/958a70725a8d669bec6721f4cd318d209712e944", + "reference": "958a70725a8d669bec6721f4cd318d209712e944", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/http-foundation": "<6.4", + "symfony/ldap": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/validator": "<6.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/ldap": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Core\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - Core Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-core/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-14T09:36:49+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", + "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/security-core": "^6.4|^7.0|^8.0" + }, + "conflict": { + "symfony/http-foundation": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Csrf\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - CSRF Library", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-csrf/tree/v7.4.6" + }, + "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-11T16:03:16+00:00" + }, + { + "name": "symfony/security-http", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/52ce5ef5708900dcab9f55750cf81250a0ebba9f", + "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/security-core": "^7.3|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/clock": "<6.4", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<6.4", + "symfony/security-csrf": "<6.4" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "web-token/jwt-library": "^3.3.2|^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Security\\Http\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Security Component - HTTP Integration", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/security-http/tree/v7.4.6" + }, + "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-18T09:46:18+00:00" + }, + { + "name": "symfony/serializer", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "bd395bbc6fabd136a48e1a6f91b09f88b5050b0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/bd395bbc6fabd136a48e1a6f91b09f88b5050b0b", + "reference": "bd395bbc6fabd136a48e1a6f91b09f88b5050b0b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php84": "^1.30" + }, + "conflict": { + "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": "^5.2|^6.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^7.2|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/form": "^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/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "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.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", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "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.7" + }, + "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-03-06T13:15:18+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + }, + "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": "2025-07-15T11:30:57+00:00" + }, + { + "name": "symfony/stimulus-bundle", + "version": "v2.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stimulus-bundle.git", + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stimulus-bundle/zipball/dfbf6b443bb381cb611e06f64dc23603b614b575", + "reference": "dfbf6b443bb381cb611e06f64dc23603b614b575", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/config": "^5.4|^6.0|^7.0|^8.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0|^8.0", + "symfony/deprecation-contracts": "^2.0|^3.0", + "symfony/finder": "^5.4|^6.0|^7.0|^8.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0|^8.0", + "twig/twig": "^2.15.3|^3.8" + }, + "require-dev": { + "symfony/asset-mapper": "^6.3|^7.0|^8.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0|^8.0", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0|^8.0", + "zenstruck/browser": "^1.4" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\UX\\StimulusBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Integration with your Symfony app & Stimulus!", + "keywords": [ + "symfony-ux" + ], + "support": { + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.32.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": "2025-12-02T07:12:06+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "8a24af0a2e8a872fb745047180649b8418303084" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", + "reference": "8a24af0a2e8a872fb745047180649b8418303084", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v7.4.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": "2025-08-04T07:05:15+00:00" + }, + { + "name": "symfony/string", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b", + "reference": "9f209231affa85aa930a5e46e6eb03381424b30b", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.33", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v7.4.6" + }, + "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-09T09:33:46+00:00" + }, + { + "name": "symfony/translation", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "1888cf064399868af3784b9e043240f1d89d25ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/1888cf064399868af3784b9e043240f1d89d25ce", + "reference": "1888cf064399868af3784b9e043240f1d89d25ce", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5.3|^3.3" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v7.4.6" + }, + "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-17T07:53:42+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.6.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", + "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + }, + "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": "2025-07-15T13:41:35+00:00" + }, + { + "name": "symfony/twig-bridge", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "c67219ca6b79a57b64e36bbb2cd8ba741286587e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c67219ca6b79a57b64e36bbb2cd8ba741286587e", + "reference": "c67219ca6b79a57b64e36bbb2cd8ba741286587e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^3.21" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/console": "<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", + "symfony/serializer": "<6.4", + "symfony/translation": "<6.4", + "symfony/workflow": "<6.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^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", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "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.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", + "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-csrf": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/workflow": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/cssinliner-extra": "^3", + "twig/inky-extra": "^3", + "twig/markdown-extra": "^3" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Bridge\\Twig\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides integration for Twig with various Symfony components", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.7" + }, + "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-03-04T15:37:05+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e8829e02ff96a391ed0703bac9e7ff0537480b6b", + "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "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", + "twig/twig": "^3.12" + }, + "conflict": { + "symfony/framework-bundle": "<6.4", + "symfony/translation": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", + "symfony/web-link": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\TwigBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides 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.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-06T12:34:24+00:00" + }, + { + "name": "symfony/type-info", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "31f1e40cbf7851c7354281c90eb1b352c4cb8269" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/31f1e40cbf7851c7354281c90eb1b352c4cb8269", + "reference": "31f1e40cbf7851c7354281c90eb1b352c4cb8269", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.30" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.30|^2.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.4.7" + }, + "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-03-04T12:49:16+00:00" + }, + { + "name": "symfony/ux-turbo", + "version": "v2.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/ux-turbo.git", + "reference": "0deaa8abef20933d11f8bbe9899d950b4333ca1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/0deaa8abef20933d11f8bbe9899d950b4333ca1e", + "reference": "0deaa8abef20933d11f8bbe9899d950b4333ca1e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/stimulus-bundle": "^2.9.1" + }, + "conflict": { + "symfony/flex": "<1.13" + }, + "require-dev": { + "dbrekelmans/bdi": "dev-main", + "doctrine/doctrine-bundle": "^2.4.3|^3.0|^4.0", + "doctrine/orm": "^2.8|^3.0", + "php-webdriver/webdriver": "^1.15", + "phpstan/phpstan": "^2.1.17", + "symfony/asset-mapper": "^6.4|^7.0|^8.0", + "symfony/debug-bundle": "^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", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/mercure-bundle": "^0.3.7|^0.4.1", + "symfony/messenger": "^5.4|^6.0|^7.0|^8.0", + "symfony/panther": "^2.2", + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0|^8.0", + "symfony/process": "^5.4|6.3.*|^7.0|^8.0", + "symfony/property-access": "^5.4|^6.0|^7.0|^8.0", + "symfony/security-core": "^5.4|^6.0|^7.0|^8.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "symfony/ux-twig-component": "^2.21", + "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0|^8.0" + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" + } + }, + "autoload": { + "psr-4": { + "Symfony\\UX\\Turbo\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KΓ©vin Dunglas", + "email": "kevin@dunglas.fr" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Hotwire Turbo integration for Symfony", + "homepage": "https://symfony.com", + "keywords": [ + "hotwire", + "javascript", + "mercure", + "symfony-ux", + "turbo", + "turbo-stream" + ], + "support": { + "source": "https://github.com/symfony/ux-turbo/tree/v2.32.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": "2025-12-17T06:03:34+00:00" + }, + { + "name": "symfony/validator", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203", + "reference": "3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/lexer": "<1.1", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<7.0", + "symfony/expression-language": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/intl": "<6.4", + "symfony/property-info": "<6.4", + "symfony/translation": "<6.4.3|>=7.0,<7.0.3", + "symfony/var-exporter": "<6.4.25|>=7.0,<7.3.3", + "symfony/yaml": "<6.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/http-client": "^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/intl": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/string": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4.3|^7.0.3|^8.0", + "symfony/type-info": "^7.1.8", + "symfony/yaml": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Validator\\": "" + }, + "exclude-from-classmap": [ + "/Tests/", + "/Resources/bin/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to validate values", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/validator/tree/v7.4.7" + }, + "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-03-06T11:10:17+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/045321c440ac18347b136c63d2e9bf28a2dc0291", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "twig/twig": "^3.12" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v7.4.6" + }, + "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-15T10:53:20+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", + "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.4.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": "2025-09-11T10:15:23+00:00" + }, + { + "name": "symfony/web-link", + "version": "v7.4.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/9ff1f19069e3d2d341d60729392a4a6dfc45052a", + "reference": "9ff1f19069e3d2d341d60729392a4a6dfc45052a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/link": "^1.1|^2.0" + }, + "conflict": { + "symfony/http-kernel": "<6.4" + }, + "provide": { + "psr/link-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/http-kernel": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KΓ©vin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/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-01T22:13:48+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v7.4.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "da9e91746fc9c575be8b5ff466b7572d98e7e1ae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/da9e91746fc9c575be8b5ff466b7572d98e7e1ae", + "reference": "da9e91746fc9c575be8b5ff466b7572d98e7e1ae", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.2", + "symfony/config": "^7.3|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/framework-bundle": "^6.4.13|^7.1.6|^8.0", + "symfony/http-kernel": "^6.4.13|^7.1.6|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^6.4|^7.0|^8.0", + "twig/twig": "^3.15" + }, + "conflict": { + "symfony/form": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/serializer": "<7.2", + "symfony/workflow": "<7.3" + }, + "require-dev": { + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/runtime": "^6.4.13|^7.1.6|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.7" + }, + "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-03-03T13:57:00+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0|^8.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.4.6" + }, + "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-09T09:33:46+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^8.1" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2025-12-08T11:19:18+00:00" + }, + { + "name": "twig/extra-bundle", + "version": "v3.23.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/7a27e784dc56eddfef5e9295829b290ce06f1682", + "reference": "7a27e784dc56eddfef5e9295829b290ce06f1682", + "shasum": "" + }, + "require": { + "php": ">=8.1.0", + "symfony/framework-bundle": "^5.4|^6.4|^7.0|^8.0", + "symfony/twig-bundle": "^5.4|^6.4|^7.0|^8.0", + "twig/twig": "^3.2|^4.0" + }, + "require-dev": { + "league/commonmark": "^2.7", + "symfony/phpunit-bridge": "^6.4|^7.0", + "twig/cache-extra": "^3.0", + "twig/cssinliner-extra": "^3.0", + "twig/html-extra": "^3.0", + "twig/inky-extra": "^3.0", + "twig/intl-extra": "^3.0", + "twig/markdown-extra": "^3.0", + "twig/string-extra": "^3.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + } + ], + "description": "A Symfony bundle for extra Twig extensions", + "homepage": "https://twig.symfony.com", + "keywords": [ + "bundle", + "extra", + "twig" + ], + "support": { + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.23.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2025-12-18T20:46:15+00:00" + }, + { + "name": "twig/twig", + "version": "v3.23.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "shasum": "" + }, + "require": { + "php": ">=8.1.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "phpstan/phpstan": "^2.0", + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Resources/core.php", + "src/Resources/debug.php", + "src/Resources/escaper.php", + "src/Resources/string_loader.php" + ], + "psr-4": { + "Twig\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "https://twig.symfony.com", + "keywords": [ + "templating" + ], + "support": { + "issues": "https://github.com/twigphp/Twig/issues", + "source": "https://github.com/twigphp/Twig/tree/v3.23.0" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2026-01-23T21:00:41+00:00" + }, + { + "name": "webmozart/assert", + "version": "2.1.6", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/ff31ad6efc62e66e518fbab1cde3453d389bcdc8", + "reference": "ff31ad6efc62e66e518fbab1cde3453d389bcdc8", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", + "php": "^8.2" + }, + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-feature/2-0": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + }, + { + "name": "Woody Gilk", + "email": "woody.gilk@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/2.1.6" + }, + "time": "2026-02-27T10:28:38+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=8.2", + "ext-ctype": "*", + "ext-iconv": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 0000000..4e3a560 --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,16 @@ + ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], + Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true], + Symfony\UX\Turbo\TurboBundle::class => ['all' => true], + Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], +]; diff --git a/config/packages/asset_mapper.yaml b/config/packages/asset_mapper.yaml new file mode 100644 index 0000000..f7653e9 --- /dev/null +++ b/config/packages/asset_mapper.yaml @@ -0,0 +1,11 @@ +framework: + asset_mapper: + # The paths to make available to the asset mapper. + paths: + - assets/ + missing_import_mode: strict + +when@prod: + framework: + asset_mapper: + missing_import_mode: warn diff --git a/config/packages/cache.yaml b/config/packages/cache.yaml new file mode 100644 index 0000000..6899b72 --- /dev/null +++ b/config/packages/cache.yaml @@ -0,0 +1,19 @@ +framework: + cache: + # Unique name of your app: used to compute stable namespaces for cache keys. + #prefix_seed: your_vendor_name/app_name + + # The "app" cache stores to the filesystem by default. + # The data in this cache should persist between deploys. + # Other options include: + + # Redis + #app: cache.adapter.redis + #default_redis_provider: redis://localhost + + # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) + #app: cache.adapter.apcu + + # Namespaced pools use the above "app" backend by default + #pools: + #my.dedicated.cache: null diff --git a/config/packages/csrf.yaml b/config/packages/csrf.yaml new file mode 100644 index 0000000..40d4040 --- /dev/null +++ b/config/packages/csrf.yaml @@ -0,0 +1,11 @@ +# Enable stateless CSRF protection for forms and logins/logouts +framework: + form: + csrf_protection: + token_id: submit + + csrf_protection: + stateless_token_ids: + - submit + - authenticate + - logout diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml new file mode 100644 index 0000000..ad874af --- /dev/null +++ b/config/packages/debug.yaml @@ -0,0 +1,5 @@ +when@dev: + debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml new file mode 100644 index 0000000..25138b9 --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,54 @@ +doctrine: + dbal: + url: '%env(resolve:DATABASE_URL)%' + + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '16' + + profiling_collect_backtrace: '%kernel.debug%' + use_savepoints: true + orm: + auto_generate_proxy_classes: true + enable_lazy_ghost_objects: true + report_fields_where_declared: true + validate_xml_mapping: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + identity_generation_preferences: + Doctrine\DBAL\Platforms\PostgreSQLPlatform: identity + auto_mapping: true + mappings: + App: + type: attribute + is_bundle: false + dir: '%kernel.project_dir%/src/Entity' + prefix: 'App\Entity' + alias: App + controller_resolver: + auto_mapping: false + +when@test: + doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml new file mode 100644 index 0000000..29231d9 --- /dev/null +++ b/config/packages/doctrine_migrations.yaml @@ -0,0 +1,6 @@ +doctrine_migrations: + migrations_paths: + # namespace is arbitrary but should be different from App\Migrations + # as migrations classes should NOT be autoloaded + 'DoctrineMigrations': '%kernel.project_dir%/migrations' + enable_profiler: false diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 0000000..7e1ee1f --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,15 @@ +# see https://symfony.com/doc/current/reference/configuration/framework.html +framework: + secret: '%env(APP_SECRET)%' + + # Note that the session will be started ONLY if you read or write from it. + session: true + + #esi: true + #fragments: true + +when@test: + framework: + test: true + session: + storage_factory_id: session.storage.factory.mock_file diff --git a/config/packages/mailer.yaml b/config/packages/mailer.yaml new file mode 100644 index 0000000..56a650d --- /dev/null +++ b/config/packages/mailer.yaml @@ -0,0 +1,3 @@ +framework: + mailer: + dsn: '%env(MAILER_DSN)%' diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml new file mode 100644 index 0000000..55f252d --- /dev/null +++ b/config/packages/messenger.yaml @@ -0,0 +1,26 @@ +framework: + messenger: + failure_transport: failed + + transports: + # https://symfony.com/doc/current/messenger.html#transport-configuration + async: + dsn: '%env(MESSENGER_TRANSPORT_DSN)%' + retry_strategy: + max_retries: 3 + multiplier: 2 + failed: 'doctrine://default?queue_name=failed' + # sync: 'sync://' + + default_bus: messenger.bus.default + + buses: + messenger.bus.default: [] + + routing: + Symfony\Component\Mailer\Messenger\SendEmailMessage: async + Symfony\Component\Notifier\Message\ChatMessage: async + Symfony\Component\Notifier\Message\SmsMessage: async + + # Route your messages to the transports + # 'App\Message\YourMessage': async diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml new file mode 100644 index 0000000..bb59708 --- /dev/null +++ b/config/packages/monolog.yaml @@ -0,0 +1,55 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] + +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!deprecation"] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr + formatter: monolog.formatter.json diff --git a/config/packages/notifier.yaml b/config/packages/notifier.yaml new file mode 100644 index 0000000..d02f986 --- /dev/null +++ b/config/packages/notifier.yaml @@ -0,0 +1,12 @@ +framework: + notifier: + chatter_transports: + texter_transports: + channel_policy: + # use chat/slack, chat/telegram, sms/twilio or sms/nexmo + urgent: ['email'] + high: ['email'] + medium: ['email'] + low: ['email'] + admin_recipients: + - { email: admin@example.com } diff --git a/config/packages/property_info.yaml b/config/packages/property_info.yaml new file mode 100644 index 0000000..dd31b9d --- /dev/null +++ b/config/packages/property_info.yaml @@ -0,0 +1,3 @@ +framework: + property_info: + with_constructor_extractor: true diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 0000000..0f34f87 --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,10 @@ +framework: + router: + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + default_uri: '%env(DEFAULT_URI)%' + +when@prod: + framework: + router: + strict_requirements: null diff --git a/config/packages/security.yaml b/config/packages/security.yaml new file mode 100644 index 0000000..f7cf639 --- /dev/null +++ b/config/packages/security.yaml @@ -0,0 +1,53 @@ +security: + # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords + password_hashers: + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' + + # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider + providers: + # used to reload user from session & other features (e.g. switch_user) + app_user_provider: + entity: + class: App\Entity\User + property: pseudo + + firewalls: + dev: + # Ensure dev tools and static assets are always allowed + pattern: ^/(_profiler|_wdt|assets|build)/ + security: false + main: + provider: app_user_provider + form_login: + login_path: app_login # route GET (affichage formulaire) + check_path: app_login # route POST (traitement) + username_parameter: _username + password_parameter: _password + default_target_path: app_accueil + enable_csrf: true + logout: + path: app_logout + # where to redirect after logout + # target: app_any_route + + # Activate different ways to authenticate: + # https://symfony.com/doc/current/security.html#the-firewall + + # https://symfony.com/doc/current/security/impersonating_user.html + # switch_user: true + + # Note: Only the *first* matching rule is applied + access_control: + # - { path: ^/admin, roles: ROLE_ADMIN } + # - { path: ^/profile, roles: ROLE_USER } + +when@test: + security: + password_hashers: + # Password hashers are resource-intensive by design to ensure security. + # In tests, it's safe to reduce their cost to improve performance. + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: + algorithm: auto + cost: 4 # Lowest possible value for bcrypt + time_cost: 3 # Lowest possible value for argon + memory_cost: 10 # Lowest possible value for argon diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml new file mode 100644 index 0000000..490bfc2 --- /dev/null +++ b/config/packages/translation.yaml @@ -0,0 +1,5 @@ +framework: + default_locale: en + translator: + default_path: '%kernel.project_dir%/translations' + providers: diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml new file mode 100644 index 0000000..3f795d9 --- /dev/null +++ b/config/packages/twig.yaml @@ -0,0 +1,6 @@ +twig: + file_name_pattern: '*.twig' + +when@test: + twig: + strict_variables: true diff --git a/config/packages/ux_turbo.yaml b/config/packages/ux_turbo.yaml new file mode 100644 index 0000000..c2a6a44 --- /dev/null +++ b/config/packages/ux_turbo.yaml @@ -0,0 +1,4 @@ +# Enable stateless CSRF protection for forms and logins/logouts +framework: + csrf_protection: + check_header: true diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml new file mode 100644 index 0000000..dd47a6a --- /dev/null +++ b/config/packages/validator.yaml @@ -0,0 +1,11 @@ +framework: + validation: + # Enables validator auto-mapping support. + # For instance, basic validation constraints will be inferred from Doctrine's metadata. + #auto_mapping: + # App\Entity\: [] + +when@test: + framework: + validation: + not_compromised_password: false diff --git a/config/packages/web_profiler.yaml b/config/packages/web_profiler.yaml new file mode 100644 index 0000000..0eac3c9 --- /dev/null +++ b/config/packages/web_profiler.yaml @@ -0,0 +1,13 @@ +when@dev: + web_profiler: + toolbar: true + + framework: + profiler: + collect_serializer_data: true + +when@test: + framework: + profiler: + collect: false + collect_serializer_data: true diff --git a/config/preload.php b/config/preload.php new file mode 100644 index 0000000..5ebcdb2 --- /dev/null +++ b/config/preload.php @@ -0,0 +1,5 @@ + [ + * 'App\\' => [ + * 'resource' => '../src/', + * ], + * ], + * ]); + * ``` + * + * @psalm-type ImportsConfig = list + * @psalm-type ParametersConfig = array|Param|null>|Param|null> + * @psalm-type ArgumentsType = list|array + * @psalm-type CallType = array|array{0:string, 1?:ArgumentsType, 2?:bool}|array{method:string, arguments?:ArgumentsType, returns_clone?:bool} + * @psalm-type TagsType = list>> // arrays inside the list must have only one element, with the tag name as the key + * @psalm-type CallbackType = string|array{0:string|ReferenceConfigurator,1:string}|\Closure|ReferenceConfigurator|ExpressionConfigurator + * @psalm-type DeprecationType = array{package: string, version: string, message?: string} + * @psalm-type DefaultsType = array{ + * public?: bool, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * } + * @psalm-type InstanceofType = array{ + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type DefinitionType = array{ + * class?: string, + * file?: string, + * parent?: string, + * shared?: bool, + * synthetic?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * configurator?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * decorates?: string, + * decoration_inner_name?: string, + * decoration_priority?: int, + * decoration_on_invalid?: 'exception'|'ignore'|null, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * from_callable?: CallbackType, + * } + * @psalm-type AliasType = string|array{ + * alias: string, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type PrototypeType = array{ + * resource: string, + * namespace?: string, + * exclude?: string|list, + * parent?: string, + * shared?: bool, + * lazy?: bool|string, + * public?: bool, + * abstract?: bool, + * deprecated?: DeprecationType, + * factory?: CallbackType, + * arguments?: ArgumentsType, + * properties?: array, + * configurator?: CallbackType, + * calls?: list, + * tags?: TagsType, + * resource_tags?: TagsType, + * autowire?: bool, + * autoconfigure?: bool, + * bind?: array, + * constructor?: string, + * } + * @psalm-type StackType = array{ + * stack: list>, + * public?: bool, + * deprecated?: DeprecationType, + * } + * @psalm-type ServicesConfig = array{ + * _defaults?: DefaultsType, + * _instanceof?: InstanceofType, + * ... + * } + * @psalm-type ExtensionType = array + * @psalm-type FrameworkConfig = array{ + * secret?: scalar|Param|null, + * http_method_override?: bool|Param, // Set true to enable support for the '_method' request parameter to determine the intended HTTP method on POST requests. // Default: false + * allowed_http_method_override?: 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|Param|null, // Default: "error_controller" + * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|Param|null, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|Param|null, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|Param|null, // The name of the cookie to use when using stateless protection. // Default: "csrf-token" + * }, + * form?: bool|array{ // Form configuration + * enabled?: bool|Param, // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|Param|null, // Default: null + * token_id?: scalar|Param|null, // Default: null + * field_name?: scalar|Param|null, // Default: "_token" + * field_attr?: array, + * }, + * }, + * http_cache?: bool|array{ // HTTP cache configuration + * enabled?: bool|Param, // Default: false + * debug?: bool|Param, // Default: "%kernel.debug%" + * trace_level?: "none"|"short"|"full"|Param, + * trace_header?: scalar|Param|null, + * default_ttl?: int|Param, + * private_headers?: list, + * skip_response_headers?: list, + * allow_reload?: bool|Param, + * allow_revalidate?: bool|Param, + * stale_while_revalidate?: int|Param, + * stale_if_error?: int|Param, + * terminate_on_cache_hit?: bool|Param, + * }, + * esi?: bool|array{ // ESI configuration + * enabled?: bool|Param, // Default: false + * }, + * ssi?: bool|array{ // SSI configuration + * enabled?: bool|Param, // Default: false + * }, + * fragments?: bool|array{ // Fragments configuration + * enabled?: bool|Param, // Default: false + * hinclude_default_template?: scalar|Param|null, // Default: null + * path?: scalar|Param|null, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool|Param, // Default: false + * collect?: bool|Param, // Default: true + * collect_parameter?: scalar|Param|null, // The name of the parameter to use to enable or disable collection on a per request basis. // Default: null + * only_exceptions?: bool|Param, // Default: false + * only_main_requests?: bool|Param, // Default: false + * dsn?: scalar|Param|null, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: bool|Param, // Enables the serializer data collector and profiler panel. // Default: false + * }, + * workflows?: bool|array{ + * enabled?: bool|Param, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|Param|null, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions?: list, + * to?: list, + * weight?: int|Param, // Default: 1 + * metadata?: array, + * }>, + * metadata?: array, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool|Param, // Default: false + * resource?: scalar|Param|null, + * type?: scalar|Param|null, + * cache_dir?: scalar|Param|null, // Deprecated: Setting the "framework.router.cache_dir.cache_dir" configuration option is deprecated. It will be removed in version 8.0. // Default: "%kernel.build_dir%" + * default_uri?: scalar|Param|null, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|Param|null, // Default: 80 + * https_port?: scalar|Param|null, // Default: 443 + * strict_requirements?: scalar|Param|null, // set to true to throw an exception when a parameter does not match the requirements set to false to disable exceptions when a parameter does not match the requirements (and return null instead) set to null to disable parameter checks against requirements 'true' is the preferred configuration in development mode, while 'false' or 'null' might be preferred in production // Default: true + * utf8?: bool|Param, // Default: true + * }, + * session?: bool|array{ // Session configuration + * enabled?: bool|Param, // Default: false + * storage_factory_id?: scalar|Param|null, // Default: "session.storage.factory.native" + * handler_id?: scalar|Param|null, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|Param|null, + * cookie_lifetime?: scalar|Param|null, + * cookie_path?: scalar|Param|null, + * cookie_domain?: scalar|Param|null, + * cookie_secure?: true|false|"auto"|Param, // Default: "auto" + * cookie_httponly?: bool|Param, // Default: true + * cookie_samesite?: null|"lax"|"strict"|"none"|Param, // Default: "lax" + * use_cookies?: bool|Param, + * gc_divisor?: scalar|Param|null, + * gc_probability?: scalar|Param|null, + * gc_maxlifetime?: scalar|Param|null, + * save_path?: scalar|Param|null, // Defaults to "%kernel.cache_dir%/sessions" if the "handler_id" option is not null. + * metadata_update_threshold?: int|Param, // Seconds to wait between 2 session metadata updates. // Default: 0 + * sid_length?: int|Param, // Deprecated: Setting the "framework.session.sid_length.sid_length" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * sid_bits_per_character?: int|Param, // Deprecated: Setting the "framework.session.sid_bits_per_character.sid_bits_per_character" configuration option is deprecated. It will be removed in version 8.0. No alternative is provided as PHP 8.4 has deprecated the related option. + * }, + * request?: bool|array{ // Request configuration + * enabled?: bool|Param, // Default: false + * formats?: array>, + * }, + * assets?: bool|array{ // Assets configuration + * enabled?: bool|Param, // Default: true + * strict_mode?: bool|Param, // Throw an exception if an entry is missing from the manifest.json. // Default: false + * version_strategy?: scalar|Param|null, // Default: null + * version?: scalar|Param|null, // Default: null + * version_format?: scalar|Param|null, // Default: "%%s?%%s" + * json_manifest_path?: scalar|Param|null, // Default: null + * base_path?: scalar|Param|null, // Default: "" + * base_urls?: list, + * packages?: array, + * }>, + * }, + * asset_mapper?: bool|array{ // Asset Mapper configuration + * 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|Param, // Default: false + * formats?: list, + * extensions?: list, + * }, + * }, + * translator?: bool|array{ // Translator configuration + * 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|Param, // Default: false + * accents?: bool|Param, // Default: true + * expansion_factor?: float|Param, // Default: 1.0 + * brackets?: bool|Param, // Default: true + * parse_html?: bool|Param, // Default: false + * localizable_html_attributes?: list, + * }, + * providers?: array, + * locales?: list, + * }>, + * globals?: array, + * domain?: string|Param, + * }>, + * }, + * validation?: bool|array{ // Validation configuration + * enabled?: bool|Param, // Default: true + * cache?: scalar|Param|null, // Deprecated: Setting the "framework.validation.cache.cache" configuration option is deprecated. It will be removed in version 8.0. + * enable_attributes?: bool|Param, // Default: true + * static_method?: list, + * translation_domain?: scalar|Param|null, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|"loose"|Param, // Default: "html5" + * mapping?: array{ + * paths?: list, + * }, + * not_compromised_password?: bool|array{ + * enabled?: bool|Param, // When disabled, compromised passwords will be accepted as valid. // Default: true + * endpoint?: scalar|Param|null, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool|Param, // Default: false + * auto_mapping?: array, + * }>, + * }, + * annotations?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool|Param, // Default: true + * enable_attributes?: bool|Param, // Default: true + * name_converter?: scalar|Param|null, + * circular_reference_handler?: scalar|Param|null, + * max_depth_handler?: scalar|Param|null, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: array, + * named_serializers?: array, + * include_built_in_normalizers?: bool|Param, // Whether to include the built-in normalizers // Default: true + * include_built_in_encoders?: bool|Param, // Whether to include the built-in encoders // Default: true + * }>, + * }, + * property_access?: bool|array{ // Property access configuration + * enabled?: bool|Param, // Default: true + * magic_call?: bool|Param, // Default: false + * magic_get?: bool|Param, // Default: true + * magic_set?: bool|Param, // Default: true + * throw_exception_on_invalid_index?: bool|Param, // Default: false + * throw_exception_on_invalid_property_path?: bool|Param, // Default: true + * }, + * type_info?: bool|array{ // Type info configuration + * enabled?: bool|Param, // Default: true + * aliases?: array, + * }, + * property_info?: bool|array{ // Property info configuration + * enabled?: bool|Param, // Default: true + * with_constructor_extractor?: bool|Param, // Registers the constructor extractor. + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|Param|null, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|Param|null, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|Param|null, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|Param|null, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|Param|null, + * default_redis_provider?: scalar|Param|null, // Default: "redis://localhost" + * default_valkey_provider?: scalar|Param|null, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|Param|null, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|Param|null, // Default: "database_connection" + * default_pdo_provider?: scalar|Param|null, // Default: null + * pools?: array, + * tags?: scalar|Param|null, // Default: null + * public?: bool|Param, // Default: false + * default_lifetime?: scalar|Param|null, // Default lifetime of the pool. + * provider?: scalar|Param|null, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|Param|null, + * clearer?: scalar|Param|null, + * }>, + * }, + * php_errors?: array{ // PHP errors handling configuration + * log?: mixed, // Use the application logger instead of the PHP logger for logging PHP errors. // Default: true + * throw?: bool|Param, // Throw PHP errors as \ErrorException instances. // Default: true + * }, + * exceptions?: array, + * web_link?: bool|array{ // Web links configuration + * enabled?: bool|Param, // Default: true + * }, + * lock?: bool|string|array{ // Lock configuration + * enabled?: bool|Param, // Default: false + * resources?: array>, + * }, + * semaphore?: bool|string|array{ // Semaphore configuration + * enabled?: bool|Param, // Default: false + * resources?: array, + * }, + * messenger?: bool|array{ // Messenger configuration + * enabled?: bool|Param, // Default: true + * routing?: array, + * }>, + * serializer?: array{ + * default_serializer?: scalar|Param|null, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|Param|null, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|Param|null, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|Param|null, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|Param|null, // Default: null + * buses?: array, + * }>, + * }>, + * }, + * scheduler?: bool|array{ // Scheduler configuration + * enabled?: bool|Param, // Default: false + * }, + * disallow_search_engine_index?: bool|Param, // Enabled by default when debug is enabled. // Default: true + * http_client?: bool|array{ // HTTP Client configuration + * enabled?: bool|Param, // Default: true + * max_host_connections?: int|Param, // The maximum number of connections to a single host. + * default_options?: array{ + * headers?: array, + * vars?: array, + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }, + * mock_response_factory?: scalar|Param|null, // The id of the service that should generate mock responses. It should be either an invokable or an iterable. + * scoped_clients?: array, + * headers?: array, + * max_redirects?: int|Param, // The maximum number of redirects to follow. + * http_version?: scalar|Param|null, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|Param|null, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|Param|null, // A comma separated list of hosts that do not require a proxy to be reached. + * timeout?: float|Param, // The idle timeout, defaults to the "default_socket_timeout" ini parameter. + * max_duration?: float|Param, // The maximum execution time for the request+response as a whole. + * bindto?: scalar|Param|null, // A network interface name, IP address, a host name or a UNIX socket to bind to. + * verify_peer?: bool|Param, // Indicates if the peer should be verified in a TLS context. + * verify_host?: bool|Param, // Indicates if the host should exist as a certificate common name. + * cafile?: scalar|Param|null, // A certificate authority file. + * capath?: scalar|Param|null, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|Param|null, // A PEM formatted certificate file. + * local_pk?: scalar|Param|null, // A private key file. + * passphrase?: scalar|Param|null, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|Param|null, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|Param|null, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|Param|null, // Rate limiter name to use for throttling requests. // Default: null + * caching?: bool|array{ // Caching configuration. + * enabled?: bool|Param, // Default: false + * cache_pool?: string|Param, // The taggable cache pool to use for storing the responses. // Default: "cache.http_client" + * shared?: bool|Param, // Indicates whether the cache is shared (public) or private. // Default: true + * max_ttl?: int|Param, // The maximum TTL (in seconds) allowed for cached responses. Null means no cap. // Default: null + * }, + * retry_failed?: bool|array{ + * enabled?: bool|Param, // Default: false + * retry_strategy?: scalar|Param|null, // service id to override the retry strategy. // Default: null + * http_codes?: array, + * }>, + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: delay * (multiple ^ retries). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness in percent (between 0 and 1) to apply to the delay. // Default: 0.1 + * }, + * }>, + * }, + * mailer?: bool|array{ // Mailer configuration + * enabled?: bool|Param, // Default: true + * message_bus?: scalar|Param|null, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|Param|null, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|Param|null, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|Param|null, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|Param|null, // Default: "" + * select?: scalar|Param|null, // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|Param|null, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|Param|null, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|Param|null, // The private key passphrase // Default: null + * extra_certificates?: scalar|Param|null, // Default: null + * sign_options?: int|Param, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool|Param, // Default: false + * repository?: scalar|Param|null, // S/MIME certificate repository service. This service shall implement the `Symfony\Component\Mailer\EventListener\SmimeCertificateRepositoryInterface`. // Default: "" + * cipher?: int|Param, // A set of algorithms used to encrypt the message // Default: null + * }, + * }, + * secrets?: bool|array{ + * enabled?: bool|Param, // Default: true + * vault_directory?: scalar|Param|null, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|Param|null, // Default: "%kernel.project_dir%/.env.%kernel.environment%.local" + * decryption_env_var?: scalar|Param|null, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool|Param, // Default: 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|Param, // Default: false + * limiters?: array, + * limit?: int|Param, // The maximum allowed hits in a fixed interval or burst. + * interval?: scalar|Param|null, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|Param|null, // Configures the rate interval. The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * amount?: int|Param, // Amount of tokens to add each interval. // Default: 1 + * }, + * }>, + * }, + * uid?: bool|array{ // Uid configuration + * enabled?: bool|Param, // Default: false + * default_uuid_version?: 7|6|4|1|Param, // Default: 7 + * name_based_uuid_version?: 5|3|Param, // Default: 5 + * name_based_uuid_namespace?: scalar|Param|null, + * time_based_uuid_version?: 7|6|1|Param, // Default: 7 + * time_based_uuid_node?: scalar|Param|null, + * }, + * html_sanitizer?: bool|array{ // HtmlSanitizer configuration + * enabled?: bool|Param, // Default: false + * sanitizers?: array, + * block_elements?: list, + * drop_elements?: list, + * allow_attributes?: array, + * drop_attributes?: array, + * force_attributes?: array>, + * force_https_urls?: bool|Param, // Transforms URLs using the HTTP scheme to use the HTTPS scheme instead. // Default: false + * allowed_link_schemes?: 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|Param, // Default: false + * message_bus?: scalar|Param|null, // The message bus to use. // Default: "messenger.default_bus" + * routing?: array, + * }, + * remote-event?: bool|array{ // RemoteEvent configuration + * enabled?: bool|Param, // Default: false + * }, + * json_streamer?: bool|array{ // JSON streamer configuration + * enabled?: bool|Param, // Default: false + * }, + * } + * @psalm-type DoctrineConfig = array{ + * dbal?: array{ + * default_connection?: scalar|Param|null, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|Param|null, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|Param|null, + * slaves?: array, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|Param|null, + * auto_generate_proxy_classes?: scalar|Param|null, // Auto generate mode possible values are: "NEVER", "ALWAYS", "FILE_NOT_EXISTS", "EVAL", "FILE_NOT_EXISTS_OR_CHANGED", this option is ignored when the "enable_native_lazy_objects" option is true // Default: false + * enable_lazy_ghost_objects?: bool|Param, // Enables the new implementation of proxies based on lazy ghosts instead of using the legacy implementation // Default: true + * enable_native_lazy_objects?: bool|Param, // Enables the new native implementation of PHP lazy objects instead of generated proxies // Default: false + * proxy_dir?: scalar|Param|null, // Configures the path where generated proxy classes are saved when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "%kernel.build_dir%/doctrine/orm/Proxies" + * proxy_namespace?: scalar|Param|null, // Defines the root namespace for generated proxy classes when using non-native lazy objects, this option is ignored when the "enable_native_lazy_objects" option is true // Default: "Proxies" + * controller_resolver?: bool|array{ + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|Param|null, // Set to false to disable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: null + * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|Param|null, + * class_metadata_factory_name?: scalar|Param|null, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|Param|null, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|Param|null, // Default: false + * naming_strategy?: scalar|Param|null, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|Param|null, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|Param|null, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|Param|null, // Default: null + * fetch_mode_subselect_batch_size?: scalar|Param|null, + * repository_factory?: scalar|Param|null, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * report_fields_where_declared?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.16 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/10455. // Default: true + * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ + * type?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * pool?: scalar|Param|null, + * }, + * region_lock_lifetime?: scalar|Param|null, // Default: 60 + * log_enabled?: bool|Param, // Default: true + * region_lifetime?: scalar|Param|null, // Default: 3600 + * enabled?: bool|Param, // Default: true + * factory?: scalar|Param|null, + * regions?: array, + * loggers?: array, + * }, + * hydrators?: array, + * mappings?: array, + * dql?: array{ + * string_functions?: array, + * numeric_functions?: array, + * datetime_functions?: array, + * }, + * filters?: array, + * }>, + * identity_generation_preferences?: array, + * }>, + * resolve_target_entities?: array, + * }, + * } + * @psalm-type DoctrineMigrationsConfig = array{ + * enable_service_migrations?: bool|Param, // Whether to enable fetching migrations from the service container. // Default: false + * migrations_paths?: array, + * services?: array, + * factories?: array, + * storage?: array{ // Storage to use for migration status metadata. + * table_storage?: array{ // The default metadata storage, implemented as a table in the database. + * table_name?: scalar|Param|null, // Default: null + * version_column_name?: scalar|Param|null, // Default: null + * version_column_length?: scalar|Param|null, // Default: null + * executed_at_column_name?: scalar|Param|null, // Default: null + * execution_time_column_name?: scalar|Param|null, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|Param|null, // Connection name to use for the migrations database. // Default: null + * em?: scalar|Param|null, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|Param|null, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|Param|null, // Adds an extra check in the generated migrations to allow execution only on the same platform as they were initially generated on. // Default: true + * custom_template?: scalar|Param|null, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|Param|null, // Organize migrations mode. Possible values are: "BY_YEAR", "BY_YEAR_AND_MONTH", false // Default: false + * enable_profiler?: bool|Param, // Whether or not to enable the profiler collector to calculate and visualize migration status. This adds some queries overhead. // Default: false + * transactional?: bool|Param, // Whether or not to wrap migrations in a single transaction. // Default: true + * } + * @psalm-type DebugConfig = array{ + * max_items?: int|Param, // Max number of displayed items past the first level, -1 means no limit. // Default: 2500 + * min_depth?: int|Param, // Minimum tree depth to clone all the items, 1 is default. // Default: 1 + * max_string_length?: int|Param, // Max length of displayed strings, -1 means no limit. // Default: -1 + * dump_destination?: scalar|Param|null, // A stream URL where dumps should be written to. // Default: null + * theme?: "dark"|"light"|Param, // Changes the color of the dump() output when rendered directly on the templating. "dark" (default) or "light". // Default: "dark" + * } + * @psalm-type TwigConfig = array{ + * form_themes?: list, + * globals?: array, + * autoescape_service?: scalar|Param|null, // Default: null + * autoescape_service_method?: scalar|Param|null, // Default: null + * base_template_class?: scalar|Param|null, // Deprecated: The child node "base_template_class" at path "twig.base_template_class" is deprecated. + * cache?: scalar|Param|null, // Default: true + * charset?: scalar|Param|null, // Default: "%kernel.charset%" + * debug?: bool|Param, // Default: "%kernel.debug%" + * strict_variables?: bool|Param, // Default: "%kernel.debug%" + * auto_reload?: scalar|Param|null, + * optimizations?: int|Param, + * default_path?: scalar|Param|null, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. + * format?: scalar|Param|null, // Default: "F j, Y H:i" + * interval_format?: scalar|Param|null, // Default: "%d days" + * timezone?: scalar|Param|null, // The timezone used when formatting dates, when set to null, the timezone returned by date_default_timezone_get() is used. // Default: null + * }, + * number_format?: array{ // The default format options for the number_format filter. + * decimals?: int|Param, // Default: 0 + * decimal_point?: scalar|Param|null, // Default: "." + * thousands_separator?: scalar|Param|null, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|Param|null, // A service implementing the "Symfony\Component\Mime\HtmlToTextConverter\HtmlToTextConverterInterface". // Default: null + * }, + * } + * @psalm-type WebProfilerConfig = array{ + * toolbar?: bool|array{ // Profiler toolbar configuration + * enabled?: bool|Param, // Default: false + * ajax_replace?: bool|Param, // Replace toolbar on AJAX requests // Default: false + * }, + * intercept_redirects?: bool|Param, // Default: false + * excluded_ajax_paths?: scalar|Param|null, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type StimulusConfig = array{ + * controller_paths?: list, + * controllers_json?: scalar|Param|null, // Default: "%kernel.project_dir%/assets/controllers.json" + * } + * @psalm-type TurboConfig = array{ + * broadcast?: bool|array{ + * enabled?: bool|Param, // Default: true + * entity_template_prefixes?: list, + * doctrine_orm?: bool|array{ // Enable the Doctrine ORM integration + * enabled?: bool|Param, // Default: true + * }, + * }, + * default_transport?: scalar|Param|null, // Default: "default" + * } + * @psalm-type TwigExtraConfig = array{ + * cache?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * html?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * markdown?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * intl?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * cssinliner?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * inky?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * string?: bool|array{ + * enabled?: bool|Param, // Default: false + * }, + * commonmark?: array{ + * renderer?: array{ // Array of options for rendering HTML. + * block_separator?: scalar|Param|null, + * inner_separator?: scalar|Param|null, + * soft_break?: scalar|Param|null, + * }, + * 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|Param, // Default: 255 + * unique?: mixed, + * }, + * commonmark?: array{ // Array of options for configuring the CommonMark core extension. + * 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|Param|null, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" + * hide_user_not_found?: bool|Param, // Deprecated: The "hide_user_not_found" option is deprecated and will be removed in 8.0. Use the "expose_security_errors" option instead. + * expose_security_errors?: \Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::None|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::AccountStatus|\Symfony\Component\Security\Http\Authentication\ExposeSecurityLevel::All|Param, // Default: "none" + * erase_credentials?: bool|Param, // Default: true + * access_decision_manager?: array{ + * strategy?: "affirmative"|"consensus"|"unanimous"|"priority"|Param, + * service?: scalar|Param|null, + * strategy_service?: scalar|Param|null, + * allow_if_all_abstain?: bool|Param, // Default: false + * allow_if_equal_granted_denied?: bool|Param, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|Param|null, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|Param|null, // Default: 40 + * ignore_case?: bool|Param, // Default: false + * encode_as_base64?: bool|Param, // Default: true + * iterations?: scalar|Param|null, // Default: 5000 + * cost?: int|Param, // Default: null + * memory_cost?: scalar|Param|null, // Default: null + * time_cost?: scalar|Param|null, // Default: null + * id?: scalar|Param|null, + * }>, + * providers?: array, + * }, + * entity?: array{ + * class?: scalar|Param|null, // The full entity class name of your user class. + * property?: scalar|Param|null, // Default: null + * manager_name?: scalar|Param|null, // Default: null + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service?: scalar|Param|null, + * base_dn?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: null + * search_password?: scalar|Param|null, // Default: null + * extra_fields?: list, + * default_roles?: 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 + * }, + * }>, + * firewalls?: array, + * security?: bool|Param, // Default: true + * user_checker?: scalar|Param|null, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|Param|null, + * access_denied_url?: scalar|Param|null, + * access_denied_handler?: scalar|Param|null, + * entry_point?: scalar|Param|null, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|Param|null, + * stateless?: bool|Param, // Default: false + * lazy?: bool|Param, // Default: false + * context?: scalar|Param|null, + * logout?: array{ + * enable_csrf?: bool|Param|null, // Default: null + * csrf_token_id?: scalar|Param|null, // Default: "logout" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_manager?: scalar|Param|null, + * path?: scalar|Param|null, // Default: "/logout" + * target?: scalar|Param|null, // Default: "/" + * invalidate_session?: bool|Param, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|Param|null, + * parameter?: scalar|Param|null, // Default: "_switch_user" + * role?: scalar|Param|null, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|Param|null, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|Param|null, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int|Param, // Default: 5 + * interval?: scalar|Param|null, // Default: "1 minute" + * lock_factory?: scalar|Param|null, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * x509?: array{ + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|Param|null, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|Param|null, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|Param|null, + * user?: scalar|Param|null, // Default: "REMOTE_USER" + * }, + * login_link?: array{ + * check_route?: scalar|Param|null, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|Param|null, // If true, only HTTP POST requests to "check_route" will be handled by the authenticator. // Default: false + * signature_properties?: list, + * lifetime?: int|Param, // The lifetime of the login link in seconds. // Default: 600 + * max_uses?: int|Param, // Max number of times a login link can be used - null means unlimited within lifetime. // Default: null + * used_link_cache?: scalar|Param|null, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|Param|null, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|Param|null, // The user provider to load users from. + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * login_path?: scalar|Param|null, // Default: "/login" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_parameter?: scalar|Param|null, // Default: "_username" + * password_parameter?: scalar|Param|null, // Default: "_password" + * csrf_parameter?: scalar|Param|null, // Default: "_csrf_token" + * csrf_token_id?: scalar|Param|null, // Default: "authenticate" + * enable_csrf?: bool|Param, // Default: false + * post_only?: bool|Param, // Default: true + * form_only?: bool|Param, // Default: false + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|Param|null, // Default: "/" + * target_path_parameter?: scalar|Param|null, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|Param|null, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|Param|null, // Default: "_failure_path" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * check_path?: scalar|Param|null, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|Param|null, // Default: "/login" + * username_path?: scalar|Param|null, // Default: "username" + * password_path?: scalar|Param|null, // Default: "password" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|Param|null, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|Param|null, + * failure_handler?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: null + * token_extractors?: list, + * token_handler?: string|array{ + * id?: scalar|Param|null, + * oidc_user_info?: string|array{ + * base_uri?: scalar|Param|null, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|Param|null, // HttpClient service id to use to call the OIDC server. + * }, + * oidc?: array{ + * discovery?: array{ // Enable the OIDC discovery. + * base_uri?: list, + * cache?: array{ + * id?: scalar|Param|null, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|Param|null, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience?: scalar|Param|null, // Audience set in the token, for validation purpose. + * issuers?: list, + * algorithm?: array, + * algorithms?: list, + * key?: scalar|Param|null, // Deprecated: The "key" option is deprecated and will be removed in 8.0. Use the "keyset" option instead. // JSON-encoded JWK used to sign the token (must contain a "kty" key). + * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to sign the token (must contain a list of valid public keys). + * encryption?: bool|array{ + * enabled?: bool|Param, // Default: false + * enforce?: bool|Param, // When enabled, the token shall be encrypted. // Default: false + * algorithms?: list, + * keyset?: scalar|Param|null, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url?: scalar|Param|null, // CAS server validation URL + * prefix?: scalar|Param|null, // CAS prefix // Default: "cas" + * http_client?: scalar|Param|null, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|Param|null, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|Param|null, + * realm?: scalar|Param|null, // Default: "Secured Area" + * service?: scalar|Param|null, // Default: "ldap" + * dn_string?: scalar|Param|null, // Default: "{user_identifier}" + * query_string?: scalar|Param|null, + * search_dn?: scalar|Param|null, // Default: "" + * search_password?: scalar|Param|null, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|Param|null, // Default: "%kernel.secret%" + * service?: scalar|Param|null, + * user_providers?: list, + * catch_exceptions?: bool|Param, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|Param|null, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool|Param, // Default: false + * connection?: scalar|Param|null, // Default: null + * }, + * }, + * token_verifier?: scalar|Param|null, // The service ID of a custom rememberme token verifier. + * name?: scalar|Param|null, // Default: "REMEMBERME" + * lifetime?: int|Param, // Default: 31536000 + * path?: scalar|Param|null, // Default: "/" + * domain?: scalar|Param|null, // Default: null + * secure?: true|false|"auto"|Param, // Default: false + * httponly?: bool|Param, // Default: true + * samesite?: null|"lax"|"strict"|"none"|Param, // Default: null + * always_remember_me?: bool|Param, // Default: false + * remember_me_parameter?: scalar|Param|null, // Default: "_remember_me" + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|Param|null, // Default: null + * methods?: list, + * allow_if?: scalar|Param|null, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|Param|null, // Default: true + * channels?: list, + * handlers?: array, + * }>, + * 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|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|Param|null, + * nested?: bool|Param, // Default: false + * publisher?: string|array{ + * id?: scalar|Param|null, + * hostname?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 12201 + * chunk_size?: scalar|Param|null, // Default: 1420 + * encoder?: "json"|"compressed_json"|Param, + * }, + * mongodb?: string|array{ + * id?: scalar|Param|null, // ID of a MongoDB\Client service + * uri?: scalar|Param|null, + * username?: scalar|Param|null, + * password?: scalar|Param|null, + * database?: scalar|Param|null, // Default: "monolog" + * collection?: scalar|Param|null, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|Param|null, + * hosts?: list, + * host?: scalar|Param|null, + * port?: scalar|Param|null, // Default: 9200 + * transport?: scalar|Param|null, // Default: "Http" + * user?: scalar|Param|null, // Default: null + * password?: scalar|Param|null, // Default: null + * }, + * index?: scalar|Param|null, // Default: "monolog" + * document_type?: scalar|Param|null, // Default: "logs" + * ignore_error?: scalar|Param|null, // Default: false + * redis?: string|array{ + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * password?: scalar|Param|null, // Default: null + * port?: scalar|Param|null, // Default: 6379 + * database?: scalar|Param|null, // Default: 0 + * key_name?: scalar|Param|null, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|Param|null, + * host?: scalar|Param|null, + * }, + * from_email?: scalar|Param|null, + * to_email?: list, + * subject?: scalar|Param|null, + * content_type?: scalar|Param|null, // Default: null + * headers?: list, + * mailer?: scalar|Param|null, // Default: null + * email_prototype?: string|array{ + * id?: scalar|Param|null, + * method?: scalar|Param|null, // Default: null + * }, + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|Param|null, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|Param|null, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|Param|null, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|Param|null, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|Param|null, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|Param|null, + * elements?: list, + * }, + * }>, + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|Param|null, // Default: "App" + * generate_final_classes?: bool|Param, // Default: true + * generate_final_entities?: bool|Param, // Default: false + * } + * @psalm-type ConfigType = array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig?: TwigConfig, + * stimulus?: StimulusConfig, + * turbo?: TurboConfig, + * twig_extra?: TwigExtraConfig, + * security?: SecurityConfig, + * monolog?: MonologConfig, + * "when@dev"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * debug?: DebugConfig, + * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, + * stimulus?: StimulusConfig, + * turbo?: TurboConfig, + * twig_extra?: TwigExtraConfig, + * security?: SecurityConfig, + * monolog?: MonologConfig, + * maker?: MakerConfig, + * }, + * "when@prod"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig?: TwigConfig, + * stimulus?: StimulusConfig, + * turbo?: TurboConfig, + * twig_extra?: TwigExtraConfig, + * security?: SecurityConfig, + * monolog?: MonologConfig, + * }, + * "when@test"?: array{ + * imports?: ImportsConfig, + * parameters?: ParametersConfig, + * services?: ServicesConfig, + * framework?: FrameworkConfig, + * doctrine?: DoctrineConfig, + * doctrine_migrations?: DoctrineMigrationsConfig, + * twig?: TwigConfig, + * web_profiler?: WebProfilerConfig, + * stimulus?: StimulusConfig, + * turbo?: TurboConfig, + * twig_extra?: TwigExtraConfig, + * security?: SecurityConfig, + * monolog?: MonologConfig, + * }, + * ..., + * }> + * } + */ +final class App +{ + /** + * @param ConfigType $config + * + * @psalm-return ConfigType + */ + public static function config(array $config): array + { + /** @var ConfigType $config */ + $config = AppReference::config($config); + + return $config; + } +} + +namespace Symfony\Component\Routing\Loader\Configurator; + +/** + * This class provides array-shapes for configuring the routes of an application. + * + * Example: + * + * ```php + * // config/routes.php + * namespace Symfony\Component\Routing\Loader\Configurator; + * + * return Routes::config([ + * 'controllers' => [ + * 'resource' => 'routing.controllers', + * ], + * ]); + * ``` + * + * @psalm-type RouteConfig = array{ + * path: string|array, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type ImportConfig = array{ + * resource: string, + * type?: string, + * exclude?: string|list, + * prefix?: string|array, + * name_prefix?: string, + * trailing_slash_on_root?: bool, + * controller?: string, + * methods?: string|list, + * requirements?: array, + * defaults?: array, + * options?: array, + * host?: string|array, + * schemes?: string|list, + * condition?: string, + * locale?: string, + * format?: string, + * utf8?: bool, + * stateless?: bool, + * } + * @psalm-type AliasConfig = array{ + * alias: string, + * deprecated?: array{package:string, version:string, message?:string}, + * } + * @psalm-type RoutesConfig = array{ + * "when@dev"?: array, + * "when@prod"?: array, + * "when@test"?: array, + * ... + * } + */ +final class Routes +{ + /** + * @param RoutesConfig $config + * + * @psalm-return RoutesConfig + */ + public static function config(array $config): array + { + return $config; + } +} diff --git a/config/routes.yaml b/config/routes.yaml new file mode 100644 index 0000000..cef258c --- /dev/null +++ b/config/routes.yaml @@ -0,0 +1,11 @@ +# yaml-language-server: $schema=../vendor/symfony/routing/Loader/schema/routing.schema.json + +# This file is the entry point to configure the routes of your app. +# Methods with the #[Route] attribute are automatically imported. +# See also https://symfony.com/doc/current/routing.html + +# To list all registered routes, run the following command: +# bin/console debug:router + +controllers: + resource: routing.controllers diff --git a/config/routes/framework.yaml b/config/routes/framework.yaml new file mode 100644 index 0000000..bc1feac --- /dev/null +++ b/config/routes/framework.yaml @@ -0,0 +1,4 @@ +when@dev: + _errors: + resource: '@FrameworkBundle/Resources/config/routing/errors.php' + prefix: /_error diff --git a/config/routes/security.yaml b/config/routes/security.yaml new file mode 100644 index 0000000..f853be1 --- /dev/null +++ b/config/routes/security.yaml @@ -0,0 +1,3 @@ +_security_logout: + resource: security.route_loader.logout + type: service diff --git a/config/routes/web_profiler.yaml b/config/routes/web_profiler.yaml new file mode 100644 index 0000000..b3b7b4b --- /dev/null +++ b/config/routes/web_profiler.yaml @@ -0,0 +1,8 @@ +when@dev: + web_profiler_wdt: + resource: '@WebProfilerBundle/Resources/config/routing/wdt.php' + prefix: /_wdt + + web_profiler_profiler: + resource: '@WebProfilerBundle/Resources/config/routing/profiler.php' + prefix: /_profiler diff --git a/config/services.yaml b/config/services.yaml new file mode 100644 index 0000000..79b8ce2 --- /dev/null +++ b/config/services.yaml @@ -0,0 +1,23 @@ +# yaml-language-server: $schema=../vendor/symfony/dependency-injection/Loader/schema/services.schema.json + +# This file is the entry point to configure your own services. +# Files in the packages/ subdirectory configure your dependencies. +# See also https://symfony.com/doc/current/service_container/import.html + +# Put parameters here that don't need to change on each machine where the app is deployed +# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration +parameters: + +services: + # default configuration for services in *this* file + _defaults: + autowire: true # Automatically injects dependencies in your services. + autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. + + # makes classes in src/ available to be used as services + # this creates a service per class whose id is the fully-qualified class name + App\: + resource: '../src/' + + # add more service definitions when explicit configuration is needed + # please note that last definitions always *replace* previous ones diff --git a/importmap.php b/importmap.php new file mode 100644 index 0000000..eaf8abd --- /dev/null +++ b/importmap.php @@ -0,0 +1,38 @@ + [ + 'path' => './assets/app.js', + 'entrypoint' => true, + ], + '@hotwired/stimulus' => [ + 'version' => '3.2.2', + ], + '@symfony/stimulus-bundle' => [ + 'path' => './vendor/symfony/stimulus-bundle/assets/dist/loader.js', + ], + '@hotwired/turbo' => [ + 'version' => '7.3.0', + ], + 'bootstrap' => [ + 'version' => '5.3.8', + ], + '@popperjs/core' => [ + 'version' => '2.11.8', + ], + 'bootstrap/dist/css/bootstrap.min.css' => [ + 'version' => '5.3.8', + 'type' => 'css', + ], +]; diff --git a/migrations/.gitignore b/migrations/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/migrations/Version20260320225432.php b/migrations/Version20260320225432.php new file mode 100644 index 0000000..cdc3ad8 --- /dev/null +++ b/migrations/Version20260320225432.php @@ -0,0 +1,107 @@ +addSql('CREATE TABLE categorie_publication (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, libelle VARCHAR(50) NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_70C24170A4D60759 ON categorie_publication (libelle)'); + $this->addSql('CREATE TABLE constitue (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, optionnel BOOLEAN NOT NULL, mod_id INT NOT NULL, modpack_id INT NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE INDEX IDX_AA077561338E21CD ON constitue (mod_id)'); + $this->addSql('CREATE INDEX IDX_AA077561949D6AEB ON constitue (modpack_id)'); + $this->addSql('CREATE UNIQUE INDEX unique_constitue ON constitue (mod_id, modpack_id)'); + $this->addSql('CREATE TABLE illustration (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, uri VARCHAR(255) NOT NULL, publication_id INT NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_D67B9A42841CB121 ON illustration (uri)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_D67B9A4238B217A7 ON illustration (publication_id)'); + $this->addSql('CREATE TABLE joueur (id UUID NOT NULL, pseudo VARCHAR(50) NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE TABLE mod (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, nom VARCHAR(50) NOT NULL, version VARCHAR(50) NOT NULL, uri VARCHAR(255) NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_17F45348841CB121 ON mod (uri)'); + $this->addSql('CREATE UNIQUE INDEX mod_unique ON mod (nom, version)'); + $this->addSql('CREATE TABLE mod_mod (mod_source INT NOT NULL, mod_target INT NOT NULL, PRIMARY KEY (mod_source, mod_target))'); + $this->addSql('CREATE INDEX IDX_99C60BF72B3D400C ON mod_mod (mod_source)'); + $this->addSql('CREATE INDEX IDX_99C60BF732D81083 ON mod_mod (mod_target)'); + $this->addSql('CREATE TABLE mod_modpack (mod_id INT NOT NULL, modpack_id INT NOT NULL, PRIMARY KEY (mod_id, modpack_id))'); + $this->addSql('CREATE INDEX IDX_9449C4F4338E21CD ON mod_modpack (mod_id)'); + $this->addSql('CREATE INDEX IDX_9449C4F4949D6AEB ON mod_modpack (modpack_id)'); + $this->addSql('CREATE TABLE modpack (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, version VARCHAR(50) NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_54871F66BF1CD3C3 ON modpack (version)'); + $this->addSql('CREATE TABLE publication (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, date TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, contenu TEXT NOT NULL, author_id INT NOT NULL, categorie_id INT NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE INDEX IDX_AF3C6779F675F31B ON publication (author_id)'); + $this->addSql('CREATE INDEX IDX_AF3C6779BCF5E72D ON publication (categorie_id)'); + $this->addSql('CREATE TABLE session (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, debut TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, fin TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, joueur_id UUID NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE INDEX IDX_D044D5D4A9E2D76C ON session (joueur_id)'); + $this->addSql('CREATE TABLE territoire (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, x INT NOT NULL, z INT NOT NULL, description TEXT NOT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE TABLE territoire_joueur (territoire_id INT NOT NULL, joueur_id UUID NOT NULL, PRIMARY KEY (territoire_id, joueur_id))'); + $this->addSql('CREATE INDEX IDX_A714A788D0F97A8 ON territoire_joueur (territoire_id)'); + $this->addSql('CREATE INDEX IDX_A714A788A9E2D76C ON territoire_joueur (joueur_id)'); + $this->addSql('CREATE TABLE "user" (id INT GENERATED BY DEFAULT AS IDENTITY NOT NULL, pseudo VARCHAR(180) NOT NULL, roles JSON NOT NULL, password VARCHAR(255) NOT NULL, uri_pp VARCHAR(255) DEFAULT NULL, theme_sombre BOOLEAN NOT NULL, joueur_id UUID DEFAULT NULL, creator_id INT DEFAULT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649A9E2D76C ON "user" (joueur_id)'); + $this->addSql('CREATE INDEX IDX_8D93D64961220EA6 ON "user" (creator_id)'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_IDENTIFIER_PSEUDO ON "user" (pseudo)'); + $this->addSql('CREATE TABLE messenger_messages (id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL, body TEXT NOT NULL, headers TEXT NOT NULL, queue_name VARCHAR(190) NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, available_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, delivered_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY (id))'); + $this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0E3BD61CE16BA31DBBF396750 ON messenger_messages (queue_name, available_at, delivered_at, id)'); + $this->addSql('ALTER TABLE constitue ADD CONSTRAINT FK_AA077561338E21CD FOREIGN KEY (mod_id) REFERENCES mod (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE constitue ADD CONSTRAINT FK_AA077561949D6AEB FOREIGN KEY (modpack_id) REFERENCES modpack (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE illustration ADD CONSTRAINT FK_D67B9A4238B217A7 FOREIGN KEY (publication_id) REFERENCES publication (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE mod_mod ADD CONSTRAINT FK_99C60BF72B3D400C FOREIGN KEY (mod_source) REFERENCES mod (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE mod_mod ADD CONSTRAINT FK_99C60BF732D81083 FOREIGN KEY (mod_target) REFERENCES mod (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE mod_modpack ADD CONSTRAINT FK_9449C4F4338E21CD FOREIGN KEY (mod_id) REFERENCES mod (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE mod_modpack ADD CONSTRAINT FK_9449C4F4949D6AEB FOREIGN KEY (modpack_id) REFERENCES modpack (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE publication ADD CONSTRAINT FK_AF3C6779F675F31B FOREIGN KEY (author_id) REFERENCES "user" (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE publication ADD CONSTRAINT FK_AF3C6779BCF5E72D FOREIGN KEY (categorie_id) REFERENCES categorie_publication (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE session ADD CONSTRAINT FK_D044D5D4A9E2D76C FOREIGN KEY (joueur_id) REFERENCES joueur (id) NOT DEFERRABLE'); + $this->addSql('ALTER TABLE territoire_joueur ADD CONSTRAINT FK_A714A788D0F97A8 FOREIGN KEY (territoire_id) REFERENCES territoire (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE territoire_joueur ADD CONSTRAINT FK_A714A788A9E2D76C FOREIGN KEY (joueur_id) REFERENCES joueur (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE "user" ADD CONSTRAINT FK_8D93D649A9E2D76C FOREIGN KEY (joueur_id) REFERENCES joueur (id)'); + $this->addSql('ALTER TABLE "user" ADD CONSTRAINT FK_8D93D64961220EA6 FOREIGN KEY (creator_id) REFERENCES "user" (id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE constitue DROP CONSTRAINT FK_AA077561338E21CD'); + $this->addSql('ALTER TABLE constitue DROP CONSTRAINT FK_AA077561949D6AEB'); + $this->addSql('ALTER TABLE illustration DROP CONSTRAINT FK_D67B9A4238B217A7'); + $this->addSql('ALTER TABLE mod_mod DROP CONSTRAINT FK_99C60BF72B3D400C'); + $this->addSql('ALTER TABLE mod_mod DROP CONSTRAINT FK_99C60BF732D81083'); + $this->addSql('ALTER TABLE mod_modpack DROP CONSTRAINT FK_9449C4F4338E21CD'); + $this->addSql('ALTER TABLE mod_modpack DROP CONSTRAINT FK_9449C4F4949D6AEB'); + $this->addSql('ALTER TABLE publication DROP CONSTRAINT FK_AF3C6779F675F31B'); + $this->addSql('ALTER TABLE publication DROP CONSTRAINT FK_AF3C6779BCF5E72D'); + $this->addSql('ALTER TABLE session DROP CONSTRAINT FK_D044D5D4A9E2D76C'); + $this->addSql('ALTER TABLE territoire_joueur DROP CONSTRAINT FK_A714A788D0F97A8'); + $this->addSql('ALTER TABLE territoire_joueur DROP CONSTRAINT FK_A714A788A9E2D76C'); + $this->addSql('ALTER TABLE "user" DROP CONSTRAINT FK_8D93D649A9E2D76C'); + $this->addSql('ALTER TABLE "user" DROP CONSTRAINT FK_8D93D64961220EA6'); + $this->addSql('DROP TABLE categorie_publication'); + $this->addSql('DROP TABLE constitue'); + $this->addSql('DROP TABLE illustration'); + $this->addSql('DROP TABLE joueur'); + $this->addSql('DROP TABLE mod'); + $this->addSql('DROP TABLE mod_mod'); + $this->addSql('DROP TABLE mod_modpack'); + $this->addSql('DROP TABLE modpack'); + $this->addSql('DROP TABLE publication'); + $this->addSql('DROP TABLE session'); + $this->addSql('DROP TABLE territoire'); + $this->addSql('DROP TABLE territoire_joueur'); + $this->addSql('DROP TABLE "user"'); + $this->addSql('DROP TABLE messenger_messages'); + } +} diff --git a/phpunit.dist.xml b/phpunit.dist.xml new file mode 100644 index 0000000..22bd879 --- /dev/null +++ b/phpunit.dist.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + tests + + + + + + src + + + + Doctrine\Deprecations\Deprecation::trigger + Doctrine\Deprecations\Deprecation::delegateTriggerToBackend + trigger_deprecation + + + + + + diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..9982c21 --- /dev/null +++ b/public/index.php @@ -0,0 +1,9 @@ +getLastAuthenticationError(); + + // last username entered by the user + $lastUsername = $authenticationUtils->getLastUsername(); + + return $this->render('security/login.html.twig', [ + 'last_username' => $lastUsername, + 'error' => $error, + ]); + } + + #[Route(path: '/logout', name: 'app_logout')] + public function logout(): void + { + throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.'); + } +} diff --git a/src/Controller/VitrineController.php b/src/Controller/VitrineController.php new file mode 100644 index 0000000..762af2e --- /dev/null +++ b/src/Controller/VitrineController.php @@ -0,0 +1,18 @@ +render('vitrine/index.html.twig', [ + 'controller_name' => 'VitrineController', + ]); + } +} diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Entity/CategoriePublication.php b/src/Entity/CategoriePublication.php new file mode 100644 index 0000000..8820d81 --- /dev/null +++ b/src/Entity/CategoriePublication.php @@ -0,0 +1,78 @@ + + */ + #[ORM\OneToMany(targetEntity: Publication::class, mappedBy: 'categorie')] + private Collection $publications; + + public function __construct() + { + $this->publications = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getLibelle(): ?string + { + return $this->libelle; + } + + public function setLibelle(string $libelle): static + { + $this->libelle = $libelle; + + return $this; + } + + /** + * @return Collection + */ + public function getPublications(): Collection + { + return $this->publications; + } + + public function addPublication(Publication $publication): static + { + if (!$this->publications->contains($publication)) { + $this->publications->add($publication); + $publication->setCategorie($this); + } + + return $this; + } + + public function removePublication(Publication $publication): static + { + if ($this->publications->removeElement($publication)) { + // set the owning side to null (unless already changed) + if ($publication->getCategorie() === $this) { + $publication->setCategorie(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Constitue.php b/src/Entity/Constitue.php new file mode 100644 index 0000000..8cec600 --- /dev/null +++ b/src/Entity/Constitue.php @@ -0,0 +1,69 @@ +id; + } + + public function isOptionnel(): ?bool + { + return $this->optionnel; + } + + public function setOptionnel(bool $optionnel): static + { + $this->optionnel = $optionnel; + + return $this; + } + + public function getMod(): ?Mod + { + return $this->mod; + } + + public function setMod(?Mod $mod): static + { + $this->mod = $mod; + + return $this; + } + + public function getModpack(): ?Modpack + { + return $this->modpack; + } + + public function setModpack(?Modpack $modpack): static + { + $this->modpack = $modpack; + + return $this; + } +} diff --git a/src/Entity/Illustration.php b/src/Entity/Illustration.php new file mode 100644 index 0000000..55ce333 --- /dev/null +++ b/src/Entity/Illustration.php @@ -0,0 +1,51 @@ +id; + } + + public function getUri(): ?string + { + return $this->uri; + } + + public function setUri(string $uri): static + { + $this->uri = $uri; + + return $this; + } + + public function getPublication(): ?Publication + { + return $this->publication; + } + + public function setPublication(Publication $publication): static + { + $this->publication = $publication; + + return $this; + } +} diff --git a/src/Entity/Joueur.php b/src/Entity/Joueur.php new file mode 100644 index 0000000..378ccb0 --- /dev/null +++ b/src/Entity/Joueur.php @@ -0,0 +1,137 @@ + + */ + #[ORM\OneToMany(targetEntity: Session::class, mappedBy: 'joueur')] + private Collection $sessions; + + /** + * @var Collection + */ + #[ORM\ManyToMany(targetEntity: Territoire::class, mappedBy: 'joueurs')] + private Collection $territoires; + + #[ORM\OneToOne(mappedBy: 'joueur', cascade: ['persist', 'remove'])] + private ?User $owner = null; + + public function __construct(string $uuid) + { + $this->id = $uuid; + $this->sessions = new ArrayCollection(); + $this->territoires = new ArrayCollection(); + } + + public function getId(): string + { + return $this->id; + } + + public function getPseudo(): ?string + { + return $this->pseudo; + } + + public function setPseudo(string $pseudo): static + { + $this->pseudo = $pseudo; + + return $this; + } + + /** + * @return Collection + */ + public function getSessions(): Collection + { + return $this->sessions; + } + + public function addSession(Session $session): static + { + if (!$this->sessions->contains($session)) { + $this->sessions->add($session); + $session->setJoueur($this); + } + + return $this; + } + + public function removeSession(Session $session): static + { + if ($this->sessions->removeElement($session)) { + // set the owning side to null (unless already changed) + if ($session->getJoueur() === $this) { + $session->setJoueur(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getTerritoires(): Collection + { + return $this->territoires; + } + + public function addTerritoire(Territoire $territoire): static + { + if (!$this->territoires->contains($territoire)) { + $this->territoires->add($territoire); + $territoire->addJoueur($this); + } + + return $this; + } + + public function removeTerritoire(Territoire $territoire): static + { + if ($this->territoires->removeElement($territoire)) { + $territoire->removeJoueur($this); + } + + return $this; + } + + public function getOwner(): ?User + { + return $this->owner; + } + + public function setOwner(?User $owner): static + { + // unset the owning side of the relation if necessary + if ($owner === null && $this->owner !== null) { + $this->owner->setJoueur(null); + } + + // set the owning side of the relation if necessary + if ($owner !== null && $owner->getJoueur() !== $this) { + $owner->setJoueur($this); + } + + $this->owner = $owner; + + return $this; + } +} diff --git a/src/Entity/Mod.php b/src/Entity/Mod.php new file mode 100644 index 0000000..874d19f --- /dev/null +++ b/src/Entity/Mod.php @@ -0,0 +1,183 @@ + + */ + #[ORM\ManyToMany(targetEntity: self::class, inversedBy: 'soumis')] + private Collection $dependances; + + /** + * @var Collection + */ + #[ORM\ManyToMany(targetEntity: self::class, mappedBy: 'dependances')] + private Collection $soumis; + + /** + * @var Collection + */ + #[ORM\ManyToMany(targetEntity: Modpack::class, inversedBy: 'mods')] + private Collection $constitue; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: Constitue::class, mappedBy: 'mod')] + private Collection $constitues; + + public function __construct() + { + $this->soumis = new ArrayCollection(); + $this->dependances = new ArrayCollection(); + $this->constitue = new ArrayCollection(); + $this->constitues = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getNom(): ?string + { + return $this->nom; + } + + public function setNom(string $nom): static + { + $this->nom = $nom; + + return $this; + } + + public function getVersion(): ?string + { + return $this->version; + } + + public function setVersion(string $version): static + { + $this->version = $version; + + return $this; + } + + public function getUri(): ?string + { + return $this->uri; + } + + public function setUri(string $uri): static + { + $this->uri = $uri; + + return $this; + } + + /** + * @return Collection + */ + public function getSoumis(): Collection + { + return $this->soumis; + } + + public function addSoumis(self $soumi): static + { + if (!$this->soumis->contains($soumi)) { + $this->soumis->add($soumi); + } + + return $this; + } + + public function removeSoumis(self $soumi): static + { + $this->soumis->removeElement($soumi); + + return $this; + } + + /** + * @return Collection + */ + public function getDependances(): Collection + { + return $this->dependances; + } + + public function addDependance(self $dependance): static + { + if (!$this->dependances->contains($dependance)) { + $this->dependances->add($dependance); + $dependance->addSoumis($this); + } + + return $this; + } + + public function removeDependance(self $dependance): static + { + if ($this->dependances->removeElement($dependance)) { + $dependance->removeSoumis($this); + } + + return $this; + } + + /** + * @return Collection + */ + public function getConstitues(): Collection + { + return $this->constitues; + } + + public function addConstitue(Constitue $constitue): static + { + if (!$this->constitues->contains($constitue)) { + $this->constitues->add($constitue); + $constitue->setMod($this); + } + + return $this; + } + + public function removeConstitue(Constitue $constitue): static + { + if ($this->constitues->removeElement($constitue)) { + // set the owning side to null (unless already changed) + if ($constitue->getMod() === $this) { + $constitue->setMod(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Modpack.php b/src/Entity/Modpack.php new file mode 100644 index 0000000..f46b394 --- /dev/null +++ b/src/Entity/Modpack.php @@ -0,0 +1,78 @@ + + */ + #[ORM\OneToMany(targetEntity: Constitue::class, mappedBy: 'modpack')] + private Collection $constitues; + + public function __construct() + { + $this->constitues = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getVersion(): ?string + { + return $this->version; + } + + public function setVersion(string $version): static + { + $this->version = $version; + + return $this; + } + + /** + * @return Collection + */ + public function getConstitues(): Collection + { + return $this->constitues; + } + + public function addConstitue(Constitue $constitue): static + { + if (!$this->constitues->contains($constitue)) { + $this->constitues->add($constitue); + $constitue->setModpack($this); + } + + return $this; + } + + public function removeConstitue(Constitue $constitue): static + { + if ($this->constitues->removeElement($constitue)) { + // set the owning side to null (unless already changed) + if ($constitue->getModpack() === $this) { + $constitue->setModpack(null); + } + } + + return $this; + } +} diff --git a/src/Entity/Publication.php b/src/Entity/Publication.php new file mode 100644 index 0000000..cf0ca2d --- /dev/null +++ b/src/Entity/Publication.php @@ -0,0 +1,103 @@ +id; + } + + public function getDate(): ?\DateTime + { + return $this->date; + } + + public function setDate(\DateTime $date): static + { + $this->date = $date; + + return $this; + } + + public function getContenu(): ?string + { + return $this->contenu; + } + + public function setContenu(string $contenu): static + { + $this->contenu = $contenu; + + return $this; + } + + public function getAuthor(): ?User + { + return $this->author; + } + + public function setAuthor(?User $author): static + { + $this->author = $author; + + return $this; + } + + public function getIllustration(): ?Illustration + { + return $this->illustration; + } + + public function setIllustration(Illustration $illustration): static + { + // set the owning side of the relation if necessary + if ($illustration->getPublication() !== $this) { + $illustration->setPublication($this); + } + + $this->illustration = $illustration; + + return $this; + } + + public function getCategorie(): ?CategoriePublication + { + return $this->categorie; + } + + public function setCategorie(?CategoriePublication $categorie): static + { + $this->categorie = $categorie; + + return $this; + } +} diff --git a/src/Entity/Session.php b/src/Entity/Session.php new file mode 100644 index 0000000..5e60f22 --- /dev/null +++ b/src/Entity/Session.php @@ -0,0 +1,66 @@ +id; + } + + public function getDebut(): ?\DateTime + { + return $this->debut; + } + + public function setDebut(\DateTime $debut): static + { + $this->debut = $debut; + + return $this; + } + + public function getFin(): ?\DateTime + { + return $this->fin; + } + + public function setFin(?\DateTime $fin): static + { + $this->fin = $fin; + + return $this; + } + + public function getJoueur(): ?Joueur + { + return $this->joueur; + } + + public function setJoueur(?Joueur $joueur): static + { + $this->joueur = $joueur; + + return $this; + } +} diff --git a/src/Entity/Territoire.php b/src/Entity/Territoire.php new file mode 100644 index 0000000..631623e --- /dev/null +++ b/src/Entity/Territoire.php @@ -0,0 +1,103 @@ + + */ + #[ORM\ManyToMany(targetEntity: Joueur::class, inversedBy: 'territoires')] + private Collection $joueurs; + + public function __construct() + { + $this->joueurs = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getX(): ?int + { + return $this->x; + } + + public function setX(int $x): static + { + $this->x = $x; + + return $this; + } + + public function getZ(): ?int + { + return $this->z; + } + + public function setZ(int $z): static + { + $this->z = $z; + + return $this; + } + + public function getDescription(): ?string + { + return $this->description; + } + + public function setDescription(string $description): static + { + $this->description = $description; + + return $this; + } + + /** + * @return Collection + */ + public function getJoueurs(): Collection + { + return $this->joueurs; + } + + public function addJoueur(Joueur $joueur): static + { + if (!$this->joueurs->contains($joueur)) { + $this->joueurs->add($joueur); + } + + return $this; + } + + public function removeJoueur(Joueur $joueur): static + { + $this->joueurs->removeElement($joueur); + + return $this; + } +} diff --git a/src/Entity/User.php b/src/Entity/User.php new file mode 100644 index 0000000..2367d6e --- /dev/null +++ b/src/Entity/User.php @@ -0,0 +1,255 @@ + The user roles + */ + #[ORM\Column] + private array $roles = []; + + /** + * @var string The hashed password + */ + #[ORM\Column] + private ?string $password = null; + + #[ORM\Column(length: 255, nullable: true)] + private ?string $uri_pp = null; + + #[ORM\Column] + private ?bool $theme_sombre = null; + + #[ORM\OneToOne(inversedBy: 'owner', cascade: ['persist', 'remove'])] + private ?Joueur $joueur = null; + + #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'users')] + private ?self $creator = null; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'creator')] + private Collection $users; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: Publication::class, mappedBy: 'author')] + private Collection $publications; + + public function __construct() + { + $this->users = new ArrayCollection(); + $this->publications = new ArrayCollection(); + } + + public function getId(): ?int + { + return $this->id; + } + + public function getPseudo(): ?string + { + return $this->pseudo; + } + + public function setPseudo(string $pseudo): static + { + $this->pseudo = $pseudo; + + return $this; + } + + /** + * A visual identifier that represents this user. + * + * @see UserInterface + */ + public function getUserIdentifier(): string + { + return (string) $this->pseudo; + } + + /** + * @see UserInterface + */ + public function getRoles(): array + { + $roles = $this->roles; + // guarantee every user at least has ROLE_USER + $roles[] = 'ROLE_USER'; + + return array_unique($roles); + } + + /** + * @param list $roles + */ + public function setRoles(array $roles): static + { + $this->roles = $roles; + + return $this; + } + + /** + * @see PasswordAuthenticatedUserInterface + */ + public function getPassword(): ?string + { + return $this->password; + } + + public function setPassword(string $password): static + { + $this->password = $password; + + return $this; + } + + /** + * Ensure the session doesn't contain actual password hashes by CRC32C-hashing them, as supported since Symfony 7.3. + */ + public function __serialize(): array + { + $data = (array) $this; + $data["\0".self::class."\0password"] = hash('crc32c', $this->password); + + return $data; + } + + #[\Deprecated] + public function eraseCredentials(): void + { + // @deprecated, to be removed when upgrading to Symfony 8 + } + + public function getUriPp(): ?string + { + return $this->uri_pp; + } + + public function setUriPp(?string $uri_pp): static + { + $this->uri_pp = $uri_pp; + + return $this; + } + + public function isThemeSombre(): ?bool + { + return $this->theme_sombre; + } + + public function setThemeSombre(bool $theme_sombre): static + { + $this->theme_sombre = $theme_sombre; + + return $this; + } + + public function getJoueur(): ?Joueur + { + return $this->joueur; + } + + public function setJoueur(?Joueur $joueur): static + { + $this->joueur = $joueur; + + return $this; + } + + public function getCreator(): ?self + { + return $this->creator; + } + + public function setCreator(?self $creator): static + { + $this->creator = $creator; + + return $this; + } + + /** + * @return Collection + */ + public function getUsers(): Collection + { + return $this->users; + } + + public function addUser(self $user): static + { + if (!$this->users->contains($user)) { + $this->users->add($user); + $user->setCreator($this); + } + + return $this; + } + + public function removeUser(self $user): static + { + if ($this->users->removeElement($user)) { + // set the owning side to null (unless already changed) + if ($user->getCreator() === $this) { + $user->setCreator(null); + } + } + + return $this; + } + + /** + * @return Collection + */ + public function getPublications(): Collection + { + return $this->publications; + } + + public function addPublication(Publication $publication): static + { + if (!$this->publications->contains($publication)) { + $this->publications->add($publication); + $publication->setAuthor($this); + } + + return $this; + } + + public function removePublication(Publication $publication): static + { + if ($this->publications->removeElement($publication)) { + // set the owning side to null (unless already changed) + if ($publication->getAuthor() === $this) { + $publication->setAuthor(null); + } + } + + return $this; + } +} diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 0000000..779cd1f --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,11 @@ + + */ +class CategoriePublicationRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, CategoriePublication::class); + } + + // /** + // * @return CategoriePublication[] Returns an array of CategoriePublication objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('c') + // ->andWhere('c.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('c.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?CategoriePublication + // { + // return $this->createQueryBuilder('c') + // ->andWhere('c.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/ConstitueRepository.php b/src/Repository/ConstitueRepository.php new file mode 100644 index 0000000..3039d08 --- /dev/null +++ b/src/Repository/ConstitueRepository.php @@ -0,0 +1,43 @@ + + */ +class ConstitueRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Constitue::class); + } + + // /** + // * @return Constitue[] Returns an array of Constitue objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('c') + // ->andWhere('c.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('c.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Constitue + // { + // return $this->createQueryBuilder('c') + // ->andWhere('c.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/IllustrationRepository.php b/src/Repository/IllustrationRepository.php new file mode 100644 index 0000000..6bbaf7f --- /dev/null +++ b/src/Repository/IllustrationRepository.php @@ -0,0 +1,43 @@ + + */ +class IllustrationRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Illustration::class); + } + + // /** + // * @return Illustration[] Returns an array of Illustration objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('i') + // ->andWhere('i.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('i.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Illustration + // { + // return $this->createQueryBuilder('i') + // ->andWhere('i.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/JoueurRepository.php b/src/Repository/JoueurRepository.php new file mode 100644 index 0000000..efa23dc --- /dev/null +++ b/src/Repository/JoueurRepository.php @@ -0,0 +1,43 @@ + + */ +class JoueurRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Joueur::class); + } + + // /** + // * @return Joueur[] Returns an array of Joueur objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('j') + // ->andWhere('j.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('j.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Joueur + // { + // return $this->createQueryBuilder('j') + // ->andWhere('j.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/ModRepository.php b/src/Repository/ModRepository.php new file mode 100644 index 0000000..adacec9 --- /dev/null +++ b/src/Repository/ModRepository.php @@ -0,0 +1,43 @@ + + */ +class ModRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Mod::class); + } + + // /** + // * @return Mod[] Returns an array of Mod objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('m') + // ->andWhere('m.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('m.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Mod + // { + // return $this->createQueryBuilder('m') + // ->andWhere('m.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/ModpackRepository.php b/src/Repository/ModpackRepository.php new file mode 100644 index 0000000..32ab9a5 --- /dev/null +++ b/src/Repository/ModpackRepository.php @@ -0,0 +1,43 @@ + + */ +class ModpackRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Modpack::class); + } + + // /** + // * @return Modpack[] Returns an array of Modpack objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('m') + // ->andWhere('m.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('m.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Modpack + // { + // return $this->createQueryBuilder('m') + // ->andWhere('m.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/PublicationRepository.php b/src/Repository/PublicationRepository.php new file mode 100644 index 0000000..5d2be6c --- /dev/null +++ b/src/Repository/PublicationRepository.php @@ -0,0 +1,43 @@ + + */ +class PublicationRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Publication::class); + } + + // /** + // * @return Publication[] Returns an array of Publication objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('p.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Publication + // { + // return $this->createQueryBuilder('p') + // ->andWhere('p.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/SessionRepository.php b/src/Repository/SessionRepository.php new file mode 100644 index 0000000..4c60172 --- /dev/null +++ b/src/Repository/SessionRepository.php @@ -0,0 +1,43 @@ + + */ +class SessionRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Session::class); + } + + // /** + // * @return Session[] Returns an array of Session objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('s') + // ->andWhere('s.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('s.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Session + // { + // return $this->createQueryBuilder('s') + // ->andWhere('s.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/TerritoireRepository.php b/src/Repository/TerritoireRepository.php new file mode 100644 index 0000000..7c45239 --- /dev/null +++ b/src/Repository/TerritoireRepository.php @@ -0,0 +1,43 @@ + + */ +class TerritoireRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Territoire::class); + } + + // /** + // * @return Territoire[] Returns an array of Territoire objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('t') + // ->andWhere('t.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('t.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?Territoire + // { + // return $this->createQueryBuilder('t') + // ->andWhere('t.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php new file mode 100644 index 0000000..4f2804e --- /dev/null +++ b/src/Repository/UserRepository.php @@ -0,0 +1,60 @@ + + */ +class UserRepository extends ServiceEntityRepository implements PasswordUpgraderInterface +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + + /** + * Used to upgrade (rehash) the user's password automatically over time. + */ + public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void + { + if (!$user instanceof User) { + throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class)); + } + + $user->setPassword($newHashedPassword); + $this->getEntityManager()->persist($user); + $this->getEntityManager()->flush(); + } + + // /** + // * @return User[] Returns an array of User objects + // */ + // public function findByExampleField($value): array + // { + // return $this->createQueryBuilder('u') + // ->andWhere('u.exampleField = :val') + // ->setParameter('val', $value) + // ->orderBy('u.id', 'ASC') + // ->setMaxResults(10) + // ->getQuery() + // ->getResult() + // ; + // } + + // public function findOneBySomeField($value): ?User + // { + // return $this->createQueryBuilder('u') + // ->andWhere('u.exampleField = :val') + // ->setParameter('val', $value) + // ->getQuery() + // ->getOneOrNullResult() + // ; + // } +} diff --git a/symfony.lock b/symfony.lock new file mode 100644 index 0000000..a247f6d --- /dev/null +++ b/symfony.lock @@ -0,0 +1,325 @@ +{ + "doctrine/deprecations": { + "version": "1.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "87424683adc81d7dc305eefec1fced883084aab9" + } + }, + "doctrine/doctrine-bundle": { + "version": "2.18", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.13", + "ref": "620b57f496f2e599a6015a9fa222c2ee0a32adcb" + }, + "files": [ + "config/packages/doctrine.yaml", + "src/Entity/.gitignore", + "src/Repository/.gitignore" + ] + }, + "doctrine/doctrine-migrations-bundle": { + "version": "3.7", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.1", + "ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33" + }, + "files": [ + "config/packages/doctrine_migrations.yaml", + "migrations/.gitignore" + ] + }, + "phpunit/phpunit": { + "version": "12.5", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "11.1", + "ref": "1117deb12541f35793eec9fff7494d7aa12283fc" + }, + "files": [ + ".env.test", + "phpunit.dist.xml", + "tests/bootstrap.php", + "bin/phpunit" + ] + }, + "symfony/asset-mapper": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.4", + "ref": "5ad1308aa756d58f999ffbe1540d1189f5d7d14a" + }, + "files": [ + "assets/app.js", + "assets/styles/app.css", + "config/packages/asset_mapper.yaml", + "importmap.php" + ] + }, + "symfony/console": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "1781ff40d8a17d87cf53f8d4cf0c8346ed2bb461" + }, + "files": [ + "bin/console" + ] + }, + "symfony/debug-bundle": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.3", + "ref": "5aa8aa48234c8eb6dbdd7b3cd5d791485d2cec4b" + }, + "files": [ + "config/packages/debug.yaml" + ] + }, + "symfony/flex": { + "version": "2.10", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.4", + "ref": "52e9754527a15e2b79d9a610f98185a1fe46622a" + }, + "files": [ + ".env", + ".env.dev" + ] + }, + "symfony/form": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.2", + "ref": "7d86a6723f4a623f59e2bf966b6aad2fc461d36b" + }, + "files": [ + "config/packages/csrf.yaml" + ] + }, + "symfony/framework-bundle": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.4", + "ref": "09f6e081c763a206802674ce0cb34a022f0ffc6d" + }, + "files": [ + "config/packages/cache.yaml", + "config/packages/framework.yaml", + "config/preload.php", + "config/routes/framework.yaml", + "config/services.yaml", + "public/index.php", + "src/Controller/.gitignore", + "src/Kernel.php", + ".editorconfig" + ] + }, + "symfony/mailer": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "4.3", + "ref": "09051cfde49476e3c12cd3a0e44289ace1c75a4f" + }, + "files": [ + "config/packages/mailer.yaml" + ] + }, + "symfony/maker-bundle": { + "version": "1.66", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" + } + }, + "symfony/messenger": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.0", + "ref": "d8936e2e2230637ef97e5eecc0eea074eecae58b" + }, + "files": [ + "config/packages/messenger.yaml" + ] + }, + "symfony/monolog-bundle": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.7", + "ref": "1b9efb10c54cb51c713a9391c9300ff8bceda459" + }, + "files": [ + "config/packages/monolog.yaml" + ] + }, + "symfony/notifier": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.0", + "ref": "178877daf79d2dbd62129dd03612cb1a2cb407cc" + }, + "files": [ + "config/packages/notifier.yaml" + ] + }, + "symfony/property-info": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.3", + "ref": "dae70df71978ae9226ae915ffd5fad817f5ca1f7" + }, + "files": [ + "config/packages/property_info.yaml" + ] + }, + "symfony/routing": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.4", + "ref": "bc94c4fd86f393f3ab3947c18b830ea343e51ded" + }, + "files": [ + "config/packages/routing.yaml", + "config/routes.yaml" + ] + }, + "symfony/security-bundle": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.4", + "ref": "c42fee7802181cdd50f61b8622715829f5d2335c" + }, + "files": [ + "config/packages/security.yaml", + "config/routes/security.yaml" + ] + }, + "symfony/stimulus-bundle": { + "version": "2.32", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.24", + "ref": "3357f2fa6627b93658d8e13baa416b2a94a50c5f" + }, + "files": [ + "assets/controllers.json", + "assets/controllers/csrf_protection_controller.js", + "assets/controllers/hello_controller.js", + "assets/stimulus_bootstrap.js" + ] + }, + "symfony/translation": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.3", + "ref": "620a1b84865ceb2ba304c8f8bf2a185fbf32a843" + }, + "files": [ + "config/packages/translation.yaml", + "translations/.gitignore" + ] + }, + "symfony/twig-bundle": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.4", + "ref": "cab5fd2a13a45c266d45a7d9337e28dee6272877" + }, + "files": [ + "config/packages/twig.yaml", + "templates/base.html.twig" + ] + }, + "symfony/ux-turbo": { + "version": "2.32", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "2.20", + "ref": "287f7c6eb6e9b65e422d34c00795b360a787380b" + }, + "files": [ + "config/packages/ux_turbo.yaml" + ] + }, + "symfony/validator": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.0", + "ref": "8c1c4e28d26a124b0bb273f537ca8ce443472bfd" + }, + "files": [ + "config/packages/validator.yaml" + ] + }, + "symfony/web-profiler-bundle": { + "version": "7.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "7.3", + "ref": "a363460c1b0b4a4d0242f2ce1a843ca0f6ac9026" + }, + "files": [ + "config/packages/web_profiler.yaml", + "config/routes/web_profiler.yaml" + ] + }, + "symfony/webapp-pack": { + "version": "1.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "b9e6cc8e7b6069d0e8a816665809a423864eb4dd" + }, + "files": [ + "config/packages/messenger.yaml" + ] + }, + "twig/extra-bundle": { + "version": "v3.23.0" + } +} diff --git a/templates/base.html.twig b/templates/base.html.twig new file mode 100644 index 0000000..169a6e9 --- /dev/null +++ b/templates/base.html.twig @@ -0,0 +1,37 @@ + + + + + {% block title %}CraftWorld{% endblock %} + + + {# Fonts #} + + + + {# Styles globaux + header #} + + + {% block stylesheets %}{% endblock %} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + {# Anti-flash thΓ¨me sombre : exΓ©cutΓ© avant le premier paint #} + + + + + {% include 'partials/_header.html.twig' %} + + {% block body %}{% endblock %} + + + + diff --git a/templates/partials/_header.html.twig b/templates/partials/_header.html.twig new file mode 100644 index 0000000..39ecef6 --- /dev/null +++ b/templates/partials/_header.html.twig @@ -0,0 +1,42 @@ +{# ══════════════════════════════════════════════════════════════ + templates/partials/_header.html.twig + Header principal β€” inclus depuis base.html.twig + ══════════════════════════════════════════════════════════════ #} + +{% set current_route = app.request.attributes.get('_route') %} + +

+ + {# ── Logo ──────────────────────────────────────────────── #} + + + {# ── Navigation ────────────────────────────────────────── #} + + + {# ── Actions (thΓ¨me + connexion) ───────────────────────── #} +
+ {% include 'partials/_theme_toggle.html.twig' %} + {% include 'partials/_login_dropdown.html.twig' %} +
+ +
diff --git a/templates/partials/_login_dropdown.html.twig b/templates/partials/_login_dropdown.html.twig new file mode 100644 index 0000000..d5a587f --- /dev/null +++ b/templates/partials/_login_dropdown.html.twig @@ -0,0 +1,60 @@ +{# ══════════════════════════════════════════════════════════════ + templates/partials/_login_dropdown.html.twig + Bouton + dropdown formulaire de connexion + ══════════════════════════════════════════════════════════════ #} + + diff --git a/templates/partials/_theme_toggle.html.twig b/templates/partials/_theme_toggle.html.twig new file mode 100644 index 0000000..f162a58 --- /dev/null +++ b/templates/partials/_theme_toggle.html.twig @@ -0,0 +1,30 @@ +{# ══════════════════════════════════════════════════════════════ + templates/partials/_theme_toggle.html.twig + Bouton bascule thΓ¨me clair / sombre + ══════════════════════════════════════════════════════════════ #} + + diff --git a/templates/security/login.html.twig b/templates/security/login.html.twig new file mode 100644 index 0000000..12e939a --- /dev/null +++ b/templates/security/login.html.twig @@ -0,0 +1,38 @@ +{% extends 'base.html.twig' %} + +{% block title %}Log in!{% endblock %} + +{% block body %} +
+ {% if error %} +
{{ error.messageKey|trans(error.messageData, 'security') }}
+ {% endif %} + + {% if app.user %} +
+ You are logged in as {{ app.user.userIdentifier }}, Logout +
+ {% endif %} + +

Please sign in

+ + + + + + + {# + Uncomment this section and add a remember_me option below your firewall to activate remember me functionality. + See https://symfony.com/doc/current/security/remember_me.html + +
+ + +
+ #} + + +
+{% endblock %} diff --git a/templates/vitrine/index.html.twig b/templates/vitrine/index.html.twig new file mode 100644 index 0000000..185c1dc --- /dev/null +++ b/templates/vitrine/index.html.twig @@ -0,0 +1,6 @@ +{% extends 'base.html.twig' %} + +{% block title %} Accueil {% endblock %} + +{% block body %} +{% endblock %} diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..47a5855 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,13 @@ +bootEnv(dirname(__DIR__).'/.env'); +} + +if ($_SERVER['APP_DEBUG']) { + umask(0000); +} diff --git a/translations/.gitignore b/translations/.gitignore new file mode 100644 index 0000000..e69de29

@4T62Xj{m5r7> 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