commit d4a3d32e0a035a66f464b6138763a4f821128b06 Author: thibaud-leclere Date: Tue Jan 13 13:58:53 2026 +0100 init 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..98e4be8 --- /dev/null +++ b/.env @@ -0,0 +1,50 @@ +# 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" +DATABASE_URL="postgresql://app:!ChangeMe!@127.0.0.1:5432/app?serverVersion=16&charset=utf8" +###< 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 ### + +TMDB_API_TOKEN=eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJkZmE5NDZmMTZmMTcyYmNlMzk0MzZiZmVhZDc2ZTk3NCIsIm5iZiI6MTY0OTE4MjMyNS43NTAwMDAyLCJzdWIiOiI2MjRjODY3NWFmNThjYjAwNTE1NzZiYmEiLCJzY29wZXMiOlsiYXBpX3JlYWQiXSwidmVyc2lvbiI6MX0.KE68nNxPGYWr5WHVaUuILMOH3sPhiAc9CucPVTgRPpM diff --git a/.env.dev b/.env.dev new file mode 100644 index 0000000..86cfa07 --- /dev/null +++ b/.env.dev @@ -0,0 +1,4 @@ + +###> symfony/framework-bundle ### +APP_SECRET=6a816d705e23f36b271f975881f32be0 +###< 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..40af00d --- /dev/null +++ b/.gitignore @@ -0,0 +1,20 @@ + +###> 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/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/commandlinetools/Symfony_13_01_2026_13_23.xml b/.idea/commandlinetools/Symfony_13_01_2026_13_23.xml new file mode 100644 index 0000000..4ab7bd2 --- /dev/null +++ b/.idea/commandlinetools/Symfony_13_01_2026_13_23.xml @@ -0,0 +1,5718 @@ + + + + + _complete +
Options:
--shell(-s)The shell type ("bash", "fish", "zsh")
--input(-i)An array of input tokens (e.g. COMP_WORDS or argv)
--current(-c)The index of the "input" array that the cursor is in (e.g. COMP_CWORD)
--api-version(-a)The API version of the completion script
--symfony(-S)deprecated
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + + +
+ + about + about command displays information about the current Symfony project.

The PHP section displays important configuration that could affect your application. The values might
be different between web and CLI.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + completion + completion command dumps the shell completion script required
to use shell autocompletion (currently, bash, fish, zsh completion are supported).

Static installation
-------------------

Dump the script to a global completion file and restart your shell:

/home/leclere/Projets/ltbxd-actorle/bin/console completion bash | sudo tee /etc/bash_completion.d/console

Or dump the script to a local file and source it:

/home/leclere/Projets/ltbxd-actorle/bin/console completion bash > completion.sh

# source the file whenever you use the project
source completion.sh

# or add this line at the end of your "~/.bashrc" file:
source /path/to/completion.sh

Dynamic installation
--------------------

Add this to the end of your shell configuration file (e.g. "~/.bashrc"):

eval "$(/home/leclere/Projets/ltbxd-actorle/bin/console completion bash)"

Options:
--debugTail the completion debug log
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ shell[=null] + + + command]]> + + + + + + + + + + + + +
+ + help + help command displays help for a given command:

/home/leclere/Projets/ltbxd-actorle/bin/console help list

You can also output the help in other formats by using the --format option:

/home/leclere/Projets/ltbxd-actorle/bin/console help --format=xml list

To display the list of available commands, please use the list command.

Options:
--formatThe output format (txt, xml, json, or md)
--rawTo output raw command help
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]> + command_name[=null] + + + +
command]]> + + + + + + + + + + + + + + + list + list command lists all commands:

/home/leclere/Projets/ltbxd-actorle/bin/console list

You can also display the commands for a specific namespace:

/home/leclere/Projets/ltbxd-actorle/bin/console list test

You can also output the information in other formats by using the --format option:

/home/leclere/Projets/ltbxd-actorle/bin/console list --format=xml

It's also possible to get raw list of commands (useful for embedding command runner):

/home/leclere/Projets/ltbxd-actorle/bin/console list --raw

Options:
--rawTo output raw command list
--formatThe output format (txt, xml, json, or md)
--shortTo skip describing commands' arguments
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ namespace[=null] + + + + + + + + + + + + + + + + +
+ + asset-map:compile + asset-map:compile command compiles and dumps all the assets in
the asset mapper into the final public directory (usually public/assets).

This command is meant to be run during deployment.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + assets:compress + assets:compress command compresses the given file in Brotli, Zstandard and gzip formats.
This is especially useful to serve pre-compressed files through a web server.

The existing file will be kept. The compressed files will be created in the same directory.
The extension of the compression format will be appended to the original file name.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ paths + + + + + + + + + + + + + +
+ + assets:install + assets:install command installs bundle assets into a given
directory (e.g. the public directory).

php /home/leclere/Projets/ltbxd-actorle/bin/console assets:install public

A "bundles" directory will be created inside the target directory and the
"Resources/public" directory of each bundle will be copied into it.

To create a symlink to each bundle instead of copying its assets, use the
--symlink option (will fall back to hard copies when symbolic links aren't possible:

php /home/leclere/Projets/ltbxd-actorle/bin/console assets:install public --symlink

To make symlink relative, add the --relative option:

php /home/leclere/Projets/ltbxd-actorle/bin/console assets:install public --symlink --relative


Options:
--symlinkSymlink the assets instead of copying them
--relativeMake relative symlinks
--no-cleanupDo not remove the assets of the bundles that no longer exist
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ target[=null] + + + + + + + + + + + + + + + + +
+ + cache:clear + cache:clear command clears and warms up the application cache for a given environment
and debug mode:

php /home/leclere/Projets/ltbxd-actorle/bin/console cache:clear --env=dev
php /home/leclere/Projets/ltbxd-actorle/bin/console cache:clear --env=prod --no-debug

Options:
--no-warmupDo not warm up the cache
--no-optional-warmersSkip optional cache warmers (faster)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + cache:pool:clear + cache:pool:clear command clears the given cache pools or cache pool clearers.

/home/leclere/Projets/ltbxd-actorle/bin/console cache:pool:clear [...]

Options:
--allClear all cache pools
--excludeA list of cache pools or cache pool clearers to exclude
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ pools[=null] + + + + + + + + + + + + + + + +
+ + cache:pool:delete + cache:pool:delete deletes an item from a given cache pool.

/home/leclere/Projets/ltbxd-actorle/bin/console cache:pool:delete

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ pool key + + + + + + + + + + + + + +
+ + cache:pool:invalidate-tags + cache:pool:invalidate-tags command invalidates tags from taggable pools. By default, all pools
have the passed tags invalidated. Pass --pool=my_pool to invalidate tags on a specific pool.

php /home/leclere/Projets/ltbxd-actorle/bin/console cache:pool:invalidate-tags tag1 tag2
php /home/leclere/Projets/ltbxd-actorle/bin/console cache:pool:invalidate-tags tag1 tag2 --pool=cache2 --pool=cache1

Options:
--pool(-p)The pools to invalidate on
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ tags + + + + + + + + + + + + + + +
+ + cache:pool:list + cache:pool:list command lists all available cache pools.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + cache:pool:prune + cache:pool:prune command deletes all expired items from all pruneable pools.

/home/leclere/Projets/ltbxd-actorle/bin/console cache:pool:prune

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + cache:warmup + cache:warmup command warms up the cache.

Before running this command, the cache must be empty.


Options:
--no-optional-warmersSkip optional cache warmers (faster)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + config:dump-reference + config:dump-reference command dumps the default configuration for an
extension/bundle.

Either the extension alias or bundle name can be used:

php /home/leclere/Projets/ltbxd-actorle/bin/console config:dump-reference framework
php /home/leclere/Projets/ltbxd-actorle/bin/console config:dump-reference FrameworkBundle

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console config:dump-reference FrameworkBundle --format=json

For dumping a specific option, add its path as second argument (only available for the yaml format):

php /home/leclere/Projets/ltbxd-actorle/bin/console config:dump-reference framework http_client.default_options


Options:
--formatThe output format ("yaml", "xml")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] path[=null] + + + + + + + + + + + + + + +
+ + dbal:run-sql + dbal:run-sql command executes the given SQL query and
outputs the results:

php /home/leclere/Projets/ltbxd-actorle/bin/console dbal:run-sql "SELECT * FROM users"

Options:
--connectionThe named database connection
--depthDumping depth of result set (deprecated).
--force-fetchForces fetching the result.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ sql + + + + + + + + + + + + + + + + +
+ + debug:asset-map + debug:asset-map command displays information about the Asset
Mapper for debugging purposes.

To list all configured paths (with local paths and their namespace prefixes) and
all mapped assets (with their logical path and filesystem path), run:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map

You can filter the results by providing a name to search for in the asset name
or path:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map bootstrap.js
php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map style/

To filter the assets by extension, use the --ext option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map --ext=css

To show only assets from vendor packages, use the --vendor option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map --vendor

To exclude assets from vendor packages, use the --no-vendor option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map --no-vendor

To see the full paths, use the --full option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:asset-map --full


Options:
--extFilter assets by extension (e.g. "css")
--fullWhether to show the full paths
--vendorOnly show assets from vendor packages
--no-vendorNegate the "--vendor" option
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + + + +
+ + debug:autowiring + debug:autowiring command displays the classes and interfaces that
you can use as type-hints for autowiring:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:autowiring

You can also pass a search term to filter the list:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:autowiring log


Options:
--allShow also services that are not aliased
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ search[=null] + + + + + + + + + + + + + + +
+ + debug:config + debug:config command dumps the current configuration for an
extension/bundle.

Either the extension alias or bundle name can be used:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:config framework
php /home/leclere/Projets/ltbxd-actorle/bin/console debug:config FrameworkBundle

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:config framework --format=json

For dumping a specific option, add its path as second argument:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:config framework serializer.enabled


