From 98574f5233c680e0e0a503355fd22ec3e286b4c7 Mon Sep 17 00:00:00 2001
From: Joe Bennett
Date: Mon, 8 Jun 2020 15:51:01 +1000
Subject: [PATCH 0001/5717] #37139 Updated Lock MongoDbStore note on
readPreference
---
components/lock.rst | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/components/lock.rst b/components/lock.rst
index 6dfeb5518dc..257aa2d1cd8 100644
--- a/components/lock.rst
+++ b/components/lock.rst
@@ -647,9 +647,10 @@ about `Expire Data from Collections by Setting TTL`_ in MongoDB.
locks don't expire prematurely; the lock TTL should be set with enough extra
time in ``expireAfterSeconds`` to account for any clock drift between nodes.
-``writeConcern``, ``readConcern`` and ``readPreference`` are not specified by
-MongoDbStore meaning the collection's settings will take effect. Read more
-about `Replica Set Read and Write Semantics`_ in MongoDB.
+``writeConcern`` and ``readConcern`` are not specified by MongoDbStore meaning
+the collection's settings will take effect.
+``readPreference`` is ``primary`` for all queries.
+Read more about `Replica Set Read and Write Semantics`_ in MongoDB.
PdoStore
~~~~~~~~~~
From 9b704d57e20072b9f5bcfbe474c99d6eb1b3a771 Mon Sep 17 00:00:00 2001
From: Carlos Pereira De Amorim
Date: Fri, 26 Jun 2020 16:09:43 +0200
Subject: [PATCH 0002/5717] Added function to get a specific transition
---
workflow.rst | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/workflow.rst b/workflow.rst
index 376996534ba..7521705980d 100644
--- a/workflow.rst
+++ b/workflow.rst
@@ -229,6 +229,8 @@ what actions are allowed on a blog post::
// See all the available transitions for the post in the current state
$transitions = $workflow->getEnabledTransitions($post);
+ // See a specific available transition for the post in the current state
+ $transition = $workflow->getEnabledTransition($post, 'publish');
Accessing the Workflow in a Class
---------------------------------
@@ -649,6 +651,9 @@ of domain logic in your templates:
``workflow_transitions()``
Returns an array with all the transitions enabled for the given object.
+``workflow_transition()``
+ Returns a specific transitions enabled for the given object and transition name.
+
``workflow_marked_places()``
Returns an array with the place names of the given marking.
@@ -883,6 +888,15 @@ In Twig templates, metadata is available via the ``workflow_metadata()`` functio
{% endfor %}
+
+ to_review Priority
+
+ -
+ to_review:
+
{{ workflow_metadata(blog_post, 'priority', workflow_transition(blog_post, 'to_review')) }}
+
+
+
Learn more
----------
From af5401a38a622e0cc55b42eca361ae7061852f9b Mon Sep 17 00:00:00 2001
From: Laurent VOULLEMIER
Date: Tue, 18 Aug 2020 17:44:19 +0200
Subject: [PATCH 0003/5717] Remove manual enabling of validation and validator
annotations
---
validation.rst | 72 +-------------------------------------------------
1 file changed, 1 insertion(+), 71 deletions(-)
diff --git a/validation.rst b/validation.rst
index fd18f003d56..de6cfb755a3 100644
--- a/validation.rst
+++ b/validation.rst
@@ -207,77 +207,7 @@ Inside the template, you can output the list of errors exactly as needed:
Configuration
-------------
-Before using the Symfony validator, make sure it's enabled in the main config
-file:
-
-.. configuration-block::
-
- .. code-block:: yaml
-
- # config/packages/framework.yaml
- framework:
- validation: { enabled: true }
-
- .. code-block:: xml
-
-
-
-
-
-
-
-
-
-
- .. code-block:: php
-
- // config/packages/framework.php
- $container->loadFromExtension('framework', [
- 'validation' => [
- 'enabled' => true,
- ],
- ]);
-
-Besides, if you plan to use annotations to configure validation, replace the
-previous configuration by the following:
-
-.. configuration-block::
-
- .. code-block:: yaml
-
- # config/packages/framework.yaml
- framework:
- validation: { enable_annotations: true }
-
- .. code-block:: xml
-
-
-
-
-
-
-
-
-
-
- .. code-block:: php
-
- // config/packages/framework.php
- $container->loadFromExtension('framework', [
- 'validation' => [
- 'enable_annotations' => true,
- ],
- ]);
+In the previous Symfony versions, enabling the validator in configuration was a requirement. It's not the case anymore, the validation is enabled by default as long as the Validator component is installed. In the same way, annotations are enabled by default if ``doctrine/annotations`` is installed.
.. tip::
From c8e5dd6aa9d2f1688dbc81af4072bd909b908ed0 Mon Sep 17 00:00:00 2001
From: Thomas Landauer
Date: Sun, 13 Sep 2020 17:02:25 +0200
Subject: [PATCH 0004/5717] Update http_client.rst
Integrating the findings of https://github.com/symfony/symfony/issues/38082#issuecomment-690529165
---
http_client.rst | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/http_client.rst b/http_client.rst
index 0d8648643b7..14c73d4eb82 100644
--- a/http_client.rst
+++ b/http_client.rst
@@ -642,6 +642,11 @@ when the streams are large)::
'body' => $formData->bodyToString(),
]);
+If you need to add a custom HTTP header to the upload, you can do::
+
+ $headers = $formData->getPreparedHeaders()->toArray();
+ $headers[] = 'X-Foo: bar';
+
Cookies
~~~~~~~
From f41ef122c26ec0bb532dab399d2ba4c9f93af8eb Mon Sep 17 00:00:00 2001
From: Nicolas Grekas
Date: Sat, 30 May 2020 15:42:21 +0200
Subject: [PATCH 0005/5717] [HttpClient] add doc about extending and
AsyncDecoratorTrait
---
http_client.rst | 104 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 104 insertions(+)
diff --git a/http_client.rst b/http_client.rst
index 42a4b0388da..7c4c50932ae 100644
--- a/http_client.rst
+++ b/http_client.rst
@@ -1322,6 +1322,110 @@ This allows using them where native PHP streams are needed::
// later on if you need to, you can access the response from the stream
$response = stream_get_meta_data($streamResource)['wrapper_data']->getResponse();
+Extensibility
+-------------
+
+In order to extend the behavior of a base HTTP client, decoration is the way to go::
+
+ class MyExtendedHttpClient implements HttpClientInterface
+ {
+ private $decoratedClient;
+
+ public function __construct(HttpClientInterface $decoratedClient = null)
+ {
+ $this->decoratedClient = $decoratedClient ?? HttpClient::create();
+ }
+
+ public function request(string $method, string $url, array $options = []): ResponseInterface
+ {
+ // do what you want here with $method, $url and/or $options
+
+ $response = $this->decoratedClient->request();
+
+ //!\ calling any method on $response here would break async, see below for a better way
+
+ return $response;
+ }
+
+ public function stream($responses, float $timeout = null): ResponseStreamInterface
+ {
+ return $this->decoratedClient->stream($responses, $timeout);
+ }
+ }
+
+A decorator like this one is suited for use cases where processing the
+requests' arguments is enough.
+
+By decorating the ``on_progress`` option, one can
+even implement basic monitoring of the response. But since calling responses'
+methods forces synchronous operations, doing so in ``request()`` breaks async.
+The solution then is to also decorate the response object itself.
+:class:`Symfony\\Component\\HttpClient\\TraceableHttpClient` and
+:class:`Symfony\\Component\\HttpClient\\Response\\TraceableResponse` are good
+examples as a starting point.
+
+.. versionadded:: 5.2
+
+ ``AsyncDecoratorTrait`` was introduced in Symfony 5.2.
+
+In order to help writing more advanced response processors, the component provides
+an :class:`Symfony\\Component\\HttpClient\\AsyncDecoratorTrait`. This trait allows
+processing the stream of chunks as they come back from the network::
+
+ class MyExtendedHttpClient implements HttpClientInterface
+ {
+ use AsyncDecoratorTrait;
+
+ public function request(string $method, string $url, array $options = []): ResponseInterface
+ {
+ // do what you want here with $method, $url and/or $options
+
+ $passthru = function (ChunkInterface $chunk, AsyncContext $context) {
+
+ // do what you want with chunks, e.g. split them
+ // in smaller chunks, group them, skip some, etc.
+
+ yield $chunk;
+ };
+
+ return new AsyncResponse($this->client, $method, $url, $options, $passthru);
+ }
+ }
+
+Because the trait already implements a constructor and the ``stream()`` method,
+you don't need to add them. The ``request()`` method should still be defined;
+it shall return an
+:class:`Symfony\\Component\\HttpClient\\Response\\AsyncResponse`.
+
+The custom processing of chunks should happen in ``$passthru``: this generator
+is where you need to write your logic. It will be called for each chunk yielded by
+the underlying client. A ``$passthru`` that does nothing would just ``yield $chunk;``.
+Of course, you could also yield a modified chunk, split the chunk into many
+ones by yielding several times, or even skip a chunk altogether by issuing a
+``return;`` instead of yielding.
+
+In order to control the stream, the chunk passthru receives an
+:class:`Symfony\\Component\\HttpClient\\Response\\AsyncContext` as second
+argument. This context object has methods to read the current state of the
+response. It also allows altering the response stream with methods to create new
+chunks of content, pause the stream, cancel the stream, change the info of the
+response, replace the current request by another one or change the chunk passthru
+itself.
+
+Checking the test cases implemented in
+:class:`Symfony\\Component\\HttpClient\\Response\\Tests\\AsyncDecoratorTraitTest`
+might be a good start to get various working examples for a better understanding.
+Here are the use cases that it simulates:
+
+* retry a failed request;
+* send a preflight request, e.g. for authentication needs;
+* issue subrequests and include their content in the main response's body.
+
+The logic in :class:`Symfony\\Component\\HttpClient\\Response\\AsyncResponse` has
+many safety checks that will throw a ``LogicException`` if the chunk passthru
+doesn't behave correctly; e.g. if a chunk is yielded after an ``isLast()`` one,
+or if a content chunk is yielded before an ``isFirst()`` one, etc.
+
Testing HTTP Clients and Responses
----------------------------------
From 3892e26df91cd69892c9564571073a58b0a94a41 Mon Sep 17 00:00:00 2001
From: Wouter de Jong
Date: Sun, 9 Aug 2020 16:20:30 +0200
Subject: [PATCH 0006/5717] Clarify authentication entry point and access
denied handler
---
security/access_denied_handler.rst | 181 ++++++++++++++++++++++++++---
1 file changed, 166 insertions(+), 15 deletions(-)
diff --git a/security/access_denied_handler.rst b/security/access_denied_handler.rst
index e9e780e75ef..eed7589bee2 100644
--- a/security/access_denied_handler.rst
+++ b/security/access_denied_handler.rst
@@ -1,17 +1,116 @@
.. index::
single: Security; Creating a Custom Access Denied Handler
-How to Create a Custom Access Denied Handler
-============================================
+How to Customize Access Denied Responses
+========================================
-When your application throws an ``AccessDeniedException``, you can handle this exception
-with a service to return a custom response.
+In Symfony, you can throw an
+:class:`Symfony\\Component\\Security\\Core\\Exception\\AccessDeniedException`
+to disallow access to the user. Symfony will handle this exception and
+generates a response based on the authentication state:
-First, create a class that implements
+* **If the user is not authenticated** (or authenticated anonymously), an
+ authentication entry point is used to generated a response (typically
+ a redirect to the login page or an *401 Unauthorized* response);
+* **If the user is authenticated, but does not have the required
+ permissions**, a *403 Forbidden* response is generated.
+
+Customize the Unauthorized Response
+-----------------------------------
+
+You need to create a class that implements
+:class:`Symfony\\Component\\Security\\Http\\EntryPoint\\AuthenticationEntryPointInterface`.
+This interface has one method (``start()``) that is called whenever an
+unauthenticated user tries to access a protected resource::
+
+ // src/Security/AuthenticationEntryPoint.php
+ namespace App\Security;
+
+ use Symfony\Component\HttpFoundation\RedirectResponse;
+ use Symfony\Component\HttpFoundation\Request;
+ use Symfony\Component\HttpFoundation\Session\SessionInterface;
+ use Symfony\Component\Security\Core\Exception\AuthenticationException;
+ use Symfony\Component\Security\Http\EntryPoint\AuthenticationEntryPointInterface;
+
+ class AuthenticationEntryPoint implements AuthenticationEntryPointInterface
+ {
+ private $urlGenerator;
+ private $session;
+
+ public function __construct(UrlGeneratorInterface $urlGenerator, SessionInterface $session)
+ {
+ $this->urlGenerator = $urlGenerator;
+ $this->session = $session;
+ }
+
+ public function start(Request $request, AuthenticationException $authException = null): RedirectResponse
+ {
+ // add a custom flash message and redirect to the login page
+ $this->session->getFlashBag()->add('note', 'You have to login in order to access this page.');
+
+ return new RedirectResponse($this->urlGenerator->generate('security_login'));
+ }
+ }
+
+That's it if you're using the :ref:`default services.yaml configuration `.
+Otherwise, you have to register this service in the container.
+
+Now, configure this service ID as the entry point for the firewall:
+
+.. configuration-block::
+
+ .. code-block:: yaml
+
+ # config/packages/security.yaml
+ firewalls:
+ # ...
+
+ main:
+ # ...
+ entry_point: App\Security\AuthenticationEntryPoint
+
+ .. code-block:: xml
+
+
+
+
+
+
+
+
+
+
+
+
+ .. code-block:: php
+
+ // config/packages/security.php
+ use App\Security\AuthenticationEntryPoint;
+
+ $container->loadFromExtension('security', [
+ 'firewalls' => [
+ 'main' => [
+ // ...
+ 'entry_point' => AuthenticationEntryPoint::class,
+ ],
+ ],
+ ]);
+
+Customize the Forbidden Response
+--------------------------------
+
+Create a class that implements
:class:`Symfony\\Component\\Security\\Http\\Authorization\\AccessDeniedHandlerInterface`.
-This interface defines one method called ``handle()`` where you can implement whatever
-logic that should run when access is denied for the current user (e.g. send a
-mail, log a message, or generally return a custom response)::
+This interface defines one method called ``handle()`` where you can
+implement whatever logic that should execute when access is denied for the
+current user (e.g. send a mail, log a message, or generally return a custom
+response)::
namespace App\Security;
@@ -49,11 +148,21 @@ configure it under your firewall:
.. code-block:: xml
-
-
- App\Security\AccessDeniedHandler
-
-
+
+
+
+
+
+
+
+
+
.. code-block:: php
@@ -69,5 +178,47 @@ configure it under your firewall:
],
]);
-That's it! Any ``AccessDeniedException`` thrown by code under the ``main`` firewall
-will now be handled by your service.
+Customizing All Access Denied Responses
+---------------------------------------
+
+In some cases, you might want to customize both responses or do a specific
+action (e.g. logging) for each ``AccessDeniedException``. In this case,
+configure a :ref:`kernel.exception listener `::
+
+ // src/EventListener/AccessDeniedListener.php
+ namespace App\EventListener;
+
+ use Symfony\Component\EventDispatcher\EventSubscriberInterface;
+ use Symfony\Component\HttpFoundation\Response;
+ use Symfony\Component\HttpKernel\Event\ExceptionEvent;
+ use Symfony\Component\HttpKernel\KernelEvents;
+ use Symfony\Component\Security\Core\Exception\AccessDeniedException;
+
+ class AccessDeniedListener implements EventSubscriberInterface
+ {
+ public static function getSubscribedEvents(): array
+ {
+ return [
+ // the priority must be greater than the Security HTTP
+ // ExceptionListener, to make sure it's called before
+ // the default exception listener
+ KernelEvents::EXCEPTION => ['onKernelException', 2],
+ ];
+ }
+
+ public function onKernelException(ExceptionEvent $event): void
+ {
+ $exception = $event->getException();
+ if (!$exception instanceof AccessDeniedException) {
+ return;
+ }
+
+ // ... perform some action (e.g. logging)
+
+ // optionally set the custom response
+ $event->setResponse(new Response(null, 403));
+
+ // or stop propagation (prevents the next exception listeners from being called)
+ //$event->stopPropagation();
+ }
+ }
From 9994e7b0dca329678cb7db549bbae7d256d9c7b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?=
Date: Wed, 21 Oct 2020 20:24:19 +0200
Subject: [PATCH 0007/5717] Use APP_RUNTIME_ENV to define secrets
---
configuration/secrets.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/configuration/secrets.rst b/configuration/secrets.rst
index 696ce519682..ab49c052dff 100644
--- a/configuration/secrets.rst
+++ b/configuration/secrets.rst
@@ -48,7 +48,7 @@ running:
.. code-block:: terminal
- $ php bin/console secrets:generate-keys --env=prod
+ $ APP_RUNTIME_ENV=prod php bin/console secrets:generate-keys
This will generate ``config/secrets/prod/prod.encrypt.public.php`` and
``config/secrets/prod/prod.decrypt.private.php``.
@@ -78,7 +78,7 @@ Suppose you want to store your database password as a secret. By using the
$ php bin/console secrets:set DATABASE_PASSWORD
# set your production value
- $ php bin/console secrets:set DATABASE_PASSWORD --env=prod
+ $ APP_RUNTIME_ENV=prod php bin/console secrets:set DATABASE_PASSWORD
This will create a new file for the secret in ``config/secrets/dev`` and another
in ``config/secrets/prod``. You can also set the secret in a few other ways:
@@ -253,7 +253,7 @@ your secrets during deployment to the "local" vault:
.. code-block:: terminal
- $ php bin/console secrets:decrypt-to-local --force --env=prod
+ $ APP_RUNTIME_ENV=prod php bin/console secrets:decrypt-to-local --force
This will write all the decrypted secrets into the ``.env.prod.local`` file.
After doing this, the decryption key does *not* need to remain on the server(s).
From bf6cca937f6c2e96a0e9a2deeeae0fc768b8a764 Mon Sep 17 00:00:00 2001
From: Baptiste Leduc
Date: Fri, 23 Oct 2020 13:45:06 +0200
Subject: [PATCH 0008/5717] Non-standard adder/remover methods
---
components/property_access.rst | 39 ++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/components/property_access.rst b/components/property_access.rst
index df0f3d99b51..741d3023ad5 100644
--- a/components/property_access.rst
+++ b/components/property_access.rst
@@ -394,6 +394,45 @@ and ``removeChild()`` methods to access to the ``children`` property.
If available, *adder* and *remover* methods have priority over a *setter* method.
+Using non-standard adder/remover methods
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sometimes, adder and remover methods don't use the standard ``add`` or ``remove`` prefix, like in this example::
+
+ // ...
+ class PeopleList
+ {
+ // ...
+
+ public function joinPeople(string $people): void
+ {
+ $this->peoples[] = $people;
+ }
+
+ public function leavePeople(string $people): void
+ {
+ foreach ($this->peoples as $id => $item) {
+ if ($people === $item) {
+ unset($this->peoples[$id]);
+ break;
+ }
+ }
+ }
+ }
+
+ use Symfony\Component\PropertyInfo\Extractor\ReflectionExtractor;
+ use Symfony\Component\PropertyAccess\PropertyAccessor;
+
+ $list = new PeopleList();
+ $reflectionExtractor = new ReflectionExtractor(null, null, ['join', 'leave']);
+ $propertyAccessor = new PropertyAccessor(false, false, null, true, $reflectionExtractor, $reflectionExtractor);
+ $propertyAccessor->setValue($person, 'peoples', ['kevin', 'wouter']);
+
+ var_dump($person->getPeoples()); // ['kevin', 'wouter']
+
+Instead of calling ``add()`` and ``remove()``, the PropertyAccess
+component will call ``join()`` and ``leave()`` methods.
+
Checking Property Paths
-----------------------
From 436e2fc6183b80a5f39300d329b654f607ad25d0 Mon Sep 17 00:00:00 2001
From: Javier Eguiluz
Date: Fri, 14 Aug 2020 15:06:43 +0200
Subject: [PATCH 0009/5717] [Testing] Updated the contents about getting the
container in tests
---
testing.rst | 91 ++++++++++++++++++++---------------------------------
1 file changed, 34 insertions(+), 57 deletions(-)
diff --git a/testing.rst b/testing.rst
index 4b64d504631..d5d0941b1ea 100644
--- a/testing.rst
+++ b/testing.rst
@@ -544,74 +544,51 @@ You can also get the objects related to the latest request::
Accessing the Container
~~~~~~~~~~~~~~~~~~~~~~~
-It's highly recommended that a functional test only tests the response. But
-under certain very rare circumstances, you might want to access some services
-to write assertions. Given that services are private by default, test classes
-define a property that stores a special container created by Symfony which
-allows fetching both public and all non-removed private services::
-
- // gives access to the same services used in your test, unless you're using
- // $client->insulate() or using real HTTP requests to test your application
- // don't forget to call self::bootKernel() before, otherwise, the container
- // will be empty
- $container = self::$container;
-
-For a list of services available in your application, use the ``debug:container``
-command.
-
-If a private service is *never* used in your application (outside of your test),
-it is *removed* from the container and cannot be accessed as described above. In
-that case, you can create a public alias in the ``test`` environment and access
-it via that alias:
+Functional tests should only test the response (e.g. its contents or its HTTP
+status code). However, in some rare circumstances you may need to access the
+container to use some service.
-.. configuration-block::
-
- .. code-block:: yaml
-
- # config/services_test.yaml
- services:
- # access the service in your test via
- # self::$container->get('test.App\Test\SomeTestHelper')
- test.App\Test\SomeTestHelper:
- # the id of the private service
- alias: 'App\Test\SomeTestHelper'
- public: true
+First, you can get the same container used in the application, which only
+includes the public services::
- .. code-block:: xml
-
-
-
-
+ public function testSomething()
+ {
+ $client = self::createClient();
+ $container = $client->getContainer();
+ // $someService = $container->get('the-service-ID');
-
-
+ // ...
+ }
-
-
-
+Symfony tests also have access to a special container that includes both the
+public services and the non-removed :ref:`private services `
+services::
- .. code-block:: php
+ public function testSomething()
+ {
+ // this call is needed; otherwise the container will be empty
+ self::bootKernel();
- // config/services_test.php
- namespace Symfony\Component\DependencyInjection\Loader\Configurator;
+ $container = self::$container;
+ // $someService = $container->get('the-service-ID');
- use App\Service\MessageGenerator;
- use App\Service\SiteUpdateManager;
+ // ...
+ }
- return function(ContainerConfigurator $configurator) {
- // ...
+Finally, for the most rare edge-cases, Symfony includes a special container
+which provides access to all services, public and private. This special
+container is a service that can be get via the normal container::
- $services->alias('test.App\Test\SomeTestHelper', 'App\Test\SomeTestHelper')->public();
- };
+ public function testSomething()
+ {
+ $client = self::createClient();
+ $normalContainer = $client->getContainer();
+ $specialContainer = $normalContainer->get('test.service_container');
-.. tip::
+ // $somePrivateService = $specialContainer->get('the-service-ID');
- The special container that gives access to private services exists only in
- the ``test`` environment and is itself a service that you can get from the
- real container using the ``test.service_container`` id.
+ // ...
+ }
.. tip::
From 38da641b42976ddeef37903c4a0ddd64226f1bab Mon Sep 17 00:00:00 2001
From: Takashi Kanemoto
Date: Sat, 24 Oct 2020 18:50:56 +0900
Subject: [PATCH 0010/5717] Fix typo
---
testing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/testing.rst b/testing.rst
index d028fc2e713..371b986496c 100644
--- a/testing.rst
+++ b/testing.rst
@@ -757,7 +757,7 @@ their type::
$form['photo']->upload('/path/to/lucas.jpg');
// In the case of a multiple file upload
- $form['my_form[field][O]']->upload('/path/to/lucas.jpg');
+ $form['my_form[field][0]']->upload('/path/to/lucas.jpg');
$form['my_form[field][1]']->upload('/path/to/lisa.jpg');
.. tip::
From 87fe4cc0cc5ae0b0c30c254ba5ee38cc51e4f538 Mon Sep 17 00:00:00 2001
From: Laurent VOULLEMIER
Date: Sun, 25 Oct 2020 07:58:38 +0100
Subject: [PATCH 0011/5717] Remove paragraph about .htaccess files
Htaccess files aren't in SF repository anymore (since sf4 and Flex, it's in the apache-pack optional recipe)
---
setup/web_server_configuration.rst | 7 -------
1 file changed, 7 deletions(-)
diff --git a/setup/web_server_configuration.rst b/setup/web_server_configuration.rst
index 2fc2c74e648..e4fef9b3d99 100644
--- a/setup/web_server_configuration.rst
+++ b/setup/web_server_configuration.rst
@@ -374,13 +374,6 @@ The **minimum configuration** to get your application running under Nginx is:
After you deploy to production, make sure that you **cannot** access the ``index.php``
script (i.e. ``http://example.com/index.php``).
-.. note::
-
- By default, Symfony applications include several ``.htaccess`` files to
- configure redirections and to prevent unauthorized access to some sensitive
- directories. Those files are only useful when using Apache, so you can
- safely remove them when using Nginx.
-
For advanced Nginx configuration options, read the official `Nginx documentation`_.
.. _`Apache documentation`: https://httpd.apache.org/docs/
From 2fcc6fe060af8fcdb7d7010130e535e548a6d919 Mon Sep 17 00:00:00 2001
From: Nyholm
Date: Sun, 25 Oct 2020 16:37:19 +0100
Subject: [PATCH 0012/5717] [RateLimit] Make sure we mention policy instead of
limit
---
rate_limiter.rst | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/rate_limiter.rst b/rate_limiter.rst
index 527357cc011..22a56168498 100644
--- a/rate_limiter.rst
+++ b/rate_limiter.rst
@@ -16,11 +16,11 @@ Symfony uses these rate limiters in built-in features like "login throttling",
which limits how many failed login attempts a user can make in a given period of
time, but you can use them for your own features too.
-Rate Limiting Strategies
-------------------------
+Rate Limiting Policies
+----------------------
-Symfony's rate limiter implements some of the most common strategies to enforce
-rate limits: **fixed window**, **sliding window** and **token bucket**.
+Symfony's rate limiter implements some of the most common policies to enforce
+rate limits: **fixed window**, **sliding window**, **token bucket**.
Fixed Window Rate Limiter
~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -86,12 +86,12 @@ enforce different levels of service (free or paid):
framework:
rate_limiter:
anonymous_api:
- # use 'sliding_window' if you prefer that strategy
- strategy: 'fixed_window'
+ # use 'sliding_window' if you prefer that policy
+ policy: 'fixed_window'
limit: 100
interval: '60 minutes'
authenticated_api:
- strategy: 'token_bucket'
+ policy: 'token_bucket'
limit: 5000
rate: { interval: '15 minutes', amount: 500 }
@@ -124,13 +124,13 @@ the number of requests to the API::
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpKernel\Exception\TooManyRequestsHttpException;
- use Symfony\Component\RateLimiter\RateLimiter;
+ use Symfony\Component\RateLimiter\RateLimiterFactory;
class ApiController extends AbstractController
{
// if you're using service autowiring, the variable name must be:
// "rate limiter name" (in camelCase) + "limiter" suffix
- public function index(RateLimiter $anonymousApiLimiter)
+ public function index(RateLimiterFactory $anonymousApiLimiter)
{
// create a limiter based on a unique identifier of the client
// (e.g. the client's IP address, a username/email, an API key, etc.)
@@ -171,11 +171,11 @@ using the ``reserve()`` method::
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
- use Symfony\Component\RateLimiter\RateLimiter;
+ use Symfony\Component\RateLimiter\RateLimiterFactory;
class ApiController extends AbstractController
{
- public function registerUser(Request $request, RateLimiter $authenticatedApiLimiter)
+ public function registerUser(Request $request, RateLimiterFactory $authenticatedApiLimiter)
{
$apiKey = $request->headers->get('apikey');
$limiter = $authenticatedApiLimiter->create($apiKey);
@@ -229,11 +229,11 @@ the :class:`Symfony\\Component\\RateLimiter\\Reservation` object returned by the
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
- use Symfony\Component\RateLimiter\RateLimiter;
+ use Symfony\Component\RateLimiter\RateLimiterFactory;
class ApiController extends AbstractController
{
- public function index(RateLimiter $anonymousApiLimiter)
+ public function index(RateLimiterFactory $anonymousApiLimiter)
{
$limiter = $anonymousApiLimiter->create($request->getClientIp());
$limit = $limiter->consume();
From 3e0c21cc3eb8b8ed493b982a2c0c3cc77afb76aa Mon Sep 17 00:00:00 2001
From: Nyholm
Date: Sun, 25 Oct 2020 16:39:18 +0100
Subject: [PATCH 0013/5717] Update wrong use statement
---
translation.rst | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/translation.rst b/translation.rst
index cb774e70f7a..4c4b4b9a07b 100644
--- a/translation.rst
+++ b/translation.rst
@@ -307,16 +307,16 @@ parts of your application and mocking it in your tests.
Instead of translating a string at the time of creation, you can use a
"translatable object", which is an instance of the
-:class:`Symfony\\Component\\Translation\\Translatable` class. This object stores
+:class:`Symfony\\Component\\Translation\\TranslatableMessage` class. This object stores
all the information needed to fully translate its contents when needed::
- use Symfony\Component\Translation\Translatable;
+ use Symfony\Component\Translation\TranslatableMessage;
// the first argument is required and it's the original message
- $message = new Translatable('Symfony is great!');
+ $message = new TranslatableMessage('Symfony is great!');
// the optional second argument defines the translation parameters and
// the optional third argument is the translation domain
- $status = new Translatable('order.status', ['%status%' => $order->getStatus()], 'store');
+ $status = new TranslatableMessage('order.status', ['%status%' => $order->getStatus()], 'store');
Templates are now much simpler because you can pass translatable objects to the
``trans`` filter:
From 08ded89b8f12598e8a65b694d2c208545cdd884a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20K=C3=A4fer?=
Date: Sun, 25 Oct 2020 11:46:38 +0100
Subject: [PATCH 0014/5717] Change "-t" to "--track" to be more explicit
---
contributing/code/pull_requests.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/contributing/code/pull_requests.rst b/contributing/code/pull_requests.rst
index 1060e0d80a8..c0cd2259250 100644
--- a/contributing/code/pull_requests.rst
+++ b/contributing/code/pull_requests.rst
@@ -159,7 +159,7 @@ Or, if you want to provide a bug fix for the ``3.4`` branch, first track the rem
.. code-block:: terminal
- $ git checkout -t origin/3.4
+ $ git checkout --track origin/3.4
Then create a new branch off the ``3.4`` branch to work on the bug fix:
From 42f4d233dc1269f94bce774879506fba76e30420 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20K=C3=A4fer?=
Date: Sun, 25 Oct 2020 11:27:09 +0100
Subject: [PATCH 0015/5717] Change branch "master" to "5.x"
Not sure if this is correct but I'm sure that I cannot find "master" anymore.
---
contributing/code/pull_requests.rst | 18 +++++++++---------
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/contributing/code/pull_requests.rst b/contributing/code/pull_requests.rst
index c0cd2259250..816130b1168 100644
--- a/contributing/code/pull_requests.rst
+++ b/contributing/code/pull_requests.rst
@@ -129,7 +129,7 @@ work:
` (you may have to choose a higher branch if
the feature you are fixing was introduced in a later version);
-* ``master``, if you are adding a new feature.
+* ``5.x``, if you are adding a new feature.
The only exception is when a new :doc:`major Symfony version `
(4.0, 5.0, etc.) comes out every two years. Because of the
@@ -142,7 +142,7 @@ work:
All bug fixes merged into maintenance branches are also merged into more
recent branches on a regular basis. For instance, if you submit a PR
for the ``3.4`` branch, the PR will also be applied by the core team on
- the ``master`` branch.
+ the ``5.x`` branch.
Create a Topic Branch
~~~~~~~~~~~~~~~~~~~~~
@@ -152,7 +152,7 @@ topic branch:
.. code-block:: terminal
- $ git checkout -b BRANCH_NAME master
+ $ git checkout -b BRANCH_NAME 5.x
Or, if you want to provide a bug fix for the ``3.4`` branch, first track the remote
``3.4`` branch locally:
@@ -277,15 +277,15 @@ while to finish your changes):
.. code-block:: terminal
- $ git checkout master
+ $ git checkout 5.x
$ git fetch upstream
- $ git merge upstream/master
+ $ git merge upstream/5.x
$ git checkout BRANCH_NAME
- $ git rebase master
+ $ git rebase 5.x
.. tip::
- Replace ``master`` with the branch you selected previously (e.g. ``3.4``)
+ Replace ``5.x`` with the branch you selected previously (e.g. ``3.4``)
if you are working on a bug fix.
When doing the ``rebase`` command, you might have to fix merge conflicts.
@@ -402,12 +402,12 @@ Rework your Pull Request
~~~~~~~~~~~~~~~~~~~~~~~~
Based on the feedback on the pull request, you might need to rework your
-PR. Before re-submitting the PR, rebase with ``upstream/master`` or
+PR. Before re-submitting the PR, rebase with ``upstream/5.x`` or
``upstream/3.4``, don't merge; and force the push to the origin:
.. code-block:: terminal
- $ git rebase -f upstream/master
+ $ git rebase -f upstream/5.x
$ git push --force origin BRANCH_NAME
.. note::
From 464904fa2d95fca3f3759e9c61162d1d5d2579ef Mon Sep 17 00:00:00 2001
From: Francois CONTE
Date: Sat, 24 Oct 2020 22:20:51 +0200
Subject: [PATCH 0016/5717] [Security] Update examples of Login Link
---
security/login_link.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/security/login_link.rst b/security/login_link.rst
index 3db4f34f8eb..b92dd694178 100644
--- a/security/login_link.rst
+++ b/security/login_link.rst
@@ -253,7 +253,7 @@ number::
'Welcome to MY WEBSITE!' // email subject
);
// create a recipient for this user
- $recipient = (new Recipient())->email($user->getEmail());
+ $recipient = new Recipient($user->getEmail());
// send the notification to the user
$notifier->send($notification, $recipient);
@@ -620,7 +620,7 @@ user create this POST request (e.g. by clicking a button)::
/**
* @Route("/login_check", name="login_check")
*/
- public function check()
+ public function check(Request $request)
{
// get the login link query parameters
$expires = $request->query->get('expires');
From 1776c69a192042c6999fafc629a88f3c5d646ad0 Mon Sep 17 00:00:00 2001
From: "Alexander M. Turek"
Date: Sun, 25 Oct 2020 23:53:32 +0100
Subject: [PATCH 0017/5717] [DependencyInjection] Fix markup of
configuration-block
---
service_container/autowiring.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/service_container/autowiring.rst b/service_container/autowiring.rst
index 4a2b606c538..e62f75f7513 100644
--- a/service_container/autowiring.rst
+++ b/service_container/autowiring.rst
@@ -609,7 +609,7 @@ you can use the ``@required`` annotation instead.
Despite property injection has some :ref:`drawbacks `,
autowiring with ``#[Required]`` or ``@required`` can also be applied to public
-typed properties::
+typed properties:
.. configuration-block::
From 5094d7f5e59a75b48279925822d58e16d538cb7d Mon Sep 17 00:00:00 2001
From: Wouter de Jong
Date: Mon, 26 Oct 2020 11:50:23 +0100
Subject: [PATCH 0018/5717] Fixed table margin
---
messenger.rst | 30 +++++++++++++++---------------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/messenger.rst b/messenger.rst
index 3dce638cd70..e9253431bd4 100644
--- a/messenger.rst
+++ b/messenger.rst
@@ -1041,21 +1041,21 @@ under the transport in ``messenger.yaml``:
=================== ===================================== =================================
Option Description Default
=================== ===================================== =================================
-stream The Redis stream name messages
-group The Redis consumer group name symfony
-consumer Consumer name used in Redis consumer
-auto_setup Create the Redis group automatically? true
-auth The Redis password
-delete_after_ack If ``true``, messages are deleted false
- automatically after processing them
-serializer How to serialize the final payload ``Redis::SERIALIZER_PHP``
- in Redis (the
- ``Redis::OPT_SERIALIZER`` option)
-stream_max_entries The maximum number of entries which ``0`` (which means "no trimming")
- the stream will be trimmed to. Set
- it to a large enough number to
- avoid losing pending messages
-tls Enable TLS support for the connection false
+stream The Redis stream name messages
+group The Redis consumer group name symfony
+consumer Consumer name used in Redis consumer
+auto_setup Create the Redis group automatically? true
+auth The Redis password
+delete_after_ack If ``true``, messages are deleted false
+ automatically after processing them
+serializer How to serialize the final payload ``Redis::SERIALIZER_PHP``
+ in Redis (the
+ ``Redis::OPT_SERIALIZER`` option)
+stream_max_entries The maximum number of entries which ``0`` (which means "no trimming")
+ the stream will be trimmed to. Set
+ it to a large enough number to
+ avoid losing pending messages
+tls Enable TLS support for the connection false
redeliver_timeout Timeout before retrying a pending ``3600``
message which is owned by an
abandoned consumer (if a worker died
From 792968b78e2257368c6fb1dc3346d931a85c95fb Mon Sep 17 00:00:00 2001
From: Javier Eguiluz
Date: Thu, 22 Oct 2020 13:02:02 +0200
Subject: [PATCH 0019/5717] Add the new doc build system
---
.gitignore | 3 +
_build/build.php | 44 +
_build/composer.json | 21 +
_build/composer.lock | 2197 ++++++++++++++++++++++++++++++++++++++++++
docs.json | 3 +
5 files changed, 2268 insertions(+)
create mode 100755 _build/build.php
create mode 100644 _build/composer.json
create mode 100644 _build/composer.lock
create mode 100644 docs.json
diff --git a/.gitignore b/.gitignore
index 6a20088680a..1d25940e5c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,7 @@
/_build/doctrees
/_build/spelling
/_build/html
+/_build/logs.txt
+/_build/vendor
+/_build/output
*.pyc
diff --git a/_build/build.php b/_build/build.php
new file mode 100755
index 00000000000..5a2fd660bda
--- /dev/null
+++ b/_build/build.php
@@ -0,0 +1,44 @@
+#!/usr/bin/env php
+register('build-docs')
+ ->addOption('generate-fjson-files', null, InputOption::VALUE_NONE, 'Use this option to generate docs both in HTML and JSON formats')
+ ->addOption('disable-cache', null, InputOption::VALUE_NONE, 'Use this option to force a full regeneration of all doc contents')
+ ->setCode(function(InputInterface $input, OutputInterface $output) {
+ $command = [
+ 'php',
+ 'vendor/symfony/docs-builder/bin/console',
+ 'build:docs',
+ sprintf('--save-errors=%s', __DIR__.'/logs.txt'),
+ __DIR__.'/../',
+ __DIR__.'/output/',
+ ];
+
+ if ($input->getOption('generate-fjson-files')) {
+ $command[] = '--output-json';
+ }
+
+ if ($input->getOption('disable-cache')) {
+ $command[] = '--disable-cache';
+ }
+
+ $process = new Process($command);
+ $process->setTimeout(3600);
+ $process->run();
+
+ if (!$process->isSuccessful()) {
+ throw new ProcessFailedException($process);
+ }
+ })
+ ->getApplication()
+ ->setDefaultCommand('build-docs', true)
+ ->run();
diff --git a/_build/composer.json b/_build/composer.json
new file mode 100644
index 00000000000..30de6365ecb
--- /dev/null
+++ b/_build/composer.json
@@ -0,0 +1,21 @@
+{
+ "minimum-stability": "dev",
+ "repositories": [
+ { "type": "git", "url": "https://github.com/weaverryan/docs-builder" }
+ ],
+ "config": {
+ "platform": {
+ "php": "7.2.9"
+ },
+ "preferred-install": {
+ "*": "dist"
+ },
+ "sort-packages": true
+ },
+ "require": {
+ "php": ">=7.2.9",
+ "symfony/console": "^4.1",
+ "symfony/docs-builder": "dev-master",
+ "symfony/process": "9999999-dev"
+ }
+}
diff --git a/_build/composer.lock b/_build/composer.lock
new file mode 100644
index 00000000000..101c85b4165
--- /dev/null
+++ b/_build/composer.lock
@@ -0,0 +1,2197 @@
+{
+ "_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": "6ee53de4a5225f7f273333a94e84fdd1",
+ "packages": [
+ {
+ "name": "doctrine/event-manager",
+ "version": "1.1.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/event-manager.git",
+ "reference": "348f72ec92c7e0b1f5462f6616af2b448ba3cbb1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/348f72ec92c7e0b1f5462f6616af2b448ba3cbb1",
+ "reference": "348f72ec92c7e0b1f5462f6616af2b448ba3cbb1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "conflict": {
+ "doctrine/common": "<2.9@dev"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpunit/phpunit": "^7.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\": "lib/Doctrine/Common"
+ }
+ },
+ "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/1.1.x"
+ },
+ "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": "2020-10-05T12:08:55+00:00"
+ },
+ {
+ "name": "doctrine/rst-parser",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/rst-parser.git",
+ "reference": "1873475b3791954f1ca1539d4063cfcbd1c9e351"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/rst-parser/zipball/1873475b3791954f1ca1539d4063cfcbd1c9e351",
+ "reference": "1873475b3791954f1ca1539d4063cfcbd1c9e351",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/event-manager": "^1.0",
+ "php": "^7.1",
+ "symfony/filesystem": "^4.1|^5.0",
+ "twig/twig": "^2.9.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "gajus/dindent": "^2.0.2",
+ "phpstan/phpstan": "^0.10",
+ "phpstan/phpstan-deprecation-rules": "^0.10",
+ "phpstan/phpstan-phpunit": "^0.10",
+ "phpstan/phpstan-strict-rules": "^0.10",
+ "phpunit/phpunit": "^7.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\RST\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Grégoire Passault",
+ "email": "g.passault@gmail.com",
+ "homepage": "http://www.gregwar.com/"
+ },
+ {
+ "name": "Jonathan H. Wage",
+ "email": "jonwage@gmail.com",
+ "homepage": "https://jwage.com"
+ }
+ ],
+ "description": "PHP library to parse reStructuredText documents and generate HTML or LaTeX documents.",
+ "homepage": "https://github.com/doctrine/rst-parser",
+ "keywords": [
+ "html",
+ "latex",
+ "markup",
+ "parser",
+ "reStructuredText",
+ "rst"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/rst-parser/issues",
+ "source": "https://github.com/doctrine/rst-parser/tree/master"
+ },
+ "time": "2020-10-23T00:13:24+00:00"
+ },
+ {
+ "name": "guzzlehttp/guzzle",
+ "version": "6.5.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/guzzle.git",
+ "reference": "e8ed4dbf49b260ff129ff0e0400718c3269971bf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e8ed4dbf49b260ff129ff0e0400718c3269971bf",
+ "reference": "e8ed4dbf49b260ff129ff0e0400718c3269971bf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "guzzlehttp/promises": "^1.0",
+ "guzzlehttp/psr7": "^1.6.1",
+ "php": ">=5.5",
+ "symfony/polyfill-intl-idn": "^1.17.0"
+ },
+ "require-dev": {
+ "ext-curl": "*",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
+ "psr/log": "^1.1"
+ },
+ "suggest": {
+ "psr/log": "Required for using the Log middleware"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "6.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle is a PHP HTTP client library",
+ "homepage": "http://guzzlephp.org/",
+ "keywords": [
+ "client",
+ "curl",
+ "framework",
+ "http",
+ "http client",
+ "rest",
+ "web service"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/guzzle/issues",
+ "source": "https://github.com/guzzle/guzzle/tree/6.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/alexeyshockov",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/gmponos",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/sagikazarmark",
+ "type": "github"
+ }
+ ],
+ "time": "2020-07-02T06:52:04+00:00"
+ },
+ {
+ "name": "guzzlehttp/promises",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/promises.git",
+ "reference": "ddfeedfff2a52661429437da0702979f708e6ac6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/ddfeedfff2a52661429437da0702979f708e6ac6",
+ "reference": "ddfeedfff2a52661429437da0702979f708e6ac6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^4.4 || ^5.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ }
+ ],
+ "description": "Guzzle promises library",
+ "keywords": [
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/promises/issues",
+ "source": "https://github.com/guzzle/promises/tree/master"
+ },
+ "time": "2020-10-19T16:50:15+00:00"
+ },
+ {
+ "name": "guzzlehttp/psr7",
+ "version": "1.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/guzzle/psr7.git",
+ "reference": "25f7f893f0b52b7b14e244a16679d72b1f0088de"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/25f7f893f0b52b7b14e244a16679d72b1f0088de",
+ "reference": "25f7f893f0b52b7b14e244a16679d72b1f0088de",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0",
+ "psr/http-message": "~1.0",
+ "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
+ },
+ "provide": {
+ "psr/http-message-implementation": "1.0"
+ },
+ "require-dev": {
+ "ext-zlib": "*",
+ "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
+ },
+ "suggest": {
+ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ },
+ "files": [
+ "src/functions_include.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Michael Dowling",
+ "email": "mtdowling@gmail.com",
+ "homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Schultze",
+ "homepage": "https://github.com/Tobion"
+ }
+ ],
+ "description": "PSR-7 message implementation that also provides common utility methods",
+ "keywords": [
+ "http",
+ "message",
+ "psr-7",
+ "request",
+ "response",
+ "stream",
+ "uri",
+ "url"
+ ],
+ "support": {
+ "issues": "https://github.com/guzzle/psr7/issues",
+ "source": "https://github.com/guzzle/psr7/tree/1.x"
+ },
+ "time": "2020-10-22T07:42:05+00:00"
+ },
+ {
+ "name": "paragonie/random_compat",
+ "version": "v9.99.100",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/paragonie/random_compat.git",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">= 7"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.*|5.*",
+ "vimeo/psalm": "^1"
+ },
+ "suggest": {
+ "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Paragon Initiative Enterprises",
+ "email": "security@paragonie.com",
+ "homepage": "https://paragonie.com"
+ }
+ ],
+ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
+ "keywords": [
+ "csprng",
+ "polyfill",
+ "pseudorandom",
+ "random"
+ ],
+ "support": {
+ "email": "info@paragonie.com",
+ "issues": "https://github.com/paragonie/random_compat/issues",
+ "source": "https://github.com/paragonie/random_compat"
+ },
+ "time": "2020-10-15T08:29:30+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "381524e8568e07f31d504a945b88556548c8c42e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/381524e8568e07f31d504a945b88556548c8c42e",
+ "reference": "381524e8568e07f31d504a945b88556548c8c42e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.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/master"
+ },
+ "time": "2020-10-13T07:07:53+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
+ "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2019-08-29T13:16:46+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "dd738d0b4491f32725492cf345f6b501f5922fec"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/dd738d0b4491f32725492cf345f6b501f5922fec",
+ "reference": "dd738d0b4491f32725492cf345f6b501f5922fec",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "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/master"
+ },
+ "time": "2020-09-18T06:44:51+00:00"
+ },
+ {
+ "name": "ralouphie/getallheaders",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ralouphie/getallheaders.git",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
+ "reference": "120b605dfeb996808c31b6477290a714d356e822",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.6"
+ },
+ "require-dev": {
+ "php-coveralls/php-coveralls": "^2.1",
+ "phpunit/phpunit": "^5 || ^6.5"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/getallheaders.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ralph Khattar",
+ "email": "ralph.khattar@gmail.com"
+ }
+ ],
+ "description": "A polyfill for getallheaders.",
+ "support": {
+ "issues": "https://github.com/ralouphie/getallheaders/issues",
+ "source": "https://github.com/ralouphie/getallheaders/tree/develop"
+ },
+ "time": "2019-03-08T08:55:37+00:00"
+ },
+ {
+ "name": "scrivo/highlight.php",
+ "version": "9.18.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/scrivo/highlight.php.git",
+ "reference": "006e334dbf8e0a30573174e2cb6e11682b224f15"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/006e334dbf8e0a30573174e2cb6e11682b224f15",
+ "reference": "006e334dbf8e0a30573174e2cb6e11682b224f15",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-mbstring": "*",
+ "php": ">=5.4"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8|^5.7",
+ "sabberworm/php-css-parser": "^8.3",
+ "symfony/finder": "^2.8|^3.4",
+ "symfony/var-dumper": "^2.8|^3.4"
+ },
+ "suggest": {
+ "ext-dom": "Needed to make use of the features in the utilities namespace"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Highlight\\": "",
+ "HighlightUtilities\\": ""
+ },
+ "files": [
+ "HighlightUtilities/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Geert Bergman",
+ "homepage": "http://www.scrivo.org/",
+ "role": "Project Author"
+ },
+ {
+ "name": "Vladimir Jimenez",
+ "homepage": "https://allejo.io",
+ "role": "Maintainer"
+ },
+ {
+ "name": "Martin Folkers",
+ "homepage": "https://twobrain.io",
+ "role": "Contributor"
+ }
+ ],
+ "description": "Server side syntax highlighter that supports 185 languages. It's a PHP port of highlight.js",
+ "keywords": [
+ "code",
+ "highlight",
+ "highlight.js",
+ "highlight.php",
+ "syntax"
+ ],
+ "support": {
+ "issues": "https://github.com/scrivo/highlight.php/issues",
+ "source": "https://github.com/scrivo/highlight.php"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/allejo",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-17T21:12:39+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "a30dd52eb2129e90e2e15bf107f91eab2219b52c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a30dd52eb2129e90e2e15bf107f91eab2219b52c",
+ "reference": "a30dd52eb2129e90e2e15bf107f91eab2219b52c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.15",
+ "symfony/service-contracts": "^1.1|^2"
+ },
+ "conflict": {
+ "symfony/dependency-injection": "<3.4",
+ "symfony/event-dispatcher": "<4.3|>=5",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<3.3"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0"
+ },
+ "require-dev": {
+ "psr/log": "~1.0",
+ "symfony/config": "^3.4|^4.0|^5.0",
+ "symfony/dependency-injection": "^3.4|^4.0|^5.0",
+ "symfony/event-dispatcher": "^4.3",
+ "symfony/lock": "^4.4|^5.0",
+ "symfony/process": "^3.4|^4.0|^5.0",
+ "symfony/var-dumper": "^4.3|^5.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony Console Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/console/tree/4.4"
+ },
+ "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": "2020-10-13T13:20:53+00:00"
+ },
+ {
+ "name": "symfony/css-selector",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/css-selector.git",
+ "reference": "e529efc81e4b3f06932e6ac4e0dab9d536e6afd1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/e529efc81e4b3f06932e6ac4e0dab9d536e6afd1",
+ "reference": "e529efc81e4b3f06932e6ac4e0dab9d536e6afd1",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony CssSelector Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/css-selector/tree/4.4"
+ },
+ "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": "2020-10-13T13:20:53+00:00"
+ },
+ {
+ "name": "symfony/docs-builder",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/weaverryan/docs-builder",
+ "reference": "5def2fef2e7c8acade040d74d55b9b96fb8ed262"
+ },
+ "require": {
+ "doctrine/rst-parser": "dev-master",
+ "ext-curl": "*",
+ "ext-json": "*",
+ "guzzlehttp/guzzle": "~6.0",
+ "scrivo/highlight.php": "^9.12.0",
+ "symfony/console": "^4.1",
+ "symfony/css-selector": "^4.1",
+ "symfony/dom-crawler": "^4.1",
+ "symfony/filesystem": "^4.1",
+ "symfony/finder": "^4.1",
+ "symfony/http-client": "^4.3",
+ "twig/twig": "^2.7.3"
+ },
+ "require-dev": {
+ "gajus/dindent": "^2.0",
+ "symfony/phpunit-bridge": "^4.1",
+ "symfony/process": "^4.2"
+ },
+ "default-branch": true,
+ "type": "project",
+ "autoload": {
+ "psr-4": {
+ "SymfonyDocsBuilder\\": "src"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "description": "The build system for Symfony's documentation",
+ "time": "2020-10-23T00:22:44+00:00"
+ },
+ {
+ "name": "symfony/dom-crawler",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/dom-crawler.git",
+ "reference": "0e6f7848438ec672ce9230f774d5272ec02e47dc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0e6f7848438ec672ce9230f774d5272ec02e47dc",
+ "reference": "0e6f7848438ec672ce9230f774d5272ec02e47dc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "masterminds/html5": "<2.6"
+ },
+ "require-dev": {
+ "masterminds/html5": "^2.6",
+ "symfony/css-selector": "^3.4|^4.0|^5.0"
+ },
+ "suggest": {
+ "symfony/css-selector": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony DomCrawler Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/dom-crawler/tree/4.4"
+ },
+ "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": "2020-10-13T13:20:53+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "0921fda04596119d1bcbe6a17cf9989fadd71095"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/0921fda04596119d1bcbe6a17cf9989fadd71095",
+ "reference": "0921fda04596119d1bcbe6a17cf9989fadd71095",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "symfony/polyfill-ctype": "~1.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony Filesystem Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/4.4"
+ },
+ "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": "2020-10-21T04:38:54+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "591f0fa22eaf3ad819332ac3de1d4ea67cca5932"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/591f0fa22eaf3ad819332ac3de1d4ea67cca5932",
+ "reference": "591f0fa22eaf3ad819332ac3de1d4ea67cca5932",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony Finder Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/4.4"
+ },
+ "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": "2020-10-13T13:20:53+00:00"
+ },
+ {
+ "name": "symfony/http-client",
+ "version": "4.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "64db2909fb9311545a118bc46ed620d110cd2e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/64db2909fb9311545a118bc46ed620d110cd2e25",
+ "reference": "64db2909fb9311545a118bc46ed620d110cd2e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1.3",
+ "psr/log": "^1.0",
+ "symfony/http-client-contracts": "^1.1.10|^2",
+ "symfony/polyfill-php73": "^1.11",
+ "symfony/service-contracts": "^1.0|^2"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "1.1"
+ },
+ "require-dev": {
+ "guzzlehttp/promises": "^1.3.1",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/dependency-injection": "^4.3|^5.0",
+ "symfony/http-kernel": "^4.4.13",
+ "symfony/process": "^4.2|^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-version": "4.4"
+ },
+ "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": "Symfony HttpClient component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/http-client/tree/4.4"
+ },
+ "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": "2020-10-20T13:38:40+00:00"
+ },
+ {
+ "name": "symfony/http-client-contracts",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "41db680a15018f9c1d4b23516059633ce280ca33"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33",
+ "reference": "41db680a15018f9c1d4b23516059633ce280ca33",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5"
+ },
+ "suggest": {
+ "symfony/http-client-implementation": ""
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-version": "2.3",
+ "branch-alias": {
+ "dev-main": "2.3-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\HttpClient\\": ""
+ }
+ },
+ "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/v2.3.1"
+ },
+ "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": "2020-10-14T17:08:19+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-idn",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-idn.git",
+ "reference": "fd17ae0603e76ae99d041f567e8611a97d899b03"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/fd17ae0603e76ae99d041f567e8611a97d899b03",
+ "reference": "fd17ae0603e76ae99d041f567e8611a97d899b03",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "symfony/polyfill-intl-normalizer": "^1.10",
+ "symfony/polyfill-php70": "^1.10",
+ "symfony/polyfill-php72": "^1.10"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "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/main"
+ },
+ "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": "2020-10-23T09:34:17+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
+ "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "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.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.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": "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.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php70",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php70.git",
+ "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
+ "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
+ "shasum": ""
+ },
+ "require": {
+ "paragonie/random_compat": "~1.0|~2.0|~9.99",
+ "php": ">=5.3.3"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php70\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "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 7.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php70/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php72",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php72.git",
+ "reference": "beecef6b463b06954638f02378f52496cb84bacc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
+ "reference": "beecef6b463b06954638f02378f52496cb84bacc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ },
+ "files": [
+ "bootstrap.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": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "9d920e3218205554171b2503bb3e4a1366824a16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9d920e3218205554171b2503bb3e4a1366824a16",
+ "reference": "9d920e3218205554171b2503bb3e4a1366824a16",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "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 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "f54ef00f4678f348f133097fa8c3701d197ff44d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/f54ef00f4678f348f133097fa8c3701d197ff44d",
+ "reference": "f54ef00f4678f348f133097fa8c3701d197ff44d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.8"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.19-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "5.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "f3957bcc7ec492baf22812c48e7cccf152491770"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/f3957bcc7ec492baf22812c48e7cccf152491770",
+ "reference": "f3957bcc7ec492baf22812c48e7cccf152491770",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-version": "5.2"
+ },
+ "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": "Symfony Process Component",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.2.0-BETA2"
+ },
+ "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": "2020-10-13T13:22:54+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "0aeee2f70f4550e6c48c9a796d98f5ceda58dfda"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/0aeee2f70f4550e6c48c9a796d98f5ceda58dfda",
+ "reference": "0aeee2f70f4550e6c48c9a796d98f5ceda58dfda",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.0"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-version": "2.3",
+ "branch-alias": {
+ "dev-main": "2.3-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "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/main"
+ },
+ "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": "2020-10-14T17:08:19+00:00"
+ },
+ {
+ "name": "twig/twig",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/twigphp/Twig.git",
+ "reference": "78173b3c850e344cb8515fc2a05138d39a6c39e0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/78173b3c850e344cb8515fc2a05138d39a6c39e0",
+ "reference": "78173b3c850e344cb8515fc2a05138d39a6c39e0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-mbstring": "^1.3"
+ },
+ "require-dev": {
+ "psr/container": "^1.0",
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.14-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Twig_": "lib/"
+ },
+ "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/2.x"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-10-21T12:45:52+00:00"
+ }
+ ],
+ "packages-dev": [],
+ "aliases": [],
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "symfony/docs-builder": 20,
+ "symfony/process": 20
+ },
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.2.9"
+ },
+ "platform-dev": [],
+ "platform-overrides": {
+ "php": "7.2.9"
+ },
+ "plugin-api-version": "2.0.0"
+}
diff --git a/docs.json b/docs.json
new file mode 100644
index 00000000000..70c1a299f0e
--- /dev/null
+++ b/docs.json
@@ -0,0 +1,3 @@
+{
+ "exclude": ["_build"]
+}
From b152b91d6d58cc71e0cc11f822ad26a9c69bfe8d Mon Sep 17 00:00:00 2001
From: Wouter de Jong
Date: Sun, 25 Oct 2020 13:56:48 +0100
Subject: [PATCH 0020/5717] Added Github actions integration
---
.github/workflows/ci.yaml | 38 +++
_build/build.php | 3 +-
_build/composer.json | 1 +
_build/composer.lock | 528 +++++++++++++-------------------------
4 files changed, 225 insertions(+), 345 deletions(-)
diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml
index 26f0e537118..dd7599889d0 100644
--- a/.github/workflows/ci.yaml
+++ b/.github/workflows/ci.yaml
@@ -43,6 +43,44 @@ jobs:
- name: "Build documentation"
run: make -C _build SPHINXOPTS="-nqW -j auto" html
+ build-php:
+ name: Symfony doc builder
+
+ runs-on: ubuntu-latest
+
+ continue-on-error: true
+
+ steps:
+ - name: "Checkout"
+ uses: actions/checkout@v2
+
+ - name: "Set-up PHP"
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: 7.2
+ coverage: none
+ tools: "composer:v2"
+
+ - name: Get composer cache directory
+ id: composercache
+ working-directory: _build
+ run: echo "::set-output name=dir::$(composer config cache-files-dir)"
+
+ - name: Cache dependencies
+ uses: actions/cache@v2
+ with:
+ path: ${{ steps.composercache.outputs.dir }}
+ key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
+ restore-keys: ${{ runner.os }}-composer-
+
+ - name: "Install dependencies"
+ working-directory: _build
+ run: composer install --prefer-dist --no-progress
+
+ - name: "Build the docs"
+ working-directory: _build
+ run: php build.php -vvv
+
doctor-rst:
name: DOCtor-RST
diff --git a/_build/build.php b/_build/build.php
index 5a2fd660bda..9dba64d5145 100755
--- a/_build/build.php
+++ b/_build/build.php
@@ -33,7 +33,8 @@
$process = new Process($command);
$process->setTimeout(3600);
- $process->run();
+
+ $this->getHelper('process')->run($output, $process);
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
diff --git a/_build/composer.json b/_build/composer.json
index 30de6365ecb..ea0ef4eee25 100644
--- a/_build/composer.json
+++ b/_build/composer.json
@@ -1,5 +1,6 @@
{
"minimum-stability": "dev",
+ "prefer-stable": true,
"repositories": [
{ "type": "git", "url": "https://github.com/weaverryan/docs-builder" }
],
diff --git a/_build/composer.lock b/_build/composer.lock
index 101c85b4165..8a5ab63dcb7 100644
--- a/_build/composer.lock
+++ b/_build/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6ee53de4a5225f7f273333a94e84fdd1",
+ "content-hash": "e580f6d54e3fe0b71ca6103550882138",
"packages": [
{
"name": "doctrine/event-manager",
- "version": "1.1.x-dev",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "348f72ec92c7e0b1f5462f6616af2b448ba3cbb1"
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/348f72ec92c7e0b1f5462f6616af2b448ba3cbb1",
- "reference": "348f72ec92c7e0b1f5462f6616af2b448ba3cbb1",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f",
+ "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f",
"shasum": ""
},
"require": {
@@ -30,7 +30,6 @@
"doctrine/coding-standard": "^6.0",
"phpunit/phpunit": "^7.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -99,7 +98,7 @@
"type": "tidelift"
}
],
- "time": "2020-10-05T12:08:55+00:00"
+ "time": "2020-05-29T18:28:51+00:00"
},
{
"name": "doctrine/rst-parser",
@@ -107,12 +106,12 @@
"source": {
"type": "git",
"url": "https://github.com/doctrine/rst-parser.git",
- "reference": "1873475b3791954f1ca1539d4063cfcbd1c9e351"
+ "reference": "68419cbf92d60177b95e44d79a79cae1098a91ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/rst-parser/zipball/1873475b3791954f1ca1539d4063cfcbd1c9e351",
- "reference": "1873475b3791954f1ca1539d4063cfcbd1c9e351",
+ "url": "https://api.github.com/repos/doctrine/rst-parser/zipball/68419cbf92d60177b95e44d79a79cae1098a91ef",
+ "reference": "68419cbf92d60177b95e44d79a79cae1098a91ef",
"shasum": ""
},
"require": {
@@ -167,20 +166,20 @@
"issues": "https://github.com/doctrine/rst-parser/issues",
"source": "https://github.com/doctrine/rst-parser/tree/master"
},
- "time": "2020-10-23T00:13:24+00:00"
+ "time": "2020-10-26T13:37:24+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.x-dev",
+ "version": "6.5.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "e8ed4dbf49b260ff129ff0e0400718c3269971bf"
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/e8ed4dbf49b260ff129ff0e0400718c3269971bf",
- "reference": "e8ed4dbf49b260ff129ff0e0400718c3269971bf",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+ "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
"shasum": ""
},
"require": {
@@ -238,42 +237,20 @@
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/6.5"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://github.com/alexeyshockov",
- "type": "github"
- },
- {
- "url": "https://github.com/gmponos",
- "type": "github"
- },
- {
- "url": "https://github.com/sagikazarmark",
- "type": "github"
- }
- ],
- "time": "2020-07-02T06:52:04+00:00"
+ "time": "2020-06-16T21:01:06+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "dev-master",
+ "version": "1.4.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "ddfeedfff2a52661429437da0702979f708e6ac6"
+ "reference": "60d379c243457e073cff02bc323a2a86cb355631"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/ddfeedfff2a52661429437da0702979f708e6ac6",
- "reference": "ddfeedfff2a52661429437da0702979f708e6ac6",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631",
+ "reference": "60d379c243457e073cff02bc323a2a86cb355631",
"shasum": ""
},
"require": {
@@ -282,7 +259,6 @@
"require-dev": {
"symfony/phpunit-bridge": "^4.4 || ^5.1"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -314,22 +290,22 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/master"
+ "source": "https://github.com/guzzle/promises/tree/1.4.0"
},
- "time": "2020-10-19T16:50:15+00:00"
+ "time": "2020-09-30T07:37:28+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.x-dev",
+ "version": "1.7.0",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "25f7f893f0b52b7b14e244a16679d72b1f0088de"
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/25f7f893f0b52b7b14e244a16679d72b1f0088de",
- "reference": "25f7f893f0b52b7b14e244a16679d72b1f0088de",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3",
+ "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3",
"shasum": ""
},
"require": {
@@ -389,82 +365,31 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.x"
+ "source": "https://github.com/guzzle/psr7/tree/1.7.0"
},
- "time": "2020-10-22T07:42:05+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.100",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a",
- "shasum": ""
- },
- "require": {
- "php": ">= 7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "support": {
- "email": "info@paragonie.com",
- "issues": "https://github.com/paragonie/random_compat/issues",
- "source": "https://github.com/paragonie/random_compat"
- },
- "time": "2020-10-15T08:29:30+00:00"
+ "time": "2020-09-30T07:37:11+00:00"
},
{
"name": "psr/container",
- "version": "dev-master",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "381524e8568e07f31d504a945b88556548c8c42e"
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/381524e8568e07f31d504a945b88556548c8c42e",
- "reference": "381524e8568e07f31d504a945b88556548c8c42e",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=5.3.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
@@ -479,7 +404,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "homepage": "http://www.php-fig.org/"
}
],
"description": "Common Container Interface (PHP FIG PSR-11)",
@@ -495,26 +420,25 @@
"issues": "https://github.com/php-fig/container/issues",
"source": "https://github.com/php-fig/container/tree/master"
},
- "time": "2020-10-13T07:07:53+00:00"
+ "time": "2017-02-14T16:28:37+00:00"
},
{
"name": "psr/http-message",
- "version": "dev-master",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/http-message.git",
- "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4"
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
- "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -549,26 +473,25 @@
"support": {
"source": "https://github.com/php-fig/http-message/tree/master"
},
- "time": "2019-08-29T13:16:46+00:00"
+ "time": "2016-08-06T14:39:51+00:00"
},
{
"name": "psr/log",
- "version": "dev-master",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "dd738d0b4491f32725492cf345f6b501f5922fec"
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/dd738d0b4491f32725492cf345f6b501f5922fec",
- "reference": "dd738d0b4491f32725492cf345f6b501f5922fec",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -587,7 +510,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "homepage": "http://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -598,9 +521,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/master"
+ "source": "https://github.com/php-fig/log/tree/1.1.3"
},
- "time": "2020-09-18T06:44:51+00:00"
+ "time": "2020-03-23T09:12:05+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -648,16 +571,16 @@
},
{
"name": "scrivo/highlight.php",
- "version": "9.18.x-dev",
+ "version": "v9.18.1.3",
"source": {
"type": "git",
"url": "https://github.com/scrivo/highlight.php.git",
- "reference": "006e334dbf8e0a30573174e2cb6e11682b224f15"
+ "reference": "6a1699707b099081f20a488ac1f92d682181018c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/006e334dbf8e0a30573174e2cb6e11682b224f15",
- "reference": "006e334dbf8e0a30573174e2cb6e11682b224f15",
+ "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/6a1699707b099081f20a488ac1f92d682181018c",
+ "reference": "6a1699707b099081f20a488ac1f92d682181018c",
"shasum": ""
},
"require": {
@@ -723,20 +646,20 @@
"type": "github"
}
],
- "time": "2020-10-17T21:12:39+00:00"
+ "time": "2020-10-16T07:43:22+00:00"
},
{
"name": "symfony/console",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "a30dd52eb2129e90e2e15bf107f91eab2219b52c"
+ "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/a30dd52eb2129e90e2e15bf107f91eab2219b52c",
- "reference": "a30dd52eb2129e90e2e15bf107f91eab2219b52c",
+ "url": "https://api.github.com/repos/symfony/console/zipball/90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
+ "reference": "90933b39c7b312fc3ceaa1ddeac7eb48cb953124",
"shasum": ""
},
"require": {
@@ -772,7 +695,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -799,7 +724,7 @@
"description": "Symfony Console Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/console/tree/4.4"
+ "source": "https://github.com/symfony/console/tree/v4.4.15"
},
"funding": [
{
@@ -815,20 +740,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-13T13:20:53+00:00"
+ "time": "2020-09-15T07:58:55+00:00"
},
{
"name": "symfony/css-selector",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "e529efc81e4b3f06932e6ac4e0dab9d536e6afd1"
+ "reference": "bf17dc9f6ce144e41f786c32435feea4d8e11dcc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/e529efc81e4b3f06932e6ac4e0dab9d536e6afd1",
- "reference": "e529efc81e4b3f06932e6ac4e0dab9d536e6afd1",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf17dc9f6ce144e41f786c32435feea4d8e11dcc",
+ "reference": "bf17dc9f6ce144e41f786c32435feea4d8e11dcc",
"shasum": ""
},
"require": {
@@ -836,7 +761,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -867,7 +794,7 @@
"description": "Symfony CssSelector Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/4.4"
+ "source": "https://github.com/symfony/css-selector/tree/v4.4.15"
},
"funding": [
{
@@ -883,7 +810,7 @@
"type": "tidelift"
}
],
- "time": "2020-10-13T13:20:53+00:00"
+ "time": "2020-07-05T09:39:30+00:00"
},
{
"name": "symfony/docs-builder",
@@ -891,7 +818,7 @@
"source": {
"type": "git",
"url": "https://github.com/weaverryan/docs-builder",
- "reference": "5def2fef2e7c8acade040d74d55b9b96fb8ed262"
+ "reference": "e388a6f8cd7a98c34cdc913d18adc9e92ef73441"
},
"require": {
"doctrine/rst-parser": "dev-master",
@@ -923,20 +850,20 @@
"MIT"
],
"description": "The build system for Symfony's documentation",
- "time": "2020-10-23T00:22:44+00:00"
+ "time": "2020-10-26T22:58:16+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "0e6f7848438ec672ce9230f774d5272ec02e47dc"
+ "reference": "bdcb7633a501770a0daefbf81d2e6b28c3864f2b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0e6f7848438ec672ce9230f774d5272ec02e47dc",
- "reference": "0e6f7848438ec672ce9230f774d5272ec02e47dc",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bdcb7633a501770a0daefbf81d2e6b28c3864f2b",
+ "reference": "bdcb7633a501770a0daefbf81d2e6b28c3864f2b",
"shasum": ""
},
"require": {
@@ -956,7 +883,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -983,7 +912,7 @@
"description": "Symfony DomCrawler Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/4.4"
+ "source": "https://github.com/symfony/dom-crawler/tree/v4.4.15"
},
"funding": [
{
@@ -999,20 +928,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-13T13:20:53+00:00"
+ "time": "2020-10-02T07:34:48+00:00"
},
{
"name": "symfony/filesystem",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "0921fda04596119d1bcbe6a17cf9989fadd71095"
+ "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/0921fda04596119d1bcbe6a17cf9989fadd71095",
- "reference": "0921fda04596119d1bcbe6a17cf9989fadd71095",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/ebc51494739d3b081ea543ed7c462fa73a4f74db",
+ "reference": "ebc51494739d3b081ea543ed7c462fa73a4f74db",
"shasum": ""
},
"require": {
@@ -1021,7 +950,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -1048,7 +979,7 @@
"description": "Symfony Filesystem Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/4.4"
+ "source": "https://github.com/symfony/filesystem/tree/v4.4.15"
},
"funding": [
{
@@ -1064,20 +995,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-21T04:38:54+00:00"
+ "time": "2020-09-27T13:54:16+00:00"
},
{
"name": "symfony/finder",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "591f0fa22eaf3ad819332ac3de1d4ea67cca5932"
+ "reference": "60d08560f9aa72997c44077c40d47aa28a963230"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/591f0fa22eaf3ad819332ac3de1d4ea67cca5932",
- "reference": "591f0fa22eaf3ad819332ac3de1d4ea67cca5932",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/60d08560f9aa72997c44077c40d47aa28a963230",
+ "reference": "60d08560f9aa72997c44077c40d47aa28a963230",
"shasum": ""
},
"require": {
@@ -1085,7 +1016,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -1112,7 +1045,7 @@
"description": "Symfony Finder Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/4.4"
+ "source": "https://github.com/symfony/finder/tree/v4.4.15"
},
"funding": [
{
@@ -1128,20 +1061,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-13T13:20:53+00:00"
+ "time": "2020-10-02T07:34:48+00:00"
},
{
"name": "symfony/http-client",
- "version": "4.4.x-dev",
+ "version": "v4.4.15",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "64db2909fb9311545a118bc46ed620d110cd2e25"
+ "reference": "b1cb966898aaf8df37280fde537a27b6724b3bc4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/64db2909fb9311545a118bc46ed620d110cd2e25",
- "reference": "64db2909fb9311545a118bc46ed620d110cd2e25",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/b1cb966898aaf8df37280fde537a27b6724b3bc4",
+ "reference": "b1cb966898aaf8df37280fde537a27b6724b3bc4",
"shasum": ""
},
"require": {
@@ -1168,7 +1101,9 @@
},
"type": "library",
"extra": {
- "branch-version": "4.4"
+ "branch-alias": {
+ "dev-master": "4.4-dev"
+ }
},
"autoload": {
"psr-4": {
@@ -1195,7 +1130,7 @@
"description": "Symfony HttpClient component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-client/tree/4.4"
+ "source": "https://github.com/symfony/http-client/tree/v4.4.15"
},
"funding": [
{
@@ -1211,11 +1146,11 @@
"type": "tidelift"
}
],
- "time": "2020-10-20T13:38:40+00:00"
+ "time": "2020-10-02T13:41:48+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "dev-main",
+ "version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
@@ -1233,7 +1168,6 @@
"suggest": {
"symfony/http-client-implementation": ""
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-version": "2.3",
@@ -1295,29 +1229,28 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b"
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/aed596913b70fae57be53d86faa2e9ef85a2297b",
- "reference": "aed596913b70fae57be53d86faa2e9ef85a2297b",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41",
+ "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-ctype": "For best performance"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1355,7 +1288,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0"
},
"funding": [
{
@@ -1371,36 +1304,34 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "fd17ae0603e76ae99d041f567e8611a97d899b03"
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/fd17ae0603e76ae99d041f567e8611a97d899b03",
- "reference": "fd17ae0603e76ae99d041f567e8611a97d899b03",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117",
+ "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117",
"shasum": ""
},
"require": {
- "php": ">=5.3.3",
+ "php": ">=7.1",
"symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php70": "^1.10",
"symfony/polyfill-php72": "^1.10"
},
"suggest": {
"ext-intl": "For best performance"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1444,7 +1375,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/main"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0"
},
"funding": [
{
@@ -1460,33 +1391,32 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:34:17+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27"
+ "reference": "727d1096295d807c309fb01a851577302394c897"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8db0ae7936b42feb370840cf24de1a144fb0ef27",
- "reference": "8db0ae7936b42feb370840cf24de1a144fb0ef27",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897",
+ "reference": "727d1096295d807c309fb01a851577302394c897",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-intl": "For best performance"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1529,7 +1459,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0"
},
"funding": [
{
@@ -1545,33 +1475,32 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce"
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/b5f7b932ee6fa802fc792eabd77c4c88084517ce",
- "reference": "b5f7b932ee6fa802fc792eabd77c4c88084517ce",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531",
+ "reference": "39d483bdf39be819deabf04ec872eb0b2410b531",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
"suggest": {
"ext-mbstring": "For best performance"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1610,7 +1539,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0"
},
"funding": [
{
@@ -1626,111 +1555,29 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
- },
- {
- "name": "symfony/polyfill-php70",
- "version": "dev-main",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php70.git",
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
- "reference": "3fe414077251a81a1b15b1c709faf5c2fbae3d4e",
- "shasum": ""
- },
- "require": {
- "paragonie/random_compat": "~1.0|~2.0|~9.99",
- "php": ">=5.3.3"
- },
- "default-branch": true,
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.19-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php70\\": ""
- },
- "files": [
- "bootstrap.php"
- ],
- "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 7.0+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php70/tree/v1.19.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": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "beecef6b463b06954638f02378f52496cb84bacc"
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/beecef6b463b06954638f02378f52496cb84bacc",
- "reference": "beecef6b463b06954638f02378f52496cb84bacc",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930",
+ "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1768,7 +1615,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0"
},
"funding": [
{
@@ -1784,30 +1631,29 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php73",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "9d920e3218205554171b2503bb3e4a1366824a16"
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9d920e3218205554171b2503bb3e4a1366824a16",
- "reference": "9d920e3218205554171b2503bb3e4a1366824a16",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed",
+ "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.1"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1848,7 +1694,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0"
},
"funding": [
{
@@ -1864,30 +1710,29 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "dev-main",
+ "version": "v1.20.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "f54ef00f4678f348f133097fa8c3701d197ff44d"
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/f54ef00f4678f348f133097fa8c3701d197ff44d",
- "reference": "f54ef00f4678f348f133097fa8c3701d197ff44d",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
+ "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de",
"shasum": ""
},
"require": {
- "php": ">=7.0.8"
+ "php": ">=7.1"
},
- "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.19-dev"
+ "dev-main": "1.20-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -1932,7 +1777,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.19.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0"
},
"funding": [
{
@@ -1948,7 +1793,7 @@
"type": "tidelift"
}
],
- "time": "2020-10-23T09:01:57+00:00"
+ "time": "2020-10-23T14:02:19+00:00"
},
{
"name": "symfony/process",
@@ -1956,12 +1801,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "f3957bcc7ec492baf22812c48e7cccf152491770"
+ "reference": "88d47196a2fe06db8f90f0c2a986651e91ee3660"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/f3957bcc7ec492baf22812c48e7cccf152491770",
- "reference": "f3957bcc7ec492baf22812c48e7cccf152491770",
+ "url": "https://api.github.com/repos/symfony/process/zipball/88d47196a2fe06db8f90f0c2a986651e91ee3660",
+ "reference": "88d47196a2fe06db8f90f0c2a986651e91ee3660",
"shasum": ""
},
"require": {
@@ -1970,9 +1815,6 @@
},
"default-branch": true,
"type": "library",
- "extra": {
- "branch-version": "5.2"
- },
"autoload": {
"psr-4": {
"Symfony\\Component\\Process\\": ""
@@ -1998,7 +1840,7 @@
"description": "Symfony Process Component",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v5.2.0-BETA2"
+ "source": "https://github.com/symfony/process/tree/5.x"
},
"funding": [
{
@@ -2014,20 +1856,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-13T13:22:54+00:00"
+ "time": "2020-10-24T12:08:07+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "dev-main",
+ "version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "0aeee2f70f4550e6c48c9a796d98f5ceda58dfda"
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/0aeee2f70f4550e6c48c9a796d98f5ceda58dfda",
- "reference": "0aeee2f70f4550e6c48c9a796d98f5ceda58dfda",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1",
+ "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1",
"shasum": ""
},
"require": {
@@ -2037,12 +1879,10 @@
"suggest": {
"symfony/service-implementation": ""
},
- "default-branch": true,
"type": "library",
"extra": {
- "branch-version": "2.3",
"branch-alias": {
- "dev-main": "2.3-dev"
+ "dev-master": "2.2-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2079,7 +1919,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/main"
+ "source": "https://github.com/symfony/service-contracts/tree/master"
},
"funding": [
{
@@ -2095,20 +1935,20 @@
"type": "tidelift"
}
],
- "time": "2020-10-14T17:08:19+00:00"
+ "time": "2020-09-07T11:33:47+00:00"
},
{
"name": "twig/twig",
- "version": "2.x-dev",
+ "version": "v2.14.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "78173b3c850e344cb8515fc2a05138d39a6c39e0"
+ "reference": "d495243dade48c39b6a5261c26cdbd8c5703f6a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/78173b3c850e344cb8515fc2a05138d39a6c39e0",
- "reference": "78173b3c850e344cb8515fc2a05138d39a6c39e0",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/d495243dade48c39b6a5261c26cdbd8c5703f6a0",
+ "reference": "d495243dade48c39b6a5261c26cdbd8c5703f6a0",
"shasum": ""
},
"require": {
@@ -2162,7 +2002,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/2.x"
+ "source": "https://github.com/twigphp/Twig/tree/v2.14.0"
},
"funding": [
{
@@ -2174,7 +2014,7 @@
"type": "tidelift"
}
],
- "time": "2020-10-21T12:45:52+00:00"
+ "time": "2020-10-21T12:35:06+00:00"
}
],
"packages-dev": [],
@@ -2184,7 +2024,7 @@
"symfony/docs-builder": 20,
"symfony/process": 20
},
- "prefer-stable": false,
+ "prefer-stable": true,
"prefer-lowest": false,
"platform": {
"php": ">=7.2.9"
From 3eeb845cd5269fec8fb338043300396e15e47a13 Mon Sep 17 00:00:00 2001
From: Wouter de Jong
Date: Mon, 26 Oct 2020 16:43:31 +0100
Subject: [PATCH 0021/5717] Use PHP docs builder for SymfonyCloud deploys
---
.symfony.cloud.yaml | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/.symfony.cloud.yaml b/.symfony.cloud.yaml
index faa3c24780e..bcb1a48bf08 100644
--- a/.symfony.cloud.yaml
+++ b/.symfony.cloud.yaml
@@ -5,12 +5,12 @@
name: symfonydocs
# The toolstack used to build the application.
-type: "python:3.7"
+type: "php:7.2"
# The configuration of app when it is exposed to the web.
web:
# The public directory of the app, relative to its root.
- document_root: "/_build/html"
+ document_root: "/_build/output"
index_files:
- index.html
whitelist:
@@ -40,19 +40,9 @@ web:
# The size of the persistent disk of the application (in MB).
disk: 512
-# Build time dependencies.
-dependencies:
- python:
- virtualenv: 15.1.0
-
# The hooks that will be performed when the package is deployed.
hooks:
build: |
- virtualenv .virtualenv
- . .virtualenv/bin/activate
- # SymfonyCloud currently sets PIP_USER=1.
- export PIP_USER=
- pip install pip==9.0.1 wheel==0.29.0
- pip install -r _build/.requirements.txt
- find .virtualenv -type f -name "*.rst" -delete
- make -C _build html
+ cd _build
+ composer install --prefer-dist --no-progress
+ php build.php
From 09be97abda04f5b6a865baa0ecefd1029e2d067d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Yann=20Eugon=C3=A9?=
Date: Mon, 26 Oct 2020 10:34:08 +0100
Subject: [PATCH 0022/5717] [DependencyInjection] Fix tagged service priority
inconsistent method name
---
service_container/tags.rst | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/service_container/tags.rst b/service_container/tags.rst
index 7aee0061c0c..7ec5fcc5637 100644
--- a/service_container/tags.rst
+++ b/service_container/tags.rst
@@ -655,8 +655,9 @@ service itself::
}
}
-If you want to have another method defining the priority, you can define it
-in the configuration of the collecting service:
+If you want to have another method defining the priority
+(e.g. ``getPriority()`` rather than ``getDefaultPriority()``),
+you can define it in the configuration of the collecting service:
.. configuration-block::
From 0d182b33c00c00977d8cd468a068ca463c71bc9d Mon Sep 17 00:00:00 2001
From: Med Ghaith Sellami
Date: Tue, 27 Oct 2020 20:35:28 +0100
Subject: [PATCH 0023/5717] update PHP callable docs link
---
components/event_dispatcher.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/event_dispatcher.rst b/components/event_dispatcher.rst
index e89441e6a08..0344acf4e8e 100644
--- a/components/event_dispatcher.rst
+++ b/components/event_dispatcher.rst
@@ -532,4 +532,4 @@ Learn More
.. _Mediator: https://en.wikipedia.org/wiki/Mediator_pattern
.. _Observer: https://en.wikipedia.org/wiki/Observer_pattern
.. _Closures: https://www.php.net/manual/en/functions.anonymous.php
-.. _PHP callable: https://www.php.net/manual/en/language.pseudo-types.php#language.types.callback
+.. _PHP callable: https://www.php.net/manual/en/language.types.callable.php
From 46ba35933a1480ac981c7a1ccf0d53534f544815 Mon Sep 17 00:00:00 2001
From: Nyholm
Date: Fri, 30 Oct 2020 08:58:52 +0100
Subject: [PATCH 0024/5717] Update to twig/cssinliner-extra
---
components/mime.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/components/mime.rst b/components/mime.rst
index ce884a51193..95206fa22e3 100644
--- a/components/mime.rst
+++ b/components/mime.rst
@@ -103,12 +103,12 @@ extension:
.. code-block:: terminal
- $ composer require twig/cssinliner-extension
+ $ composer require twig/cssinliner-extra
Now, enable the extension::
// ...
- use Twig\CssInliner\CssInlinerExtension;
+ use Twig\Extra\CssInliner\CssInlinerExtension;
$loader = new FilesystemLoader(__DIR__.'/templates');
$twig = new Environment($loader);
From 5a36f03d309624c8dd2d251d9db5a0c666e7c7df Mon Sep 17 00:00:00 2001
From: Wouter J
Date: Fri, 30 Oct 2020 10:39:54 +0100
Subject: [PATCH 0025/5717] Fixed code block rendering
---
components/process.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/process.rst b/components/process.rst
index 8664ddead85..f89935036f1 100644
--- a/components/process.rst
+++ b/components/process.rst
@@ -394,7 +394,7 @@ Using a Prepared Command Line
You can run a process by using a prepared command line with double quote
variable notation. This allows you to use placeholders so that only the
-parameterized values can be changed, but not the rest of the script:
+parameterized values can be changed, but not the rest of the script::
use Symfony\Component\Process\Process;
From d8658352e0cc152aa3ec1f5c9e006a3a1c54ca3f Mon Sep 17 00:00:00 2001
From: Quentin Dequippe
Date: Thu, 29 Oct 2020 15:34:43 +0100
Subject: [PATCH 0026/5717] Update doctrine fetchAll deprecated
---
doctrine.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doctrine.rst b/doctrine.rst
index eab24ae8f13..fb491df8c2b 100644
--- a/doctrine.rst
+++ b/doctrine.rst
@@ -812,7 +812,7 @@ In addition, you can query directly with SQL if you need to::
$stmt->execute(['price' => $price]);
// returns an array of arrays (i.e. a raw data set)
- return $stmt->fetchAll();
+ return $stmt->fetchAllAssociative();
}
With SQL, you will get back raw data, not objects (unless you use the `NativeQuery`_
From 64058aa3c6a3da18112ac9d92e638137490783c0 Mon Sep 17 00:00:00 2001
From: freezy
Date: Wed, 28 Oct 2020 14:15:13 +0100
Subject: [PATCH 0027/5717] Mention supported hex colors
---
console/coloring.rst | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/console/coloring.rst b/console/coloring.rst
index 3684d71709d..913805b5cea 100644
--- a/console/coloring.rst
+++ b/console/coloring.rst
@@ -40,13 +40,22 @@ It is possible to define your own styles using the
use Symfony\Component\Console\Formatter\OutputFormatterStyle;
// ...
- $outputStyle = new OutputFormatterStyle('red', 'yellow', ['bold', 'blink']);
+ $outputStyle = new OutputFormatterStyle('red', '#ff0', ['bold', 'blink']);
$output->getFormatter()->setStyle('fire', $outputStyle);
$output->writeln('foo>');
-Available foreground and background colors are: ``black``, ``red``, ``green``,
-``yellow``, ``blue``, ``magenta``, ``cyan`` and ``white``.
+Any hex color is supported for foreground and background colors. Besides that, these named colors are supported:
+``black``, ``red``, ``green``, ``yellow``, ``blue``, ``magenta``, ``cyan`` and ``white``.
+
+.. versionadded:: 5.2
+
+ True (hex) color support was introduced in Symfony 5.2
+
+.. note::
+
+ If the terminal doesn't support true colors, the nearest named color is used.
+ E.g. ``#c0392b`` is degraded to ``red`` or ``#f1c40f`` is degraded to ``yellow``.
And available options are: ``bold``, ``underscore``, ``blink``, ``reverse``
(enables the "reverse video" mode where the background and foreground colors
@@ -59,6 +68,9 @@ You can also set these colors and options directly inside the tag name::
// green text
$output->writeln('foo>');
+ // red text
+ $output->writeln('foo>');
+
// black text on a cyan background
$output->writeln('foo>');
From 24312cb7292bf9f3aceefbf7f8c4ec9c68ee7b02 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andre=CC=81=20R?=
Date: Wed, 28 Oct 2020 15:37:11 +0100
Subject: [PATCH 0028/5717] [Cache] Adds mention of using
FileSystemTagAwareAdatpter
---
components/cache/adapters/filesystem_adapter.rst | 13 +++++++++++++
components/cache/cache_invalidation.rst | 3 ++-
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/components/cache/adapters/filesystem_adapter.rst b/components/cache/adapters/filesystem_adapter.rst
index 33097fbd202..3939d5f568f 100644
--- a/components/cache/adapters/filesystem_adapter.rst
+++ b/components/cache/adapters/filesystem_adapter.rst
@@ -55,5 +55,18 @@ and cache root path as constructor parameters::
:ref:`pruning of expired cache items ` by
calling its ``prune()`` method.
+
+.. _filesystem-tag-aware-adapter:
+
+Working with Tags
+-----------------
+
+In order to use tag-based invalidation, you can wrap your adapter in :class:`Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter`, but it's often more interesting to use the dedicated :class:`Symfony\\Component\\Cache\\Adapter\\FilesystemTagAwareAdapter`. Since tag invalidation logic is implemented using links on filesystem, this adapter offers better read performance when using tag-based invalidation::
+
+ use Symfony\Component\Cache\Adapter\FilesystemTagAwareAdapter;
+
+ $cache = new FilesystemTagAwareAdapter();
+
+
.. _`tmpfs`: https://wiki.archlinux.org/index.php/tmpfs
.. _`RAM disk solutions`: https://en.wikipedia.org/wiki/List_of_RAM_drive_software
diff --git a/components/cache/cache_invalidation.rst b/components/cache/cache_invalidation.rst
index 22f5830cf3e..084cee4cb70 100644
--- a/components/cache/cache_invalidation.rst
+++ b/components/cache/cache_invalidation.rst
@@ -61,7 +61,8 @@ method.
.. note::
When using a Redis backend, consider using :ref:`RedisTagAwareAdapter `
- which is optimized for this purpose.
+ which is optimized for this purpose. When using File system, likewise consider to use
+ :ref:`FilesystemTagAwareAdapter `.
The :class:`Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter` class implements
instantaneous invalidation (time complexity is ``O(N)`` where ``N`` is the number
From 34a16a8624c6ae61cda9b974ee2146f05ca36040 Mon Sep 17 00:00:00 2001
From: Oskar Stark
Date: Fri, 30 Oct 2020 13:47:57 +0100
Subject: [PATCH 0029/5717] Fix: Typo
---
components/cache/cache_invalidation.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/components/cache/cache_invalidation.rst b/components/cache/cache_invalidation.rst
index 084cee4cb70..bef2c29b0b7 100644
--- a/components/cache/cache_invalidation.rst
+++ b/components/cache/cache_invalidation.rst
@@ -61,7 +61,7 @@ method.
.. note::
When using a Redis backend, consider using :ref:`RedisTagAwareAdapter `
- which is optimized for this purpose. When using File system, likewise consider to use
+ which is optimized for this purpose. When using filesystem, likewise consider to use
:ref:`FilesystemTagAwareAdapter `.
The :class:`Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter` class implements
From 5cd490de3d32acf820be5f3bbd18457ce631336e Mon Sep 17 00:00:00 2001
From: Oskar Stark
Date: Fri, 30 Oct 2020 13:48:58 +0100
Subject: [PATCH 0030/5717] Fix: Add line breaks
---
components/cache/adapters/filesystem_adapter.rst | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/components/cache/adapters/filesystem_adapter.rst b/components/cache/adapters/filesystem_adapter.rst
index 3939d5f568f..c4db3a7fb76 100644
--- a/components/cache/adapters/filesystem_adapter.rst
+++ b/components/cache/adapters/filesystem_adapter.rst
@@ -61,7 +61,11 @@ and cache root path as constructor parameters::
Working with Tags
-----------------
-In order to use tag-based invalidation, you can wrap your adapter in :class:`Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter`, but it's often more interesting to use the dedicated :class:`Symfony\\Component\\Cache\\Adapter\\FilesystemTagAwareAdapter`. Since tag invalidation logic is implemented using links on filesystem, this adapter offers better read performance when using tag-based invalidation::
+In order to use tag-based invalidation, you can wrap your adapter in
+:class:`Symfony\\Component\\Cache\\Adapter\\TagAwareAdapter`, but it's often
+more interesting to use the dedicated :class:`Symfony\\Component\\Cache\\Adapter\\FilesystemTagAwareAdapter`.
+Since tag invalidation logic is implemented using links on filesystem, this
+adapter offers better read performance when using tag-based invalidation::
use Symfony\Component\Cache\Adapter\FilesystemTagAwareAdapter;
From ace5e3a8cc5b984b53a699a4e16e413dad084ccc Mon Sep 17 00:00:00 2001
From: Quentin Dequippe
Date: Fri, 9 Oct 2020 10:31:46 +0200
Subject: [PATCH 0031/5717] Add warning on Docker integration
---
setup/symfony_server.rst | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/setup/symfony_server.rst b/setup/symfony_server.rst
index 70155de0637..a8374aaca4a 100644
--- a/setup/symfony_server.rst
+++ b/setup/symfony_server.rst
@@ -378,6 +378,16 @@ its location, same as for ``docker-compose``:
If you have more than one Docker Compose file, you can provide them all
separated by ``:`` as explained in the `Docker compose CLI env var reference`_.
+.. caution::
+
+ When using Symfony binary with ``php bin/console`` (``symfony console ...``)
+ the binay will **always** use environment variables detected via Docker and will
+ ignore local environment variables.
+ For example if you set up a different database name in your ``.env.test`` file
+ (``DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/test``) and if you run
+ ``symfony console doctrine:database:drop --force --env=test`` the command will drop the database
+ defined in your Docker configuration and not the "test" one.
+
SymfonyCloud Integration
------------------------
From 8d1614e2e2c4a3ec22b9ca91cb7ad48b8ec14f6e Mon Sep 17 00:00:00 2001
From: Oskar Stark
Date: Fri, 30 Oct 2020 14:01:09 +0100
Subject: [PATCH 0032/5717] Enhancement: Private member variables in code
example
---
create_framework/separation_of_concerns.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/create_framework/separation_of_concerns.rst b/create_framework/separation_of_concerns.rst
index e1e46f3ebe3..24d34f0e82b 100644
--- a/create_framework/separation_of_concerns.rst
+++ b/create_framework/separation_of_concerns.rst
@@ -27,9 +27,9 @@ request handling logic into its own ``Simplex\Framework`` class::
class Framework
{
- protected $matcher;
- protected $controllerResolver;
- protected $argumentResolver;
+ private $matcher;
+ private $controllerResolver;
+ private $argumentResolver;
public function __construct(UrlMatcher $matcher, ControllerResolver $controllerResolver, ArgumentResolver $argumentResolver)
{
From ae45622a92dfd8bd8b206a2c0f70e0310481d702 Mon Sep 17 00:00:00 2001
From: Ca-Jou
Date: Wed, 28 Oct 2020 16:30:54 +0100
Subject: [PATCH 0033/5717] =?UTF-8?q?spotted=20minor=20EN=20mistakes=20and?=
=?UTF-8?q?=20coherence=20issues=20between=20the=20different=20=E2=80=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
create_framework/dependency_injection.rst | 2 +-
create_framework/event_dispatcher.rst | 2 +-
create_framework/front_controller.rst | 2 +-
create_framework/http_foundation.rst | 4 ++--
create_framework/http_kernel_controller_resolver.rst | 2 +-
create_framework/http_kernel_httpkernelinterface.rst | 7 ++++---
6 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/create_framework/dependency_injection.rst b/create_framework/dependency_injection.rst
index b38241e3ce2..cd20a947251 100644
--- a/create_framework/dependency_injection.rst
+++ b/create_framework/dependency_injection.rst
@@ -205,7 +205,7 @@ Now, here is how you can register a custom listener in the front controller::
->addMethodCall('addSubscriber', [new Reference('listener.string_response')])
;
-Beside describing your objects, the dependency injection container can also be
+Besides describing your objects, the dependency injection container can also be
configured via parameters. Let's create one that defines if we are in debug
mode or not::
diff --git a/create_framework/event_dispatcher.rst b/create_framework/event_dispatcher.rst
index fd655a93ebf..bf872a5bb50 100644
--- a/create_framework/event_dispatcher.rst
+++ b/create_framework/event_dispatcher.rst
@@ -23,7 +23,7 @@ version of this pattern:
How does it work? The *dispatcher*, the central object of the event dispatcher
system, notifies *listeners* of an *event* dispatched to it. Put another way:
your code dispatches an event to the dispatcher, the dispatcher notifies all
-registered listeners for the event, and each listener do whatever it wants
+registered listeners for the event, and each listener does whatever it wants
with the event.
As an example, let's create a listener that transparently adds the Google
diff --git a/create_framework/front_controller.rst b/create_framework/front_controller.rst
index 39286ba8c16..e6a7293fa6b 100644
--- a/create_framework/front_controller.rst
+++ b/create_framework/front_controller.rst
@@ -132,7 +132,7 @@ its sub-directories (only if needed -- see above tip).
like ``$request = Request::create('/hello?name=Fabien');`` where the
argument is the URL path you want to simulate.
-Now that the web server always access the same script (``front.php``) for all
+Now that the web server always accesses the same script (``front.php``) for all
pages, we can secure the code further by moving all other PHP files outside the
web root directory:
diff --git a/create_framework/http_foundation.rst b/create_framework/http_foundation.rst
index b56834319a8..99dff5c1faf 100644
--- a/create_framework/http_foundation.rst
+++ b/create_framework/http_foundation.rst
@@ -273,7 +273,7 @@ cases by yourself. Why not using a technology that already works?
a look at the ``Symfony\Component\HttpFoundation`` API or read
its dedicated :doc:`documentation `.
-Believe or not but we have our first framework. You can stop now if you want.
+Believe it or not but we have our first framework. You can stop now if you want.
Using just the Symfony HttpFoundation component already allows you to write
better and more testable code. It also allows you to write code faster as many
day-to-day problems have already been solved for you.
@@ -282,7 +282,7 @@ As a matter of fact, projects like Drupal have adopted the HttpFoundation
component; if it works for them, it will probably work for you. Don't reinvent
the wheel.
-I've almost forgot to talk about one added benefit: using the HttpFoundation
+I've almost forgotten to talk about one added benefit: using the HttpFoundation
component is the start of better interoperability between all frameworks and
`applications using it`_ (like `Symfony`_, `Drupal 8`_, `phpBB 3`_, `Laravel`_
and `ezPublish 5`_, and `more`_).
diff --git a/create_framework/http_kernel_controller_resolver.rst b/create_framework/http_kernel_controller_resolver.rst
index bac631073e6..12d9efead6e 100644
--- a/create_framework/http_kernel_controller_resolver.rst
+++ b/create_framework/http_kernel_controller_resolver.rst
@@ -31,7 +31,7 @@ The move is pretty straightforward and makes a lot of sense as soon as you
create more pages but you might have noticed a non-desirable side effect...
The ``LeapYearController`` class is *always* instantiated, even if the
requested URL does not match the ``leap_year`` route. This is bad for one main
-reason: performance wise, all controllers for all routes must now be
+reason: performance-wise, all controllers for all routes must now be
instantiated for every request. It would be better if controllers were
lazy-loaded so that only the controller associated with the matched route is
instantiated.
diff --git a/create_framework/http_kernel_httpkernelinterface.rst b/create_framework/http_kernel_httpkernelinterface.rst
index 9207ba342b0..9bda9e5c731 100644
--- a/create_framework/http_kernel_httpkernelinterface.rst
+++ b/create_framework/http_kernel_httpkernelinterface.rst
@@ -46,8 +46,8 @@ Update your framework so that it implements this interface::
}
}
-Even if this change looks not too complex, it brings us a lot! Let's talk about one of
-the most impressive one: transparent :doc:`HTTP caching ` support.
+With this change, a little goes a long way! Let's talk about one of
+the most impressive upsides: transparent :doc:`HTTP caching ` support.
The ``HttpCache`` class implements a fully-featured reverse proxy, written in
PHP; it implements ``HttpKernelInterface`` and wraps another
@@ -64,7 +64,8 @@ PHP; it implements ``HttpKernelInterface`` and wraps another
new HttpKernel\HttpCache\Store(__DIR__.'/../cache')
);
- $framework->handle($request)->send();
+ $response = $framework->handle($request);
+ $response->send();
That's all it takes to add HTTP caching support to our framework. Isn't it
amazing?
From f746ec156d528b76e69872d31e2101232b56af5a Mon Sep 17 00:00:00 2001
From: Javier Eguiluz
Date: Fri, 30 Oct 2020 16:54:28 +0100
Subject: [PATCH 0034/5717] [Performance] Mention Symfony Stowatch in some doc
sections
---
performance.rst | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/performance.rst b/performance.rst
index ec9d44e5610..65859141433 100644
--- a/performance.rst
+++ b/performance.rst
@@ -211,21 +211,24 @@ deployment process too):
.. _profiling-applications:
-Profiling Applications
-----------------------
+Profiling Symfony Applications
+------------------------------
+
+Profiling with Blackfire
+~~~~~~~~~~~~~~~~~~~~~~~~
`Blackfire`_ is the best tool to profile and optimize performance of Symfony
applications during development, test and production. It's a commercial service,
but provides free features that you can use to find bottlenecks in your projects.
+Profilwing with Symfony Stopwatch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
Symfony provides a basic performance profiler in the development
:ref:`config environment `. Click on the "time panel"
of the :ref:`web debug toolbar ` to see how much time Symfony
spent on tasks such as making database queries and rendering templates.
-Custom Profiling
-~~~~~~~~~~~~~~~~
-
You can measure the execution time and memory consumption of your own code and
display the result in the Symfony profiler thanks to the `Stopwatch component`_.
From 950f2552731f63827330b65abe4f2944d12a921f Mon Sep 17 00:00:00 2001
From: Zairig Imad
Date: Tue, 9 Jun 2020 21:48:07 +0200
Subject: [PATCH 0035/5717] add _failure_path option to reference
---
reference/configuration/security.rst | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/reference/configuration/security.rst b/reference/configuration/security.rst
index 9c7f5da8755..399794e2402 100644
--- a/reference/configuration/security.rst
+++ b/reference/configuration/security.rst
@@ -528,6 +528,14 @@ target_path_parameter
When using a login form, if you include an HTML element to set the target path,
this option lets you change the name of the HTML element itself.
+failure_path_parameter
+......................
+
+**type**: ``string`` **default**: ``_failure_path``
+
+When using a login form, if you include an HTML element to set the failure path,
+this option lets you change the name of the HTML element itself.
+
use_referer
...........
From 53abe31aae73f39a68bd13d81c581b4389ab9a2c Mon Sep 17 00:00:00 2001
From: Wouter de Jong
Date: Sat, 31 Oct 2020 22:57:24 +0100
Subject: [PATCH 0036/5717] Use Symfony Flex and do not favor any CI tool
---
bundles/best_practices.rst | 124 ++++++++++++++++---------------------
1 file changed, 55 insertions(+), 69 deletions(-)
diff --git a/bundles/best_practices.rst b/bundles/best_practices.rst
index e80050e2fce..010ba551832 100644
--- a/bundles/best_practices.rst
+++ b/bundles/best_practices.rst
@@ -171,73 +171,59 @@ Continuous Integration
Testing bundle code continuously, including all its commits and pull requests,
is a good practice called Continuous Integration. There are several services
-providing this feature for free for open source projects. The most popular
-service for Symfony bundles is called `Travis CI`_.
-
-Here is the recommended configuration file (``.travis.yml``) for Symfony bundles,
-which test the two latest :doc:`LTS versions `
-of Symfony and the latest beta release:
-
-.. code-block:: yaml
-
- language: php
-
- cache:
- directories:
- - $HOME/.composer/cache/files
- - $HOME/symfony-bridge/.phpunit
-
- env:
- global:
- - PHPUNIT_FLAGS="-v"
- - SYMFONY_PHPUNIT_DIR="$HOME/symfony-bridge/.phpunit"
-
- matrix:
- fast_finish: true
- include:
- # Minimum supported dependencies with the latest and oldest PHP version
- - php: 7.2
- env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" SYMFONY_DEPRECATIONS_HELPER="max[self]=0"
- - php: 7.1
- env: COMPOSER_FLAGS="--prefer-stable --prefer-lowest" SYMFONY_DEPRECATIONS_HELPER="max[self]=0"
-
- # Test the latest stable release
- - php: 7.1
- - php: 7.2
- env: COVERAGE=true PHPUNIT_FLAGS="-v --coverage-text"
-
- # Test LTS versions. This makes sure we do not use Symfony packages with version greater
- # than 2 or 3 respectively. Read more at https://github.com/symfony/lts
- - php: 7.2
- env: DEPENDENCIES="symfony/lts:^2"
- - php: 7.2
- env: DEPENDENCIES="symfony/lts:^3"
-
- # Latest commit to master
- - php: 7.2
- env: STABILITY="dev"
-
- allow_failures:
- # Dev-master is allowed to fail.
- - env: STABILITY="dev"
-
- before_install:
- - if [[ $COVERAGE != true ]]; then phpenv config-rm xdebug.ini || true; fi
- - if ! [ -z "$STABILITY" ]; then composer config minimum-stability ${STABILITY}; fi;
- - if ! [ -v "$DEPENDENCIES" ]; then composer require --no-update ${DEPENDENCIES}; fi;
-
- install:
- - composer update ${COMPOSER_FLAGS} --prefer-dist --no-interaction
- - ./vendor/bin/simple-phpunit install
-
- script:
- - composer validate --strict --no-check-lock
- # simple-phpunit is the PHPUnit wrapper provided by the PHPUnit Bridge component and
- # it helps with testing legacy code and deprecations (composer require symfony/phpunit-bridge)
- - ./vendor/bin/simple-phpunit $PHPUNIT_FLAGS
-
-Consider using the `Travis cron`_ tool to make sure your project is built even if
-there are no new pull requests or commits.
+providing this feature for free for open source projects, like `GitHub Actions`_
+and `Travis CI`_.
+
+A bundle should at least test:
+
+* The lower bound of their dependencies (by running ``composer update --prefer-lowest``);
+* The supported PHP versions;
+* All supported major Symfony versions (e.g. both ``3.x`` and ``4.x`` if
+ support is claimed for both).
+
+Thus, a bundle support PHP 7.3, 7.4 and 8.0, and Symfony 3.4 and 4.x should
+have at least this test matrix:
+
+=========== =============== ===================
+PHP version Symfony version Composer flags
+=========== =============== ===================
+7.3 ``3.*`` ``--prefer-lowest``
+7.4 ``4.*``
+8.0 ``4.*``
+=========== =============== ===================
+
+.. tip::
+
+ The tests should be run with the ``SYMFONY_DEPRECATIONS_HELPER``
+ env variable set to ``max[direct]=0``. This ensures no code in the
+ bundle uses deprecated features directly.
+
+ The lowest dependency tests can be run with this variable set to
+ ``disabled=1``.
+
+Require a Specific Symfony Version
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You can use the special ``SYMFONY_REQUIRE`` environment variable together
+with Symfony Flex to install a specific Symfony version:
+
+.. code-block:: bash
+
+ # this requires Symfony 5.x for all Symfony packages
+ export SYMFONY_REQUIRE=5.*
+
+ # install Symfony Flex in the CI environment
+ composer global require --no-progress --no-scripts --no-plugins symfony/flex
+
+ # install the dependencies (using --prefer-dist and --no-progress is
+ # recommended to have a better output and faster download time)
+ composer update --prefer-dist --no-progress
+
+.. caution::
+
+ If you want to cache your Composer dependencies, **do not** cache the
+ ``vendor/`` directory as this has side-effects. Instead cache
+ ``$HOME/.composer/cache/files``.
Installation
------------
@@ -529,5 +515,5 @@ Learn more
.. _`Packagist`: https://packagist.org/
.. _`choose any license`: https://choosealicense.com/
.. _`valid license identifier`: https://spdx.org/licenses/
-.. _`Travis CI`: https://travis-ci.org/
-.. _`Travis cron`: https://docs.travis-ci.com/user/cron-jobs/
+.. _`GitHub Actions`: https://docs.github.com/en/free-pro-team@latest/actions
+.. _`Travis CI`: https://docs.travis-ci.com/
From 50dfc9097da5fe075e353bc95c1b609dd484a0f0 Mon Sep 17 00:00:00 2001
From: Thomas Landauer
Date: Tue, 19 May 2020 16:51:17 +0200
Subject: [PATCH 0037/5717] Update form_customization.rst
---
form/bootstrap4.rst | 2 ++
form/form_customization.rst | 5 +++++
2 files changed, 7 insertions(+)
diff --git a/form/bootstrap4.rst b/form/bootstrap4.rst
index cc19dd2f8c9..e96db1afb3b 100644
--- a/form/bootstrap4.rst
+++ b/form/bootstrap4.rst
@@ -77,6 +77,8 @@ If you prefer to apply the Bootstrap styles on a form to form basis, include the
{{ form(form) }}
{% endblock %}
+.. _reference-forms-bootstrap-error-messages:
+
Error Messages
--------------
diff --git a/form/form_customization.rst b/form/form_customization.rst
index 3094eb08f40..9c4a32919f2 100644
--- a/form/form_customization.rst
+++ b/form/form_customization.rst
@@ -255,6 +255,11 @@ Renders any errors for the given field.
{# render any "global" errors not associated to any form field #}
{{ form_errors(form) }}
+.. caution::
+
+ In the Bootstrap 4 form theme, ``form_errors()`` is already included
+ in ``form_label()``, see ":ref:`reference-forms-bootstrap-error-messages`"
+
.. _reference-forms-twig-widget:
form_widget(form_view, variables)
From cb1a140e0ff208e0b5d78786e7918d18e255c26e Mon Sep 17 00:00:00 2001
From: Carlos Pereira De Amorim
Date: Fri, 28 Aug 2020 23:28:38 +0200
Subject: [PATCH 0038/5717] Clarify how workflow can be injected
---
workflow.rst | 61 ++++++++++++++++++++++++++++++++++++----------------
1 file changed, 43 insertions(+), 18 deletions(-)
diff --git a/workflow.rst b/workflow.rst
index 3ca81fbea6c..7f7acffaa3a 100644
--- a/workflow.rst
+++ b/workflow.rst
@@ -236,28 +236,28 @@ what actions are allowed on a blog post::
Accessing the Workflow in a Class
---------------------------------
-To access workflow inside a class, use dependency injection and inject the
-registry in the constructor::
+You can use the workflow inside a class by using
+:doc:`service autowiring ` and using
+``camelCased workflow name + Workflow`` as parameter name::
use App\Entity\BlogPost;
- use Symfony\Component\Workflow\Registry;
+ use Symfony\Component\Workflow\WorkflowInterface;
class MyClass
{
- private $workflowRegistry;
+ private $blogPublishingWorkflow;
- public function __construct(Registry $workflowRegistry)
+ // this injects the blog_publishing workflow configured before
+ public function __construct(WorkflowInterface $blogPublishingWorkflow)
{
- $this->workflowRegistry = $workflowRegistry;
+ $this->blogPublishingWorkflow = $blogPublishingWorkflow;
}
public function toReview(BlogPost $post)
{
- $workflow = $this->workflowRegistry->get($post);
-
// Update the currentState on the post
try {
- $workflow->apply($post, 'to_review');
+ $this->blogPublishingWorkflow->apply($post, 'to_review');
} catch (LogicException $exception) {
// ...
}
@@ -265,6 +265,33 @@ registry in the constructor::
}
}
+Alternatively, use the registry::
+
+ use App\Entity\BlogPost;
+ use Symfony\Component\Workflow\Registry;
+
+ class MyClass
+ {
+ private $workflowRegistry;
+
+ public function __construct(Registry $workflowRegistry)
+ {
+ $this->workflowRegistry = $workflowRegistry;
+ }
+
+ public function toReview(BlogPost $post)
+ {
+ $blogPublishingWorkflow = $this->workflowRegistry->get($post);
+
+ // ...
+ }
+ }
+
+.. tip::
+
+ You can find the list of available workflow services with the
+ ``php bin/console debug:autowiring workflow`` command.
+
Using Events
------------
@@ -829,25 +856,23 @@ Then you can access this metadata in your controller as follows::
// src/App/Controller/BlogPostController.php
use App\Entity\BlogPost;
- use Symfony\Component\Workflow\Registry;
+ use Symfony\Component\Workflow\WorkflowInterface;
// ...
- public function myAction(Registry $registry, BlogPost $post)
+ public function myAction(WorkflowInterface $blogPublishingWorkflow, BlogPost $post)
{
- $workflow = $registry->get($post);
-
- $title = $workflow
+ $title = $blogPublishingWorkflow
->getMetadataStore()
->getWorkflowMetadata()['title'] ?? 'Default title'
;
- $maxNumOfWords = $workflow
+ $maxNumOfWords = $blogPublishingWorkflow
->getMetadataStore()
->getPlaceMetadata('draft')['max_num_of_words'] ?? 500
;
- $aTransition = $workflow->getDefinition()->getTransitions()[0];
- $priority = $workflow
+ $aTransition = $blogPublishingWorkflow->getDefinition()->getTransitions()[0];
+ $priority = $blogPublishingWorkflow
->getMetadataStore()
->getTransitionMetadata($aTransition)['priority'] ?? 0
;
@@ -870,7 +895,7 @@ In a :ref:`flash message ` in your controller::
// $transition = ...; (an instance of Transition)
- // $workflow is a Workflow instance retrieved from the Registry (see above)
+ // $workflow is a Workflow instance retrieved from the Registry or injected directly (see above)
$title = $workflow->getMetadataStore()->getMetadata('title', $transition);
$this->addFlash('info', "You have successfully applied the transition with title: '$title'");
From 104c8f01ee465fe9b95553504d8c115d64799bf5 Mon Sep 17 00:00:00 2001
From: Thomas Landauer
Date: Sun, 1 Nov 2020 14:37:17 +0100
Subject: [PATCH 0039/5717] Update routing.rst
Fixing argument number. Function signature is:
```php
final public function import($resource, string $type = null, bool $ignoreErrors = false, $exclude = null): ImportConfigurator
```
---
routing.rst | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/routing.rst b/routing.rst
index 5aaebf659cd..d88ebb773a5 100644
--- a/routing.rst
+++ b/routing.rst
@@ -1243,7 +1243,7 @@ the common configuration using options when importing the routes.
use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator;
return function (RoutingConfigurator $routes) {
- // use the optional fifth argument of import() to exclude some files
+ // use the optional fourth argument of import() to exclude some files
// or subdirectories when loading annotations
$routes->import('../../src/Controller/', 'annotation')
// this is added to the beginning of all imported route URLs
From e62f4c73b4458bc3f485ebf067d14b5a3fb528cd Mon Sep 17 00:00:00 2001
From: Javier Eguiluz
Date: Mon, 2 Nov 2020 09:24:49 +0100
Subject: [PATCH 0040/5717] -
---
performance.rst | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/performance.rst b/performance.rst
index 65859141433..de0d7883a04 100644
--- a/performance.rst
+++ b/performance.rst
@@ -221,8 +221,8 @@ Profiling with Blackfire
applications during development, test and production. It's a commercial service,
but provides free features that you can use to find bottlenecks in your projects.
-Profilwing with Symfony Stopwatch
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Profiling with Symfony Stopwatch
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Symfony provides a basic performance profiler in the development
:ref:`config environment `. Click on the "time panel"
From 953845cddc63f9a12a54fff135fff7a9485bdb78 Mon Sep 17 00:00:00 2001
From: Christian Flothmann
Date: Mon, 2 Nov 2020 13:57:47 +0100
Subject: [PATCH 0041/5717] some minor tweaks
---
setup/symfony_server.rst | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/setup/symfony_server.rst b/setup/symfony_server.rst
index a8374aaca4a..0f4d88904d6 100644
--- a/setup/symfony_server.rst
+++ b/setup/symfony_server.rst
@@ -380,12 +380,12 @@ its location, same as for ``docker-compose``:
.. caution::
- When using Symfony binary with ``php bin/console`` (``symfony console ...``)
- the binay will **always** use environment variables detected via Docker and will
+ When using the Symfony binary with ``php bin/console`` (``symfony console ...``),
+ the binary will **always** use environment variables detected via Docker and will
ignore local environment variables.
For example if you set up a different database name in your ``.env.test`` file
(``DATABASE_URL=mysql://db_user:db_password@127.0.0.1:3306/test``) and if you run
- ``symfony console doctrine:database:drop --force --env=test`` the command will drop the database
+ ``symfony console doctrine:database:drop --force --env=test``, the command will drop the database
defined in your Docker configuration and not the "test" one.
SymfonyCloud Integration
From 8cdbb3935bf9b42428f97583d2a1e2d73a96d7e0 Mon Sep 17 00:00:00 2001
From: Ilya Bakhlin
Date: Tue, 3 Nov 2020 08:49:36 +0100
Subject: [PATCH 0042/5717] Updating the Installer Related Instructions
---
setup.rst | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/setup.rst b/setup.rst
index b2fe9ab23bd..1bf907318d9 100644
--- a/setup.rst
+++ b/setup.rst
@@ -67,7 +67,7 @@ with the ``new`` command:
.. code-block:: terminal
- $ symfony new my_project_name --version=3.4
+ $ symfony new my_project_name 3.4
This command creates a new directory called ``my_project_name/`` that contains
an empty project based on the most recent stable Symfony version available. In
@@ -111,14 +111,14 @@ In case your project needs to be based on a specific Symfony version, use the
.. code-block:: terminal
# use the most recent version in any Symfony branch
- $ symfony new my_project_name --version=3.3
- $ symfony new my_project_name --version=3.4
+ $ symfony new my_project_name 3.3
+ $ symfony new my_project_name 3.4
# use the most recent 'lts' version (Long Term Support version)
- $ symfony new my_project_name --version=lts
+ $ symfony new my_project_name lts
# use the 'next' Symfony version to be released (still in development)
- $ symfony new my_project_name --version=next
+ $ symfony new my_project_name next
Each version has its *own* documentation, which you can select on any documentation
page.
From 2e848b41189b82cee4d46a1277f2116e5ab75bac Mon Sep 17 00:00:00 2001
From: Oskar Stark
Date: Tue, 3 Nov 2020 15:43:05 +0100
Subject: [PATCH 0043/5717] Minor: Use Twig code block
this way it can easily be copied
---
routing.rst | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/routing.rst b/routing.rst
index 5aaebf659cd..ed7e5df48f8 100644
--- a/routing.rst
+++ b/routing.rst
@@ -2266,8 +2266,11 @@ generating the route::
$this->generateUrl('blog_show', ['slug' => 'slug-value']);
- // or, in Twig
- // {{ path('blog_show', {slug: 'slug-value'}) }}
+or, in Twig:
+
+.. code-block:: twig
+
+ {{ path('blog_show', {slug: 'slug-value'}) }}
Learn more about Routing
------------------------
From dbed899b608229706ed88b84fb36d5e7a7ba7da1 Mon Sep 17 00:00:00 2001
From: Nyholm
Date: Sun, 25 Oct 2020 16:42:30 +0100
Subject: [PATCH 0044/5717] [Notifier][Discord] Use correct use statements
---
notifier/chatters.rst | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/notifier/chatters.rst b/notifier/chatters.rst
index 9d03f83987c..7fe42a02f67 100644
--- a/notifier/chatters.rst
+++ b/notifier/chatters.rst
@@ -107,11 +107,11 @@ With a Discord message, you can use the
:class:`Symfony\\Component\\Notifier\\Bridge\\Discord\\DiscordOptions` to add
some interactive options called `Embed elements`_::
- use Symfony\Component\Notifier\Bridge\Discord\Block\DiscordEmbed;
- use Symfony\Component\Notifier\Bridge\Discord\Block\DiscordFieldEmbedObject;
- use Symfony\Component\Notifier\Bridge\Discord\Block\DiscordFooterEmbedObject;
- use Symfony\Component\Notifier\Bridge\Discord\Block\DiscordMediaEmbedObject;
use Symfony\Component\Notifier\Bridge\Discord\DiscordOptions;
+ use Symfony\Component\Notifier\Bridge\Discord\Embeds\DiscordEmbed;
+ use Symfony\Component\Notifier\Bridge\Discord\Embeds\DiscordFieldEmbedObject;
+ use Symfony\Component\Notifier\Bridge\Discord\Embeds\DiscordFooterEmbedObject;
+ use Symfony\Component\Notifier\Bridge\Discord\Embeds\DiscordMediaEmbedObject;
use Symfony\Component\Notifier\Message\ChatMessage;
$chatMessage = new ChatMessage('');
From 958aeafd32cb4bd44aefb540efb59442911d3e1e Mon Sep 17 00:00:00 2001
From: Florian Hermann
Date: Tue, 3 Nov 2020 16:47:40 +0100
Subject: [PATCH 0045/5717] Add priority order explanation for tagged services
---
service_container/tags.rst | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/service_container/tags.rst b/service_container/tags.rst
index 7ec5fcc5637..bbe7df1af6b 100644
--- a/service_container/tags.rst
+++ b/service_container/tags.rst
@@ -596,8 +596,9 @@ Tagged Services with Priority
The ability to prioritize tagged services was introduced in Symfony 4.4.
-The tagged services can be prioritized using the ``priority`` attribute,
-thus providing a way to inject a sorted collection of services:
+The tagged services can be prioritized using the ``priority`` attribute.
+The priority is a positive or negative integer. The higher the number,
+the earlier the tagged service will be located in the collection:
.. configuration-block::
@@ -655,7 +656,7 @@ service itself::
}
}
-If you want to have another method defining the priority
+If you want to have another method defining the priority
(e.g. ``getPriority()`` rather than ``getDefaultPriority()``),
you can define it in the configuration of the collecting service:
From 447065dc4fe6fb83fd658bf4ea1bd10c65821d60 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Deruss=C3=A9?=
Date: Wed, 4 Nov 2020 10:03:11 +0100
Subject: [PATCH 0046/5717] Add documentation about GetQueueUrl and DSN format
in SQS transport
---
messenger.rst | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/messenger.rst b/messenger.rst
index 6c2f2e35794..2e41a0ca86f 100644
--- a/messenger.rst
+++ b/messenger.rst
@@ -1300,7 +1300,7 @@ Amazon SQS
.. versionadded:: 5.1
- The Amazon SQS transport as introduced in Symfony 5.1.
+ The Amazon SQS transport has been introduced in Symfony 5.1.
The Amazon SQS transport is perfect for application hosted on AWS. Install it by
running:
@@ -1314,7 +1314,7 @@ The SQS transport DSN may looks like this:
.. code-block:: env
# .env
- MESSENGER_TRANSPORT_DSN=sqs://AKIAIOSFODNN7EXAMPLE:j17M97ffSVoKI0briFoo9a@sqs.eu-west-3.amazonaws.com/messages
+ MESSENGER_TRANSPORT_DSN=https://AKIAIOSFODNN7EXAMPLE:j17M97ffSVoKI0briFoo9a@sqs.eu-west-3.amazonaws.com/123456789012/messages
MESSENGER_TRANSPORT_DSN=sqs://localhost:9494/messages?sslmode=disable
.. note::
@@ -1322,6 +1322,17 @@ The SQS transport DSN may looks like this:
The transport will automatically create queues that are needed. This
can be disabled setting the ``auto_setup`` option to ``false``.
+.. tip::
+
+ Before sending or receiving a message, Symfony needs to convert the queue
+ name into an AWS queue URL by calling the ``GetQueueUrl`` API in AWS. This
+ extra API call can be avoided by providing a DSN which is the queue URL.
+
+.. versionadded:: 5.2
+
+ Providing a DSN equals to the queue URL to avoid call to ``GetQueueUrl``
+ has been introduced in Symfony 5.2.
+
The transport has a number of options:
====================== ====================================== ===================================
From 2a48c4410f659638d42c51c0e8388cfe7a177030 Mon Sep 17 00:00:00 2001
From: Javier Eguiluz
Date: Thu, 5 Nov 2020 10:26:53 +0100
Subject: [PATCH 0047/5717] Tweaks
---
messenger.rst | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/messenger.rst b/messenger.rst
index 2e41a0ca86f..ac07b40c624 100644
--- a/messenger.rst
+++ b/messenger.rst
@@ -1300,7 +1300,7 @@ Amazon SQS
.. versionadded:: 5.1
- The Amazon SQS transport has been introduced in Symfony 5.1.
+ The Amazon SQS transport was introduced in Symfony 5.1.
The Amazon SQS transport is perfect for application hosted on AWS. Install it by
running:
@@ -1328,10 +1328,9 @@ The SQS transport DSN may looks like this:
name into an AWS queue URL by calling the ``GetQueueUrl`` API in AWS. This
extra API call can be avoided by providing a DSN which is the queue URL.
-.. versionadded:: 5.2
+ .. versionadded:: 5.2
- Providing a DSN equals to the queue URL to avoid call to ``GetQueueUrl``
- has been introduced in Symfony 5.2.
+ The feature to provide the queue URL in the DSN was introduced in Symfony 5.2.
The transport has a number of options:
From 3abecebd33c11c0373a775f0b9de1d0c491798e4 Mon Sep 17 00:00:00 2001
From: Thibaut Cheymol
Date: Sun, 4 Oct 2020 22:53:49 +0200
Subject: [PATCH 0048/5717] [Collection forms] Make javascript generic
---
form/form_collections.rst | 37 +++++++++++++++++++------------------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/form/form_collections.rst b/form/form_collections.rst
index 1d0b56c244a..068b4c84985 100644
--- a/form/form_collections.rst
+++ b/form/form_collections.rst
@@ -242,7 +242,13 @@ the following ``data-prototype`` attribute to the existing ```` in your temp
.. code-block:: html+twig
-