Options:
--resolve-envDisplay resolved environment variable values instead of placeholders
--formatThe output format ("txt", "yaml", "json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] path[=null] + + + + + + + + + + + + + + + +
+ + debug:container + debug:container command displays all configured public services:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container

To see deprecations generated during container compilation and cache warmup, use the --deprecations option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --deprecations

To get specific information about a service, specify its name:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container validator

To see available types that can be used for autowiring, use the --types flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --types

To see environment variables used by the container, use the --env-vars flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --env-vars

Display a specific environment variable by specifying its name with the --env-var option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --env-var=APP_ENV

Use the --tags option to display tagged public services grouped by tag:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --tags

Find all services with a specific tag by specifying the tag name with the --tag option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --tag=form.type

Use the --parameters option to display all parameters:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --parameters

Display a specific parameter by specifying its name with the --parameter option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --parameter=kernel.debug

By default, internal services are hidden. You can display them
using the --show-hidden flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --show-hidden

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:container --format=json

Options:
--show-hiddenShow hidden (internal) services
--tagShow all services with a specific tag
--tagsDisplay tagged services for an application
--parameterDisplay a specific parameter for an application
--parametersDisplay parameters for an application
--typesDisplay types (classes/interfaces) available in the container
--env-varDisplay a specific environment variable used in the container
--env-varsDisplay environment variables used in the container
--formatThe output format ("txt", "xml", "json", "md")
--rawTo output raw description
--deprecationsDisplay deprecations generated when compiling and warming up the container
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + + + + + + + + + + +
+ + debug:dotenv + /home/leclere/Projets/ltbxd-actorle/bin/console debug:dotenv command displays all the environment variables configured by dotenv:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:dotenv

To get specific variables, specify its full or partial name:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:dotenv FOO_BAR


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ filter[=null] + + + + + + + + + + + + + +
+ + debug:event-dispatcher + debug:event-dispatcher command displays all configured listeners:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:event-dispatcher

To get specific listeners for an event, specify its name:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:event-dispatcher kernel.request

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:event-dispatcher --format=json

Options:
--dispatcherTo view events of a specific event dispatcher
--formatThe output format ("txt", "xml", "json", "md")
--rawTo output raw description
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ event[=null] + + + + + + + + + + + + + + + + +
+ + debug:firewall + debug:firewall command displays the firewalls that are configured
in your application:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:firewall

You can pass a firewall name to display more detailed information about
a specific firewall:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:firewall main

To include all events and event listeners for a specific firewall, use the
events option:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:firewall --events main


Options:
--eventsInclude a list of event listeners (only available in combination with the "name" argument)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + +
+ + debug:form + debug:form command displays information about form types.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form

The command lists all built-in types, services types, type extensions and
guessers currently available.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form Symfony\Component\Form\Extension\Core\Type\ChoiceType
php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form ChoiceType

The command lists all defined options that contains the given form type,
as well as their parents and type extensions.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form ChoiceType choice_value

Use the --show-deprecated option to display form types with
deprecated options or the deprecated options of the given form type:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form --show-deprecated
php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form ChoiceType --show-deprecated

The command displays the definition of the given option name.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:form --format=json

The command lists everything in a machine readable json format.

Options:
--show-deprecatedDisplay deprecated options in form types
--formatThe output format ("txt", "json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ class[=null] option[=null] + + + + + + + + + + + + + + + +
+ + debug:messenger + debug:messenger command displays all messages that can be
dispatched using the message buses:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:messenger

Or for a specific bus only:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:messenger command_bus


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ bus[=null] + + + + + + + + + + + + + +
+ + debug:router + debug:router displays the configured routes:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:router

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:router --format=json

Options:
--show-controllersShow assigned controllers in overview
--show-aliasesShow aliases in overview
--formatThe output format ("txt", "xml", "json", "md")
--rawTo output raw route(s)
--methodFilter by HTTP method
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + + + + +
+ + debug:security:role-hierarchy + debug:security:role-hierarchy command dumps the role hierarchy in Mermaid format.

Mermaid: /home/leclere/Projets/ltbxd-actorle/bin/console debug:security:role-hierarchy > roles.mmd
Mermaid with direction: /home/leclere/Projets/ltbxd-actorle/bin/console debug:security:role-hierarchy --direction=BT > roles.mmd

Options:
--direction(-d)The direction of the flowchart [TB|TD|BT|RL|LR]
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + debug:serializer + debug:serializer 'App\Entity\Dummy' command dumps the serializer groups for the dummy class.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ class + + + + + + + + + + + + + +
+ + debug:translation + debug:translation command helps finding unused or missing translation
messages and comparing them with the fallback ones by inspecting the
templates and translation files of a given bundle or the default translations directory.

You can display information about bundle translations in a specific locale:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation en AcmeDemoBundle

You can also specify a translation domain for the search:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation --domain=messages en AcmeDemoBundle

You can only display missing messages:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation --only-missing en AcmeDemoBundle

You can only display unused messages:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation --only-unused en AcmeDemoBundle

You can display information about application translations in a specific locale:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation en

You can display information about translations in all registered bundles in a specific locale:

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:translation --all en


Options:
--domainThe messages domain
--only-missingDisplay only missing messages
--only-unusedDisplay only unused messages
--allLoad messages from all registered bundles
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ locale bundle[=null] + + + + + + + + + + + + + + + + + +
+ + debug:twig + debug:twig command outputs a list of twig functions,
filters, globals and tests.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:twig

The command lists all functions, filters, etc.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:twig @Twig/Exception/error.html.twig

The command lists all paths that match the given template name.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:twig --filter=date

The command lists everything that contains the word date.

php /home/leclere/Projets/ltbxd-actorle/bin/console debug:twig --format=json

The command lists everything in a machine readable json format.

Options:
--filterShow details for all entries matching this filter
--formatThe output format ("txt", "json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + +
+ + debug:validator + debug:validator 'App\Entity\Dummy' command dumps the validators for the dummy class.

The debug:validator src/ command dumps the validators for the `src` directory.

Options:
--show-allShow all classes even if they have no validation constraints
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ class + + + + + + + + + + + + + + +
+ + doctrine:cache:clear-collection-region + doctrine:cache:clear-collection-region command is meant to clear a second-level cache collection regions for an associated Entity Manager.
It is possible to delete/invalidate all collection region, a specific collection region or flushes the cache provider.

The execution type differ on how you execute the command.
If you want to invalidate all entries for an collection region this command would do the work:

doctrine:cache:clear-collection-region 'Entities\MyEntity' 'collectionName'

To invalidate a specific entry you should use :

doctrine:cache:clear-collection-region 'Entities\MyEntity' 'collectionName' 1

If you want to invalidate all entries for the all collection regions:

doctrine:cache:clear-collection-region --all

Alternatively, if you want to flush the configured cache provider for an collection region use this command:

doctrine:cache:clear-collection-region 'Entities\MyEntity' 'collectionName' --flush

Finally, be aware that if --flush option is passed,
not all cache providers are able to flush entries, because of a limitation of its execution nature.

Options:
--emName of the entity manager to operate on
--allIf defined, all entity regions will be deleted/invalidated.
--flushIf defined, all cache entries will be flushed.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ owner-class[=null] association[=null] owner-id[=null] + + + + + + + + + + + + + + + + +
+ + doctrine:cache:clear-entity-region + doctrine:cache:clear-entity-region command is meant to clear a second-level cache entity region for an associated Entity Manager.
It is possible to delete/invalidate all entity region, a specific entity region or flushes the cache provider.

The execution type differ on how you execute the command.
If you want to invalidate all entries for an entity region this command would do the work:

doctrine:cache:clear-entity-region 'Entities\MyEntity'

To invalidate a specific entry you should use :

doctrine:cache:clear-entity-region 'Entities\MyEntity' 1

If you want to invalidate all entries for the all entity regions:

doctrine:cache:clear-entity-region --all

Alternatively, if you want to flush the configured cache provider for an entity region use this command:

doctrine:cache:clear-entity-region 'Entities\MyEntity' --flush

Finally, be aware that if --flush option is passed,
not all cache providers are able to flush entries, because of a limitation of its execution nature.

Options:
--emName of the entity manager to operate on
--allIf defined, all entity regions will be deleted/invalidated.
--flushIf defined, all cache entries will be flushed.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ entity-class[=null] entity-id[=null] + + + + + + + + + + + + + + + + +
+ + doctrine:cache:clear-metadata + doctrine:cache:clear-metadata command is meant to clear the metadata cache of associated Entity Manager.

Options:
--emName of the entity manager to operate on
--flushIf defined, cache entries will be flushed instead of deleted/invalidated.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + doctrine:cache:clear-query + doctrine:cache:clear-query command is meant to clear the query cache of associated Entity Manager.

Options:
--emName of the entity manager to operate on
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + doctrine:cache:clear-query-region + doctrine:cache:clear-query-region command is meant to clear a second-level cache query region for an associated Entity Manager.
It is possible to delete/invalidate all query region, a specific query region or flushes the cache provider.

The execution type differ on how you execute the command.
If you want to invalidate all entries for the default query region this command would do the work:

doctrine:cache:clear-query-region

To invalidate entries for a specific query region you should use :

doctrine:cache:clear-query-region my_region_name

If you want to invalidate all entries for the all query region:

doctrine:cache:clear-query-region --all

Alternatively, if you want to flush the configured cache provider use this command:

doctrine:cache:clear-query-region my_region_name --flush

Finally, be aware that if --flush option is passed,
not all cache providers are able to flush entries, because of a limitation of its execution nature.

Options:
--emName of the entity manager to operate on
--allIf defined, all query regions will be deleted/invalidated.
--flushIf defined, all cache entries will be flushed.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ region-name[=null] + + + + + + + + + + + + + + + + +
+ + doctrine:cache:clear-result + doctrine:cache:clear-result command is meant to clear the result cache of associated Entity Manager.
It is possible to invalidate all cache entries at once - called delete -, or flushes the cache provider
instance completely.

The execution type differ on how you execute the command.
If you want to invalidate the entries (and not delete from cache instance), this command would do the work:

doctrine:cache:clear-result

Alternatively, if you want to flush the cache provider using this command:

doctrine:cache:clear-result --flush

Finally, be aware that if --flush option is passed, not all cache providers are able to flush entries,
because of a limitation of its execution nature.

Options:
--emName of the entity manager to operate on
--flushIf defined, cache entries will be flushed instead of deleted/invalidated.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + doctrine:database:create + doctrine:database:create command creates the default connections database:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:database:create

You can also optionally specify the name of a connection to create the database for:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:database:create --connection=default

Options:
--connection(-c)The connection to use for this command
--if-not-existsDon't trigger an error, when the database already exists
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + doctrine:database:drop + doctrine:database:drop command drops the default connections database:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:database:drop

The --force parameter has to be used to actually drop the database.

You can also optionally specify the name of a connection to drop the database for:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:database:drop --connection=default

Be careful: All data in a given database will be lost when executing this command.

Options:
--connection(-c)The connection to use for this command
--if-existsDon't trigger an error, when the database doesn't exist
--force(-f)Set this parameter to execute this action
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:debug:entity-listeners + doctrine:debug:entity-listeners command lists all entity listeners for a given entity:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:debug:entity-listeners 'App\Entity\User'

To show only listeners for a specific event, pass the event name:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:debug:entity-listeners 'App\Entity\User' postPersist

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ entity[=null] event[=null] + + + + + + + + + + + + + +
+ + doctrine:debug:event-manager + doctrine:debug:event-manager command lists all event listeners for the default entity manager:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:debug:event-manager

You can also specify an entity manager:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:debug:event-manager --em=default

To show only listeners for a specific event, pass the event name as an argument:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:debug:event-manager postPersist

Options:
--emThe entity manager to use for this command
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ event[=null] + + + + + + + + + + + + + + +
+ + doctrine:mapping:describe +
/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:mapping:describe My\Namespace\Entity\MyEntity

Or:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:mapping:describe MyEntity

To output the metadata in JSON format, use the --format option:
/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:mapping:describe My\Namespace\Entity\MyEntity --format=json

To use a specific entity manager (e.g., for multi-DB projects), use the --em option:
/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:mapping:describe My\Namespace\Entity\MyEntity --em=my_custom_entity_manager


Options:
--emName of the entity manager to operate on
--formatOutput format (text, json)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ entityName + + + + + + + + + + + + + + + +
+ + doctrine:mapping:info + doctrine:mapping:info shows basic information about which
entities exist and possibly if their mapping information contains errors or
not.

Options:
--emName of the entity manager to operate on
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + doctrine:migrations:current +
Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:diff + doctrine:migrations:diff command generates a migration by comparing your current database to your mapping information:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:diff


Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--namespaceThe namespace to use for the migration (must be in the list of configured namespaces)
--filter-expressionTables which are filtered by Regular Expression.
--formattedFormat the generated SQL.
--nowdocOutput the generated SQL as a nowdoc string (enabled by default for formatted queries).
--no-nowdocNegate the "--nowdoc" option
--line-lengthMax line length of unformatted lines.
--check-database-platformCheck Database Platform to the generated code.
--allow-empty-diffDo not throw an exception when no changes are detected.
--from-empty-schemaGenerate a full migration as if the current database was empty.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:dump-schema + doctrine:migrations:dump-schema command dumps the schema for your database to a migration:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:dump-schema

After dumping your schema to a migration, you can rollup your migrations using the migrations:rollup command.

Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--formattedFormat the generated SQL.
--nowdocOutput the generated SQL as a nowdoc string (enabled by default for formatted queries).
--no-nowdocNegate the "--nowdoc" option
--namespaceNamespace to use for the generated migrations (defaults to the first namespace definition).
--filter-tablesFilter the tables to dump via Regex.
--line-lengthMax line length of unformatted lines.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:execute + doctrine:migrations:execute command executes migration versions up or down manually:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN

You can show more information about the process by increasing the verbosity level. To see the
executed queries, set the level to debug with -vv:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN -vv

If no --up or --down option is specified it defaults to up:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN --down

You can also execute the migration as a --dry-run:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN --dry-run

You can output the prepared SQL statements to a file with --write-sql:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN --write-sql

Or you can also execute the migration without a warning message which you need to interact with:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN --no-interaction

All the previous commands accept multiple migration versions, allowing you run execute more than
one migration at once:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:execute FQCN-1 FQCN-2 ...FQCN-n


Options:
--write-sqlThe path to output the migration SQL file. Defaults to current working directory.
--dry-runExecute the migration as a dry run.
--upExecute the migration up.
--downExecute the migration down.
--query-timeTime all the queries individually.
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ versions + + + + + + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:generate + doctrine:migrations:generate command generates a blank migration class:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:generate


Options:
--namespaceThe namespace to use for the migration (must be in the list of configured namespaces)
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:latest +
Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:list + doctrine:migrations:list command outputs a list of all available migrations and their status:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:list

Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:migrate + doctrine:migrations:migrate command executes a migration to a specified version or the latest available version:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate

You can show more information about the process by increasing the verbosity level. To see the
executed queries, set the level to debug with -vv:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate -vv

You can optionally manually specify the version you wish to migrate to:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate FQCN

You can specify the version you wish to migrate to using an alias:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate prev
These alias are defined: first, latest, prev, current and next

You can specify the version you wish to migrate to using a number against the current version:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate current+3

You can also execute the migration as a --dry-run:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate FQCN --dry-run

You can output the prepared SQL statements to a file with --write-sql:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate FQCN --write-sql

Or you can also execute the migration without a warning message which you need to interact with --no-interaction:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate --no-interaction

You can also time all the different queries if you want to know which one is taking so long with --query-time:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate --query-time

You can skip throwing an exception if no migration is available with --allow-no-migration:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate --allow-no-migration

You can wrap the entire migration in a transaction with --all-or-nothing:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:migrate --all-or-nothing


Options:
--write-sqlThe path to output the migration SQL file. Defaults to current working directory.
--dry-runExecute the migration as a dry run.
--query-timeTime all the queries individually.
--allow-no-migrationDo not throw an exception if no migration is available.
--all-or-nothingWrap the entire migration in a transaction.
--no-all-or-nothingDisable wrapping the entire migration in a transaction.
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ version[=null] + + + + + + + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:rollup + doctrine:migrations:rollup command rolls up migrations by deleting all tracked versions and
inserts the one version that exists that was created with the migrations:dump-schema command.

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:rollup

To dump your schema to a migration version you can use the migrations:dump-schema command.

Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:status + doctrine:migrations:status command outputs the status of a set of migrations:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:status

Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:sync-metadata-storage + The doctrine:migrations:sync-metadata-storage command updates metadata storage to the latest version,
ensuring it is ready to receive migrations generated by the current version of Doctrine Migrations.


/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:sync-metadata-storage

Options:
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + doctrine:migrations:up-to-date + doctrine:migrations:up-to-date command tells you if your schema is up-to-date:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:up-to-date

Options:
--fail-on-unregistered(-u)Whether to fail when there are unregistered extra migrations found
--list-migrations(-l)Show a list of missing or not migrated versions.
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + + +
+ + doctrine:migrations:version + doctrine:migrations:version command allows you to manually add, delete or synchronize migration versions from the version table:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version MIGRATION-FQCN --add

If you want to delete a version you can use the --delete option:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version MIGRATION-FQCN --delete

If you want to synchronize by adding or deleting all migration versions available in the version table you can use the --all option:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version --add --all
/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version --delete --all

If you want to synchronize by adding or deleting some range of migration versions available in the version table you can use the --range-from/--range-to option:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version --add --range-from=MIGRATION-FQCN --range-to=MIGRATION-FQCN
/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version --delete --range-from=MIGRATION-FQCN --range-to=MIGRATION-FQCN

You can also execute this command without a warning message which you need to interact with:

/home/leclere/Projets/ltbxd-actorle/bin/console doctrine:migrations:version --no-interaction

Options:
--addAdd the specified version.
--deleteDelete the specified version.
--allApply to all the versions.
--range-fromApply from specified version.
--range-toApply to specified version.
--configurationThe path to a migrations configuration file. [default: any of migrations.{php,xml,json,yml,yaml}]
--emThe name of the entity manager to use.
--connThe name of the connection to use.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ version[=null] + + + + + + + + + + + + + + + + + + + + + +
+ + doctrine:query:dql + doctrine:query:dql command executes the given DQL query and
outputs the results:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:query:dql "SELECT u FROM App\Entity\User u"

You can also optionally specify some additional options like what type of
hydration to use when executing the query:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:query:dql "SELECT u FROM App\Entity\User u" --hydrate=array

Additionally you can specify the first result and maximum amount of results to
show:

php /home/leclere/Projets/ltbxd-actorle/bin/console doctrine:query:dql "SELECT u FROM App\Entity\User u" --first-result=0 --max-result=30

Options:
--emName of the entity manager to operate on
--hydrateHydration mode of result set. Should be either: object, array, scalar or single-scalar.
--first-resultThe first result in the result set.
--max-resultThe maximum number of results in the result set.
--depthDumping depth of Entity graph.
--show-sqlDump generated SQL instead of executing query
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ dql + + + + + + + + + + + + + + + + + + + +
+ + doctrine:schema:create +
Hint: If you have a database with tables that should not be managed
by the ORM, you can use a DBAL functionality to filter the tables and sequences down
on a global level:

$config->setSchemaAssetsFilter(function (string|AbstractAsset $assetName): bool {
if ($assetName instanceof AbstractAsset) {
$assetName = $assetName->getName();
}

return !str_starts_with($assetName, 'audit_');
});

Options:
--emName of the entity manager to operate on
--dump-sqlInstead of trying to apply generated SQLs into EntityManager Storage Connection, output them.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + doctrine:schema:drop + Beware that the complete database is dropped by this command, even tables that are not relevant to your metadata model.

Hint: If you have a database with tables that should not be managed
by the ORM, you can use a DBAL functionality to filter the tables and sequences down
on a global level:

$config->setSchemaAssetsFilter(function (string|AbstractAsset $assetName): bool {
if ($assetName instanceof AbstractAsset) {
$assetName = $assetName->getName();
}

return !str_starts_with($assetName, 'audit_');
});

Options:
--emName of the entity manager to operate on
--dump-sqlInstead of trying to apply generated SQLs into EntityManager Storage Connection, output them.
--force(-f)Don't ask for the deletion of the database, but force the operation to run.
--full-databaseInstead of using the Class Metadata to detect the database table schema, drop ALL assets that the database contains.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + +
+ + doctrine:schema:update + doctrine:schema:update command generates the SQL needed to
synchronize the database schema with the current mapping metadata of the
default entity manager.

For example, if you add metadata for a new column to an entity, this command
would generate and output the SQL needed to add the new column to the database:

doctrine:schema:update --dump-sql

Alternatively, you can execute the generated queries:

doctrine:schema:update --force

If both options are specified, the queries are output and then executed:

doctrine:schema:update --dump-sql --force

Finally, be aware that this task will drop all database assets (e.g. tables,
etc) that are *not* described by the current metadata. In other words, without
this option, this task leaves untouched any "extra" tables that exist in the
database, but which aren't described by any metadata.

Hint: If you have a database with tables that should not be managed
by the ORM, you can use a DBAL functionality to filter the tables and sequences down
on a global level:

$config->setSchemaAssetsFilter(function (string|AbstractAsset $assetName): bool {
if ($assetName instanceof AbstractAsset) {
$assetName = $assetName->getName();
}

return !str_starts_with($assetName, 'audit_');
});

Options:
--emName of the entity manager to operate on
--completeThis option is a no-op, is deprecated and will be removed in 4.0
--dump-sqlDumps the generated SQL statements to the screen (does not execute them).
--force(-f)Causes the generated SQL statements to be physically executed against your database.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + +
+ + doctrine:schema:validate +
Options:
--emName of the entity manager to operate on
--skip-mappingSkip the mapping validation check
--skip-syncSkip checking if the mapping is in sync with the database
--skip-property-typesSkip checking if property types match the Doctrine types
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + + +
+ + error:dump +
Options:
--force(-f)Force directory removal before dumping new error pages
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ path status-codes[=null] + + + + + + + + + + + + + + +
+ + importmap:audit + --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:audit --format=json

Options:
--formatThe output format ("txt, json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + importmap:install +
Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + importmap:outdated + importmap:outdated command will list the latest updates available for the 3rd party packages in importmap.php.
Versions showing in red are semver compatible versions and you should upgrading.
Versions showing in yellow are major updates that include backward compatibility breaks according to semver.

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:outdated

Or specific packages only:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:outdated

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:outdated --format=json

Options:
--formatThe output format ("txt, json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ packages[=null] + + + + + + + + + + + + + + +
+ + importmap:remove + importmap:remove command removes packages from the importmap.php.
If a package was downloaded into your app, the downloaded file will also be removed.

For example:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:remove lodash

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ packages + + + + + + + + + + + + + +
+ + importmap:require + importmap:require command adds packages to importmap.php usually
by finding a CDN URL for the given package and version.

For example:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require lodash
php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "lodash@^4.15"

You can also require specific paths of a package:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "chart.js/auto"

Or require one package/file, but alias its name in your import map:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "vue/dist/vue.esm-bundler.js=vue"

Sometimes, a package may require other packages and multiple new items may be added
to the import map.

You can also require multiple packages at once:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "lodash@^4.15" "@hotwired/stimulus"

To add an importmap entry pointing to a local file, use the path option:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "any_module_name" --path=./assets/some_file.js

To simulate the installation, use the --dry-run option:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:require "any_module_name" --dry-run -v

When this option is enabled, this command does not perform any write operations to the filesystem.

Options:
--entrypointMake the packages an entrypoint?
--pathThe local path where the package lives relative to the project root
--dry-runSimulate the installation of the packages
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ packages + + + + + + + + + + + + + + + + +
+ + importmap:update + importmap:update command will update all from the 3rd part packages
in importmap.php to their latest version, including downloaded packages.

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:update

Or specific packages only:

php /home/leclere/Projets/ltbxd-actorle/bin/console importmap:update

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ packages[=null] + + + + + + + + + + + + + +
+ + lint:container +
Options:
--resolve-env-varsResolve environment variables and fail if one is missing.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + lint:translations + lint:translations command lint translations.

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:translations

Options:
--localeSpecify the locales to lint.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + command]]> + + + + + + + + + + + + +
+ + lint:twig + lint:twig command lints a template and outputs to STDOUT
the first encountered syntax error.

You can validate the syntax of contents passed from STDIN:

cat filename | php /home/leclere/Projets/ltbxd-actorle/bin/console lint:twig -

Or the syntax of a file:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:twig filename

Or of a whole directory:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:twig dirname

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:twig dirname --format=json
Or all template files in a bundle:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:twig @AcmeDemoBundle


Options:
--formatThe output format ("txt", "json", "github")
--show-deprecationsShow deprecations as errors
--excludesExcluded directories
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ filename[=null] + + + + + + + + + + + + + + + + +
+ + lint:xliff + lint:xliff command lints an XLIFF file and outputs to STDOUT
the first encountered syntax error.

You can validates XLIFF contents passed from STDIN:

cat filename | php /home/leclere/Projets/ltbxd-actorle/bin/console lint:xliff -

You can also validate the syntax of a file:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:xliff filename

Or of a whole directory:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:xliff dirname

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:xliff dirname --format=json


Options:
--formatThe output format ("txt", "json", "github")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ filename[=null] + + + + + + + + + + + + + + +
+ + lint:yaml + lint:yaml command lints a YAML file and outputs to STDOUT
the first encountered syntax error.

You can validates YAML contents passed from STDIN:

cat filename | php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml -

You can also validate the syntax of a file:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml filename

Or of a whole directory:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml dirname

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml dirname --format=json

You can also exclude one or more specific files:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml dirname --exclude="dirname/foo.yaml" --exclude="dirname/bar.yaml"

Or find all files in a bundle:

php /home/leclere/Projets/ltbxd-actorle/bin/console lint:yaml @AcmeDemoBundle


Options:
--formatThe output format ("txt", "json", "github")
--excludePath(s) to exclude
--parse-tagsParse custom tags
--no-parse-tagsNegate the "--parse-tags" option
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ filename[=null] + + + + + + + + + + + + + + + + + +
+ + mailer:test + mailer:test command tests a Mailer transport by sending a simple email message:

php /home/leclere/Projets/ltbxd-actorle/bin/console mailer:test to@example.com

You can also specify a specific transport:

php /home/leclere/Projets/ltbxd-actorle/bin/console mailer:test to@example.com --transport=transport_name

Note that this command bypasses the Messenger bus if configured.


Options:
--fromThe sender of the message
--subjectThe subject of the message
--bodyThe body of the message
--transportThe transport to be used
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ to + + + + + + + + + + + + + + + + + +
+ + make:auth + make:auth command generates various authentication systems,
by asking questions.

It can provide an empty authenticator, or a full login form authentication process.
In both cases it also updates your security.yaml.
For the login form, it also generates a controller and the Twig template.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:auth


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + make:command + make:command command generates a new command:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:command app:do-something

If the argument is missing, the command will ask for the command name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:controller + make:controller command generates a new controller class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:controller CoolStuffController

If the argument is missing, the command will ask for the controller class name interactively.

If you have the symfony/twig-bundle installed, a Twig template will also be
generated for the controller.

composer require symfony/twig-bundle

You can also generate the controller alone, without template with this option:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:controller --no-template

To generate tailored PHPUnit tests, simply call:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:controller --with-tests

This will generate a unit test in tests/ for you to review then use
to test the new functionality of your app.


Options:
--no-templateUse this option to disable template generation
--invokable(-i)Use this option to create an invokable controller
--with-testsGenerate PHPUnit Tests
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ controller-class[=null] + + + + + + + + + + + + + + + + +
+ + make:crud + make:crud command generates crud controller with templates for selected entity.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:crud BlogPost

If the argument is missing, the command will ask for the entity class name interactively.
To generate tailored PHPUnit tests, simply call:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:crud --with-tests

This will generate a unit test in tests/ for you to review then use
to test the new functionality of your app.


Options:
--with-testsGenerate PHPUnit Tests
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ entity-class[=null] + + + + + + + + + + + + + + +
+ + make:docker:database + make:docker:database command generates or updates databases services in compose.yaml

php /home/leclere/Projets/ltbxd-actorle/bin/console make:docker:database

Supports MySQL, MariaDB and PostgreSQL


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + make:entity + make:entity command creates or updates an entity and repository class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity BlogPost

If the argument is missing, the command will ask for the entity class name interactively.

You can also mark this class as an API Platform resource. A hypermedia CRUD API will
automatically be available for this entity class:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --api-resource

Symfony can also broadcast all changes made to the entity to the client using Symfony
UX Turbo.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --broadcast

You can also generate all the getter/setter/adder/remover methods
for the properties of existing entities:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --regenerate

You can also *overwrite* any existing methods:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --regenerate --overwrite

Instead of using the default "int" type for the entity's "id", you can use the
UUID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-uuids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --with-uuid

Or you can use the ULID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-ulids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:entity --with-ulid


Options:
--api-resource(-a)Mark this class as an API Platform resource (expose a CRUD API for it)
--broadcast(-b)Add the ability to broadcast entity updates using Symfony UX Turbo?
--regenerateInstead of adding new fields, simply generate the methods (e.g. getter/setter) for existing fields
--overwriteOverwrite any existing getter/setter methods
--with-uuidUse UUID for entity "id"
--with-ulidUse ULID for entity "id"
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + + + + + +
+ + make:fixtures + make:fixtures command generates a new Doctrine fixtures class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:fixtures AppFixtures

If the argument is missing, the command will ask for a class interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ fixtures-class[=null] + + + + + + + + + + + + + +
+ + make:form + make:form command generates a new form class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:form UserType

If the argument is missing, the command will ask for the form class interactively.

You can optionally specify the bound class in a second argument.
This can be the name of an entity like User

php /home/leclere/Projets/ltbxd-actorle/bin/console make:form UserType User

You can also specify a fully qualified name to another class like \App\Dto\UserData.
Slashes must be escaped in the argument.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:form UserType \\App\\Dto\\UserData



Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] bound-class[=null] + + + + + + + + + + + + + +
+ + make:listener + make:listener command generates a new event subscriber class or a new event listener class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:listener ExceptionListener

If the argument is missing, the command will ask for the class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] event[=null] + + + + + + + + + + + + + +
+ + make:message + make:message command generates a new message class & handler.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:message EmailMessage

If the argument is missing, the command will ask for the message class interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:messenger-middleware + make:messenger-middleware command generates a new message class & handler.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:messenger-middleware EmailMessage

If the argument is missing, the command will ask for the message class interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:migration + make:migration command generates a new migration:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:migration

You can also generate a formatted migration with this option:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:migration --formatted


Options:
--formattedFormat the generated SQL
--configurationThe path of doctrine configuration file
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + make:registration-form + make:registration-form command generates a complete registration form, controller & template.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:registration-form

The command will ask for several pieces of information to build your form.

To generate tailored PHPUnit tests, simply call:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:registration-form --with-tests

This will generate a unit test in tests/ for you to review then use
to test the new functionality of your app.


Options:
--with-testsGenerate PHPUnit Tests
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + make:reset-password + make:reset-password command generates all the files needed to implement
a fully-functional & secure password reset system.

The SymfonycastsResetPasswordBundle is required and can be added using composer:
composer require symfonycasts/reset-password-bundle

For more information on the reset-password-bundle check out:
https://github.com/symfonycasts/reset-password-bundle

make:reset-password requires a user entity with an email property,
email getter method, and a password setter method. Maker will ask for these
interactively if they cannot be guessed.

Maker will also update your reset-password.yaml configuration file
if one exists. If you have customized the configuration file, maker will attempt
to modify it accordingly but preserve your customizations.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:reset-password

Instead of using the default "int" type for the entity's "id", you can use the
UUID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-uuids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:reset-password --with-uuid

Or you can use the ULID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-ulids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:reset-password --with-ulid

To generate tailored PHPUnit tests, simply call:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:reset-password --with-tests

This will generate a unit test in tests/ for you to review then use
to test the new functionality of your app.


Options:
--with-uuidUse UUID for entity "id"
--with-ulidUse ULID for entity "id"
--with-testsGenerate PHPUnit Tests
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + + +
+ + make:schedule + make:schedule command generates a schedule to automate repeated
tasks using Symfony's Scheduler Component.

If the Scheduler Component is not installed, make:schedule will
install it automatically using composer. You can of course do this manually by
running composer require symfony/scheduler.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:schedule


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + make:security:custom + make:security:custom command generates a simple custom authenticator
class based off the example provided in:

https://symfony.com/doc/current/security/custom_authenticator.html

This will also update your security.yaml for the new custom authenticator.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:security:custom


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + make:security:form-login + make:security:form-login command generates a controller and Twig template
to allow users to login using the form_login authenticator.

The controller name, and logout ability can be customized by answering the
questions asked when running make:security:form-login.

This will also update your security.yaml for the new authenticator.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:security:form-login

To generate tailored PHPUnit tests, simply call:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:security:form-login --with-tests

This will generate a unit test in tests/ for you to review then use
to test the new functionality of your app.


Options:
--with-testsGenerate PHPUnit Tests
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + make:serializer:encoder + make:serializer:encoder command generates a new serializer encoder class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:serializer:encoder YamlEncoder

If the argument is missing, the command will ask for the class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] format[=null] + + + + + + + + + + + + + +
+ + make:serializer:normalizer + make:serializer:normalizer command generates a new serializer normalizer class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:serializer:normalizer UserNormalizer

If the argument is missing, the command will ask for the class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:stimulus-controller + make:stimulus-controller command generates a new Stimulus controller.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:stimulus-controller hello

If the argument is missing, the command will ask for the controller name interactively.

To generate a TypeScript file (instead of a JavaScript file) use the --typescript
(or --ts) option:

php /home/leclere/Projets/ltbxd-actorle/bin/console make:stimulus-controller hello --typescript

It will also interactively ask for values, targets, classes to add to the Stimulus
controller (optional).

php /home/leclere/Projets/ltbxd-actorle/bin/console make:stimulus-controller


Options:
--typescript(-ts)Create a TypeScript controller (default is JavaScript)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name + + + + + + + + + + + + + + +
+ + make:test + make:test command generates a new test class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:test TestCase BlogPostTest

If the first argument is missing, the command will ask for the test type interactively.

If the second argument is missing, the command will ask for the class name interactively.
* TestCase: basic PHPUnit tests
* KernelTestCase: basic tests that have access to Symfony services
* WebTestCase: to run browser-like scenarios, but that don't execute JavaScript code
* ApiTestCase: to run API-oriented scenarios
* PantherTestCase: to run e2e scenarios, using a real-browser or HTTP client and a real web server

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ type[=null] name[=null] + + + + + + + + + + + + + +
+ + make:twig-component +
Options:
--liveWhether to create a Live component (requires symfony/ux-live-component)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + +
+ + make:twig-extension + make:twig-extension command generates a new Twig extension with its runtime class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:twig-extension AppExtension

If the argument is missing, the command will ask for the class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:user + make:user command generates a new user class for security
and updates your security.yaml file for it. It will also generate a user provider
class if your situation needs a custom class.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:user User

If the argument is missing, the command will ask for the class name interactively.

Instead of using the default "int" type for the entity's "id", you can use the
UUID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-uuids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:user --with-uuid

Or you can use the ULID type from Symfony's Uid component.
https://symfony.com/doc/current/components/uid.html#storing-ulids-in-databases

php /home/leclere/Projets/ltbxd-actorle/bin/console make:user --with-ulid


Options:
--is-entityDo you want to store user data in the database (via Doctrine)?
--identity-property-nameEnter a property name that will be the unique "display" name for the user (e.g. email, username, uuid)
--with-passwordWill this app be responsible for checking the password? Choose No if the password is actually checked by some other system (e.g. a single sign-on server)
--with-uuidUse UUID for entity "id"
--with-ulidUse ULID for entity "id"
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + + + + + + +
+ + make:validator + make:validator command generates a new validation constraint.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:validator EnabledValidator

If the argument is missing, the command will ask for the constraint class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:voter + make:voter command generates a new security voter.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:voter BlogPostVoter

If the argument is missing, the command will ask for the class name interactively.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + make:webhook + make:webhook command creates a RequestParser, a WebhookHandler and adds the necessary configuration
for a new Webhook.

php /home/leclere/Projets/ltbxd-actorle/bin/console make:webhook stripe

If the argument is missing, the command will ask for the webhook name interactively.

It will also interactively ask for the RequestMatchers to use for the RequestParser's getRequestMatcher function.


Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name[=null] + + + + + + + + + + + + + +
+ + messenger:consume + messenger:consume command consumes messages and dispatches them to the message bus.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume

To receive from multiple transports, pass each name:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume receiver1 receiver2

Use the --limit option to limit the number of messages received:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --limit=10

Use the --failure-limit option to stop the worker when the given number of failed messages is reached:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --failure-limit=2

Use the --memory-limit option to stop the worker if it exceeds a given memory usage limit. You can use shorthand byte values [K, M or G]:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --memory-limit=128M

Use the --time-limit option to stop the worker when the given time limit (in seconds) is reached.
If a message is being handled, the worker will stop after the processing is finished:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --time-limit=3600

Use the --bus option to specify the message bus to dispatch received messages
to instead of trying to determine it automatically. This is required if the
messages didn't originate from Messenger:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --bus=event_bus

Use the --queues option to limit a receiver to only certain queues (only supported by some receivers):

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --queues=fasttrack

Use the --no-reset option to prevent services resetting after each message (may lead to leaking services' state between messages):

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --no-reset

Use the --all option to consume from all receivers:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --all

Use the --exclude-receivers option to exclude specific receivers/transports from consumption (can only be used with --all):

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:consume --all --exclude-receivers=

Options:
--limit(-l)Limit the number of received messages
--failure-limit(-f)The number of failed messages the worker can consume
--memory-limit(-m)The memory limit the worker can consume
--time-limit(-t)The time limit in seconds the worker can handle new messages
--sleepSeconds to sleep before asking for new messages after no messages were found
--bus(-b)Name of the bus to which received messages should be dispatched (if not passed, bus is determined automatically)
--queuesLimit receivers to only consume from the specified queues
--no-resetDo not reset container services after each message
--allConsume messages from all receivers
--exclude-receiversExclude specific receivers/transports from consumption (can only be used with --all)
--keepaliveWhether to use the transport's keepalive mechanism if implemented
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ receivers[=null] + + + + + + + + + + + + + + + + + + + + + + + + +
+ + messenger:failed:remove + messenger:failed:remove removes given messages that are pending in the failure transport.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:remove {id1} [{id2} ...]

The specific ids can be found via the messenger:failed:show command.

You can remove all failed messages from the failure transport by using the "--all" option:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:remove --all

Options:
--allRemove all failed messages from the transport
--forceForce the operation without confirmation
--transportUse a specific failure transport
--show-messagesDisplay messages before removing it (if multiple ids are given)
--class-filterFilter by a specific class name
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ id[=null] + + + + + + + + + + + + + + + + + + +
+ + messenger:failed:retry + messenger:failed:retry retries message in the failure transport.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:retry

The command will interactively ask if each message should be retried,
discarded or skipped.

Some transports support retrying a specific message id, which comes
from the messenger:failed:show command.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:retry {id}

Or pass multiple ids at once to process multiple messages:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:retry {id1} {id2} {id3}


Options:
--forceForce action without confirmation
--transportUse a specific failure transport
--keepaliveWhether to use the transport's keepalive mechanism if implemented
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ id[=null] + + + + + + + + + + + + + + + + +
+ + messenger:failed:show + messenger:failed:show shows message that are pending in the failure transport.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:show

Or look at a specific message by its id:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:failed:show {id}

Options:
--maxMaximum number of messages to list
--transportUse a specific failure transport
--statsDisplay the message count by class
--class-filterFilter by a specific class name
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ id[=null] + + + + + + + + + + + + + + + + + +
+ + messenger:setup-transports + messenger:setup-transports command setups the transports:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:setup-transports

Or a specific transport only:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:setup-transports

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ transport[=null] + + + + + + + + + + + + + +
+ + messenger:stats + messenger:stats command counts the messages for all the transports:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:stats

Or specific transports only:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:stats

The --format option specifies the format of the command output:

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:stats --format=json

Options:
--formatThe output format ("txt", "json")
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ transport_names[=null] + + + + + + + + + + + + + + +
+ + messenger:stop-workers + messenger:stop-workers command sends a signal to stop any messenger:consume processes that are running.

php /home/leclere/Projets/ltbxd-actorle/bin/console messenger:stop-workers

Each worker command will finish the message they are currently processing
and then exit. Worker commands are *not* automatically restarted: that
should be handled by a process control system.

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + router:match + router:match shows which routes match a given request and which don't and for what reason:

php /home/leclere/Projets/ltbxd-actorle/bin/console router:match /foo

or

php /home/leclere/Projets/ltbxd-actorle/bin/console router:match /foo --method POST --scheme https --host symfony.com --verbose


Options:
--methodSet the HTTP method
--schemeSet the URI scheme (usually http or https)
--hostSet the URI host
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ path_info + + + + + + + + + + + + + + + + +
+ + secrets:decrypt-to-local + secrets:decrypt-to-local command decrypts all secrets and copies them in the local vault.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:decrypt-to-local

When the --force option is provided, secrets that already exist in the local vault are overridden.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:decrypt-to-local --force

Options:
--force(-f)Force overriding of secrets that already exist in the local vault
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + secrets:encrypt-from-local + secrets:encrypt-from-local command encrypts all locally overridden secrets to the vault.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:encrypt-from-local

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + +
+ + secrets:generate-keys + secrets:generate-keys command generates a new encryption key.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:generate-keys

If encryption keys already exist, the command must be called with
the --rotate option in order to override those keys and re-encrypt
existing secrets.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:generate-keys --rotate

Options:
--local(-l)Update the local vault.
--rotate(-r)Re-encrypt existing secrets with the newly generated keys.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + + +
+ + secrets:list + secrets:list command list all stored secrets.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:list

When the option --reveal is provided, the decrypted secrets are also displayed.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:list --reveal

Options:
--reveal(-r)Display decrypted values alongside names
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + secrets:remove + secrets:remove command removes a secret from the vault.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:remove

Options:
--local(-l)Update the local vault.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name + + + + + + + + + + + + + + +
+ + secrets:reveal + secrets:reveal command reveals a stored secret.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:reveal

Options:
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name + + + + + + + + + + + + + +
+ + secrets:set + secrets:set command stores a secret in the vault.

/home/leclere/Projets/ltbxd-actorle/bin/console secrets:set

To reference secrets in services.yaml or any other config
files, use "%env()%".

By default, the secret value should be entered interactively.
Alternatively, provide a file where to read the secret from:

php /home/leclere/Projets/ltbxd-actorle/bin/console secrets:set filename

Use "-" as a file name to read from STDIN:

cat filename | php /home/leclere/Projets/ltbxd-actorle/bin/console secrets:set -

Use --local to override secrets for local needs.

Options:
--local(-l)Update the local vault.
--random(-r)Generate a random value.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ name file[=null] + + + + + + + + + + + + + + + +
+ + security:hash-password + The security:hash-password command hashes passwords according to your
security configuration. This command is mainly used to generate passwords for
the in_memory user provider type and for changing passwords
in the database while developing the application.

Suppose that you have the following security configuration in your application:


# config/packages/security.yml
security:
password_hashers:
Symfony\Component\Security\Core\User\InMemoryUser: plaintext
App\Entity\User: auto


If you execute the command non-interactively, the first available configured
user class under the security.password_hashers key is used and a random salt is
generated to hash the password:

php /home/leclere/Projets/ltbxd-actorle/bin/console security:hash-password --no-interaction [password]

Pass the full user class path as the second argument to hash passwords for
your own entities:

php /home/leclere/Projets/ltbxd-actorle/bin/console security:hash-password --no-interaction [password] 'App\Entity\User'

Executing the command interactively allows you to generate a random salt for
hashing the password:

php /home/leclere/Projets/ltbxd-actorle/bin/console security:hash-password [password] 'App\Entity\User'

In case your hasher doesn't require a salt, add the empty-salt option:

php /home/leclere/Projets/ltbxd-actorle/bin/console security:hash-password --empty-salt [password] 'App\Entity\User'


Options:
--empty-saltDo not generate a salt or let the hasher generate one.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ password[=null] user-class[=null] + + + + + + + + + + + + + + +
+ + server:dump + server:dump starts a dump server that collects and displays
dumps in a single place for debugging you application:

php /home/leclere/Projets/ltbxd-actorle/bin/console server:dump

You can consult dumped data in HTML format in your browser by providing the --format=html option
and redirecting the output to a file:

php /home/leclere/Projets/ltbxd-actorle/bin/console server:dump --format="html" > dump.html


Options:
--formatThe output format (cli, html)
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + + + + + + + + + +
+ + server:log + server:log starts a log server to display in real time the log
messages generated by your application:

php /home/leclere/Projets/ltbxd-actorle/bin/console server:log

To filter the log messages using any ExpressionLanguage compatible expression, use the --filter option:

php /home/leclere/Projets/ltbxd-actorle/bin/console server:log --filter="level > 200 or channel in ['app', 'doctrine']"

Options:
--hostThe server host
--formatThe line format
--date-formatThe date format
--filterAn expression to filter log. Example: "level > 200 or channel in ['app', 'doctrine']"
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ + + + + + command]]> + + + + + + + + + + + + +
+ + translation:extract + translation:extract command extracts translation strings from templates
of a given bundle or the default translations directory. It can display them or merge
the new ones into the translation files.

When new translation strings are found it can automatically add a prefix to the translation
message. However, if the --no-fill option is used, the --prefix
option has no effect, since the translation values are left empty.

Example running against a Bundle (AcmeBundle)

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --dump-messages en AcmeBundle
php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --force --prefix="new_" fr AcmeBundle

Example running against default messages directory

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --dump-messages en
php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --force --prefix="new_" fr

You can sort the output with the --sort flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --dump-messages --sort=asc en AcmeBundle
php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --force --sort=desc fr

You can dump a tree-like structure using the yaml format with --as-tree flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:extract --force --format=yaml --as-tree=3 en AcmeBundle


Options:
--prefixOverride the default prefix
--no-fillExtract translation keys without filling in values
--formatOverride the default output format
--dump-messagesShould the messages be dumped in the console
--forceShould the extract be done
--cleanShould clean not found messages
--domainSpecify the domain to extract
--sortReturn list of messages sorted alphabetically
--as-treeDump the messages as a tree-like structure: The given value defines the level where to switch to inline YAML
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ locale bundle[=null] + + + + + + + + + + + command]]> + + + + + + + + + + + + +
+ + translation:pull + translation:pull command pulls translations from the given provider. Only
new translations are pulled, existing ones are not overwritten.

You can overwrite existing translations (and remove the missing ones on local side) by using the --force flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:pull --force provider

Full example:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:pull provider --force --domains=messages --domains=validators --locales=en

This command pulls all translations associated with the messages and validators domains for the en locale.
Local translations for the specified domains and locale are deleted if they're not present on the provider and overwritten if it's the case.
Local translations for others domains and locales are ignored.

Options:
--forceOverride existing translations with provider ones (it will delete not synchronized messages).
--intl-icuAssociated to --force option, it will write messages in "%domain%+intl-icu.%locale%.xlf" files.
--domainsSpecify the domains to pull.
--localesSpecify the locales to pull.
--formatOverride the default output format.
--as-treeWrite messages as a tree-like structure. Needs --format=yaml. The given value defines the level where to switch to inline YAML
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ provider + + + + + + + + command]]> + + + + + + + + + + + + +
+ + translation:push + translation:push command pushes translations to the given provider. Only new
translations are pushed, existing ones are not overwritten.

You can overwrite existing translations by using the --force flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:push --force provider

You can delete provider translations which are not present locally by using the --delete-missing flag:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:push --delete-missing provider

Full example:

php /home/leclere/Projets/ltbxd-actorle/bin/console translation:push provider --force --delete-missing --domains=messages --domains=validators --locales=en

This command pushes all translations associated with the messages and validators domains for the en locale.
Provider translations for the specified domains and locale are deleted if they're not present locally and overwritten if it's the case.
Provider translations for others domains and locales are ignored.

Options:
--forceOverride existing translations with local ones (it will delete not synchronized messages).
--delete-missingDelete translations available on provider but not locally.
--domainsSpecify the domains to push.
--localesSpecify the locales to push.
--help(-h)Display help for the given command. When no command is given display help for the list command
--silentDo not output any message
--quiet(-q)Only errors are displayed. All other output is suppressed
--verbose(-v)Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug
--version(-V)Display this application version
--ansiForce (or disable --no-ansi) ANSI output
--no-ansiNegate the "--ansi" option
--no-interaction(-n)Do not ask any interactive question
--env(-e)The Environment name.
--no-debugSwitch off debug mode.
--profileEnables profiling (requires debug).

]]>
+ provider + + + + + + command]]> + + + + + + + + + + + + +
+
+ diff --git a/.idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.4.xsd b/.idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.4.xsd new file mode 100644 index 0000000..f2efc6d --- /dev/null +++ b/.idea/commandlinetools/schemas/frameworkDescriptionVersion1.1.4.xsd @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.idea/dictionaries/project.xml b/.idea/dictionaries/project.xml new file mode 100644 index 0000000..a8c0ae4 --- /dev/null +++ b/.idea/dictionaries/project.xml @@ -0,0 +1,7 @@ + + + + tmdb + + + \ No newline at end of file diff --git a/.idea/ltbxd-actorle.iml b/.idea/ltbxd-actorle.iml new file mode 100644 index 0000000..0a60166 --- /dev/null +++ b/.idea/ltbxd-actorle.iml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..bbc2a63 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..089384d --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/php.xml b/.idea/php.xml new file mode 100644 index 0000000..13f7460 --- /dev/null +++ b/.idea/php.xml @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/assets/app.js b/assets/app.js new file mode 100644 index 0000000..e56396c --- /dev/null +++ b/assets/app.js @@ -0,0 +1,10 @@ +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/files/watched.csv b/assets/files/watched.csv new file mode 100644 index 0000000..da13301 --- /dev/null +++ b/assets/files/watched.csv @@ -0,0 +1,363 @@ +Date,Name,Year,Letterboxd URI +2022-05-20,The Batman,2022,https://boxd.it/eDGs +2022-05-20,Avatar,2009,https://boxd.it/1Efm +2022-05-20,The Social Network,2010,https://boxd.it/17ue +2022-05-20,Mad Max: Fury Road,2015,https://boxd.it/2DjO +2022-05-20,The Shape of Water,2017,https://boxd.it/dZ5m +2022-05-20,Parasite,2019,https://boxd.it/hTha +2022-05-20,Joker,2019,https://boxd.it/h4cS +2022-06-12,Top Gun: Maverick,2022,https://boxd.it/cjr4 +2022-06-12,Tenet,2020,https://boxd.it/leq4 +2022-06-12,Guardians of the Galaxy Vol. 2,2017,https://boxd.it/8MxC +2022-06-12,The Great Gatsby,2013,https://boxd.it/JY +2022-06-13,Doctor Strange in the Multiverse of Madness,2022,https://boxd.it/gaTc +2022-06-13,Whiplash,2014,https://boxd.it/7bQA +2022-06-13,American Psycho,2000,https://boxd.it/28Vs +2022-06-13,Fight Club,1999,https://boxd.it/2a9q +2022-06-13,Spider-Man: No Way Home,2021,https://boxd.it/nwRw +2022-06-13,Taxi Driver,1976,https://boxd.it/2b8y +2022-06-13,The Grand Budapest Hotel,2014,https://boxd.it/3ZqO +2022-06-13,Knives Out,2019,https://boxd.it/jWEA +2022-06-13,The Truman Show,1998,https://boxd.it/18U8 +2022-06-13,Interstellar,2014,https://boxd.it/4VZ8 +2022-06-13,The Dark Knight,2008,https://boxd.it/2b0k +2022-06-13,Jurassic World,2015,https://boxd.it/4n0g +2022-06-13,Inception,2010,https://boxd.it/1skk +2022-06-13,Dune,2021,https://boxd.it/fA7G +2022-06-13,Spirited Away,2001,https://boxd.it/2b4m +2022-06-13,The Wolf of Wall Street,2013,https://boxd.it/3C1m +2022-06-13,Eternal Sunshine of the Spotless Mind,2004,https://boxd.it/6YK +2022-06-13,Inglourious Basterds,2009,https://boxd.it/1JzG +2022-06-13,Gone Girl,2014,https://boxd.it/6hQu +2022-06-13,La La Land,2016,https://boxd.it/a5fa +2022-07-28,Drive,2011,https://boxd.it/IG +2022-07-28,Blade Runner 2049,2017,https://boxd.it/b8wK +2022-07-28,First Man,2018,https://boxd.it/cPym +2022-07-28,Kill Bill: Vol. 1,2003,https://boxd.it/70w +2022-07-28,Pulp Fiction,1994,https://boxd.it/29Pq +2022-07-28,Django Unchained,2012,https://boxd.it/2cCk +2022-08-31,Arrival,2016,https://boxd.it/aNGk +2023-07-22,Watchmen,2009,https://boxd.it/1QE4 +2023-07-22,Swiss Army Man,2016,https://boxd.it/bDG2 +2023-07-22,Everything Everywhere All at Once,2022,https://boxd.it/jUk4 +2023-07-25,Oppenheimer,2023,https://boxd.it/wUow +2023-08-04,Green Zone,2010,https://boxd.it/1zNS +2023-08-04,Incendies,2010,https://boxd.it/Msm +2023-08-04,It Follows,2014,https://boxd.it/87wo +2023-08-04,The Green Knight,2021,https://boxd.it/kuy2 +2023-08-04,The Royal Tenenbaums,2001,https://boxd.it/1YHU +2023-08-04,The Northman,2022,https://boxd.it/nK2s +2023-08-04,Black Swan,2010,https://boxd.it/Sw0 +2023-08-04,Raw,2016,https://boxd.it/dLd2 +2023-08-04,The Chorus,2004,https://boxd.it/22X8 +2023-08-04,The Shawshank Redemption,1994,https://boxd.it/2aHi +2023-08-04,The Dark Knight Rises,2012,https://boxd.it/H3m +2023-08-04,Batman Begins,2005,https://boxd.it/2aIg +2023-08-04,12 Angry Men,1957,https://boxd.it/2auI +2023-08-04,Schindler's List,1993,https://boxd.it/2aq2 +2023-08-04,Forrest Gump,1994,https://boxd.it/728 +2023-08-04,One Flew Over the Cuckoo's Nest,1975,https://boxd.it/2aeA +2023-08-04,The Silence of the Lambs,1991,https://boxd.it/2aHW +2023-08-04,Hannibal,2001,https://boxd.it/1XVc +2023-08-04,The Green Mile,1999,https://boxd.it/2agG +2023-08-04,The Usual Suspects,1995,https://boxd.it/29XE +2023-08-04,The Lion King,1994,https://boxd.it/201Q +2023-08-04,The Lion King,2019,https://boxd.it/eSjI +2023-08-04,Gladiator,2000,https://boxd.it/2b9m +2023-08-04,The Intouchables,2011,https://boxd.it/2FT0 +2023-08-04,The Departed,2006,https://boxd.it/28MA +2023-08-04,1917,2019,https://boxd.it/jj4y +2023-08-04,The Avengers,2012,https://boxd.it/1xFW +2023-08-04,Avengers: Infinity War,2018,https://boxd.it/9vEe +2023-08-04,Avengers: Endgame,2019,https://boxd.it/9vE4 +2023-08-04,Avengers: Age of Ultron,2015,https://boxd.it/3qi6 +2023-08-04,The Shining,1980,https://boxd.it/29Nu +2023-08-04,WALL·E,2008,https://boxd.it/1VEo +2023-08-04,Spider-Man,2002,https://boxd.it/2a8i +2023-08-04,Spider-Man: Into the Spider-Verse,2018,https://boxd.it/azpY +2023-08-04,Spider-Man: Across the Spider-Verse,2023,https://boxd.it/kSz4 +2023-08-04,Spider-Man 2,2004,https://boxd.it/2a88 +2023-08-04,Spider-Man 3,2007,https://boxd.it/2a7Y +2023-08-04,The Amazing Spider-Man,2012,https://boxd.it/27PI +2023-08-04,The Amazing Spider-Man 2,2014,https://boxd.it/3utM +2023-08-04,John Wick,2014,https://boxd.it/7dEc +2023-08-04,John Wick: Chapter 2,2017,https://boxd.it/ayGu +2023-08-04,John Wick: Chapter 3 – Parabellum,2019,https://boxd.it/gmFw +2023-08-04,John Wick: Chapter 4,2023,https://boxd.it/mh48 +2023-08-04,Prisoners,2013,https://boxd.it/4E5i +2023-08-04,Sicario,2015,https://boxd.it/8i7u +2023-08-04,Get Out,2017,https://boxd.it/eOCm +2023-08-04,Barbie,2023,https://boxd.it/bCLK +2023-08-04,Once Upon a Time... in Hollywood,2019,https://boxd.it/gH0O +2023-08-04,Glass Onion,2022,https://boxd.it/oCkK +2023-08-04,Chernobyl,2019,https://boxd.it/mkbG +2023-08-04,La Haine,1995,https://boxd.it/2as8 +2023-08-04,There Will Be Blood,2007,https://boxd.it/20Z2 +2023-08-04,Revoir Paris,2022,https://boxd.it/yuDY +2023-08-04,The Night of the 12th,2022,https://boxd.it/yQoG +2023-08-04,Rise,2022,https://boxd.it/sZ1Y +2023-08-04,Climax,2018,https://boxd.it/ikvo +2023-08-04,Deerskin,2019,https://boxd.it/lqOW +2023-08-04,Keep an Eye Out,2018,https://boxd.it/h1aY +2023-08-04,Smoking Causes Coughing,2022,https://boxd.it/wVl4 +2023-08-04,Mandibles,2020,https://boxd.it/nHDK +2023-08-04,Incredible But True,2022,https://boxd.it/rBtC +2023-08-04,Amélie,2001,https://boxd.it/2aUc +2023-08-04,Delicatessen,1991,https://boxd.it/29lK +2023-08-04,A Very Long Engagement,2004,https://boxd.it/26dy +2023-08-04,The King and the Mockingbird,1980,https://boxd.it/1At0 +2023-08-04,The Wolf's Call,2019,https://boxd.it/hqkE +2023-08-04,La Classe américaine,1993,https://boxd.it/1KL4 +2023-08-04,Yamakasi,2001,https://boxd.it/21jw +2023-08-04,Rust and Bone,2012,https://boxd.it/3mDE +2023-08-04,Asterix & Obelix: Mission Cleopatra,2002,https://boxd.it/268o +2023-08-04,Fear City: A Family-Style Comedy,1994,https://boxd.it/1MOO +2023-08-04,"OSS 117: Cairo, Nest of Spies",2006,https://boxd.it/1MIm +2023-08-04,OSS 117: Lost in Rio,2009,https://boxd.it/1LVu +2023-08-04,OSS 117: From Africa with Love,2021,https://boxd.it/mjce +2023-08-04,A Man Called Otto,2022,https://boxd.it/zl06 +2023-08-04,Baby Driver,2017,https://boxd.it/bhF2 +2023-08-04,Black Panther,2018,https://boxd.it/8MHs +2023-08-04,Her,2013,https://boxd.it/4O24 +2023-08-04,Guardians of the Galaxy,2014,https://boxd.it/3VH2 +2023-08-04,Ratatouille,2007,https://boxd.it/27ww +2023-08-04,Scott Pilgrim vs. the World,2010,https://boxd.it/1Aq6 +2023-08-04,Shutter Island,2010,https://boxd.it/1U82 +2023-08-14,Yannick,2023,https://boxd.it/G2es +2023-08-17,The Imitation Game,2014,https://boxd.it/6aig +2023-08-25,Maelström,2000,https://boxd.it/1caI +2023-08-27,The Hateful Eight,2015,https://boxd.it/8gw8 +2023-08-28,Rubber,2010,https://boxd.it/P2m +2023-08-28,Idiocracy,2006,https://boxd.it/20RW +2023-09-01,The Freshmen,2018,https://boxd.it/gB96 +2023-09-01,The Prestige,2006,https://boxd.it/293w +2023-09-01,No Country for Old Men,2007,https://boxd.it/21ew +2023-09-01,Mommy,2014,https://boxd.it/7Uau +2023-09-15,Groundhog Day,1993,https://boxd.it/2b3e +2023-10-24,A Difficult Year,2023,https://boxd.it/AteW +2023-10-27,Talk to Me,2022,https://boxd.it/C6uQ +2023-10-27,Reality,2014,https://boxd.it/5txC +2023-10-29,La Jetée,1962,https://boxd.it/29Sk +2023-11-20,Pirates of the Caribbean: The Curse of the Black Pearl,2003,https://boxd.it/70G +2023-11-20,Pirates of the Caribbean: Dead Man's Chest,2006,https://boxd.it/2bfk +2023-11-20,Pirates of the Caribbean: At World's End,2007,https://boxd.it/2aGu +2023-11-20,Killers of the Flower Moon,2023,https://boxd.it/gHp0 +2023-11-22,Guardians of the Galaxy Vol. 3,2023,https://boxd.it/fVNI +2023-11-22,Avatar: The Way of Water,2022,https://boxd.it/2E2E +2023-11-22,The Guardians of the Galaxy Holiday Special,2022,https://boxd.it/t77K +2023-11-22,Thor: Love and Thunder,2022,https://boxd.it/mMAY +2023-12-25,Wonka,2023,https://boxd.it/tCQm +2023-12-27,Romeo + Juliet,1996,https://boxd.it/2ama +2023-12-27,Don't Look Up,2021,https://boxd.it/o0Hc +2023-12-27,Free Guy,2021,https://boxd.it/k8dm +2023-12-27,Shang-Chi and the Legend of the Ten Rings,2021,https://boxd.it/kLDI +2023-12-27,"The French Dispatch of the Liberty, Kansas Evening Sun",2021,https://boxd.it/jLP8 +2023-12-27,Cruella,2021,https://boxd.it/bbKg +2023-12-27,WandaVision,2021,https://boxd.it/sbGW +2023-12-27,Jojo Rabbit,2019,https://boxd.it/iEBG +2023-12-27,Ad Astra,2019,https://boxd.it/ePzI +2023-12-27,It Chapter Two,2019,https://boxd.it/h10u +2023-12-30,Legend,2015,https://boxd.it/8qZY +2023-12-31,The Specials,2019,https://boxd.it/lifa +2024-01-12,About Time,2013,https://boxd.it/43bI +2024-01-14,Amadeus,1984,https://boxd.it/2aH8 +2024-01-14,Coco,2017,https://boxd.it/bYJQ +2024-01-14,Inside Out,2015,https://boxd.it/4KHC +2024-01-14,Life of Pi,2012,https://boxd.it/37pC +2024-01-14,Finding Nemo,2003,https://boxd.it/72i +2024-01-14,"Monsters, Inc.",2001,https://boxd.it/2a46 +2024-01-14,The Lost City,2022,https://boxd.it/sg0Q +2024-01-14,127 Hours,2010,https://boxd.it/SLa +2024-01-14,Indiana Jones and the Kingdom of the Crystal Skull,2008,https://boxd.it/2aR8 +2024-01-14,Indiana Jones and the Last Crusade,1989,https://boxd.it/2baO +2024-01-14,Indiana Jones and the Temple of Doom,1984,https://boxd.it/2bb8 +2024-01-14,Elemental,2023,https://boxd.it/ASiE +2024-01-14,Raiders of the Lost Ark,1981,https://boxd.it/2bbs +2024-01-14,Asterix at the Olympic Games,2008,https://boxd.it/26Nw +2024-01-14,The Dinner Game,1998,https://boxd.it/1YJ2 +2024-01-14,Home Alone,1990,https://boxd.it/29Fg +2024-01-14,Asterix & Obelix: The Middle Kingdom,2023,https://boxd.it/nSVq +2024-01-14,Spider-Man: Far From Home,2019,https://boxd.it/fegG +2024-01-14,Shazam!,2019,https://boxd.it/8WBu +2024-01-14,Jumanji: Welcome to the Jungle,2017,https://boxd.it/bUeE +2024-01-14,Pirates of the Caribbean: Dead Men Tell No Tales,2017,https://boxd.it/5a9m +2024-01-14,Fantastic Beasts and Where to Find Them,2016,https://boxd.it/7FPC +2024-01-14,Moana,2016,https://boxd.it/8tfY +2024-01-14,Batman v Superman: Dawn of Justice,2016,https://boxd.it/6fBW +2024-01-14,Zootopia,2016,https://boxd.it/84xS +2024-01-14,Deadpool,2016,https://boxd.it/9fOC +2024-01-14,Serial (Bad) Weddings,2014,https://boxd.it/7Nw4 +2024-01-14,Rush,2013,https://boxd.it/3lyS +2024-01-14,Man of Steel,2013,https://boxd.it/FRk +2024-01-14,It Boy,2013,https://boxd.it/5kkE +2024-01-14,Rise of the Guardians,2012,https://boxd.it/2PXw +2024-01-14,The Hunger Games,2012,https://boxd.it/2uds +2024-01-14,Harry Potter and the Deathly Hallows: Part 2,2011,https://boxd.it/1RYk +2024-01-14,Pirates of the Caribbean: On Stranger Tides,2011,https://boxd.it/27Z4 +2024-01-14,Harry Potter and the Deathly Hallows: Part 1,2010,https://boxd.it/1RYu +2024-01-14,Despicable Me,2010,https://boxd.it/1DD8 +2024-01-14,Alice in Wonderland,2010,https://boxd.it/1Spq +2024-01-14,Arthur and the Revenge of Maltazard,2009,https://boxd.it/1tKI +2024-01-14,Harry Potter and the Half-Blood Prince,2009,https://boxd.it/29FU +2024-01-14,Up,2009,https://boxd.it/1OEc +2024-01-14,LOL (Laughing Out Loud),2008,https://boxd.it/2lxI +2024-01-14,Harry Potter and the Order of the Phoenix,2007,https://boxd.it/29Qe +2024-01-14,Cars,2006,https://boxd.it/29ho +2024-01-14,Harry Potter and the Goblet of Fire,2005,https://boxd.it/29Qo +2024-01-14,Charlie and the Chocolate Factory,2005,https://boxd.it/2b68 +2024-01-14,Madagascar,2005,https://boxd.it/29dc +2024-01-14,The Incredibles,2004,https://boxd.it/1XLm +2024-01-14,"I, Robot",2004,https://boxd.it/27y8 +2024-01-14,Harry Potter and the Prisoner of Azkaban,2004,https://boxd.it/29Qy +2024-01-14,Harry Potter and the Chamber of Secrets,2002,https://boxd.it/29QI +2024-01-14,Ice Age,2002,https://boxd.it/2apS +2024-01-14,Harry Potter and the Philosopher's Stone,2001,https://boxd.it/29QS +2024-01-14,Chicken Run,2000,https://boxd.it/20Xg +2024-01-14,Shrek,2001,https://boxd.it/29zi +2024-01-14,The Visitors,1993,https://boxd.it/1TeI +2024-01-15,All Quiet on the Western Front,2022,https://boxd.it/H08 +2024-01-15,Sage homme,2023,https://boxd.it/A9Zy +2024-01-15,Black Box,2021,https://boxd.it/oGm6 +2024-01-15,Natural Born Liar,2022,https://boxd.it/vgju +2024-01-15,La Belle Époque,2019,https://boxd.it/lXCE +2024-01-15,The Magic Tuche,2018,https://boxd.it/f1Is +2024-01-15,R.A.I.D. Special Unit,2016,https://boxd.it/dk8k +2024-01-15,Brice 3,2016,https://boxd.it/d3Ga +2024-01-15,Your Name.,2016,https://boxd.it/cUqs +2024-01-15,The Tuche Family: The American Dream,2016,https://boxd.it/cOXg +2024-01-15,Babysitting 2,2015,https://boxd.it/aTwK +2024-01-15,Serial Teachers 2,2015,https://boxd.it/aCqq +2024-01-15,Divergent,2014,https://boxd.it/4VT0 +2024-01-15,Frozen,2013,https://boxd.it/3GNa +2024-01-15,Serial Teachers,2013,https://boxd.it/5xY8 +2024-01-15,Cars 2,2011,https://boxd.it/H4Y +2024-01-15,The Brice Man,2005,https://boxd.it/1INs +2024-01-15,The Visitors II: The Corridors of Time,1998,https://boxd.it/1Wtw +2024-01-15,French Fried Vacation 2,1979,https://boxd.it/1f02 +2024-01-16,Weird: The Al Yankovic Story,2022,https://boxd.it/yYZA +2024-01-16,The Exorcist,1973,https://boxd.it/1Yoo +2024-01-17,For Better and for Worse,2023,https://boxd.it/x3wu +2024-01-17,Transformers,2007,https://boxd.it/280c +2024-01-20,Elvis,2022,https://boxd.it/mK4w +2024-01-20,Fantastic Mr. Fox,2009,https://boxd.it/1WyQ +2024-01-22,Isle of Dogs,2018,https://boxd.it/dZrW +2024-01-30,Aftersun,2022,https://boxd.it/Arw0 +2024-01-31,The Wonderful Story of Henry Sugar,2023,https://boxd.it/yNyo +2024-02-21,Beau Is Afraid,2023,https://boxd.it/u2gE +2024-03-02,Anatomy of a Fall,2023,https://boxd.it/yuDE +2024-03-12,One Life,2023,https://boxd.it/sAhC +2024-03-12,Bob Marley: One Love,2024,https://boxd.it/uckw +2024-03-13,The Lord of the Rings: The Fellowship of the Ring,2001,https://boxd.it/2b5O +2024-03-13,The Lord of the Rings: The Two Towers,2002,https://boxd.it/2b5E +2024-03-13,The Lord of the Rings: The Return of the King,2003,https://boxd.it/2b5u +2024-03-13,The Hobbit: An Unexpected Journey,2012,https://boxd.it/GZk +2024-03-13,The Hobbit: The Desolation of Smaug,2013,https://boxd.it/nmS +2024-03-13,The Hobbit: The Battle of the Five Armies,2014,https://boxd.it/43aU +2024-04-03,The Good Teacher,2024,https://boxd.it/BPFM +2024-05-12,Challengers,2024,https://boxd.it/zld0 +2024-05-21,The Second Act,2024,https://boxd.it/HW9q +2024-06-30,The Count of Monte Cristo,2024,https://boxd.it/F1Nk +2024-07-14,The Animal Kingdom,2023,https://boxd.it/zzJk +2024-07-21,Dune: Part Two,2024,https://boxd.it/pUfA +2024-09-15,(500) Days of Summer,2009,https://boxd.it/1EmM +2024-09-15,Love at Second Sight,2019,https://boxd.it/kURO +2024-09-20,Snatch,2000,https://boxd.it/2b7U +2024-09-20,A Real Job,2023,https://boxd.it/ze2a +2024-09-28,How to Lose a Guy in 10 Days,2003,https://boxd.it/1XwG +2024-09-30,Spaceman,2024,https://boxd.it/nC20 +2024-09-30,The Fabelmans,2022,https://boxd.it/ugoM +2024-09-30,Poor Things,2023,https://boxd.it/tNWU +2024-10-06,All Your Faces,2023,https://boxd.it/BOP2 +2024-10-06,Emilia Pérez,2024,https://boxd.it/AP3G +2024-10-06,An Ordinary Case,2024,https://boxd.it/GYoq +2024-10-06,"No Chains, No Masters",2024,https://boxd.it/GBM0 +2024-10-06,The Conjuring,2013,https://boxd.it/4sr2 +2024-10-06,The Conjuring 2,2016,https://boxd.it/7GJg +2024-10-06,The Conjuring: The Devil Made Me Do It,2021,https://boxd.it/eXZY +2024-10-15,The Platform,2019,https://boxd.it/mUm6 +2024-10-15,The Platform 2,2024,https://boxd.it/Gz88 +2024-10-15,Annabelle: Creation,2017,https://boxd.it/dSxe +2024-10-15,Annabelle Comes Home,2019,https://boxd.it/iU5m +2024-10-15,Shaun of the Dead,2004,https://boxd.it/29J8 +2024-10-15,Yes Man,2008,https://boxd.it/1WPW +2024-10-20,Dead Poets Society,1989,https://boxd.it/2aSg +2024-10-21,Burn Out,2017,https://boxd.it/grLu +2024-10-21,Ferris Bueller's Day Off,1986,https://boxd.it/1YPY +2024-10-23,Beating Hearts,2024,https://boxd.it/AeF4 +2024-11-17,Monsieur Aznavour,2024,https://boxd.it/BSGI +2024-11-17,Lee,2023,https://boxd.it/vpTG +2024-11-18,The Substance,2024,https://boxd.it/zanS +2024-11-25,The Unholy,2021,https://boxd.it/nro0 +2024-11-25,The Last Voyage of the Demeter,2023,https://boxd.it/nzTq +2024-12-08,Million Dollar Baby,2004,https://boxd.it/2bdI +2024-12-13,1408,2007,https://boxd.it/25Vu +2024-12-21,Green Book,2018,https://boxd.it/hErk +2024-12-23,The Marching Band,2024,https://boxd.it/BPIQ +2024-12-26,The Sweet Escape,2015,https://boxd.it/buMA +2025-01-01,Nosferatu,2024,https://boxd.it/f5eG +2025-01-04,Red Rooms,2023,https://boxd.it/ym4c +2025-01-06,How to Make a Killing,2024,https://boxd.it/JWI0 +2025-01-11,The Witch,2015,https://boxd.it/9X0m +2025-01-11,Interview with the Vampire,1994,https://boxd.it/29XO +2025-01-13,We Live in Time,2024,https://boxd.it/FC5u +2025-01-20,The Virgin Suicides,1999,https://boxd.it/28JG +2025-01-20,Donnie Darko,2001,https://boxd.it/2b2A +2025-01-23,Beautiful Boy,2018,https://boxd.it/g76Q +2025-01-27,Carrie,1976,https://boxd.it/20ZQ +2025-01-27,District 9,2009,https://boxd.it/1Iik +2025-02-01,Good Time,2017,https://boxd.it/fcFu +2025-02-01,Polisse,2011,https://boxd.it/2rHk +2025-02-02,Borgo,2023,https://boxd.it/Book +2025-02-02,Latin for All,2024,https://boxd.it/CvLM +2025-02-22,The Gorge,2025,https://boxd.it/zRqK +2025-02-22,Dunkirk,2017,https://boxd.it/d0Y6 +2025-03-06,Anora,2024,https://boxd.it/Egcw +2025-03-12,Mickey 17,2025,https://boxd.it/q1Dk +2025-03-30,Late Night with the Devil,2023,https://boxd.it/zo6G +2025-03-31,The Watchers,2024,https://boxd.it/F6Rw +2025-04-01,Irreversible,2002,https://boxd.it/29as +2025-04-05,Suspiria,2018,https://boxd.it/cioI +2025-04-08,It,2017,https://boxd.it/bC8e +2025-04-09,Elephant,2003,https://boxd.it/287i +2025-04-22,The Whale,2022,https://boxd.it/tw4c +2025-05-03,Bram Stoker's Dracula,1992,https://boxd.it/223a +2025-05-19,Natural Born Killers,1994,https://boxd.it/2aNg +2025-06-02,The Phoenician Scheme,2025,https://boxd.it/H0Ca +2025-06-07,Gladiator II,2024,https://boxd.it/kqQQ +2025-06-09,"To Live, To Die, To Live Again",2024,https://boxd.it/JaOu +2025-06-15,Guess Who's Calling!,2025,https://boxd.it/HPW6 +2025-06-22,The Perks of Being a Wallflower,2012,https://boxd.it/2ZA8 +2025-06-22,Slumdog Millionaire,2008,https://boxd.it/1S3E +2025-06-22,Licorice Pizza,2021,https://boxd.it/qTKY +2025-07-05,Drive My Car,2021,https://boxd.it/sv94 +2025-07-06,King of My Castle,2024,https://boxd.it/DkGS +2025-07-20,Thunderbolts*,2025,https://boxd.it/BfbQ +2025-07-20,Titane,2021,https://boxd.it/nlQC +2025-07-27,"13 Days, 13 Nights: In the Hell of Kabul",2025,https://boxd.it/LLby +2025-08-04,Barbecue,2014,https://boxd.it/7kP2 +2025-08-10,The Vourdalak,2023,https://boxd.it/DDdg +2025-08-10,Don't Breathe,2016,https://boxd.it/9yzw +2025-08-19,Transformers: The Last Knight,2017,https://boxd.it/b8xo +2025-08-28,Suspiria,1977,https://boxd.it/1SNW +2025-09-13,Trainspotting,1996,https://boxd.it/29XY +2025-09-14,Sirāt,2025,https://boxd.it/HxJo +2025-09-25,McWalter,2025,https://boxd.it/NDz2 +2025-09-27,Some Like It Rare,2021,https://boxd.it/rpdC +2025-10-02,Koyaanisqatsi,1982,https://boxd.it/1U9E +2025-10-03,Punch-Drunk Love,2002,https://boxd.it/20E4 +2025-10-04,Souleymane's Story,2024,https://boxd.it/HQVy +2025-10-07,One Battle After Another,2025,https://boxd.it/DUHM +2025-10-11,Zero Fucks Given,2021,https://boxd.it/vqk8 +2025-10-18,Manchester by the Sea,2016,https://boxd.it/b2L0 +2025-11-11,Frankenstein,2025,https://boxd.it/Ecsg +2025-11-13,Sinners,2025,https://boxd.it/KQMM +2025-11-13,Now You See Me,2013,https://boxd.it/2Bsu +2025-11-24,Ride Away,2024,https://boxd.it/OriU +2025-12-08,The Place Beyond the Pines,2012,https://boxd.it/3mDu +2025-12-15,Bugonia,2025,https://boxd.it/qeWY +2025-12-16,Past Lives,2023,https://boxd.it/oNB8 +2025-12-21,Léon: The Professional,1994,https://boxd.it/2b8S +2025-12-23,Normal People,2020,https://boxd.it/q2VY +2025-12-25,City Lights,1931,https://boxd.it/29ki +2025-12-25,Insomnia,2002,https://boxd.it/2aB0 +2025-12-27,The Seventh Seal,1957,https://boxd.it/2ahO 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..dd6181a --- /dev/null +++ b/assets/styles/app.css @@ -0,0 +1,3 @@ +body { + background-color: skyblue; +} 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..2dbad47 --- /dev/null +++ b/composer.json @@ -0,0 +1,109 @@ +{ + "type": "project", + "license": "proprietary", + "minimum-stability": "stable", + "prefer-stable": true, + "require": { + "php": ">=8.4", + "ext-ctype": "*", + "ext-iconv": "*", + "doctrine/doctrine-bundle": "^3.2", + "doctrine/doctrine-migrations-bundle": "^4.0", + "doctrine/orm": "^3.6", + "phpdocumentor/reflection-docblock": "^6.0", + "phpstan/phpdoc-parser": "^2.3", + "symfony/asset": "8.0.*", + "symfony/asset-mapper": "8.0.*", + "symfony/console": "8.0.*", + "symfony/doctrine-messenger": "8.0.*", + "symfony/dotenv": "8.0.*", + "symfony/expression-language": "8.0.*", + "symfony/flex": "^2", + "symfony/form": "8.0.*", + "symfony/framework-bundle": "8.0.*", + "symfony/http-client": "8.0.*", + "symfony/intl": "8.0.*", + "symfony/mailer": "8.0.*", + "symfony/mime": "8.0.*", + "symfony/monolog-bundle": "^3.0|^4.0", + "symfony/notifier": "8.0.*", + "symfony/process": "8.0.*", + "symfony/property-access": "8.0.*", + "symfony/property-info": "8.0.*", + "symfony/runtime": "8.0.*", + "symfony/security-bundle": "8.0.*", + "symfony/serializer": "8.0.*", + "symfony/stimulus-bundle": "^2.32", + "symfony/string": "8.0.*", + "symfony/translation": "8.0.*", + "symfony/twig-bundle": "8.0.*", + "symfony/ux-turbo": "^2.32", + "symfony/validator": "8.0.*", + "symfony/web-link": "8.0.*", + "symfony/yaml": "8.0.*", + "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": "*", + "symfony/polyfill-php83": "*", + "symfony/polyfill-php84": "*" + }, + "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": "8.0.*" + } + }, + "require-dev": { + "phpunit/phpunit": "^12.5", + "symfony/browser-kit": "8.0.*", + "symfony/css-selector": "8.0.*", + "symfony/debug-bundle": "8.0.*", + "symfony/maker-bundle": "^1.0", + "symfony/stopwatch": "8.0.*", + "symfony/web-profiler-bundle": "8.0.*" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..bfe476b --- /dev/null +++ b/composer.lock @@ -0,0 +1,9701 @@ +{ + "_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": "8fd195a4b82330f4fb25b6af0abea167", + "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.5.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/collections.git", + "reference": "171e68db4b9aca9dc1f5d49925762f3d53d248c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/collections/zipball/171e68db4b9aca9dc1f5d49925762f3d53d248c5", + "reference": "171e68db4b9aca9dc1f5d49925762f3d53d248c5", + "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.5.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%2Fcollections", + "type": "tidelift" + } + ], + "time": "2026-01-12T20:53:55+00:00" + }, + { + "name": "doctrine/dbal", + "version": "4.4.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "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.23", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", + "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.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%2Fdbal", + "type": "tidelift" + } + ], + "time": "2025-12-04T10:11:03+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", + "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.5" + }, + "time": "2025-04-07T20:06:18+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/af84173db6978c3d2688ea3bcf3a91720b0704ce", + "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^4.0", + "doctrine/deprecations": "^1.0", + "doctrine/persistence": "^4", + "doctrine/sql-formatter": "^1.0.1", + "php": "^8.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/doctrine-bridge": "^6.4.3 || ^7.0.3 || ^8.0", + "symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/service-contracts": "^3" + }, + "conflict": { + "doctrine/orm": "<3.0 || >=4.0", + "twig/twig": "<3.0.4" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "doctrine/orm": "^3.4.4", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2.0", + "phpunit/phpunit": "^12.3.10", + "psr/log": "^3.0", + "symfony/doctrine-messenger": "^6.4 || ^7.0 || ^8.0", + "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", + "symfony/messenger": "^6.4 || ^7.0 || ^8.0", + "symfony/property-info": "^6.4 || ^7.0 || ^8.0", + "symfony/security-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/stopwatch": "^6.4 || ^7.0 || ^8.0", + "symfony/string": "^6.4 || ^7.0 || ^8.0", + "symfony/twig-bridge": "^6.4 || ^7.0 || ^8.0", + "symfony/validator": "^6.4 || ^7.0 || ^8.0", + "symfony/web-profiler-bundle": "^6.4 || ^7.0 || ^8.0", + "symfony/yaml": "^6.4 || ^7.0 || ^8.0", + "twig/twig": "^3.21.1" + }, + "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/3.2.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-24T12:24:29+00:00" + }, + { + "name": "doctrine/doctrine-migrations-bundle", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", + "reference": "20505da78735744fb4a42a3bb9a416b345ad6f7c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/20505da78735744fb4a42a3bb9a416b345ad6f7c", + "reference": "20505da78735744fb4a42a3bb9a416b345ad6f7c", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^4", + "doctrine/doctrine-bundle": "^3", + "doctrine/migrations": "^3.2", + "php": "^8.4", + "psr/log": "^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/deprecation-contracts": "^3", + "symfony/framework-bundle": "^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/service-contracts": "^3.0" + }, + "require-dev": { + "composer/semver": "^3.0", + "doctrine/coding-standard": "^14", + "doctrine/orm": "^3", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^12.5", + "symfony/var-exporter": "^6.4 || ^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/4.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%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2025-12-05T08:14:38+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e", + "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.24" + }, + "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.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%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2024-05-22T20:47:39+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.1.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", + "shasum": "" + }, + "require": { + "php": "^8.4" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" + }, + "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.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%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2026-01-05T06:47:08+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.5", + "source": { + "type": "git", + "url": "https://github.com/doctrine/migrations.git", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5", + "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.5" + }, + "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": "2025-11-20T11:15:36+00:00" + }, + { + "name": "doctrine/orm", + "version": "3.6.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/orm.git", + "reference": "2148940290e4c44b9101095707e71fb590832fa5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/orm/zipball/2148940290e4c44b9101095707e71fb590832fa5", + "reference": "2148940290e4c44b9101095707e71fb590832fa5", + "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.1" + }, + "time": "2026-01-09T05:28:15+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.3", + "source": { + "type": "git", + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", + "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.3" + }, + "time": "2025-10-26T09:35:14+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": "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.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "02600c041e7d0f4b7d1fe1d260565ec525472fa9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/02600c041e7d0f4b7d1fe1d260565ec525472fa9", + "reference": "02600c041e7d0f4b7d1fe1d260565ec525472fa9", + "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.0" + }, + "time": "2026-01-07T20:22:53+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.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "reference": "16dbf9937da8d4528ceb2145c9c7c0bd29e26374", + "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.1" + }, + "time": "2026-01-12T11:33:04+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "12.5.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4a9739b51cbcb355f6e95659612f92e282a7077b", + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b", + "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.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/phpunit/php-code-coverage", + "type": "tidelift" + } + ], + "time": "2025-12-24T07:03:04+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "961bc913d42fe24a257bfff826a5068079ac7782" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", + "reference": "961bc913d42fe24a257bfff826a5068079ac7782", + "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.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2025-02-07T04:58:37+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.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a", + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a", + "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.1", + "phpunit/php-file-iterator": "^6.0.0", + "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.3", + "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/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.4" + }, + "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": "2025-12-15T06:05:34+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.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", + "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.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/comparator", + "type": "tidelift" + } + ], + "time": "2025-08-20T11:27:00+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.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "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.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/environment", + "type": "tidelift" + } + ], + "time": "2025-08-12T14:11:56+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": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset.git", + "reference": "e07d70cfca384c1eabee192fdeedb6850c1c840b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset/zipball/e07d70cfca384c1eabee192fdeedb6850c1c840b", + "reference": "e07d70cfca384c1eabee192fdeedb6850c1c840b", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "symfony/http-client": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^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/v8.0.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:36:47+00:00" + }, + { + "name": "symfony/asset-mapper", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/asset-mapper.git", + "reference": "87c12734877c97ac7274ad145592a2c7efcfa34f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/87c12734877c97ac7274ad145592a2c7efcfa34f", + "reference": "87c12734877c97ac7274ad145592a2c7efcfa34f", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "php": ">=8.4", + "symfony/filesystem": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0" + }, + "require-dev": { + "symfony/asset": "^7.4|^8.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/event-dispatcher-contracts": "^3.0", + "symfony/finder": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/web-link": "^7.4|^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/v8.0.3" + }, + "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-19T10:01:18+00:00" + }, + { + "name": "symfony/browser-kit", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "efc7cc6d442b80c8cb0ad0b29bdb0c9418cee9ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/efc7cc6d442b80c8cb0ad0b29bdb0c9418cee9ee", + "reference": "efc7cc6d442b80c8cb0ad0b29bdb0c9418cee9ee", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/dom-crawler": "^7.4|^8.0" + }, + "require-dev": { + "symfony/css-selector": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^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/v8.0.3" + }, + "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-16T08:10:18+00:00" + }, + { + "name": "symfony/cache", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f", + "reference": "ef8c7dbfe613d2773d0b5e68b2ef2db72c8b025f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^3.6", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^7.4|^8.0" + }, + "conflict": { + "doctrine/dbal": "<4.3", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1" + }, + "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": "^4.3", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.3" + }, + "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-28T10:45:32+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": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f", + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/clock": "^1.0" + }, + "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/v8.0.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:46:48+00:00" + }, + { + "name": "symfony/config", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "58063686fd7b8e676f14b5a4808cb85265c5216e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/58063686fd7b8e676f14b5a4808cb85265c5216e", + "reference": "58063686fd7b8e676f14b5a4808cb85265c5216e", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/service-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/console", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "6145b304a5c1ea0bdbd0b04d297a5864f9a7d587" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/6145b304a5c1ea0bdbd0b04d297a5864f9a7d587", + "reference": "6145b304a5c1ea0bdbd0b04d297a5864f9a7d587", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^7.4|^8.0" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/6225bd458c53ecdee056214cb4a2ffaf58bd592b", + "reference": "6225bd458c53ecdee056214cb4a2ffaf58bd592b", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "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/v8.0.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-10-30T14:17:19+00:00" + }, + { + "name": "symfony/debug-bundle", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "02665efd40733372a4b4bdd78722426a6f95849b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/02665efd40733372a4b4bdd78722426a6f95849b", + "reference": "02665efd40733372a4b4bdd78722426a6f95849b", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.4", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" + }, + "require-dev": { + "symfony/web-profiler-bundle": "^7.4|^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/v8.0.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-10-24T14:30:40+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "8db0d4c1dd4c533a29210c68074999ba45ad6d3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8db0d4c1dd4c533a29210c68074999ba45ad6d3e", + "reference": "8db0d4c1dd4c533a29210c68074999ba45ad6d3e", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^3.6", + "symfony/var-exporter": "^7.4|^8.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "symfony/config": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "54d583fc3f855e0982f00eceb528fc0fa501f4c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/54d583fc3f855e0982f00eceb528fc0fa501f4c3", + "reference": "54d583fc3f855e0982f00eceb528fc0fa501f4c3", + "shasum": "" + }, + "require": { + "doctrine/event-manager": "^2", + "doctrine/persistence": "^3.1|^4", + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/collections": "<1.8", + "doctrine/dbal": "<4.3", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<3.4", + "symfony/property-info": "<8.0" + }, + "require-dev": { + "doctrine/collections": "^1.8|^2.0", + "doctrine/data-fixtures": "^1.1|^2", + "doctrine/dbal": "^4.3", + "doctrine/orm": "^3.4", + "psr/log": "^1|^2|^3", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/doctrine-messenger": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/type-info": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/doctrine-messenger", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-messenger.git", + "reference": "08be96096e507c0cb03c1e0a0ad95b24f182840a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/08be96096e507c0cb03c1e0a0ad95b24f182840a", + "reference": "08be96096e507c0cb03c1e0a0ad95b24f182840a", + "shasum": "" + }, + "require": { + "doctrine/dbal": "^4.3", + "php": ">=8.4", + "symfony/messenger": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/persistence": "<1.3" + }, + "require-dev": { + "doctrine/persistence": "^1.3|^2|^3", + "symfony/property-access": "^7.4|^8.0", + "symfony/serializer": "^7.4|^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/v8.0.3" + }, + "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-16T08:10:18+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "11a3dbe6f6c0ae03ae71f879cf5c2e28db107179" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/11a3dbe6f6c0ae03ae71f879cf5c2e28db107179", + "reference": "11a3dbe6f6c0ae03ae71f879cf5c2e28db107179", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0" + }, + "require-dev": { + "symfony/css-selector": "^7.4|^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/v8.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-06T17:00:47+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "460b4067a85288c59a59ce8c1bfb3942e71fd85c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/460b4067a85288c59a59ce8c1bfb3942e71fd85c", + "reference": "460b4067a85288c59a59ce8c1bfb3942e71fd85c", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/process": "^7.4|^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/v8.0.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-16T10:17:21+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "d77ec7dda0c274178745d152e82baf7ea827fd73" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/d77ec7dda0c274178745d152e82baf7ea827fd73", + "reference": "d77ec7dda0c274178745d152e82baf7ea827fd73", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/log": "^1|^2|^3", + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^7.4|^8.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/serializer": "^7.4|^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/v8.0.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-05T14:36:47+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "573f95783a2ec6e38752979db139f09fec033f03" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03", + "reference": "573f95783a2ec6e38752979db139f09fec033f03", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/security-http": "<7.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": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^7.4|^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/v8.0.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-10-30T14:17:19+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": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/expression-language.git", + "reference": "43f520aef59d2fd089662d721b39e0101bb69232" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/43f520aef59d2fd089662d721b39e0101bb69232", + "reference": "43f520aef59d2fd089662d721b39e0101bb69232", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/cache": "^7.4|^8.0", + "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/v8.0.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:46:48+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^7.4|^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/v8.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-01T09:13:36+00:00" + }, + { + "name": "symfony/finder", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/dd3a2953570a283a2ba4e17063bb98c734cf5b12", + "reference": "dd3a2953570a283a2ba4e17063bb98c734cf5b12", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "symfony/filesystem": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/form.git", + "reference": "a39b194d576bda0ac191a15e2d72b09ccc5c8f5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/form/zipball/a39b194d576bda0ac191a15e2d72b09ccc5c8f5f", + "reference": "a39b194d576bda0ac191a15e2d72b09ccc5c8f5f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/options-resolver": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/polyfill-mbstring": "^1.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/intl": "<7.4", + "symfony/translation-contracts": "<2.5", + "symfony/validator": "<7.4" + }, + "require-dev": { + "doctrine/collections": "^1.0|^2.0", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/html-sanitizer": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/framework-bundle", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "738a92519fbc3ac37192b28052574bf2d1e8f63a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/738a92519fbc3ac37192b28052574bf2d1e8f63a", + "reference": "738a92519fbc3ac37192b28052574bf2d1e8f63a", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.4", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4.3|^8.0.3", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/finder": "^7.4|^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": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<7.4", + "symfony/form": "<7.4", + "symfony/json-streamer": "<7.4", + "symfony/messenger": "<7.4", + "symfony/security-csrf": "<7.4", + "symfony/serializer": "<7.4", + "symfony/translation": "<7.4", + "symfony/webhook": "<7.4", + "symfony/workflow": "<7.4" + }, + "require-dev": { + "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^7.4|^8.0", + "symfony/asset-mapper": "^7.4|^8.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/dotenv": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/html-sanitizer": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/json-streamer": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/mailer": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/notifier": "^7.4|^8.0", + "symfony/object-mapper": "^7.4|^8.0", + "symfony/polyfill-intl-icu": "^1.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/scheduler": "^7.4|^8.0", + "symfony/security-bundle": "^7.4|^8.0", + "symfony/semaphore": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/string": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/twig-bundle": "^7.4|^8.0", + "symfony/type-info": "^7.4.1|^8.0.1", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^7.4|^8.0", + "symfony/webhook": "^7.4|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0" + }, + "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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/http-client", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "ea062691009cc2b7bb87734fef20e02671cbd50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/ea062691009cc2b7bb87734fef20e02671cbd50b", + "reference": "ea062691009cc2b7bb87734fef20e02671cbd50b", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/log": "^1|^2|^3", + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "amphp/amp": "<3", + "php-http/discovery": "<1.15" + }, + "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": "^5.3.2", + "amphp/http-tunnel": "^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/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "514ec3aa7982f296b0ad0825f75b6be5779ae9e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/514ec3aa7982f296b0ad0825f75b6be5779ae9e7", + "reference": "514ec3aa7982f296b0ad0825f75b6be5779ae9e7", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.1" + }, + "conflict": { + "doctrine/dbal": "<4.3" + }, + "require-dev": { + "doctrine/dbal": "^4.3", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "e6dfb348eb1dd4df14c39e6dc7e283bab4199fd9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e6dfb348eb1dd4df14c39e6dc7e283bab4199fd9", + "reference": "e6dfb348eb1dd4df14c39e6dc7e283bab4199fd9", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/log": "^1|^2|^3", + "symfony/error-handler": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/flex": "<2.10", + "symfony/http-client-contracts": "<2.5", + "symfony/translation-contracts": "<2.5", + "twig/twig": "<3.21" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0", + "twig/twig": "^3.21" + }, + "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/v8.0.3" + }, + "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-31T09:29:34+00:00" + }, + { + "name": "symfony/intl", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/intl.git", + "reference": "f9eca217ae8f2be0b3ad80723d6a3b518b90cd66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/intl/zipball/f9eca217ae8f2be0b3ad80723d6a3b518b90cd66", + "reference": "f9eca217ae8f2be0b3ad80723d6a3b518b90cd66", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "conflict": { + "symfony/string": "<7.4" + }, + "require-dev": { + "symfony/filesystem": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^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/v8.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-01T09:13:36+00:00" + }, + { + "name": "symfony/mailer", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "02e033db6e00a42c66b8b8992e4e565ea7464a28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/02e033db6e00a42c66b8b8992e4e565ea7464a28", + "reference": "02e033db6e00a42c66b8b8992e4e565ea7464a28", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.4", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^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/v8.0.3" + }, + "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-16T08:10:18+00:00" + }, + { + "name": "symfony/maker-bundle", + "version": "v1.65.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/maker-bundle.git", + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/eba30452d212769c9a5bcf0716959fd8ba1e54e3", + "reference": "eba30452d212769c9a5bcf0716959fd8ba1e54e3", + "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.5.0|^3.0.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.65.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-02T07:14:37+00:00" + }, + { + "name": "symfony/messenger", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/messenger.git", + "reference": "b56b89aee16ceb623f76c8739ab62202ec198190" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/messenger/zipball/b56b89aee16ceb623f76c8739ab62202ec198190", + "reference": "b56b89aee16ceb623f76c8739ab62202ec198190", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/log": "^1|^2|^3", + "symfony/clock": "^7.4|^8.0" + }, + "conflict": { + "symfony/console": "<7.4", + "symfony/event-dispatcher-contracts": "<2.5" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+00:00" + }, + { + "name": "symfony/mime", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40", + "reference": "7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "egulias/email-validator": "~3.0.0", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/serializer": "^7.4|^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/v8.0.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-16T10:17:21+00:00" + }, + { + "name": "symfony/monolog-bridge", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "6dd0793eb9ebcecb0b909a5571ac6e82867d7b20" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/6dd0793eb9ebcecb0b909a5571ac6e82867d7b20", + "reference": "6dd0793eb9ebcecb0b909a5571ac6e82867d7b20", + "shasum": "" + }, + "require": { + "monolog/monolog": "^3", + "php": ">=8.4", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/mailer": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.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-01T09:19:23+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": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/notifier.git", + "reference": "dad36a1aacda8c0c9f2ec2e1f70111da6cb7228f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/notifier/zipball/dad36a1aacda8c0c9f2ec2e1f70111da6cb7228f", + "reference": "dad36a1aacda8c0c9f2ec2e1f70111da6cb7228f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/http-client-contracts": "<2.5" + }, + "require-dev": { + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/messenger": "^7.4|^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/v8.0.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-27T08:09:45+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "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/v8.0.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:55:31+00:00" + }, + { + "name": "symfony/password-hasher", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/password-hasher.git", + "reference": "80e7c7e3fdb27214ba3af9fd449cb638aa98daa4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/80e7c7e3fdb27214ba3af9fd449cb638aa98daa4", + "reference": "80e7c7e3fdb27214ba3af9fd449cb638aa98daa4", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/security-core": "^7.4|^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/v8.0.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-13T16:50:52+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-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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "0cbbd88ec836f8757641c651bb995335846abb78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/0cbbd88ec836f8757641c651bb995335846abb78", + "reference": "0cbbd88ec836f8757641c651bb995335846abb78", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "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/v8.0.3" + }, + "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-19T10:01:18+00:00" + }, + { + "name": "symfony/property-access", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "3e9ed5d66144e02f1f430ef3be8e166920ae5271" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/3e9ed5d66144e02f1f430ef3be8e166920ae5271", + "reference": "3e9ed5d66144e02f1f430ef3be8e166920ae5271", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/property-info": "^7.4.2|^8.0.3" + }, + "require-dev": { + "symfony/cache": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^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/v8.0.3" + }, + "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-18T11:23:51+00:00" + }, + { + "name": "symfony/property-info", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-info.git", + "reference": "a756f192435191bd50f55967adf999212c4a7232" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-info/zipball/a756f192435191bd50f55967adf999212c4a7232", + "reference": "a756f192435191bd50f55967adf999212c4a7232", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/string": "^7.4|^8.0", + "symfony/type-info": "^7.4.1|^8.0.1" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^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/v8.0.3" + }, + "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-18T11:23:51+00:00" + }, + { + "name": "symfony/routing", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "3827ac6e03dcd86e430fb6ae6056acf5b51aece3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/3827ac6e03dcd86e430fb6ae6056acf5b51aece3", + "reference": "3827ac6e03dcd86e430fb6ae6056acf5b51aece3", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-19T10:01:18+00:00" + }, + { + "name": "symfony/runtime", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/runtime.git", + "reference": "73b34037b23db051048ba2873031ddb89be9f19d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/runtime/zipball/73b34037b23db051048ba2873031ddb89be9f19d", + "reference": "73b34037b23db051048ba2873031ddb89be9f19d", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": ">=8.4" + }, + "conflict": { + "symfony/error-handler": "<7.4" + }, + "require-dev": { + "composer/composer": "^2.6", + "symfony/console": "^7.4|^8.0", + "symfony/dotenv": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^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/v8.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-05T14:08:45+00:00" + }, + { + "name": "symfony/security-bundle", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-bundle.git", + "reference": "fa06c8b5b8e7c1290827a7ac6d16f3203b54e1b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/fa06c8b5b8e7c1290827a7ac6d16f3203b54e1b2", + "reference": "fa06c8b5b8e7c1290827a7ac6d16f3203b54e1b2", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "ext-xml": "*", + "php": ">=8.4", + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/password-hasher": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/security-http": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "require-dev": { + "symfony/asset": "^7.4|^8.0", + "symfony/browser-kit": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/dom-crawler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/ldap": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0", + "symfony/twig-bundle": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/yaml": "^7.4|^8.0", + "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/v8.0.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-14T10:04:00+00:00" + }, + { + "name": "symfony/security-core", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-core.git", + "reference": "6df9d8439c682dd31974e3b455109c689622de49" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-core/zipball/6df9d8439c682dd31974e3b455109c689622de49", + "reference": "6df9d8439c682dd31974e3b455109c689622de49", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "psr/container": "^1.1|^2.0", + "psr/log": "^1|^2|^3", + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/ldap": "^7.4|^8.0", + "symfony/string": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/validator": "^7.4|^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/v8.0.3" + }, + "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-21T10:59:45+00:00" + }, + { + "name": "symfony/security-csrf", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-csrf.git", + "reference": "4f561535f9b61d72c422a8a9de49301d3846b98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/4f561535f9b61d72c422a8a9de49301d3846b98f", + "reference": "4f561535f9b61d72c422a8a9de49301d3846b98f", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/security-core": "^7.4|^8.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^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/v8.0.3" + }, + "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-23T15:24:35+00:00" + }, + { + "name": "symfony/security-http", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/security-http.git", + "reference": "6645f791db1ea7b2948c1d20c503adad9be0045d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6645f791db1ea7b2948c1d20c503adad9be0045d", + "reference": "6645f791db1ea7b2948c1d20c503adad9be0045d", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/cache": "^7.4|^8.0", + "symfony/clock": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/translation": "^7.4|^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/v8.0.3" + }, + "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-21T10:59:45+00:00" + }, + { + "name": "symfony/serializer", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer.git", + "reference": "66a9ab0146fb6aa6ac7abcc3b09b1a0c2799303a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer/zipball/66a9ab0146fb6aa6ac7abcc3b09b1a0c2799303a", + "reference": "66a9ab0146fb6aa6ac7abcc3b09b1a0c2799303a", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0" + }, + "require-dev": { + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0|^2.0", + "seld/jsonlint": "^1.10", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.4|^8.0", + "symfony/uid": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-23T14:52:06+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": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "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/v8.0.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:36:47+00:00" + }, + { + "name": "symfony/string", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc", + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "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.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^7.4|^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/v8.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-01T09:13:36+00:00" + }, + { + "name": "symfony/translation", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/60a8f11f0e15c48f2cc47c4da53873bb5b62135d", + "reference": "60a8f11f0e15c48f2cc47c4da53873bb5b62135d", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^3.6.1" + }, + "conflict": { + "nikic/php-parser": "<5.0", + "symfony/http-client-contracts": "<2.5", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^5.0", + "psr/log": "^1|^2|^3", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^7.4|^8.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-21T10:59:45+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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "2a2978a44127bae9aaee0ed5319954eb492d81c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/2a2978a44127bae9aaee0ed5319954eb492d81c3", + "reference": "2a2978a44127bae9aaee0ed5319954eb492d81c3", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/translation-contracts": "^2.5|^3", + "twig/twig": "^3.21" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^7.4|^8.0", + "symfony/asset-mapper": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/form": "^7.4.1|^8.0.1", + "symfony/html-sanitizer": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/polyfill-intl-icu": "^1.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/security-acl": "^2.8|^3.0", + "symfony/security-core": "^7.4|^8.0", + "symfony/security-csrf": "^7.4|^8.0", + "symfony/security-http": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/validator": "^7.4|^8.0", + "symfony/web-link": "^7.4|^8.0", + "symfony/workflow": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-16T08:10:18+00:00" + }, + { + "name": "symfony/twig-bundle", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "58c54c97af6a3fdb7ea9a3931ea1c4b8bd282b2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/58c54c97af6a3fdb7ea9a3931ea1c4b8bd282b2f", + "reference": "58c54c97af6a3fdb7ea9a3931ea1c4b8bd282b2f", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.4", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0" + }, + "require-dev": { + "symfony/asset": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/form": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/web-link": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-19T10:01:18+00:00" + }, + { + "name": "symfony/type-info", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "bb091cec1f70383538c7d000699781813f8d1a6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/bb091cec1f70383538c7d000699781813f8d1a6a", + "reference": "bb091cec1f70383538c7d000699781813f8d1a6a", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/container": "^1.1|^2.0" + }, + "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/v8.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-05T14:08:45+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": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/validator.git", + "reference": "d05d70f82c33581e8c2522d3c39cfe8c92f0b06a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/validator/zipball/d05d70f82c33581e8c2522d3c39cfe8c92f0b06a", + "reference": "d05d70f82c33581e8c2522d3c39cfe8c92f0b06a", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/lexer": "<1.1", + "symfony/doctrine-bridge": "<7.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/string": "^7.4|^8.0", + "symfony/translation": "^7.4|^8.0", + "symfony/type-info": "^7.4|^8.0", + "symfony/yaml": "^7.4|^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/v8.0.3" + }, + "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-27T17:05:29+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "3bc368228532ad538cc216768caa8968be95a8d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3bc368228532ad538cc216768caa8968be95a8d6", + "reference": "3bc368228532ad538cc216768caa8968be95a8d6", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/console": "<7.4", + "symfony/error-handler": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/uid": "^7.4|^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/v8.0.3" + }, + "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-18T11:23:51+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", + "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", + "shasum": "" + }, + "require": { + "php": ">=8.4" + }, + "require-dev": { + "symfony/property-access": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^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/v8.0.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-05T18:53:00+00:00" + }, + { + "name": "symfony/web-link", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "f077a07ef5594b1607168875188d1a8244e04401" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/f077a07ef5594b1607168875188d1a8244e04401", + "reference": "f077a07ef5594b1607168875188d1a8244e04401", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "psr/link": "^1.1|^2.0" + }, + "provide": { + "psr/link-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/http-kernel": "^7.4|^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/v8.0.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:36:47+00:00" + }, + { + "name": "symfony/web-profiler-bundle", + "version": "v8.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "88679cfe4067bafb8df5d6defcaec061fe16af2d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/88679cfe4067bafb8df5d6defcaec061fe16af2d", + "reference": "88679cfe4067bafb8df5d6defcaec061fe16af2d", + "shasum": "" + }, + "require": { + "composer-runtime-api": ">=2.1", + "php": ">=8.4", + "symfony/config": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/routing": "^7.4|^8.0", + "symfony/twig-bundle": "^7.4|^8.0" + }, + "conflict": { + "symfony/serializer": "<7.4", + "symfony/workflow": "<7.4" + }, + "require-dev": { + "symfony/browser-kit": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/css-selector": "^7.4|^8.0", + "symfony/runtime": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^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/v8.0.3" + }, + "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-27T17:05:29+00:00" + }, + { + "name": "symfony/yaml", + "version": "v8.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14", + "reference": "7a1a90ba1df6e821a6b53c4cabdc32a56cabfb14", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<7.4" + }, + "require-dev": { + "symfony/console": "^7.4|^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/v8.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-04T18:17:06+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.22.2", + "source": { + "type": "git", + "url": "https://github.com/twigphp/twig-extra-bundle.git", + "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", + "reference": "09de9be7f6c0d19ede7b5a1dbfcfb2e9d1e0ea9e", + "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.22.2" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2025-12-05T08:51:53+00:00" + }, + { + "name": "twig/twig", + "version": "v3.22.2", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/946ddeafa3c9f4ce279d1f34051af041db0e16f2", + "reference": "946ddeafa3c9f4ce279d1f34051af041db0e16f2", + "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.22.2" + }, + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2025-12-14T11:28:47+00:00" + }, + { + "name": "webmozart/assert", + "version": "2.1.1", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "bdbabc199a7ba9965484e4725d66170e5711323b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/bdbabc199a7ba9965484e4725d66170e5711323b", + "reference": "bdbabc199a7ba9965484e4725d66170e5711323b", + "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.1" + }, + "time": "2026-01-08T11:28:40+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": ">=8.4", + "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..6c57caf --- /dev/null +++ b/config/packages/doctrine.yaml @@ -0,0 +1,48 @@ +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%' + orm: + 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: + 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..270f3c7 --- /dev/null +++ b/config/packages/messenger.yaml @@ -0,0 +1,29 @@ +framework: + messenger: + failure_transport: failed + + transports: + # https://symfony.com/doc/current/messenger.html#transport-configuration + async: + dsn: '%env(MESSENGER_TRANSPORT_DSN)%' + options: + use_notify: true + check_delayed_interval: 60000 + 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..8964044 --- /dev/null +++ b/config/packages/security.yaml @@ -0,0 +1,39 @@ +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: + users_in_memory: { memory: null } + + firewalls: + dev: + # Ensure dev tools and static assets are always allowed + pattern: ^/(_profiler|_wdt|assets|build)/ + security: false + main: + lazy: true + provider: users_in_memory + + # 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|null>|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|null|Param, + * 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|null|Param, // Set true to enable support for xsendfile in binary file responses. // Default: "%env(bool:default::SYMFONY_TRUST_X_SENDFILE_TYPE_HEADER)%" + * ide?: scalar|null|Param, // Default: "%env(default::SYMFONY_IDE)%" + * test?: bool|Param, + * default_locale?: scalar|null|Param, // Default: "en" + * set_locale_from_accept_language?: bool|Param, // Whether to use the Accept-Language HTTP header to set the Request locale (only when the "_locale" request attribute is not passed). // Default: false + * set_content_language_from_locale?: bool|Param, // Whether to set the Content-Language HTTP header on the Response using the Request locale. // Default: false + * enabled_locales?: list, + * trusted_hosts?: list, + * trusted_proxies?: mixed, // Default: ["%env(default::SYMFONY_TRUSTED_PROXIES)%"] + * trusted_headers?: list, + * error_controller?: scalar|null|Param, // Default: "error_controller" + * handle_all_throwables?: bool|Param, // HttpKernel will handle all kinds of \Throwable. // Default: true + * csrf_protection?: bool|array{ + * enabled?: scalar|null|Param, // Default: null + * stateless_token_ids?: list, + * check_header?: scalar|null|Param, // Whether to check the CSRF token in a header in addition to a cookie when using stateless protection. // Default: false + * cookie_name?: scalar|null|Param, // 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?: array{ + * enabled?: scalar|null|Param, // Default: null + * token_id?: scalar|null|Param, // Default: null + * field_name?: scalar|null|Param, // 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|null|Param, + * 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|null|Param, // Default: null + * path?: scalar|null|Param, // Default: "/_fragment" + * }, + * profiler?: bool|array{ // Profiler configuration + * enabled?: bool|Param, // Default: false + * collect?: bool|Param, // Default: true + * collect_parameter?: scalar|null|Param, // 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|null|Param, // Default: "file:%kernel.cache_dir%/profiler" + * collect_serializer_data?: true|Param, // Default: true + * }, + * workflows?: bool|array{ + * enabled?: bool|Param, // Default: false + * workflows?: array, + * definition_validators?: list, + * support_strategy?: scalar|null|Param, + * initial_marking?: list, + * events_to_dispatch?: list|null, + * places?: list, + * }>, + * transitions: list, + * to?: list, + * weight?: int|Param, // Default: 1 + * metadata?: list, + * }>, + * metadata?: list, + * }>, + * }, + * router?: bool|array{ // Router configuration + * enabled?: bool|Param, // Default: false + * resource: scalar|null|Param, + * type?: scalar|null|Param, + * default_uri?: scalar|null|Param, // The default URI used to generate URLs in a non-HTTP context. // Default: null + * http_port?: scalar|null|Param, // Default: 80 + * https_port?: scalar|null|Param, // Default: 443 + * strict_requirements?: scalar|null|Param, // 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|null|Param, // Default: "session.storage.factory.native" + * handler_id?: scalar|null|Param, // Defaults to using the native session handler, or to the native *file* session handler if "save_path" is not null. + * name?: scalar|null|Param, + * cookie_lifetime?: scalar|null|Param, + * cookie_path?: scalar|null|Param, + * cookie_domain?: scalar|null|Param, + * 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|null|Param, + * gc_probability?: scalar|null|Param, + * gc_maxlifetime?: scalar|null|Param, + * save_path?: scalar|null|Param, // 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 + * }, + * 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|null|Param, // Default: null + * version?: scalar|null|Param, // Default: null + * version_format?: scalar|null|Param, // Default: "%%s?%%s" + * json_manifest_path?: scalar|null|Param, // Default: null + * base_path?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // The path of the importmap.php file. // Default: "%kernel.project_dir%/importmap.php" + * importmap_polyfill?: scalar|null|Param, // The importmap name that will be used to load the polyfill. Set to false to disable. // Default: "es-module-shims" + * importmap_script_attributes?: array, + * vendor_dir?: scalar|null|Param, // 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|null|Param, // Default: "translator.formatter.default" + * cache_dir?: scalar|null|Param, // Default: "%kernel.cache_dir%/translations" + * default_path?: scalar|null|Param, // 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 + * enable_attributes?: bool|Param, // Default: true + * static_method?: list, + * translation_domain?: scalar|null|Param, // Default: "validators" + * email_validation_mode?: "html5"|"html5-allow-no-tld"|"strict"|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|null|Param, // API endpoint for the NotCompromisedPassword Validator. // Default: null + * }, + * disable_translation?: bool|Param, // Default: false + * auto_mapping?: array, + * }>, + * }, + * serializer?: bool|array{ // Serializer configuration + * enabled?: bool|Param, // Default: true + * enable_attributes?: bool|Param, // Default: true + * name_converter?: scalar|null|Param, + * circular_reference_handler?: scalar|null|Param, + * max_depth_handler?: scalar|null|Param, + * mapping?: array{ + * paths?: list, + * }, + * default_context?: list, + * 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. // Default: true + * }, + * cache?: array{ // Cache configuration + * prefix_seed?: scalar|null|Param, // Used to namespace cache keys when using several apps with the same shared backend. // Default: "_%kernel.project_dir%.%kernel.container_class%" + * app?: scalar|null|Param, // App related cache pools configuration. // Default: "cache.adapter.filesystem" + * system?: scalar|null|Param, // System related cache pools configuration. // Default: "cache.adapter.system" + * directory?: scalar|null|Param, // Default: "%kernel.share_dir%/pools/app" + * default_psr6_provider?: scalar|null|Param, + * default_redis_provider?: scalar|null|Param, // Default: "redis://localhost" + * default_valkey_provider?: scalar|null|Param, // Default: "valkey://localhost" + * default_memcached_provider?: scalar|null|Param, // Default: "memcached://localhost" + * default_doctrine_dbal_provider?: scalar|null|Param, // Default: "database_connection" + * default_pdo_provider?: scalar|null|Param, // Default: null + * pools?: array, + * tags?: scalar|null|Param, // Default: null + * public?: bool|Param, // Default: false + * default_lifetime?: scalar|null|Param, // Default lifetime of the pool. + * provider?: scalar|null|Param, // Overwrite the setting from the default provider for this adapter. + * early_expiration_message_bus?: scalar|null|Param, + * clearer?: scalar|null|Param, + * }>, + * }, + * 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|null|Param, // Service id to use as the default serializer for the transports. // Default: "messenger.transport.native_php_serializer" + * symfony_serializer?: array{ + * format?: scalar|null|Param, // Serialization format for the messenger.transport.symfony_serializer service (which is not the serializer used by default). // Default: "json" + * context?: array, + * }, + * }, + * transports?: array, + * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null + * retry_strategy?: string|array{ + * service?: scalar|null|Param, // Service id to override the retry strategy entirely. // Default: null + * max_retries?: int|Param, // Default: 3 + * delay?: int|Param, // Time in ms to delay (or the initial value when multiplier is used). // Default: 1000 + * multiplier?: float|Param, // If greater than 1, delay will grow exponentially for each retry: this delay = (delay * (multiple ^ retries)). // Default: 2 + * max_delay?: int|Param, // Max time in ms that a retry should ever be delayed (0 = infinite). // Default: 0 + * jitter?: float|Param, // Randomness to apply to the delay (between 0 and 1). // Default: 0.1 + * }, + * rate_limiter?: scalar|null|Param, // Rate limiter name to use when processing messages. // Default: null + * }>, + * failure_transport?: scalar|null|Param, // Transport name to send failed messages to (after all retries have failed). // Default: null + * stop_worker_on_signals?: list, + * default_bus?: scalar|null|Param, // 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|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // A certificate authority file. + * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null|Param, // A PEM formatted certificate file. + * local_pk?: scalar|null|Param, // A private key file. + * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...) + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // 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|null|Param, // The default HTTP version, typically 1.1 or 2.0, leave to null for the best version. + * resolve?: array, + * proxy?: scalar|null|Param, // The URL of the proxy to pass requests through or null for automatic detection. + * no_proxy?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // A certificate authority file. + * capath?: scalar|null|Param, // A directory that contains multiple certificate authority files. + * local_cert?: scalar|null|Param, // A PEM formatted certificate file. + * local_pk?: scalar|null|Param, // A private key file. + * passphrase?: scalar|null|Param, // The passphrase used to encrypt the "local_pk" file. + * ciphers?: scalar|null|Param, // A list of TLS ciphers separated by colons, commas or spaces (e.g. "RC3-SHA:TLS13-AES-128-GCM-SHA256"...). + * peer_fingerprint?: array{ // Associative array: hashing algorithm => hash(es). + * sha1?: mixed, + * pin-sha256?: mixed, + * md5?: mixed, + * }, + * crypto_method?: scalar|null|Param, // The minimum version of TLS to accept; must be one of STREAM_CRYPTO_METHOD_TLSv*_CLIENT constants. + * extra?: array, + * rate_limiter?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // The message bus to use. Defaults to the default bus if the Messenger component is installed. // Default: null + * dsn?: scalar|null|Param, // Default: null + * transports?: array, + * envelope?: array{ // Mailer Envelope configuration + * sender?: scalar|null|Param, + * recipients?: list, + * allowed_recipients?: list, + * }, + * headers?: array, + * dkim_signer?: bool|array{ // DKIM signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|null|Param, // Key content, or path to key (in PEM format with the `file://` prefix) // Default: "" + * domain?: scalar|null|Param, // Default: "" + * select?: scalar|null|Param, // Default: "" + * passphrase?: scalar|null|Param, // The private key passphrase // Default: "" + * options?: array, + * }, + * smime_signer?: bool|array{ // S/MIME signer configuration + * enabled?: bool|Param, // Default: false + * key?: scalar|null|Param, // Path to key (in PEM format) // Default: "" + * certificate?: scalar|null|Param, // Path to certificate (in PEM format without the `file://` prefix) // Default: "" + * passphrase?: scalar|null|Param, // The private key passphrase // Default: null + * extra_certificates?: scalar|null|Param, // Default: null + * sign_options?: int|Param, // Default: null + * }, + * smime_encrypter?: bool|array{ // S/MIME encrypter configuration + * enabled?: bool|Param, // Default: false + * repository?: scalar|null|Param, // 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|null|Param, // Default: "%kernel.project_dir%/config/secrets/%kernel.runtime_environment%" + * local_dotenv_file?: scalar|null|Param, // Default: "%kernel.project_dir%/.env.%kernel.runtime_environment%.local" + * decryption_env_var?: scalar|null|Param, // Default: "base64:default::SYMFONY_DECRYPTION_SECRET" + * }, + * notifier?: bool|array{ // Notifier configuration + * enabled?: bool|Param, // Default: true + * message_bus?: scalar|null|Param, // 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|null|Param, // Configures the fixed interval if "policy" is set to "fixed_window" or "sliding_window". The value must be a number followed by "second", "minute", "hour", "day", "week" or "month" (or their plural equivalent). + * rate?: array{ // Configures the fill rate if "policy" is set to "token_bucket". + * interval?: scalar|null|Param, // 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|null|Param, + * time_based_uuid_version?: 7|6|1|Param, // Default: 7 + * time_based_uuid_node?: scalar|null|Param, + * }, + * 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|null|Param, // 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|null|Param, + * types?: array, + * driver_schemes?: array, + * connections?: array, + * mapping_types?: array, + * default_table_options?: array, + * schema_manager_factory?: scalar|null|Param, // Default: "doctrine.dbal.default_schema_manager_factory" + * result_cache?: scalar|null|Param, + * replicas?: array, + * }>, + * }, + * orm?: array{ + * default_entity_manager?: scalar|null|Param, + * enable_native_lazy_objects?: bool|Param, // Deprecated: The "enable_native_lazy_objects" option is deprecated and will be removed in DoctrineBundle 4.0, as native lazy objects are now always enabled. // Default: true + * controller_resolver?: bool|array{ + * enabled?: bool|Param, // Default: true + * auto_mapping?: bool|Param, // Deprecated: The "doctrine.orm.controller_resolver.auto_mapping.auto_mapping" option is deprecated and will be removed in DoctrineBundle 4.0, as it only accepts `false` since 3.0. // Set to true to enable using route placeholders as lookup criteria when the primary key doesn't match the argument name // Default: false + * evict_cache?: bool|Param, // Set to true to fetch the entity from the database instead of using the cache, if any // Default: false + * }, + * entity_managers?: array, + * }>, + * }>, + * }, + * connection?: scalar|null|Param, + * class_metadata_factory_name?: scalar|null|Param, // Default: "Doctrine\\ORM\\Mapping\\ClassMetadataFactory" + * default_repository_class?: scalar|null|Param, // Default: "Doctrine\\ORM\\EntityRepository" + * auto_mapping?: scalar|null|Param, // Default: false + * naming_strategy?: scalar|null|Param, // Default: "doctrine.orm.naming_strategy.default" + * quote_strategy?: scalar|null|Param, // Default: "doctrine.orm.quote_strategy.default" + * typed_field_mapper?: scalar|null|Param, // Default: "doctrine.orm.typed_field_mapper.default" + * entity_listener_resolver?: scalar|null|Param, // Default: null + * fetch_mode_subselect_batch_size?: scalar|null|Param, + * repository_factory?: scalar|null|Param, // Default: "doctrine.orm.container_repository_factory" + * schema_ignore_classes?: list, + * validate_xml_mapping?: bool|Param, // Set to "true" to opt-in to the new mapping driver mode that was added in Doctrine ORM 2.14 and will be mandatory in ORM 3.0. See https://github.com/doctrine/orm/pull/6728. // Default: false + * second_level_cache?: array{ + * region_cache_driver?: string|array{ + * type?: scalar|null|Param, // Default: null + * id?: scalar|null|Param, + * pool?: scalar|null|Param, + * }, + * region_lock_lifetime?: scalar|null|Param, // Default: 60 + * log_enabled?: bool|Param, // Default: true + * region_lifetime?: scalar|null|Param, // Default: 3600 + * enabled?: bool|Param, // Default: true + * factory?: scalar|null|Param, + * 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|null|Param, // Default: null + * version_column_name?: scalar|null|Param, // Default: null + * version_column_length?: scalar|null|Param, // Default: null + * executed_at_column_name?: scalar|null|Param, // Default: null + * execution_time_column_name?: scalar|null|Param, // Default: null + * }, + * }, + * migrations?: list, + * connection?: scalar|null|Param, // Connection name to use for the migrations database. // Default: null + * em?: scalar|null|Param, // Entity manager name to use for the migrations database (available when doctrine/orm is installed). // Default: null + * all_or_nothing?: scalar|null|Param, // Run all migrations in a transaction. // Default: false + * check_database_platform?: scalar|null|Param, // 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|null|Param, // Custom template path for generated migration classes. // Default: null + * organize_migrations?: scalar|null|Param, // 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|null|Param, // 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|null|Param, // Default: null + * autoescape_service_method?: scalar|null|Param, // Default: null + * cache?: scalar|null|Param, // Default: true + * charset?: scalar|null|Param, // Default: "%kernel.charset%" + * debug?: bool|Param, // Default: "%kernel.debug%" + * strict_variables?: bool|Param, // Default: "%kernel.debug%" + * auto_reload?: scalar|null|Param, + * optimizations?: int|Param, + * default_path?: scalar|null|Param, // The default path used to load templates. // Default: "%kernel.project_dir%/templates" + * file_name_pattern?: list, + * paths?: array, + * date?: array{ // The default format options used by the date filter. + * format?: scalar|null|Param, // Default: "F j, Y H:i" + * interval_format?: scalar|null|Param, // Default: "%d days" + * timezone?: scalar|null|Param, // 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|null|Param, // Default: "." + * thousands_separator?: scalar|null|Param, // Default: "," + * }, + * mailer?: array{ + * html_to_text_converter?: scalar|null|Param, // 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|null|Param, // Default: "^/((index|app(_[\\w]+)?)\\.php/)?_wdt" + * } + * @psalm-type StimulusConfig = array{ + * controller_paths?: list, + * controllers_json?: scalar|null|Param, // 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|null|Param, // 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|null|Param, + * inner_separator?: scalar|null|Param, + * soft_break?: scalar|null|Param, + * }, + * 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|null|Param, // Default: null + * session_fixation_strategy?: "none"|"migrate"|"invalidate"|Param, // Default: "migrate" + * 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|null|Param, + * strategy_service?: scalar|null|Param, + * allow_if_all_abstain?: bool|Param, // Default: false + * allow_if_equal_granted_denied?: bool|Param, // Default: true + * }, + * password_hashers?: array, + * hash_algorithm?: scalar|null|Param, // Name of hashing algorithm for PBKDF2 (i.e. sha256, sha512, etc..) See hash_algos() for a list of supported algorithms. // Default: "sha512" + * key_length?: scalar|null|Param, // Default: 40 + * ignore_case?: bool|Param, // Default: false + * encode_as_base64?: bool|Param, // Default: true + * iterations?: scalar|null|Param, // Default: 5000 + * cost?: int|Param, // Default: null + * memory_cost?: scalar|null|Param, // Default: null + * time_cost?: scalar|null|Param, // Default: null + * id?: scalar|null|Param, + * }>, + * providers?: array, + * }, + * entity?: array{ + * class: scalar|null|Param, // The full entity class name of your user class. + * property?: scalar|null|Param, // Default: null + * manager_name?: scalar|null|Param, // Default: null + * }, + * memory?: array{ + * users?: array, + * }>, + * }, + * ldap?: array{ + * service: scalar|null|Param, + * base_dn: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: null + * search_password?: scalar|null|Param, // Default: null + * extra_fields?: list, + * default_roles?: list, + * role_fetcher?: scalar|null|Param, // Default: null + * uid_key?: scalar|null|Param, // Default: "sAMAccountName" + * filter?: scalar|null|Param, // Default: "({uid_key}={user_identifier})" + * password_attribute?: scalar|null|Param, // Default: null + * }, + * }>, + * firewalls: array, + * security?: bool|Param, // Default: true + * user_checker?: scalar|null|Param, // The UserChecker to use when authenticating users in this firewall. // Default: "security.user_checker" + * request_matcher?: scalar|null|Param, + * access_denied_url?: scalar|null|Param, + * access_denied_handler?: scalar|null|Param, + * entry_point?: scalar|null|Param, // An enabled authenticator name or a service id that implements "Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface". + * provider?: scalar|null|Param, + * stateless?: bool|Param, // Default: false + * lazy?: bool|Param, // Default: false + * context?: scalar|null|Param, + * logout?: array{ + * enable_csrf?: bool|null|Param, // Default: null + * csrf_token_id?: scalar|null|Param, // Default: "logout" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_manager?: scalar|null|Param, + * path?: scalar|null|Param, // Default: "/logout" + * target?: scalar|null|Param, // Default: "/" + * invalidate_session?: bool|Param, // Default: true + * clear_site_data?: list<"*"|"cache"|"cookies"|"storage"|"executionContexts"|Param>, + * delete_cookies?: array, + * }, + * switch_user?: array{ + * provider?: scalar|null|Param, + * parameter?: scalar|null|Param, // Default: "_switch_user" + * role?: scalar|null|Param, // Default: "ROLE_ALLOWED_TO_SWITCH" + * target_route?: scalar|null|Param, // Default: null + * }, + * required_badges?: list, + * custom_authenticators?: list, + * login_throttling?: array{ + * limiter?: scalar|null|Param, // A service id implementing "Symfony\Component\HttpFoundation\RateLimiter\RequestRateLimiterInterface". + * max_attempts?: int|Param, // Default: 5 + * interval?: scalar|null|Param, // Default: "1 minute" + * lock_factory?: scalar|null|Param, // The service ID of the lock factory used by the login rate limiter (or null to disable locking). // Default: null + * cache_pool?: string|Param, // The cache pool to use for storing the limiter state // Default: "cache.rate_limiter" + * storage_service?: string|Param, // The service ID of a custom storage implementation, this precedes any configured "cache_pool" // Default: null + * }, + * x509?: array{ + * provider?: scalar|null|Param, + * user?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN_Email" + * credentials?: scalar|null|Param, // Default: "SSL_CLIENT_S_DN" + * user_identifier?: scalar|null|Param, // Default: "emailAddress" + * }, + * remote_user?: array{ + * provider?: scalar|null|Param, + * user?: scalar|null|Param, // Default: "REMOTE_USER" + * }, + * login_link?: array{ + * check_route: scalar|null|Param, // Route that will validate the login link - e.g. "app_login_link_verify". + * check_post_only?: scalar|null|Param, // 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|null|Param, // Cache service id used to expired links of max_uses is set. + * success_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationSuccessHandlerInterface. + * failure_handler?: scalar|null|Param, // A service id that implements Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface. + * provider?: scalar|null|Param, // The user provider to load users from. + * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * always_use_default_target_path?: bool|Param, // Default: false + * default_target_path?: scalar|null|Param, // Default: "/" + * login_path?: scalar|null|Param, // Default: "/login" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * }, + * form_login?: array{ + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_parameter?: scalar|null|Param, // Default: "_username" + * password_parameter?: scalar|null|Param, // Default: "_password" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_id?: scalar|null|Param, // 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|null|Param, // Default: "/" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * }, + * form_login_ldap?: array{ + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_parameter?: scalar|null|Param, // Default: "_username" + * password_parameter?: scalar|null|Param, // Default: "_password" + * csrf_parameter?: scalar|null|Param, // Default: "_csrf_token" + * csrf_token_id?: scalar|null|Param, // 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|null|Param, // Default: "/" + * target_path_parameter?: scalar|null|Param, // Default: "_target_path" + * use_referer?: bool|Param, // Default: false + * failure_path?: scalar|null|Param, // Default: null + * failure_forward?: bool|Param, // Default: false + * failure_path_parameter?: scalar|null|Param, // Default: "_failure_path" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" + * }, + * json_login?: array{ + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_path?: scalar|null|Param, // Default: "username" + * password_path?: scalar|null|Param, // Default: "password" + * }, + * json_login_ldap?: array{ + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * check_path?: scalar|null|Param, // Default: "/login_check" + * use_forward?: bool|Param, // Default: false + * login_path?: scalar|null|Param, // Default: "/login" + * username_path?: scalar|null|Param, // Default: "username" + * password_path?: scalar|null|Param, // Default: "password" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" + * }, + * access_token?: array{ + * provider?: scalar|null|Param, + * remember_me?: bool|Param, // Default: true + * success_handler?: scalar|null|Param, + * failure_handler?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: null + * token_extractors?: list, + * token_handler: string|array{ + * id?: scalar|null|Param, + * oidc_user_info?: string|array{ + * base_uri: scalar|null|Param, // Base URI of the userinfo endpoint on the OIDC server, or the OIDC server URI to use the discovery (require "discovery" to be configured). + * discovery?: array{ // Enable the OIDC discovery. + * cache?: array{ + * id: scalar|null|Param, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g. sub, email, etc.). // Default: "sub" + * client?: scalar|null|Param, // 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|null|Param, // Cache service id to use to cache the OIDC discovery configuration. + * }, + * }, + * claim?: scalar|null|Param, // Claim which contains the user identifier (e.g.: sub, email..). // Default: "sub" + * audience: scalar|null|Param, // Audience set in the token, for validation purpose. + * issuers: list, + * algorithms: list, + * keyset?: scalar|null|Param, // 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|null|Param, // JSON-encoded JWKSet used to decrypt the token (must contain a list of valid private keys). + * }, + * }, + * cas?: array{ + * validation_url: scalar|null|Param, // CAS server validation URL + * prefix?: scalar|null|Param, // CAS prefix // Default: "cas" + * http_client?: scalar|null|Param, // HTTP Client service // Default: null + * }, + * oauth2?: scalar|null|Param, + * }, + * }, + * http_basic?: array{ + * provider?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: "Secured Area" + * }, + * http_basic_ldap?: array{ + * provider?: scalar|null|Param, + * realm?: scalar|null|Param, // Default: "Secured Area" + * service?: scalar|null|Param, // Default: "ldap" + * dn_string?: scalar|null|Param, // Default: "{user_identifier}" + * query_string?: scalar|null|Param, + * search_dn?: scalar|null|Param, // Default: "" + * search_password?: scalar|null|Param, // Default: "" + * }, + * remember_me?: array{ + * secret?: scalar|null|Param, // Default: "%kernel.secret%" + * service?: scalar|null|Param, + * user_providers?: list, + * catch_exceptions?: bool|Param, // Default: true + * signature_properties?: list, + * token_provider?: string|array{ + * service?: scalar|null|Param, // The service ID of a custom remember-me token provider. + * doctrine?: bool|array{ + * enabled?: bool|Param, // Default: false + * connection?: scalar|null|Param, // Default: null + * }, + * }, + * token_verifier?: scalar|null|Param, // The service ID of a custom rememberme token verifier. + * name?: scalar|null|Param, // Default: "REMEMBERME" + * lifetime?: int|Param, // Default: 31536000 + * path?: scalar|null|Param, // Default: "/" + * domain?: scalar|null|Param, // 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|null|Param, // Default: "_remember_me" + * }, + * }>, + * access_control?: list, + * attributes?: array, + * route?: scalar|null|Param, // Default: null + * methods?: list, + * allow_if?: scalar|null|Param, // Default: null + * roles?: list, + * }>, + * role_hierarchy?: array>, + * } + * @psalm-type MonologConfig = array{ + * use_microseconds?: scalar|null|Param, // Default: true + * channels?: list, + * handlers?: array, + * }>, + * accepted_levels?: list, + * min_level?: scalar|null|Param, // Default: "DEBUG" + * max_level?: scalar|null|Param, // Default: "EMERGENCY" + * buffer_size?: scalar|null|Param, // Default: 0 + * flush_on_overflow?: bool|Param, // Default: false + * handler?: scalar|null|Param, + * url?: scalar|null|Param, + * exchange?: scalar|null|Param, + * exchange_name?: scalar|null|Param, // Default: "log" + * channel?: scalar|null|Param, // Default: null + * bot_name?: scalar|null|Param, // Default: "Monolog" + * use_attachment?: scalar|null|Param, // Default: true + * use_short_attachment?: scalar|null|Param, // Default: false + * include_extra?: scalar|null|Param, // Default: false + * icon_emoji?: scalar|null|Param, // Default: null + * webhook_url?: scalar|null|Param, + * exclude_fields?: list, + * token?: scalar|null|Param, + * region?: scalar|null|Param, + * source?: scalar|null|Param, + * use_ssl?: bool|Param, // Default: true + * user?: mixed, + * title?: scalar|null|Param, // Default: null + * host?: scalar|null|Param, // Default: null + * port?: scalar|null|Param, // Default: 514 + * config?: list, + * members?: list, + * connection_string?: scalar|null|Param, + * timeout?: scalar|null|Param, + * time?: scalar|null|Param, // Default: 60 + * deduplication_level?: scalar|null|Param, // Default: 400 + * store?: scalar|null|Param, // Default: null + * connection_timeout?: scalar|null|Param, + * persistent?: bool|Param, + * message_type?: scalar|null|Param, // Default: 0 + * parse_mode?: scalar|null|Param, // Default: null + * disable_webpage_preview?: bool|null|Param, // Default: null + * disable_notification?: bool|null|Param, // Default: null + * split_long_messages?: bool|Param, // Default: false + * delay_between_messages?: bool|Param, // Default: false + * topic?: int|Param, // Default: null + * factor?: int|Param, // Default: 1 + * tags?: list, + * console_formatter_options?: mixed, // Default: [] + * formatter?: scalar|null|Param, + * nested?: bool|Param, // Default: false + * publisher?: string|array{ + * id?: scalar|null|Param, + * hostname?: scalar|null|Param, + * port?: scalar|null|Param, // Default: 12201 + * chunk_size?: scalar|null|Param, // Default: 1420 + * encoder?: "json"|"compressed_json"|Param, + * }, + * mongodb?: string|array{ + * id?: scalar|null|Param, // ID of a MongoDB\Client service + * uri?: scalar|null|Param, + * username?: scalar|null|Param, + * password?: scalar|null|Param, + * database?: scalar|null|Param, // Default: "monolog" + * collection?: scalar|null|Param, // Default: "logs" + * }, + * elasticsearch?: string|array{ + * id?: scalar|null|Param, + * hosts?: list, + * host?: scalar|null|Param, + * port?: scalar|null|Param, // Default: 9200 + * transport?: scalar|null|Param, // Default: "Http" + * user?: scalar|null|Param, // Default: null + * password?: scalar|null|Param, // Default: null + * }, + * index?: scalar|null|Param, // Default: "monolog" + * document_type?: scalar|null|Param, // Default: "logs" + * ignore_error?: scalar|null|Param, // Default: false + * redis?: string|array{ + * id?: scalar|null|Param, + * host?: scalar|null|Param, + * password?: scalar|null|Param, // Default: null + * port?: scalar|null|Param, // Default: 6379 + * database?: scalar|null|Param, // Default: 0 + * key_name?: scalar|null|Param, // Default: "monolog_redis" + * }, + * predis?: string|array{ + * id?: scalar|null|Param, + * host?: scalar|null|Param, + * }, + * from_email?: scalar|null|Param, + * to_email?: list, + * subject?: scalar|null|Param, + * content_type?: scalar|null|Param, // Default: null + * headers?: list, + * mailer?: scalar|null|Param, // Default: null + * email_prototype?: string|array{ + * id: scalar|null|Param, + * method?: scalar|null|Param, // Default: null + * }, + * verbosity_levels?: array{ + * VERBOSITY_QUIET?: scalar|null|Param, // Default: "ERROR" + * VERBOSITY_NORMAL?: scalar|null|Param, // Default: "WARNING" + * VERBOSITY_VERBOSE?: scalar|null|Param, // Default: "NOTICE" + * VERBOSITY_VERY_VERBOSE?: scalar|null|Param, // Default: "INFO" + * VERBOSITY_DEBUG?: scalar|null|Param, // Default: "DEBUG" + * }, + * channels?: string|array{ + * type?: scalar|null|Param, + * elements?: list, + * }, + * }>, + * } + * @psalm-type MakerConfig = array{ + * root_namespace?: scalar|null|Param, // 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 + { + return AppReference::config($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..b73b323 --- /dev/null +++ b/importmap.php @@ -0,0 +1,28 @@ + [ + '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', + ], +]; diff --git a/migrations/.gitignore b/migrations/.gitignore new file mode 100644 index 0000000..e69de29 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 @@ +TMDBGateway->searchMovie('The Batman')); + } catch (ClientException $e) { + dd($e->getResponse()->getInfo()); + } + + return $this->render('homepage/index.html.twig'); + } +} diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/src/Gateway/TMDBGateway.php b/src/Gateway/TMDBGateway.php new file mode 100644 index 0000000..0a5872c --- /dev/null +++ b/src/Gateway/TMDBGateway.php @@ -0,0 +1,38 @@ + $movieName]); + + try { + $response = $this->client->request('GET', $url, ['headers' => $this->getHeaders()]); + $result = $response->getContent(); + } catch (\Throwable) { + return null; + } + + return json_decode($this->client->request('GET', $url, ['headers' => $this->getHeaders()])->getContent(), associative: true); + } + + private function getHeaders(): array + { + return ['Authorization' => 'Bearer '.$this->apiToken, 'accept' => 'application/json']; + } +} 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 @@ + + + + + {% block title %}Welcome!{% endblock %} + + {% block stylesheets %} + {% endblock %} + + {% block javascripts %} + {% block importmap %}{{ importmap('app') }}{% endblock %} + {% endblock %} + + + {% block body %}{% endblock %} + + diff --git a/templates/homepage/index.html.twig b/templates/homepage/index.html.twig new file mode 100644 index 0000000..1503ec7 --- /dev/null +++ b/templates/homepage/index.html.twig @@ -0,0 +1 @@ +{% extends 'base.html.twig' %} 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