From af9dea9226c49517f529920c4063098d9a6405cd Mon Sep 17 00:00:00 2001 From: Kevin Papst Date: Thu, 8 Apr 2021 18:07:57 +0200 Subject: [PATCH] prepare release 1.14 (#2495) * removed un-maintained docker file * update all packages * fix deprecations * only show one line descriptions for customer, projects and activities * allow to show export column in timesheet listing --- .github_changelog_generator | 2 +- CHANGELOG.md | 3 + Dockerfile | 55 - README.md | 21 +- SECURITY.md | 6 +- composer.json | 4 +- composer.lock | 1224 +++++++++-------- config/packages/doctrine.yaml | 1 + config/packages/fos_rest.yaml | 3 +- config/packages/nelmio_api_doc.yaml | 4 +- src/API/NotFoundException.php | 2 +- .../PagerfantaExceptionSubscriber.php | 45 + src/Form/FormTrait.php | 71 +- src/Form/TimesheetEditForm.php | 4 +- src/Twig/Runtime/MarkdownExtension.php | 30 + src/Twig/RuntimeExtensions.php | 1 + symfony.lock | 3 + templates/activity/index.html.twig | 2 +- templates/customer/embed_projects.html.twig | 2 +- templates/customer/index.html.twig | 2 +- templates/project/embed_activities.html.twig | 2 +- templates/project/index.html.twig | 2 +- templates/timesheet/layout-listing.html.twig | 4 + tests/API/APIControllerBaseTest.php | 15 +- tests/API/ApiDocControllerTest.php | 10 +- tests/API/NotFoundExceptionTest.php | 26 + tests/Controller/ControllerBaseTest.php | 6 +- .../PagerfantaExceptionSubscriberTest.php | 62 + tests/Twig/Runtime/MarkdownExtensionTest.php | 38 + tests/Twig/RuntimeExtensionsTest.php | 9 +- 30 files changed, 920 insertions(+), 739 deletions(-) delete mode 100644 Dockerfile create mode 100644 src/EventSubscriber/PagerfantaExceptionSubscriber.php create mode 100644 tests/API/NotFoundExceptionTest.php create mode 100644 tests/EventSubscriber/PagerfantaExceptionSubscriberTest.php diff --git a/.github_changelog_generator b/.github_changelog_generator index 3428bdf0..cf2b8e7c 100644 --- a/.github_changelog_generator +++ b/.github_changelog_generator @@ -1,5 +1,5 @@ unreleased=true -future-release=1.13 +future-release=1.14 exclude-labels=duplicate,support,question,invalid,wontfix,release,waiting for feedback enhancement_labels=>enhancement,Enhancement,feature request,translation i18n,technical debt,documentation issues-wo-labels=false diff --git a/CHANGELOG.md b/CHANGELOG.md index e48b66fc..20535ab3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## [1.14](https://github.com/kevinpapst/kimai2/tree/1.14) +[Full Changelog](https://github.com/kevinpapst/kimai2/compare/1.13...1.14) + ## [1.13](https://github.com/kevinpapst/kimai2/tree/1.13) [Full Changelog](https://github.com/kevinpapst/kimai2/compare/1.12...1.13) diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index 82b790fb..00000000 --- a/Dockerfile +++ /dev/null @@ -1,55 +0,0 @@ -# This file is part of the Kimai time-tracking app. -# -# For the full copyright and license information, please view the LICENSE -# file that was distributed with this source code. -FROM php:7.2.9-apache-stretch AS tmp_kimai2_base - -RUN apt update && \ - apt install -y --allow-unauthenticated \ - git \ - haveged \ - libicu-dev \ - libjpeg-dev \ - libldap2-dev \ - libldb-dev \ - libpng-dev \ - mysql-client \ - unzip \ - wget \ - zip \ - && \ - EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)" && \ - php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ - ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" && \ - if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then >&2 echo 'ERROR: Invalid installer signature'; rm composer-setup.php; exit 1; fi && \ - php composer-setup.php --quiet && \ - rm composer-setup.php && \ - mv /var/www/html/composer.phar /usr/bin/composer && \ - docker-php-ext-install \ - gd \ - intl \ - ldap \ - pdo_mysql \ - zip && \ - apt remove -y wget && \ - apt -y autoremove && \ - apt clean && \ - cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini - -FROM tmp_kimai2_base - -RUN git clone https://github.com/kevinpapst/kimai2.git /opt/kimai && \ - sed "s/prod/dev/g" /opt/kimai/.env.dist > /opt/kimai/.env && \ - composer install --working-dir=/opt/kimai --dev --optimize-autoloader && \ - /opt/kimai/bin/console doctrine:database:create && \ - /opt/kimai/bin/console doctrine:schema:create && \ - /opt/kimai/bin/console doctrine:migrations:version --add --all && \ - /opt/kimai/bin/console cache:warmup && \ - chown -R www-data:www-data /opt/kimai/var && \ - chown www-data:www-data /opt/kimai/vendor/mpdf/mpdf/tmp - -WORKDIR /opt/kimai - -EXPOSE 8001 -USER www-data -CMD /opt/kimai/bin/console server:run 0.0.0.0:8001 \ No newline at end of file diff --git a/README.md b/README.md index 1245b538..605ce378 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -

Kimai 2 - online time-tracker

-

Kimai logo

@@ -13,29 +11,30 @@ Bountysource

-Kimai is a free, open source and online time-tracking software designed for small businesses and freelancers. +

Kimai 2 - Time Tracker

+ +Kimai is a free, open source and online time tracking software designed for small businesses and freelancers. It is built with modern technologies such as Symfony, Bootstrap, RESTful API, Doctrine, AdminLTE, Webpack, ES6 etc. ## Introduction -- [Home](https://www.kimai.org) - The house of Kimai +- [Home](https://www.kimai.org) - Kimai project homepage - [Blog](https://www.kimai.org/blog/) - Get the latest news -- [Documentation](https://www.kimai.org/documentation/) - Learn how to use -- [Translations](https://www.kimai.org/documentation/translations.html) - Kimai in your language +- [Documentation](https://www.kimai.org/documentation/) - Learn how to use Kimai +- [Translations](https://hosted.weblate.org/projects/kimai/#languages) - Kimai in your language - [Migration](https://www.kimai.org/documentation/migration-v1.html) - Import data from v1 ### Requirements -- PHP 7.2.9 or higher +- PHP 7.2.9 or higher ([PHP 8 not yet](https://github.com/kevinpapst/kimai2/pull/2158)) - MariaDB or MySQL - Webserver (nginx, Apache) -- A modern browser - Some PHP extensions, see [composer.json](composer.json) or [here](https://www.kimai.org/download/) ### About -This is the new version of the open source timetracker Kimai. It is stable and production ready, ships -with most advanced features from Kimai 1 and many new ones, including but not limited to: +This is the new version of the open source time tracker Kimai. It is stable and production ready, ships +with a lot of advanced features, including but not limited to: JSON API, invoicing, data exports, multi-timer and punch-in punch-out mode, tagging, multi-user and multi-timezones, authentication via SAML/LDAP/Database, customizable role permissions, responsive and ready for your mobile device, @@ -50,7 +49,7 @@ user specific rates, advanced search & filtering, money and time budgets with re ### Updating Kimai -- [Update Kimai](https://www.kimai.org/documentation/updates.html) - the documentation +- [Update Kimai](https://www.kimai.org/documentation/updates.html) - get the latest version - [UPGRADING guide](UPGRADING.md) - version specific steps ### Plugins diff --git a/SECURITY.md b/SECURITY.md index 31e5fb05..54d71d77 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -7,8 +7,8 @@ As announced in the [README](README.md) I only support the latest available rele | Version | Supported | | ------- | ------------------ | | master | :white_check_mark: | -| 1.13 | :white_check_mark: | -| < 1.13 | :x: | +| 1.14 | :white_check_mark: | +| < 1.14 | :x: | ## Reporting a Vulnerability @@ -17,7 +17,7 @@ Please report any security related vulnerability in the [advisories section at G I will work as fast as I can to fix the problem and publish a bugfix release / security update. Depending on the size of the required fixes, this might take a couple of hours or a couple of days. -You can expect that your message will be answered ASAP, but please take into account that I am living in the timezone Europe/Berlin. +You can expect that your message will be answered ASAP, but please take into account that I am living in the timezone CET. If your issue is valid and after I verified and fixed it, you will be mentioned in the release notes. I am grateful for any (discrete) disclosure of vulnerabilities! \ No newline at end of file diff --git a/composer.json b/composer.json index e0225dff..a6b55053 100644 --- a/composer.json +++ b/composer.json @@ -2,7 +2,7 @@ "name": "kevinpapst/kimai2", "license": "MIT", "type": "project", - "description": "Kimai Time-Tracking 2", + "description": "Kimai - Time Tracking", "authors": [ { "name": "Kevin Papst", @@ -10,7 +10,7 @@ } ], "require": { - "php": "^7.2", + "php": "^7.2.9", "ext-gd": "*", "ext-intl": "*", "ext-json": "*", diff --git a/composer.lock b/composer.lock index 8b6a6a64..fee53819 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "25136f17833c529f24e50535c155dda5", + "content-hash": "d82f258d2b5e0338e27f6bf38be4e4fa", "packages": [ { "name": "beberlei/doctrineextensions", @@ -187,16 +187,16 @@ }, { "name": "doctrine/annotations", - "version": "1.11.1", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad" + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad", - "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/b17c5014ef81d212ac539f07a1001832df1b6d3b", + "reference": "b17c5014ef81d212ac539f07a1001832df1b6d3b", "shasum": "" }, "require": { @@ -211,11 +211,6 @@ "phpunit/phpunit": "^7.5 || ^9.1.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" @@ -256,9 +251,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.11.1" + "source": "https://github.com/doctrine/annotations/tree/1.12.1" }, - "time": "2020-10-26T10:28:16+00:00" + "time": "2021-02-21T21:00:45+00:00" }, { "name": "doctrine/cache", @@ -532,33 +527,32 @@ }, { "name": "doctrine/dbal", - "version": "2.10.4", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "47433196b6390d14409a33885ee42b6208160643" + "reference": "67d56d3203b33db29834e6b2fcdbfdc50535d796" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/47433196b6390d14409a33885ee42b6208160643", - "reference": "47433196b6390d14409a33885ee42b6208160643", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/67d56d3203b33db29834e6b2fcdbfdc50535d796", + "reference": "67d56d3203b33db29834e6b2fcdbfdc50535d796", "shasum": "" }, "require": { "doctrine/cache": "^1.0", + "doctrine/deprecations": "^0.5.3", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.2" + "php": "^7.1 || ^8" }, "require-dev": { - "doctrine/coding-standard": "^8.1", - "jetbrains/phpstorm-stubs": "^2019.1", - "nikic/php-parser": "^4.4", - "phpstan/phpstan": "^0.12.40", - "phpunit/phpunit": "^8.5.5", - "psalm/plugin-phpunit": "^0.10.0", + "doctrine/coding-standard": "8.2.0", + "jetbrains/phpstorm-stubs": "2020.2", + "phpstan/phpstan": "0.12.81", + "phpunit/phpunit": "^7.5.20|^8.5|9.5.0", "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "^3.14.2" + "vimeo/psalm": "4.6.4" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -567,12 +561,6 @@ "bin/doctrine-dbal" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" @@ -625,7 +613,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.10.4" + "source": "https://github.com/doctrine/dbal/tree/2.13.0" }, "funding": [ { @@ -641,20 +629,63 @@ "type": "tidelift" } ], - "time": "2020-09-12T21:20:41+00:00" + "time": "2021-03-28T18:10:53+00:00" }, { - "name": "doctrine/doctrine-bundle", - "version": "2.2.3", + "name": "doctrine/deprecations", + "version": "v0.5.3", "source": { "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "015fdd490074d4daa891e2d1df998dc35ba54924" + "url": "https://github.com/doctrine/deprecations.git", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/015fdd490074d4daa891e2d1df998dc35ba54924", - "reference": "015fdd490074d4daa891e2d1df998dc35ba54924", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", + "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^6.0|^7.0|^8.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/v0.5.3" + }, + "time": "2021-03-21T12:59:47+00:00" + }, + { + "name": "doctrine/doctrine-bundle", + "version": "2.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineBundle.git", + "reference": "a08bc3b4d8567cdff05e89b272ba1e06e9d71c21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/a08bc3b4d8567cdff05e89b272ba1e06e9d71c21", + "reference": "a08bc3b4d8567cdff05e89b272ba1e06e9d71c21", "shasum": "" }, "require": { @@ -666,7 +697,7 @@ "symfony/config": "^4.3.3|^5.0", "symfony/console": "^3.4.30|^4.3.3|^5.0", "symfony/dependency-injection": "^4.3.3|^5.0", - "symfony/doctrine-bridge": "^4.3.7|^5.0", + "symfony/doctrine-bridge": "^4.4.7|^5.0", "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0", "symfony/service-contracts": "^1.1.1|^2.0" }, @@ -679,25 +710,25 @@ "doctrine/orm": "^2.6", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", - "symfony/phpunit-bridge": "^4.2", + "psalm/plugin-phpunit": "^0.15.1", + "psalm/plugin-symfony": "^2.2.4", + "symfony/phpunit-bridge": "^5.2", "symfony/property-info": "^4.3.3|^5.0", "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0", + "symfony/security-bundle": "^4.4|5.0", "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0", "symfony/validator": "^3.4.30|^4.3.3|^5.0", "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0", "symfony/yaml": "^3.4.30|^4.3.3|^5.0", - "twig/twig": "^1.34|^2.12|^3.0" + "twig/twig": "^1.34|^2.12|^3.0", + "vimeo/psalm": "^4.7" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", + "ext-pdo": "*", "symfony/web-profiler-bundle": "To use the data collector." }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Bundle\\DoctrineBundle\\": "" @@ -735,7 +766,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.2.3" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.3.1" }, "funding": [ { @@ -751,7 +782,7 @@ "type": "tidelift" } ], - "time": "2021-01-19T20:29:53+00:00" + "time": "2021-04-05T14:21:02+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1180,16 +1211,16 @@ }, { "name": "doctrine/migrations", - "version": "2.3.2", + "version": "2.3.3", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "39520699043d9bfaaebeb81fa026bf2b02a8f735" + "reference": "c4c46f7064f6e7795bd7f26549579918b46790fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/39520699043d9bfaaebeb81fa026bf2b02a8f735", - "reference": "39520699043d9bfaaebeb81fa026bf2b02a8f735", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/c4c46f7064f6e7795bd7f26549579918b46790fa", + "reference": "c4c46f7064f6e7795bd7f26549579918b46790fa", "shasum": "" }, "require": { @@ -1260,7 +1291,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/2.3.2" + "source": "https://github.com/doctrine/migrations/tree/2.3.3" }, "funding": [ { @@ -1276,7 +1307,7 @@ "type": "tidelift" } ], - "time": "2020-12-23T14:06:04+00:00" + "time": "2021-03-14T10:22:48+00:00" }, { "name": "doctrine/orm", @@ -1614,27 +1645,27 @@ }, { "name": "egulias/email-validator", - "version": "2.1.25", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", - "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c81f18a3efb941d8c4d2e025f6183b5c6d697307", + "reference": "c81f18a3efb941d8c4d2e025f6183b5c6d697307", "shasum": "" }, "require": { - "doctrine/lexer": "^1.0.1", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.10" + "doctrine/lexer": "^1.2", + "php": ">=7.2", + "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "dominicsayers/isemail": "^3.0.7", - "phpunit/phpunit": "^4.8.36|^7.5.15", - "satooshi/php-coveralls": "^1.0.1" + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^8.5.8|^9.3.3", + "vimeo/psalm": "^4" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -1642,7 +1673,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1670,7 +1701,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/2.1.25" + "source": "https://github.com/egulias/EmailValidator/tree/3.1.1" }, "funding": [ { @@ -1678,7 +1709,7 @@ "type": "github" } ], - "time": "2020-12-29T14:50:06+00:00" + "time": "2021-04-01T18:37:14+00:00" }, { "name": "erusev/parsedown", @@ -1911,16 +1942,16 @@ }, { "name": "friendsofsymfony/rest-bundle", - "version": "3.0.4", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/FriendsOfSymfony/FOSRestBundle.git", - "reference": "0564bdff0e4ee08f5cd418272a749bceecde75bf" + "reference": "8779ceebf715d1c60bd10286fce9d32ed03c484a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/0564bdff0e4ee08f5cd418272a749bceecde75bf", - "reference": "0564bdff0e4ee08f5cd418272a749bceecde75bf", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSRestBundle/zipball/8779ceebf715d1c60bd10286fce9d32ed03c484a", + "reference": "8779ceebf715d1c60bd10286fce9d32ed03c484a", "shasum": "" }, "require": { @@ -2010,9 +2041,9 @@ ], "support": { "issues": "https://github.com/FriendsOfSymfony/FOSRestBundle/issues", - "source": "https://github.com/FriendsOfSymfony/FOSRestBundle/tree/3.0.4" + "source": "https://github.com/FriendsOfSymfony/FOSRestBundle/tree/3.0.5" }, - "time": "2020-12-10T20:14:08+00:00" + "time": "2021-01-02T11:26:24+00:00" }, { "name": "gedmo/doctrine-extensions", @@ -2104,16 +2135,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "1.7.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/35ea11d335fd638b5882ff1725228b3d35496ab1", + "reference": "35ea11d335fd638b5882ff1725228b3d35496ab1", "shasum": "" }, "require": { @@ -2173,9 +2204,9 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.7.0" + "source": "https://github.com/guzzle/psr7/tree/1.8.1" }, - "time": "2020-09-30T07:37:11+00:00" + "time": "2021-03-21T16:25:00+00:00" }, { "name": "handcraftedinthealps/rest-routing-bundle", @@ -2555,16 +2586,16 @@ }, { "name": "jms/metadata", - "version": "2.4.0", + "version": "2.5.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/metadata.git", - "reference": "491917b66b44deff7d1c320d35c1b92237083f67" + "reference": "b5c52549807b2d855b3d7e36ec164c00eb547338" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/491917b66b44deff7d1c320d35c1b92237083f67", - "reference": "491917b66b44deff7d1c320d35c1b92237083f67", + "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/b5c52549807b2d855b3d7e36ec164c00eb547338", + "reference": "b5c52549807b2d855b3d7e36ec164c00eb547338", "shasum": "" }, "require": { @@ -2573,6 +2604,7 @@ "require-dev": { "doctrine/cache": "^1.0", "doctrine/coding-standard": "^8.0", + "mikey179/vfsstream": "^1.6.7", "phpunit/phpunit": "^8.5|^9.0", "psr/container": "^1.0", "symfony/cache": "^3.1|^4.0|^5.0", @@ -2612,22 +2644,22 @@ ], "support": { "issues": "https://github.com/schmittjoh/metadata/issues", - "source": "https://github.com/schmittjoh/metadata/tree/2.4.0" + "source": "https://github.com/schmittjoh/metadata/tree/2.5.0" }, - "time": "2020-11-30T11:08:28+00:00" + "time": "2021-03-07T19:20:09+00:00" }, { "name": "jms/serializer", - "version": "3.11.0", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "5158b454ecf209a9fea91c837e827355204581ea" + "reference": "ea54838a0acd960839b7401bfd83fcd6ebe34aed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/5158b454ecf209a9fea91c837e827355204581ea", - "reference": "5158b454ecf209a9fea91c837e827355204581ea", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/ea54838a0acd960839b7401bfd83fcd6ebe34aed", + "reference": "ea54838a0acd960839b7401bfd83fcd6ebe34aed", "shasum": "" }, "require": { @@ -2646,6 +2678,7 @@ "ext-pdo_sqlite": "*", "jackalope/jackalope-doctrine-dbal": "^1.1.5", "ocramius/proxy-manager": "^1.0|^2.0", + "phpstan/phpstan": "^0.12.65", "phpunit/phpunit": "^8.0||^9.0", "psr/container": "^1.0", "symfony/dependency-injection": "^3.0|^4.0|^5.0", @@ -2665,7 +2698,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.11-dev" + "dev-master": "3.12-dev" } }, "autoload": { @@ -2698,7 +2731,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.11.0" + "source": "https://github.com/schmittjoh/serializer/tree/3.12.2" }, "funding": [ { @@ -2706,30 +2739,31 @@ "type": "github" } ], - "time": "2020-12-29T12:26:56+00:00" + "time": "2021-03-23T12:37:04+00:00" }, { "name": "jms/serializer-bundle", - "version": "3.8.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", - "reference": "5ba2675b9174659013fd93c3cbc8edf12189c9af" + "reference": "2fbf2385668dd715d030567fd41e181bbf41fb42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/5ba2675b9174659013fd93c3cbc8edf12189c9af", - "reference": "5ba2675b9174659013fd93c3cbc8edf12189c9af", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/2fbf2385668dd715d030567fd41e181bbf41fb42", + "reference": "2fbf2385668dd715d030567fd41e181bbf41fb42", "shasum": "" }, "require": { - "jms/metadata": "^2.3", + "jms/metadata": "^2.5", "jms/serializer": "^3.0", "php": "^7.2 || ^8.0", "symfony/dependency-injection": "^3.3 || ^4.0 || ^5.0", "symfony/framework-bundle": "^3.0 || ^4.0 || ^5.0" }, "require-dev": { + "doctrine/coding-standard": "^8.1", "doctrine/orm": "^2.4", "phpunit/phpunit": "^8.0 || ^9.0", "symfony/expression-language": "^3.0 || ^4.0 || ^5.0", @@ -2748,7 +2782,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.8-dev" + "dev-master": "3.9-dev" } }, "autoload": { @@ -2783,7 +2817,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/JMSSerializerBundle/issues", - "source": "https://github.com/schmittjoh/JMSSerializerBundle/tree/3.8.0" + "source": "https://github.com/schmittjoh/JMSSerializerBundle/tree/3.9.1" }, "funding": [ { @@ -2791,7 +2825,7 @@ "type": "github" } ], - "time": "2021-01-23T20:13:28+00:00" + "time": "2021-03-23T12:21:23+00:00" }, { "name": "kevinpapst/adminlte-bundle", @@ -2876,16 +2910,16 @@ }, { "name": "kimai/user-bundle", - "version": "1.2.2", + "version": "1.3", "source": { "type": "git", "url": "https://github.com/kimai/user-bundle.git", - "reference": "5ef89d36b3d5aedfa823cbbd9ffeaec7a6b8764a" + "reference": "77c7d17d999ed1ec4110091bc67491d281fb0320" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kimai/user-bundle/zipball/5ef89d36b3d5aedfa823cbbd9ffeaec7a6b8764a", - "reference": "5ef89d36b3d5aedfa823cbbd9ffeaec7a6b8764a", + "url": "https://api.github.com/repos/kimai/user-bundle/zipball/77c7d17d999ed1ec4110091bc67491d281fb0320", + "reference": "77c7d17d999ed1ec4110091bc67491d281fb0320", "shasum": "" }, "require": { @@ -2939,9 +2973,9 @@ "description": "Kimai UserBundle", "homepage": "https://www.kimai.org", "support": { - "source": "https://github.com/kimai/user-bundle/tree/master" + "source": "https://github.com/kimai/user-bundle/tree/1.3" }, - "time": "2020-05-24T10:20:46+00:00" + "time": "2021-02-28T11:43:40+00:00" }, { "name": "laminas/laminas-code", @@ -3954,16 +3988,16 @@ }, { "name": "nelmio/api-doc-bundle", - "version": "v3.8.1", + "version": "v3.8.2", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioApiDocBundle.git", - "reference": "820c058de79268e7280e311c7234f26c2228f470" + "reference": "e57ede23ed765c86a4440b4cd4fde46ff7d67483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/820c058de79268e7280e311c7234f26c2228f470", - "reference": "820c058de79268e7280e311c7234f26c2228f470", + "url": "https://api.github.com/repos/nelmio/NelmioApiDocBundle/zipball/e57ede23ed765c86a4440b4cd4fde46ff7d67483", + "reference": "e57ede23ed765c86a4440b4cd4fde46ff7d67483", "shasum": "" }, "require": { @@ -4044,9 +4078,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioApiDocBundle/issues", - "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v3.8.1" + "source": "https://github.com/nelmio/NelmioApiDocBundle/tree/v3.8.2" }, - "time": "2020-12-22T10:27:56+00:00" + "time": "2020-12-29T09:27:09+00:00" }, { "name": "nelmio/cors-bundle", @@ -4112,16 +4146,16 @@ }, { "name": "nesbot/carbon", - "version": "2.44.0", + "version": "2.46.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd" + "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd", - "reference": "e6ef33cb1f67a4bed831ed6d0f7e156739a5d8cd", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", + "reference": "2fd2c4a77d58a4e95234c8a61c5df1f157a91bf4", "shasum": "" }, "require": { @@ -4201,20 +4235,20 @@ "type": "tidelift" } ], - "time": "2021-01-26T20:46:41+00:00" + "time": "2021-02-24T17:30:44+00:00" }, { "name": "onelogin/php-saml", - "version": "3.5.1", + "version": "3.6.1", "source": { "type": "git", "url": "https://github.com/onelogin/php-saml.git", - "reference": "593aca859b67d607923fe50d8ad7315373f5b6dd" + "reference": "a7328b11887660ad248ea10952dd67a5aa73ba3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/onelogin/php-saml/zipball/593aca859b67d607923fe50d8ad7315373f5b6dd", - "reference": "593aca859b67d607923fe50d8ad7315373f5b6dd", + "url": "https://api.github.com/repos/onelogin/php-saml/zipball/a7328b11887660ad248ea10952dd67a5aa73ba3b", + "reference": "a7328b11887660ad248ea10952dd67a5aa73ba3b", "shasum": "" }, "require": { @@ -4225,7 +4259,7 @@ "pdepend/pdepend": "^2.5.0", "php-coveralls/php-coveralls": "^1.0.2 || ^2.0", "phploc/phploc": "^2.1 || ^3.0 || ^4.0", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1", + "phpunit/phpunit": "<7.5.18", "sebastian/phpcpd": "^2.0 || ^3.0 || ^4.0", "squizlabs/php_codesniffer": "^3.1.1" }, @@ -4256,20 +4290,20 @@ "issues": "https://github.com/onelogin/php-saml/issues", "source": "https://github.com/onelogin/php-saml/" }, - "time": "2020-12-03T20:08:41+00:00" + "time": "2021-03-02T10:13:07+00:00" }, { "name": "pagerfanta/pagerfanta", - "version": "v2.6.0", + "version": "v2.7.1", "source": { "type": "git", "url": "https://github.com/BabDev/Pagerfanta.git", - "reference": "80e5770150de0a7cadbe92e5f545bbb874e04df7" + "reference": "630f38d57c86b67565b644db9d270ffb6d67123f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/80e5770150de0a7cadbe92e5f545bbb874e04df7", - "reference": "80e5770150de0a7cadbe92e5f545bbb874e04df7", + "url": "https://api.github.com/repos/BabDev/Pagerfanta/zipball/630f38d57c86b67565b644db9d270ffb6d67123f", + "reference": "630f38d57c86b67565b644db9d270ffb6d67123f", "shasum": "" }, "require": { @@ -4301,7 +4335,7 @@ "jackalope/jackalope-doctrine-dbal": "^1.3", "mandango/mandango": "^1.0@dev", "phpstan/extension-installer": "^1.0.4", - "phpstan/phpstan": "^0.12.71", + "phpstan/phpstan": "^0.12.79", "phpstan/phpstan-phpunit": "^0.12.17", "phpunit/phpunit": "^8.5 || ^9.0", "propel/propel": "^2.0@dev", @@ -4341,7 +4375,7 @@ ], "support": { "issues": "https://github.com/BabDev/Pagerfanta/issues", - "source": "https://github.com/BabDev/Pagerfanta/tree/v2.6.0" + "source": "https://github.com/BabDev/Pagerfanta/tree/v2.7.1" }, "funding": [ { @@ -4349,7 +4383,7 @@ "type": "github" } ], - "time": "2021-02-03T00:07:24+00:00" + "time": "2021-02-28T18:15:42+00:00" }, { "name": "paragonie/random_compat", @@ -4661,16 +4695,16 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.16.0", + "version": "1.17.1", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", - "reference": "76d4323b85129d0c368149c831a07a3e258b2b50" + "reference": "c55269cb06911575a126dc225a05c0e4626e5fb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/76d4323b85129d0c368149c831a07a3e258b2b50", - "reference": "76d4323b85129d0c368149c831a07a3e258b2b50", + "url": "https://api.github.com/repos/PHPOffice/PhpSpreadsheet/zipball/c55269cb06911575a126dc225a05c0e4626e5fb4", + "reference": "c55269cb06911575a126dc225a05c0e4626e5fb4", "shasum": "" }, "require": { @@ -4698,7 +4732,7 @@ }, "require-dev": { "dompdf/dompdf": "^0.8.5", - "friendsofphp/php-cs-fixer": "^2.16", + "friendsofphp/php-cs-fixer": "^2.18", "jpgraph/jpgraph": "^4.0", "mpdf/mpdf": "^8.0", "phpcompatibility/php-compatibility": "^9.3", @@ -4756,9 +4790,9 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.16.0" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.17.1" }, - "time": "2020-12-31T18:03:49+00:00" + "time": "2021-03-02T17:54:11+00:00" }, { "name": "phpoffice/phpword", @@ -4974,27 +5008,22 @@ }, { "name": "psr/container", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -5007,7 +5036,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common Container Interface (PHP FIG PSR-11)", @@ -5021,9 +5050,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/master" + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2017-02-14T16:28:37+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { "name": "psr/http-client", @@ -5454,16 +5483,16 @@ }, { "name": "setasign/fpdi", - "version": "v2.3.5", + "version": "v2.3.6", "source": { "type": "git", "url": "https://github.com/Setasign/FPDI.git", - "reference": "f2246c8669bd25834f5c264425eb0e250d7a9312" + "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Setasign/FPDI/zipball/f2246c8669bd25834f5c264425eb0e250d7a9312", - "reference": "f2246c8669bd25834f5c264425eb0e250d7a9312", + "url": "https://api.github.com/repos/Setasign/FPDI/zipball/6231e315f73e4f62d72b73f3d6d78ff0eed93c31", + "reference": "6231e315f73e4f62d72b73f3d6d78ff0eed93c31", "shasum": "" }, "require": { @@ -5514,7 +5543,7 @@ ], "support": { "issues": "https://github.com/Setasign/FPDI/issues", - "source": "https://github.com/Setasign/FPDI/tree/v2.3.5" + "source": "https://github.com/Setasign/FPDI/tree/v2.3.6" }, "funding": [ { @@ -5522,25 +5551,25 @@ "type": "tidelift" } ], - "time": "2020-12-03T13:40:03+00:00" + "time": "2021-02-11T11:37:01+00:00" }, { "name": "symfony/amazon-mailer", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/amazon-mailer.git", - "reference": "8e546507e38ca6701b77024a2a81e0f575e2d926" + "reference": "62b7f7af65a89cae6aca887ac14e165c7cb836e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amazon-mailer/zipball/8e546507e38ca6701b77024a2a81e0f575e2d926", - "reference": "8e546507e38ca6701b77024a2a81e0f575e2d926", + "url": "https://api.github.com/repos/symfony/amazon-mailer/zipball/62b7f7af65a89cae6aca887ac14e165c7cb836e3", + "reference": "62b7f7af65a89cae6aca887ac14e165c7cb836e3", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/mailer": "^4.4|^5.0" + "symfony/mailer": "^4.4.21|^5.2.6" }, "require-dev": { "symfony/http-client": "^4.3|^5.0" @@ -5571,7 +5600,7 @@ "description": "Symfony Amazon Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amazon-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/amazon-mailer/tree/v4.4.21" }, "funding": [ { @@ -5587,11 +5616,11 @@ "type": "tidelift" } ], - "time": "2021-01-07T00:57:48+00:00" + "time": "2021-03-12T11:23:44+00:00" }, { "name": "symfony/asset", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", @@ -5639,7 +5668,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v4.4.19" + "source": "https://github.com/symfony/asset/tree/v4.4.20" }, "funding": [ { @@ -5659,21 +5688,21 @@ }, { "name": "symfony/cache", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "3c18a6d8e4fb15b9e6ed4e6eb1c93f2ad0fd4d55" + "reference": "b7ff54be3f3eb1ce09643692f0c309b1b27bc992" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/3c18a6d8e4fb15b9e6ed4e6eb1c93f2ad0fd4d55", - "reference": "3c18a6d8e4fb15b9e6ed4e6eb1c93f2ad0fd4d55", + "url": "https://api.github.com/repos/symfony/cache/zipball/b7ff54be3f3eb1ce09643692f0c309b1b27bc992", + "reference": "b7ff54be3f3eb1ce09643692f0c309b1b27bc992", "shasum": "" }, "require": { "php": ">=7.1.3", - "psr/cache": "~1.0", + "psr/cache": "^1.0|^2.0", "psr/log": "~1.0", "symfony/cache-contracts": "^1.1.7|^2", "symfony/service-contracts": "^1.1|^2", @@ -5686,9 +5715,9 @@ "symfony/var-dumper": "<4.4" }, "provide": { - "psr/cache-implementation": "1.0", + "psr/cache-implementation": "1.0|2.0", "psr/simple-cache-implementation": "1.0", - "symfony/cache-implementation": "1.0" + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { "cache/integration-tests": "dev-master", @@ -5732,7 +5761,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v4.4.19" + "source": "https://github.com/symfony/cache/tree/v4.4.21" }, "funding": [ { @@ -5748,7 +5777,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-14T19:28:18+00:00" }, { "name": "symfony/cache-contracts", @@ -5831,16 +5860,16 @@ }, { "name": "symfony/config", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2c4c7827a7e143f5cf375666641b0f448eab8802" + "reference": "98606c6fa1a8f55ff964ccdd704275bf5b9f71b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2c4c7827a7e143f5cf375666641b0f448eab8802", - "reference": "2c4c7827a7e143f5cf375666641b0f448eab8802", + "url": "https://api.github.com/repos/symfony/config/zipball/98606c6fa1a8f55ff964ccdd704275bf5b9f71b3", + "reference": "98606c6fa1a8f55ff964ccdd704275bf5b9f71b3", "shasum": "" }, "require": { @@ -5887,7 +5916,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v4.4.19" + "source": "https://github.com/symfony/config/tree/v4.4.20" }, "funding": [ { @@ -5903,20 +5932,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-22T15:36:50+00:00" }, { "name": "symfony/console", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "24026c44fc37099fa145707fecd43672831b837a" + "reference": "1ba4560dbbb9fcf5ae28b61f71f49c678086cf23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/24026c44fc37099fa145707fecd43672831b837a", - "reference": "24026c44fc37099fa145707fecd43672831b837a", + "url": "https://api.github.com/repos/symfony/console/zipball/1ba4560dbbb9fcf5ae28b61f71f49c678086cf23", + "reference": "1ba4560dbbb9fcf5ae28b61f71f49c678086cf23", "shasum": "" }, "require": { @@ -5976,7 +6005,7 @@ "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/console/tree/v4.4.19" + "source": "https://github.com/symfony/console/tree/v4.4.21" }, "funding": [ { @@ -5992,11 +6021,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-26T09:23:24+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -6041,7 +6070,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.19" + "source": "https://github.com/symfony/css-selector/tree/v4.4.20" }, "funding": [ { @@ -6061,16 +6090,16 @@ }, { "name": "symfony/debug", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "af4987aa4a5630e9615be9d9c3ed1b0f24ca449c" + "reference": "157bbec4fd773bae53c5483c50951a5530a2cc16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/af4987aa4a5630e9615be9d9c3ed1b0f24ca449c", - "reference": "af4987aa4a5630e9615be9d9c3ed1b0f24ca449c", + "url": "https://api.github.com/repos/symfony/debug/zipball/157bbec4fd773bae53c5483c50951a5530a2cc16", + "reference": "157bbec4fd773bae53c5483c50951a5530a2cc16", "shasum": "" }, "require": { @@ -6110,7 +6139,7 @@ "description": "Provides tools to ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.19" + "source": "https://github.com/symfony/debug/tree/v4.4.20" }, "funding": [ { @@ -6126,20 +6155,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-01-28T16:54:48+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "2468b95d869c872c6fb1b93b395a7fcd5331f2b9" + "reference": "b5f97557faa48ead4671bc311cfca423d476e93e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/2468b95d869c872c6fb1b93b395a7fcd5331f2b9", - "reference": "2468b95d869c872c6fb1b93b395a7fcd5331f2b9", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b5f97557faa48ead4671bc311cfca423d476e93e", + "reference": "b5f97557faa48ead4671bc311cfca423d476e93e", "shasum": "" }, "require": { @@ -6155,7 +6184,7 @@ }, "provide": { "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" + "symfony/service-implementation": "1.0|2.0" }, "require-dev": { "symfony/config": "^4.3", @@ -6195,7 +6224,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v4.4.19" + "source": "https://github.com/symfony/dependency-injection/tree/v4.4.21" }, "funding": [ { @@ -6211,7 +6240,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-05T18:16:26+00:00" }, { "name": "symfony/deprecation-contracts", @@ -6282,16 +6311,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "a908956f818918488a8705aca534cd4b7e070774" + "reference": "e643bddb38277b4a1c2973d1489768c6e6c0db80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/a908956f818918488a8705aca534cd4b7e070774", - "reference": "a908956f818918488a8705aca534cd4b7e070774", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e643bddb38277b4a1c2973d1489768c6e6c0db80", + "reference": "e643bddb38277b4a1c2973d1489768c6e6c0db80", "shasum": "" }, "require": { @@ -6368,7 +6397,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.19" + "source": "https://github.com/symfony/doctrine-bridge/tree/v4.4.21" }, "funding": [ { @@ -6384,11 +6413,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:34+00:00" + "time": "2021-03-09T16:20:30+00:00" }, { "name": "symfony/dotenv", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", @@ -6437,7 +6466,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v4.4.19" + "source": "https://github.com/symfony/dotenv/tree/v4.4.20" }, "funding": [ { @@ -6457,16 +6486,16 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "d603654eaeb713503bba3e308b9e748e5a6d3f2e" + "reference": "48e81a375525872e788c2418430f54150d935810" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/d603654eaeb713503bba3e308b9e748e5a6d3f2e", - "reference": "d603654eaeb713503bba3e308b9e748e5a6d3f2e", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48e81a375525872e788c2418430f54150d935810", + "reference": "48e81a375525872e788c2418430f54150d935810", "shasum": "" }, "require": { @@ -6506,7 +6535,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v4.4.19" + "source": "https://github.com/symfony/error-handler/tree/v4.4.21" }, "funding": [ { @@ -6522,11 +6551,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-08T10:28:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -6589,7 +6618,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.19" + "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.20" }, "funding": [ { @@ -6688,16 +6717,16 @@ }, { "name": "symfony/expression-language", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "066402a1894fcaef22cbff1591c8a0bdf7f66e9b" + "reference": "a6b2c711e4d4dcba4db7b36a8a1835b0720d07fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/066402a1894fcaef22cbff1591c8a0bdf7f66e9b", - "reference": "066402a1894fcaef22cbff1591c8a0bdf7f66e9b", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/a6b2c711e4d4dcba4db7b36a8a1835b0720d07fe", + "reference": "a6b2c711e4d4dcba4db7b36a8a1835b0720d07fe", "shasum": "" }, "require": { @@ -6731,7 +6760,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v4.4.19" + "source": "https://github.com/symfony/expression-language/tree/v4.4.20" }, "funding": [ { @@ -6747,20 +6776,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-11T19:34:41+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "83a6feed14846d2d9f3916adbaf838819e4e3380" + "reference": "940826c465be2690c9fae91b2793481e5cbd6834" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/83a6feed14846d2d9f3916adbaf838819e4e3380", - "reference": "83a6feed14846d2d9f3916adbaf838819e4e3380", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/940826c465be2690c9fae91b2793481e5cbd6834", + "reference": "940826c465be2690c9fae91b2793481e5cbd6834", "shasum": "" }, "require": { @@ -6793,7 +6822,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.19" + "source": "https://github.com/symfony/filesystem/tree/v4.4.21" }, "funding": [ { @@ -6809,20 +6838,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-28T09:59:32+00:00" }, { "name": "symfony/finder", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "25d79cfccfc12e84e7a63a248c3f0720fdd92db6" + "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/25d79cfccfc12e84e7a63a248c3f0720fdd92db6", - "reference": "25d79cfccfc12e84e7a63a248c3f0720fdd92db6", + "url": "https://api.github.com/repos/symfony/finder/zipball/2543795ab1570df588b9bbd31e1a2bd7037b94f6", + "reference": "2543795ab1570df588b9bbd31e1a2bd7037b94f6", "shasum": "" }, "require": { @@ -6854,7 +6883,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.19" + "source": "https://github.com/symfony/finder/tree/v4.4.20" }, "funding": [ { @@ -6870,20 +6899,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-12T10:48:09+00:00" }, { "name": "symfony/flex", - "version": "v1.12.1", + "version": "v1.12.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "394f3e4dc03ea2a5448aeedc9658c8b596b1d39f" + "reference": "e472606b4b3173564f0edbca8f5d32b52fc4f2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/394f3e4dc03ea2a5448aeedc9658c8b596b1d39f", - "reference": "394f3e4dc03ea2a5448aeedc9658c8b596b1d39f", + "url": "https://api.github.com/repos/symfony/flex/zipball/e472606b4b3173564f0edbca8f5d32b52fc4f2c9", + "reference": "e472606b4b3173564f0edbca8f5d32b52fc4f2c9", "shasum": "" }, "require": { @@ -6900,7 +6929,7 @@ "type": "composer-plugin", "extra": { "branch-alias": { - "dev-main": "1.9-dev" + "dev-main": "1.12-dev" }, "class": "Symfony\\Flex\\Flex" }, @@ -6922,7 +6951,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.12.1" + "source": "https://github.com/symfony/flex/tree/v1.12.2" }, "funding": [ { @@ -6938,20 +6967,20 @@ "type": "tidelift" } ], - "time": "2021-02-02T16:29:45+00:00" + "time": "2021-02-16T14:05:05+00:00" }, { "name": "symfony/form", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "bab1af95e9e6cac06c7bfe68731b526809fa38d3" + "reference": "9ced5b787916fb8a64819d63a4bcf7ddda46791c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/bab1af95e9e6cac06c7bfe68731b526809fa38d3", - "reference": "bab1af95e9e6cac06c7bfe68731b526809fa38d3", + "url": "https://api.github.com/repos/symfony/form/zipball/9ced5b787916fb8a64819d63a4bcf7ddda46791c", + "reference": "9ced5b787916fb8a64819d63a4bcf7ddda46791c", "shasum": "" }, "require": { @@ -7019,7 +7048,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v4.4.19" + "source": "https://github.com/symfony/form/tree/v4.4.21" }, "funding": [ { @@ -7035,20 +7064,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-28T08:05:52+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "790f1db60deb1577eaf86f2025215b48c53f8e94" + "reference": "fc72fbb0f9a69d2eb5d94cc8c231176265db680a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/790f1db60deb1577eaf86f2025215b48c53f8e94", - "reference": "790f1db60deb1577eaf86f2025215b48c53f8e94", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/fc72fbb0f9a69d2eb5d94cc8c231176265db680a", + "reference": "fc72fbb0f9a69d2eb5d94cc8c231176265db680a", "shasum": "" }, "require": { @@ -7072,7 +7101,7 @@ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", "symfony/asset": "<3.4", "symfony/browser-kit": "<4.3", - "symfony/console": "<4.3", + "symfony/console": "<4.4.21", "symfony/dom-crawler": "<4.3", "symfony/dotenv": "<4.3.6", "symfony/form": "<4.3.5", @@ -7100,7 +7129,7 @@ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/asset": "^3.4|^4.0|^5.0", "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3.4|^5.0", + "symfony/console": "^4.4.21|^5.0", "symfony/css-selector": "^3.4|^4.0|^5.0", "symfony/dom-crawler": "^4.3|^5.0", "symfony/dotenv": "^4.3.6|^5.0", @@ -7114,6 +7143,7 @@ "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^3.4|^4.0|^5.0", "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-core": "^3.4|^4.4|^5.2", "symfony/security-csrf": "^3.4|^4.0|^5.0", "symfony/security-http": "^3.4|^4.0|^5.0", "symfony/serializer": "^4.4|^5.0", @@ -7163,7 +7193,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v4.4.19" + "source": "https://github.com/symfony/framework-bundle/tree/v4.4.21" }, "funding": [ { @@ -7179,11 +7209,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-18T09:22:03+00:00" }, { "name": "symfony/google-mailer", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/google-mailer.git", @@ -7228,7 +7258,7 @@ "description": "Symfony Google Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/google-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/google-mailer/tree/v4.4.20" }, "funding": [ { @@ -7248,16 +7278,16 @@ }, { "name": "symfony/http-client", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "d8df50fe9229576b254c6822eb5cfff36c02c967" + "reference": "911177e186b82e5b9a9f41c13af53699b6745657" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/d8df50fe9229576b254c6822eb5cfff36c02c967", - "reference": "d8df50fe9229576b254c6822eb5cfff36c02c967", + "url": "https://api.github.com/repos/symfony/http-client/zipball/911177e186b82e5b9a9f41c13af53699b6745657", + "reference": "911177e186b82e5b9a9f41c13af53699b6745657", "shasum": "" }, "require": { @@ -7271,7 +7301,7 @@ "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1" + "symfony/http-client-implementation": "1.1|2.0" }, "require-dev": { "guzzlehttp/promises": "^1.4", @@ -7308,7 +7338,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.19" + "source": "https://github.com/symfony/http-client/tree/v4.4.21" }, "funding": [ { @@ -7324,7 +7354,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-25T17:52:07+00:00" }, { "name": "symfony/http-client-contracts", @@ -7407,16 +7437,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8888741b633f6c3d1e572b7735ad2cae3e03f9c5" + "reference": "02d968647fe61b2f419a8dc70c468a9d30a48d3a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8888741b633f6c3d1e572b7735ad2cae3e03f9c5", - "reference": "8888741b633f6c3d1e572b7735ad2cae3e03f9c5", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/02d968647fe61b2f419a8dc70c468a9d30a48d3a", + "reference": "02d968647fe61b2f419a8dc70c468a9d30a48d3a", "shasum": "" }, "require": { @@ -7455,7 +7485,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.19" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.20" }, "funding": [ { @@ -7471,20 +7501,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-25T17:11:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "07ea794a327d7c8c5d76e3058fde9fec6a711cb4" + "reference": "0248214120d00c5f44f1cd5d9ad65f0b38459333" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/07ea794a327d7c8c5d76e3058fde9fec6a711cb4", - "reference": "07ea794a327d7c8c5d76e3058fde9fec6a711cb4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/0248214120d00c5f44f1cd5d9ad65f0b38459333", + "reference": "0248214120d00c5f44f1cd5d9ad65f0b38459333", "shasum": "" }, "require": { @@ -7510,7 +7540,7 @@ "psr/log-implementation": "1.0" }, "require-dev": { - "psr/cache": "~1.0", + "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^4.3|^5.0", "symfony/config": "^3.4|^4.0|^5.0", "symfony/console": "^3.4|^4.0", @@ -7559,7 +7589,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v4.4.19" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.21" }, "funding": [ { @@ -7575,20 +7605,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T13:50:53+00:00" + "time": "2021-03-29T05:11:04+00:00" }, { "name": "symfony/inflector", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/inflector.git", - "reference": "a8691d012fb449ba49363a3b3e3e743f354f7d56" + "reference": "9455097d23776a4a10c817d903271bc1ce7596ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/a8691d012fb449ba49363a3b3e3e743f354f7d56", - "reference": "a8691d012fb449ba49363a3b3e3e743f354f7d56", + "url": "https://api.github.com/repos/symfony/inflector/zipball/9455097d23776a4a10c817d903271bc1ce7596ff", + "reference": "9455097d23776a4a10c817d903271bc1ce7596ff", "shasum": "" }, "require": { @@ -7629,7 +7659,7 @@ "words" ], "support": { - "source": "https://github.com/symfony/inflector/tree/v4.4.19" + "source": "https://github.com/symfony/inflector/tree/v4.4.21" }, "funding": [ { @@ -7645,20 +7675,20 @@ "type": "tidelift" } ], - "time": "2021-01-24T23:44:26+00:00" + "time": "2021-03-17T16:19:54+00:00" }, { "name": "symfony/intl", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "8a15571146066c39536fd7c3734aa36281d0e788" + "reference": "fe19cafd0ff661c2143c8717bb1dca0457794c1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/8a15571146066c39536fd7c3734aa36281d0e788", - "reference": "8a15571146066c39536fd7c3734aa36281d0e788", + "url": "https://api.github.com/repos/symfony/intl/zipball/fe19cafd0ff661c2143c8717bb1dca0457794c1e", + "reference": "fe19cafd0ff661c2143c8717bb1dca0457794c1e", "shasum": "" }, "require": { @@ -7716,7 +7746,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v4.4.19" + "source": "https://github.com/symfony/intl/tree/v4.4.20" }, "funding": [ { @@ -7732,11 +7762,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-17T15:45:29+00:00" }, { "name": "symfony/mailchimp-mailer", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/mailchimp-mailer.git", @@ -7781,7 +7811,7 @@ "description": "Symfony Mailchimp Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailchimp-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/mailchimp-mailer/tree/v4.4.20" }, "funding": [ { @@ -7801,24 +7831,24 @@ }, { "name": "symfony/mailer", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "38b6dcb4bb265fa4f003b0f42dd42fb91cbd877b" + "reference": "76b64a4105634d89e1f7ee7f75851740fe8fe66b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/38b6dcb4bb265fa4f003b0f42dd42fb91cbd877b", - "reference": "38b6dcb4bb265fa4f003b0f42dd42fb91cbd877b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/76b64a4105634d89e1f7ee7f75851740fe8fe66b", + "reference": "76b64a4105634d89e1f7ee7f75851740fe8fe66b", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10", + "egulias/email-validator": "^2.1.10|^3", "php": ">=7.1.3", "psr/log": "~1.0", "symfony/event-dispatcher": "^4.3", - "symfony/mime": "^4.4|^5.0", + "symfony/mime": "^4.4.21|^5.2.6", "symfony/service-contracts": "^1.1|^2" }, "conflict": { @@ -7861,7 +7891,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v4.4.19" + "source": "https://github.com/symfony/mailer/tree/v4.4.21" }, "funding": [ { @@ -7877,25 +7907,25 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-12T11:23:44+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "f733045bde05a260adb4f0e70e54138f508c722f" + "reference": "d2581d6048d7c8e4f041640517b8cdc0d791be58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/f733045bde05a260adb4f0e70e54138f508c722f", - "reference": "f733045bde05a260adb4f0e70e54138f508c722f", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/d2581d6048d7c8e4f041640517b8cdc0d791be58", + "reference": "d2581d6048d7c8e4f041640517b8cdc0d791be58", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/mailer": "^4.4|^5.0" + "symfony/mailer": "^4.4.21|^5.2.6" }, "require-dev": { "symfony/http-client": "^4.3|^5.0" @@ -7926,7 +7956,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/mailgun-mailer/tree/v4.4.21" }, "funding": [ { @@ -7942,20 +7972,20 @@ "type": "tidelift" } ], - "time": "2021-01-01T09:24:35+00:00" + "time": "2021-03-12T11:23:44+00:00" }, { "name": "symfony/mime", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "7f50c27c7417115ca620962b853a7f4db0479e7c" + "reference": "50d7a1d569edad1f1321c59123c4c322c8daff7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/7f50c27c7417115ca620962b853a7f4db0479e7c", - "reference": "7f50c27c7417115ca620962b853a7f4db0479e7c", + "url": "https://api.github.com/repos/symfony/mime/zipball/50d7a1d569edad1f1321c59123c4c322c8daff7c", + "reference": "50d7a1d569edad1f1321c59123c4c322c8daff7c", "shasum": "" }, "require": { @@ -7964,10 +7994,11 @@ "symfony/polyfill-mbstring": "^1.0" }, "conflict": { + "egulias/email-validator": "~3.0.0", "symfony/mailer": "<4.4" }, "require-dev": { - "egulias/email-validator": "^2.1.10", + "egulias/email-validator": "^2.1.10|^3.1", "symfony/dependency-injection": "^3.4|^4.1|^5.0" }, "type": "library", @@ -8000,7 +8031,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v4.4.19" + "source": "https://github.com/symfony/mime/tree/v4.4.21" }, "funding": [ { @@ -8016,20 +8047,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-12T08:47:38+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "47343492b1841db765de8d55b4b5ccaa1c96edd3" + "reference": "3741314b95e8d0c11a485dce562898f5f67f455c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/47343492b1841db765de8d55b4b5ccaa1c96edd3", - "reference": "47343492b1841db765de8d55b4b5ccaa1c96edd3", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3741314b95e8d0c11a485dce562898f5f67f455c", + "reference": "3741314b95e8d0c11a485dce562898f5f67f455c", "shasum": "" }, "require": { @@ -8079,7 +8110,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.19" + "source": "https://github.com/symfony/monolog-bridge/tree/v4.4.21" }, "funding": [ { @@ -8095,34 +8126,34 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-05T17:58:50+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.6.0", + "version": "v3.7.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940" + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940", - "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/4054b2e940a25195ae15f0a49ab0c51718922eb4", + "reference": "4054b2e940a25195ae15f0a49ab0c51718922eb4", "shasum": "" }, "require": { "monolog/monolog": "~1.22 || ~2.0", - "php": ">=5.6", - "symfony/config": "~3.4 || ~4.0 || ^5.0", - "symfony/dependency-injection": "~3.4.10 || ^4.0.10 || ^5.0", - "symfony/http-kernel": "~3.4 || ~4.0 || ^5.0", - "symfony/monolog-bridge": "~3.4 || ~4.0 || ^5.0" + "php": ">=7.1.3", + "symfony/config": "~4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/http-kernel": "~4.4 || ^5.0", + "symfony/monolog-bridge": "~4.4 || ^5.0" }, "require-dev": { - "symfony/console": "~3.4 || ~4.0 || ^5.0", - "symfony/phpunit-bridge": "^4.4 || ^5.0", - "symfony/yaml": "~3.4 || ~4.0 || ^5.0" + "symfony/console": "~4.4 || ^5.0", + "symfony/phpunit-bridge": "^5.1", + "symfony/yaml": "~4.4 || ^5.0" }, "type": "symfony-bundle", "extra": { @@ -8149,18 +8180,18 @@ }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony MonologBundle", - "homepage": "http://symfony.com", + "homepage": "https://symfony.com", "keywords": [ "log", "logging" ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.6.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.7.0" }, "funding": [ { @@ -8176,11 +8207,11 @@ "type": "tidelift" } ], - "time": "2020-10-06T15:12:11+00:00" + "time": "2021-03-31T07:20:47+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", @@ -8226,7 +8257,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v4.4.19" + "source": "https://github.com/symfony/options-resolver/tree/v4.4.20" }, "funding": [ { @@ -8246,7 +8277,7 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -8305,7 +8336,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" }, "funding": [ { @@ -8325,16 +8356,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "267a9adeb8ecb8071040a740930e077cdfb987af" + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/267a9adeb8ecb8071040a740930e077cdfb987af", - "reference": "267a9adeb8ecb8071040a740930e077cdfb987af", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", "shasum": "" }, "require": { @@ -8386,7 +8417,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" }, "funding": [ { @@ -8402,20 +8433,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6" + "reference": "af1842919c7e7364aaaa2798b29839e3ba168588" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/b2b1e732a6c039f1a3ea3414b3379a2433e183d6", - "reference": "b2b1e732a6c039f1a3ea3414b3379a2433e183d6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/af1842919c7e7364aaaa2798b29839e3ba168588", + "reference": "af1842919c7e7364aaaa2798b29839e3ba168588", "shasum": "" }, "require": { @@ -8473,7 +8504,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.22.1" }, "funding": [ { @@ -8489,20 +8520,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44" + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", - "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483", "shasum": "" }, "require": { @@ -8560,7 +8591,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.1" }, "funding": [ { @@ -8576,20 +8607,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "6e971c891537eb617a00bb07a43d182a6915faba" + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba", - "reference": "6e971c891537eb617a00bb07a43d182a6915faba", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", "shasum": "" }, "require": { @@ -8644,7 +8675,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" }, "funding": [ { @@ -8660,11 +8691,11 @@ "type": "tidelift" } ], - "time": "2021-01-07T17:09:11+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", @@ -8723,7 +8754,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" }, "funding": [ { @@ -8743,7 +8774,7 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -8806,7 +8837,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { @@ -8826,16 +8857,16 @@ }, { "name": "symfony/polyfill-uuid", - "version": "v1.22.0", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "17e0611d2e180a91d02b4fa8b03aab0368b661bc" + "reference": "9773608c15d3fe6ba2b6456a124777a7b8ffee2a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/17e0611d2e180a91d02b4fa8b03aab0368b661bc", - "reference": "17e0611d2e180a91d02b4fa8b03aab0368b661bc", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9773608c15d3fe6ba2b6456a124777a7b8ffee2a", + "reference": "9773608c15d3fe6ba2b6456a124777a7b8ffee2a", "shasum": "" }, "require": { @@ -8885,7 +8916,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.22.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.22.1" }, "funding": [ { @@ -8901,25 +8932,25 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/postmark-mailer", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/postmark-mailer.git", - "reference": "df0350a2ce68aec84d2c260cd4d427b01e2bc139" + "reference": "a98204fd59ceeb202de48fe40a4f0437669f21d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/postmark-mailer/zipball/df0350a2ce68aec84d2c260cd4d427b01e2bc139", - "reference": "df0350a2ce68aec84d2c260cd4d427b01e2bc139", + "url": "https://api.github.com/repos/symfony/postmark-mailer/zipball/a98204fd59ceeb202de48fe40a4f0437669f21d6", + "reference": "a98204fd59ceeb202de48fe40a4f0437669f21d6", "shasum": "" }, "require": { "php": ">=7.1.3", - "symfony/mailer": "^4.4|^5.0" + "symfony/mailer": "^4.4.21|^5.2.6" }, "require-dev": { "symfony/http-client": "^4.3|^5.0" @@ -8950,7 +8981,7 @@ "description": "Symfony Postmark Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/postmark-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/postmark-mailer/tree/v4.4.21" }, "funding": [ { @@ -8966,11 +8997,11 @@ "type": "tidelift" } ], - "time": "2021-01-01T09:24:35+00:00" + "time": "2021-03-12T11:23:44+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", @@ -9029,7 +9060,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v4.4.19" + "source": "https://github.com/symfony/property-access/tree/v4.4.20" }, "funding": [ { @@ -9049,16 +9080,16 @@ }, { "name": "symfony/property-info", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "3314c9f854b8693b12c81114556c1fb51b6d2bf7" + "reference": "67845c335482cea0dd52497ae1314ce7a4978c74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/3314c9f854b8693b12c81114556c1fb51b6d2bf7", - "reference": "3314c9f854b8693b12c81114556c1fb51b6d2bf7", + "url": "https://api.github.com/repos/symfony/property-info/zipball/67845c335482cea0dd52497ae1314ce7a4978c74", + "reference": "67845c335482cea0dd52497ae1314ce7a4978c74", "shasum": "" }, "require": { @@ -9117,7 +9148,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v4.4.19" + "source": "https://github.com/symfony/property-info/tree/v4.4.20" }, "funding": [ { @@ -9133,20 +9164,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-16T12:45:26+00:00" }, { "name": "symfony/routing", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "87529f6e305c7acb162840d1ea57922038072425" + "reference": "69919991c845b34626664ddc9b3aef9d09d2a5df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/87529f6e305c7acb162840d1ea57922038072425", - "reference": "87529f6e305c7acb162840d1ea57922038072425", + "url": "https://api.github.com/repos/symfony/routing/zipball/69919991c845b34626664ddc9b3aef9d09d2a5df", + "reference": "69919991c845b34626664ddc9b3aef9d09d2a5df", "shasum": "" }, "require": { @@ -9205,7 +9236,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.19" + "source": "https://github.com/symfony/routing/tree/v4.4.20" }, "funding": [ { @@ -9221,20 +9252,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-22T15:37:04+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "b2cd6ea94f82b0d018dd26275f18392881cab6d1" + "reference": "607dcdb60ef74d63fbeb86549c52075f040ae4cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/b2cd6ea94f82b0d018dd26275f18392881cab6d1", - "reference": "b2cd6ea94f82b0d018dd26275f18392881cab6d1", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/607dcdb60ef74d63fbeb86549c52075f040ae4cc", + "reference": "607dcdb60ef74d63fbeb86549c52075f040ae4cc", "shasum": "" }, "require": { @@ -9300,7 +9331,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v4.4.19" + "source": "https://github.com/symfony/security-bundle/tree/v4.4.21" }, "funding": [ { @@ -9316,20 +9347,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-22T08:54:48+00:00" }, { "name": "symfony/security-core", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "02da7f55df0a144972b0e012810d6515b5adf3fb" + "reference": "19a7caa988be4f013669a057861a1d2a3eacbbf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/02da7f55df0a144972b0e012810d6515b5adf3fb", - "reference": "02da7f55df0a144972b0e012810d6515b5adf3fb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/19a7caa988be4f013669a057861a1d2a3eacbbf3", + "reference": "19a7caa988be4f013669a057861a1d2a3eacbbf3", "shasum": "" }, "require": { @@ -9343,7 +9374,7 @@ "symfony/security-guard": "<4.3" }, "require-dev": { - "psr/container": "^1.0", + "psr/container": "^1.0|^2.0", "psr/log": "~1.0", "symfony/event-dispatcher": "^4.3", "symfony/expression-language": "^3.4|^4.0|^5.0", @@ -9386,7 +9417,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v4.4.19" + "source": "https://github.com/symfony/security-core/tree/v4.4.21" }, "funding": [ { @@ -9402,11 +9433,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-10T13:26:08+00:00" }, { "name": "symfony/security-csrf", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", @@ -9457,7 +9488,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v4.4.19" + "source": "https://github.com/symfony/security-csrf/tree/v4.4.20" }, "funding": [ { @@ -9477,7 +9508,7 @@ }, { "name": "symfony/security-guard", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", @@ -9523,7 +9554,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v4.4.19" + "source": "https://github.com/symfony/security-guard/tree/v4.4.20" }, "funding": [ { @@ -9543,16 +9574,16 @@ }, { "name": "symfony/security-http", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "c275805b0205403be4124b9cdef6eea72b09a28d" + "reference": "c5546b762376e4d9a806b08bf4495b2633573ff8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/c275805b0205403be4124b9cdef6eea72b09a28d", - "reference": "c275805b0205403be4124b9cdef6eea72b09a28d", + "url": "https://api.github.com/repos/symfony/security-http/zipball/c5546b762376e4d9a806b08bf4495b2633573ff8", + "reference": "c5546b762376e4d9a806b08bf4495b2633573ff8", "shasum": "" }, "require": { @@ -9601,7 +9632,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v4.4.19" + "source": "https://github.com/symfony/security-http/tree/v4.4.21" }, "funding": [ { @@ -9617,11 +9648,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-12T01:21:32+00:00" }, { "name": "symfony/sendgrid-mailer", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/sendgrid-mailer.git", @@ -9666,7 +9697,7 @@ "description": "Symfony Sendgrid Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/sendgrid-mailer/tree/v4.4.19" + "source": "https://github.com/symfony/sendgrid-mailer/tree/v4.4.20" }, "funding": [ { @@ -9686,16 +9717,16 @@ }, { "name": "symfony/serializer", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6b383bc45777d14857b634e9f8fa2b8a2e69b66d" + "reference": "9fa36329a06282e1fc856b84f645472a410c3922" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6b383bc45777d14857b634e9f8fa2b8a2e69b66d", - "reference": "6b383bc45777d14857b634e9f8fa2b8a2e69b66d", + "url": "https://api.github.com/repos/symfony/serializer/zipball/9fa36329a06282e1fc856b84f645472a410c3922", + "reference": "9fa36329a06282e1fc856b84f645472a410c3922", "shasum": "" }, "require": { @@ -9761,7 +9792,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v4.4.19" + "source": "https://github.com/symfony/serializer/tree/v4.4.20" }, "funding": [ { @@ -9777,7 +9808,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-26T12:02:03+00:00" }, { "name": "symfony/service-contracts", @@ -9860,7 +9891,7 @@ }, { "name": "symfony/stopwatch", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -9902,7 +9933,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v4.4.19" + "source": "https://github.com/symfony/stopwatch/tree/v4.4.20" }, "funding": [ { @@ -9922,16 +9953,16 @@ }, { "name": "symfony/string", - "version": "v5.2.3", + "version": "v5.2.6", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "c95468897f408dd0aca2ff582074423dd0455122" + "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122", - "reference": "c95468897f408dd0aca2ff582074423dd0455122", + "url": "https://api.github.com/repos/symfony/string/zipball/ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", + "reference": "ad0bd91bce2054103f5eaa18ebeba8d3bc2a0572", "shasum": "" }, "require": { @@ -9985,7 +10016,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.2.3" + "source": "https://github.com/symfony/string/tree/v5.2.6" }, "funding": [ { @@ -10001,20 +10032,20 @@ "type": "tidelift" } ], - "time": "2021-01-25T15:14:59+00:00" + "time": "2021-03-17T17:12:15+00:00" }, { "name": "symfony/translation", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e1d0c67167a553556d9f974b5fa79c2448df317a" + "reference": "eb8f5428cc3b40d6dffe303b195b084f1c5fbd14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e1d0c67167a553556d9f974b5fa79c2448df317a", - "reference": "e1d0c67167a553556d9f974b5fa79c2448df317a", + "url": "https://api.github.com/repos/symfony/translation/zipball/eb8f5428cc3b40d6dffe303b195b084f1c5fbd14", + "reference": "eb8f5428cc3b40d6dffe303b195b084f1c5fbd14", "shasum": "" }, "require": { @@ -10029,7 +10060,7 @@ "symfony/yaml": "<3.4" }, "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-implementation": "1.0|2.0" }, "require-dev": { "psr/log": "~1.0", @@ -10073,7 +10104,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.19" + "source": "https://github.com/symfony/translation/tree/v4.4.21" }, "funding": [ { @@ -10089,7 +10120,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-23T16:25:01+00:00" }, { "name": "symfony/translation-contracts", @@ -10171,16 +10202,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "85a27fe641886e07edcef52105df9b59225d4ceb" + "reference": "f5d0492a38c5325d9c322d406dbe95bc26fc530d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/85a27fe641886e07edcef52105df9b59225d4ceb", - "reference": "85a27fe641886e07edcef52105df9b59225d4ceb", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/f5d0492a38c5325d9c322d406dbe95bc26fc530d", + "reference": "f5d0492a38c5325d9c322d406dbe95bc26fc530d", "shasum": "" }, "require": { @@ -10196,7 +10227,7 @@ "symfony/workflow": "<4.3" }, "require-dev": { - "egulias/email-validator": "^2.1.10", + "egulias/email-validator": "^2.1.10|^3", "symfony/asset": "^3.4|^4.0|^5.0", "symfony/console": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", @@ -10206,6 +10237,7 @@ "symfony/form": "^4.4.17", "symfony/http-foundation": "^4.3|^5.0", "symfony/http-kernel": "^4.4", + "symfony/intl": "^4.4|^5.0", "symfony/mime": "^4.3|^5.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/routing": "^3.4|^4.0|^5.0", @@ -10219,9 +10251,9 @@ "symfony/web-link": "^4.4|^5.0", "symfony/workflow": "^4.3|^5.0", "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/cssinliner-extra": "^2.12", - "twig/inky-extra": "^2.12", - "twig/markdown-extra": "^2.12" + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" }, "suggest": { "symfony/asset": "For using the AssetExtension", @@ -10266,7 +10298,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v4.4.19" + "source": "https://github.com/symfony/twig-bridge/tree/v4.4.21" }, "funding": [ { @@ -10282,11 +10314,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-16T08:08:39+00:00" }, { "name": "symfony/twig-bundle", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", @@ -10353,7 +10385,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v4.4.19" + "source": "https://github.com/symfony/twig-bundle/tree/v4.4.20" }, "funding": [ { @@ -10373,16 +10405,16 @@ }, { "name": "symfony/uid", - "version": "v5.2.3", + "version": "v5.2.6", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "959f69a8c0d68a37311eeabd630a0ef0979bc1d0" + "reference": "47d4347b762f0bab9b4ec02112ddfaaa6d79481b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/959f69a8c0d68a37311eeabd630a0ef0979bc1d0", - "reference": "959f69a8c0d68a37311eeabd630a0ef0979bc1d0", + "url": "https://api.github.com/repos/symfony/uid/zipball/47d4347b762f0bab9b4ec02112ddfaaa6d79481b", + "reference": "47d4347b762f0bab9b4ec02112ddfaaa6d79481b", "shasum": "" }, "require": { @@ -10423,7 +10455,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v5.2.3" + "source": "https://github.com/symfony/uid/tree/v5.2.6" }, "funding": [ { @@ -10439,20 +10471,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T20:50:00+00:00" + "time": "2021-03-21T16:15:38+00:00" }, { "name": "symfony/validator", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "039479123c8d824f23efba9bb413b85dc3f42e43" + "reference": "c00da06b82b8591548f52b4d6aad0faa0985843e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/039479123c8d824f23efba9bb413b85dc3f42e43", - "reference": "039479123c8d824f23efba9bb413b85dc3f42e43", + "url": "https://api.github.com/repos/symfony/validator/zipball/c00da06b82b8591548f52b4d6aad0faa0985843e", + "reference": "c00da06b82b8591548f52b4d6aad0faa0985843e", "shasum": "" }, "require": { @@ -10473,7 +10505,7 @@ "require-dev": { "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.0", - "egulias/email-validator": "^2.1.10", + "egulias/email-validator": "^2.1.10|^3", "symfony/cache": "^3.4|^4.0|^5.0", "symfony/config": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", @@ -10528,7 +10560,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.19" + "source": "https://github.com/symfony/validator/tree/v4.4.21" }, "funding": [ { @@ -10544,20 +10576,20 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-23T11:25:54+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f" + "reference": "0da0e174f728996f5d5072d6a9f0a42259dbc806" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a1eab2f69906dc83c5ddba4632180260d0ab4f7f", - "reference": "a1eab2f69906dc83c5ddba4632180260d0ab4f7f", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/0da0e174f728996f5d5072d6a9f0a42259dbc806", + "reference": "0da0e174f728996f5d5072d6a9f0a42259dbc806", "shasum": "" }, "require": { @@ -10617,7 +10649,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.19" + "source": "https://github.com/symfony/var-dumper/tree/v4.4.21" }, "funding": [ { @@ -10633,11 +10665,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-27T19:49:03+00:00" }, { "name": "symfony/var-exporter", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", @@ -10689,7 +10721,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v4.4.19" + "source": "https://github.com/symfony/var-exporter/tree/v4.4.20" }, "funding": [ { @@ -10709,16 +10741,16 @@ }, { "name": "symfony/webpack-encore-bundle", - "version": "v1.9.0", + "version": "v1.11.1", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "ea80d29e82da32942dc796c02b48e83b98665aaa" + "reference": "395b60a549ded8e7f77f0d551815d7555e2d9eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/ea80d29e82da32942dc796c02b48e83b98665aaa", - "reference": "ea80d29e82da32942dc796c02b48e83b98665aaa", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/395b60a549ded8e7f77f0d551815d7555e2d9eb0", + "reference": "395b60a549ded8e7f77f0d551815d7555e2d9eb0", "shasum": "" }, "require": { @@ -10760,7 +10792,7 @@ "description": "Integration with your Symfony app & Webpack Encore!", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.9.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v1.11.1" }, "funding": [ { @@ -10776,20 +10808,20 @@ "type": "tidelift" } ], - "time": "2021-01-15T16:57:00+00:00" + "time": "2021-02-17T13:45:51+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9" + "reference": "3871c720871029f008928244e56cf43497da7e9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9", - "reference": "17ed9f14c1aa05b1a5cf2e2c5ef2d0be28058ef9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/3871c720871029f008928244e56cf43497da7e9d", + "reference": "3871c720871029f008928244e56cf43497da7e9d", "shasum": "" }, "require": { @@ -10831,7 +10863,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.19" + "source": "https://github.com/symfony/yaml/tree/v4.4.21" }, "funding": [ { @@ -10847,7 +10879,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-05T17:58:50+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -10904,7 +10936,7 @@ }, { "name": "twig/cssinliner-extra", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/cssinliner-extra.git", @@ -10958,7 +10990,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.2.1" + "source": "https://github.com/twigphp/cssinliner-extra/tree/v3.3.0" }, "funding": [ { @@ -10974,23 +11006,23 @@ }, { "name": "twig/extra-bundle", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "07c94c7dcfe7e49abd45d4083ca5544a34969714" + "reference": "e2d27a86c3f47859eb07808fa7c8679d30fcbdde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/07c94c7dcfe7e49abd45d4083ca5544a34969714", - "reference": "07c94c7dcfe7e49abd45d4083ca5544a34969714", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e2d27a86c3f47859eb07808fa7c8679d30fcbdde", + "reference": "e2d27a86c3f47859eb07808fa7c8679d30fcbdde", "shasum": "" }, "require": { "php": "^7.1.3|^8.0", "symfony/framework-bundle": "^4.3|^5.0", "symfony/twig-bundle": "^4.3|^5.0", - "twig/twig": "^3.2" + "twig/twig": "^2.4|^3.0" }, "require-dev": { "symfony/phpunit-bridge": "^4.4.9|^5.0.9", @@ -11036,7 +11068,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.2.1" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.3.0" }, "funding": [ { @@ -11048,11 +11080,11 @@ "type": "tidelift" } ], - "time": "2021-01-05T15:24:51+00:00" + "time": "2021-02-06T21:13:17+00:00" }, { "name": "twig/inky-extra", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/inky-extra.git", @@ -11107,7 +11139,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/inky-extra/tree/v3.2.1" + "source": "https://github.com/twigphp/inky-extra/tree/v3.3.0" }, "funding": [ { @@ -11123,7 +11155,7 @@ }, { "name": "twig/intl-extra", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", @@ -11176,7 +11208,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/intl-extra/tree/v3.2.1" + "source": "https://github.com/twigphp/intl-extra/tree/v3.3.0" }, "funding": [ { @@ -11192,21 +11224,22 @@ }, { "name": "twig/string-extra", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "8aaf91255d3c524dc09d3e474e3172626ac05c2b" + "reference": "8a8bb5631e8e27573fae741211b9c752b9b0b428" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/8aaf91255d3c524dc09d3e474e3172626ac05c2b", - "reference": "8aaf91255d3c524dc09d3e474e3172626ac05c2b", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/8a8bb5631e8e27573fae741211b9c752b9b0b428", + "reference": "8a8bb5631e8e27573fae741211b9c752b9b0b428", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/string": "^5.0", + "symfony/translation-contracts": "^1.1|^2", "twig/twig": "^2.4|^3.0" }, "require-dev": { @@ -11247,7 +11280,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.2.1" + "source": "https://github.com/twigphp/string-extra/tree/v3.3.0" }, "funding": [ { @@ -11259,20 +11292,20 @@ "type": "tidelift" } ], - "time": "2021-01-01T14:58:18+00:00" + "time": "2021-01-29T14:39:43+00:00" }, { "name": "twig/twig", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "f795ca686d38530045859b0350b5352f7d63447d" + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/f795ca686d38530045859b0350b5352f7d63447d", - "reference": "f795ca686d38530045859b0350b5352f7d63447d", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", "shasum": "" }, "require": { @@ -11287,7 +11320,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -11323,7 +11356,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.2.1" + "source": "https://github.com/twigphp/Twig/tree/v3.3.0" }, "funding": [ { @@ -11335,7 +11368,7 @@ "type": "tidelift" } ], - "time": "2021-01-05T15:40:36+00:00" + "time": "2021-02-08T09:54:36+00:00" }, { "name": "voku/portable-ascii", @@ -11413,30 +11446,35 @@ }, { "name": "webmozart/assert", - "version": "1.9.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", + "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", + "php": "^7.2 || ^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" + "vimeo/psalm": "<4.6.1 || 4.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" + "phpunit/phpunit": "^8.5.13" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -11460,9 +11498,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.9.1" + "source": "https://github.com/webmozarts/assert/tree/1.10.0" }, - "time": "2020-07-08T17:02:28+00:00" + "time": "2021-03-09T10:59:23+00:00" }, { "name": "willdurand/jsonp-callback-validator", @@ -11768,16 +11806,16 @@ }, { "name": "composer/xdebug-handler", - "version": "1.4.5", + "version": "1.4.6", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "f28d44c286812c714741478d968104c5e604a1d4" + "reference": "f27e06cd9675801df441b3656569b328e04aa37c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", - "reference": "f28d44c286812c714741478d968104c5e604a1d4", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f27e06cd9675801df441b3656569b328e04aa37c", + "reference": "f27e06cd9675801df441b3656569b328e04aa37c", "shasum": "" }, "require": { @@ -11785,7 +11823,8 @@ "psr/log": "^1.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", "autoload": { @@ -11811,7 +11850,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + "source": "https://github.com/composer/xdebug-handler/tree/1.4.6" }, "funding": [ { @@ -11827,7 +11866,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T08:04:11+00:00" + "time": "2021-03-25T17:01:18+00:00" }, { "name": "dama/doctrine-test-bundle", @@ -12052,16 +12091,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.18.2", + "version": "v2.18.5", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "18f8c9d184ba777380794a389fabc179896ba913" + "reference": "e0f6d05c8b157f50029ca6c65c19ed2694f475bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/18f8c9d184ba777380794a389fabc179896ba913", - "reference": "18f8c9d184ba777380794a389fabc179896ba913", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/e0f6d05c8b157f50029ca6c65c19ed2694f475bf", + "reference": "e0f6d05c8b157f50029ca6c65c19ed2694f475bf", "shasum": "" }, "require": { @@ -12123,6 +12162,7 @@ "tests/Test/IntegrationCaseFactoryInterface.php", "tests/Test/InternalIntegrationCaseFactory.php", "tests/Test/IsIdenticalConstraint.php", + "tests/Test/TokensWithObservedTransformers.php", "tests/TestCase.php" ] }, @@ -12143,7 +12183,7 @@ "description": "A tool to automatically fix PHP code style", "support": { "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.18.2" + "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.18.5" }, "funding": [ { @@ -12151,7 +12191,7 @@ "type": "github" } ], - "time": "2021-01-26T00:22:21+00:00" + "time": "2021-04-06T18:37:33+00:00" }, { "name": "fzaninotto/faker", @@ -12326,16 +12366,16 @@ }, { "name": "phar-io/version", - "version": "3.0.4", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" + "reference": "bae7c545bef187884426f042434e561ab1ddb182" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", + "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", + "reference": "bae7c545bef187884426f042434e561ab1ddb182", "shasum": "" }, "require": { @@ -12371,9 +12411,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.0.4" + "source": "https://github.com/phar-io/version/tree/3.1.0" }, - "time": "2020-12-13T23:18:30+00:00" + "time": "2021-02-23T14:00:09+00:00" }, { "name": "php-cs-fixer/diff", @@ -12432,16 +12472,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.12.2", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "245710e971a030f42e08f4912863805570f23d39" + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39", - "reference": "245710e971a030f42e08f4912863805570f23d39", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", + "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", "shasum": "" }, "require": { @@ -12493,9 +12533,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.12.2" + "source": "https://github.com/phpspec/prophecy/tree/1.13.0" }, - "time": "2020-12-19T10:15:11+00:00" + "time": "2021-03-17T13:42:18+00:00" }, { "name": "phpstan/phpstan", @@ -13049,16 +13089,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.14", + "version": "8.5.15", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c25f79895d27b6ecd5abfa63de1606b786a461a3" + "reference": "038d4196d8e8cb405cd5e82cedfe413ad6eef9ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c25f79895d27b6ecd5abfa63de1606b786a461a3", - "reference": "c25f79895d27b6ecd5abfa63de1606b786a461a3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/038d4196d8e8cb405cd5e82cedfe413ad6eef9ef", + "reference": "038d4196d8e8cb405cd5e82cedfe413ad6eef9ef", "shasum": "" }, "require": { @@ -13130,7 +13170,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.14" + "source": "https://github.com/sebastianbergmann/phpunit/tree/8.5.15" }, "funding": [ { @@ -13142,7 +13182,7 @@ "type": "github" } ], - "time": "2021-01-17T07:37:30+00:00" + "time": "2021-03-17T07:27:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -13875,16 +13915,16 @@ }, { "name": "symfony/browser-kit", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "f6f060bdc473c3f3b1f00e2ebdeb3d02eda77f82" + "reference": "cfa8d92f95294747e3abc04969efee51ed374424" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f6f060bdc473c3f3b1f00e2ebdeb3d02eda77f82", - "reference": "f6f060bdc473c3f3b1f00e2ebdeb3d02eda77f82", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/cfa8d92f95294747e3abc04969efee51ed374424", + "reference": "cfa8d92f95294747e3abc04969efee51ed374424", "shasum": "" }, "require": { @@ -13926,7 +13966,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.19" + "source": "https://github.com/symfony/browser-kit/tree/v4.4.20" }, "funding": [ { @@ -13942,11 +13982,11 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-02-18T10:52:56+00:00" }, { "name": "symfony/debug-bundle", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", @@ -14004,7 +14044,7 @@ "description": "Provides a tight integration of the Symfony Debug component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v4.4.19" + "source": "https://github.com/symfony/debug-bundle/tree/v4.4.20" }, "funding": [ { @@ -14088,42 +14128,42 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.28.0", + "version": "v1.30.2", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "6f4d27a68c92179c124f5331a27e32d197c9bd59" + "reference": "a395a85aa4ded6c1fa3da118d60329b64b6c2acd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/6f4d27a68c92179c124f5331a27e32d197c9bd59", - "reference": "6f4d27a68c92179c124f5331a27e32d197c9bd59", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a395a85aa4ded6c1fa3da118d60329b64b6c2acd", + "reference": "a395a85aa4ded6c1fa3da118d60329b64b6c2acd", "shasum": "" }, "require": { "doctrine/inflector": "^1.2|^2.0", "nikic/php-parser": "^4.0", "php": ">=7.1.3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/config": "^4.0|^5.0", + "symfony/console": "^4.0|^5.0", + "symfony/dependency-injection": "^4.0|^5.0", "symfony/deprecation-contracts": "^2.2", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/filesystem": "^4.0|^5.0", + "symfony/finder": "^4.0|^5.0", + "symfony/framework-bundle": "^4.0|^5.0", + "symfony/http-kernel": "^4.0|^5.0" }, "require-dev": { "composer/semver": "^3.0@dev", "doctrine/doctrine-bundle": "^1.8|^2.0", "doctrine/orm": "^2.3", "friendsofphp/php-cs-fixer": "^2.8", - "friendsoftwig/twigcs": "^3.1.2", + "friendsoftwig/twigcs": "^4.1.0|^5.0.0", "symfony/http-client": "^4.3|^5.0", "symfony/phpunit-bridge": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/security-core": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/process": "^4.0|^5.0", + "symfony/security-core": "^4.0|^5.0", + "symfony/yaml": "^4.0|^5.0" }, "type": "symfony-bundle", "extra": { @@ -14156,7 +14196,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.28.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.30.2" }, "funding": [ { @@ -14172,20 +14212,20 @@ "type": "tidelift" } ], - "time": "2021-01-15T18:19:20+00:00" + "time": "2021-03-23T13:53:38+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "85a2fcd7a7111b503962a5f0a55f34ea41dfe2cf" + "reference": "a34407514dd6bd1da99c1ab572faa99896e14f4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/85a2fcd7a7111b503962a5f0a55f34ea41dfe2cf", - "reference": "85a2fcd7a7111b503962a5f0a55f34ea41dfe2cf", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a34407514dd6bd1da99c1ab572faa99896e14f4c", + "reference": "a34407514dd6bd1da99c1ab572faa99896e14f4c", "shasum": "" }, "require": { @@ -14238,7 +14278,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.19" + "source": "https://github.com/symfony/phpunit-bridge/tree/v4.4.21" }, "funding": [ { @@ -14254,11 +14294,11 @@ "type": "tidelift" } ], - "time": "2021-01-20T20:19:14+00:00" + "time": "2021-03-23T20:33:06+00:00" }, { "name": "symfony/process", - "version": "v4.4.19", + "version": "v4.4.20", "source": { "type": "git", "url": "https://github.com/symfony/process.git", @@ -14299,7 +14339,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.19" + "source": "https://github.com/symfony/process/tree/v4.4.20" }, "funding": [ { @@ -14364,16 +14404,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v4.4.19", + "version": "v4.4.21", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "6cde98609e1dd9afa9840b9c222a59ee40cef2db" + "reference": "bd848a0c0f3e7229e329adeea10e8945f70cb4c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6cde98609e1dd9afa9840b9c222a59ee40cef2db", - "reference": "6cde98609e1dd9afa9840b9c222a59ee40cef2db", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/bd848a0c0f3e7229e329adeea10e8945f70cb4c9", + "reference": "bd848a0c0f3e7229e329adeea10e8945f70cb4c9", "shasum": "" }, "require": { @@ -14422,7 +14462,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.19" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v4.4.21" }, "funding": [ { @@ -14438,7 +14478,7 @@ "type": "tidelift" } ], - "time": "2021-01-27T09:09:26+00:00" + "time": "2021-03-15T15:12:10+00:00" }, { "name": "theseer/tokenizer", @@ -14497,7 +14537,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.2", + "php": "^7.2.9", "ext-gd": "*", "ext-intl": "*", "ext-json": "*", diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 58dbf864..bc60488d 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -11,6 +11,7 @@ doctrine: default_connection: default connections: default: + override_url: true # existing migrations will fail if the schema filter is activated #schema_filter: ~^(?!(bundle_migration_|kimai2_sessions))~ url: '%env(DATABASE_URL)%' diff --git a/config/packages/fos_rest.yaml b/config/packages/fos_rest.yaml index 8c7b8699..106ca106 100644 --- a/config/packages/fos_rest.yaml +++ b/config/packages/fos_rest.yaml @@ -26,7 +26,6 @@ fos_rest: 'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException': 404 'App\API\NotFoundException': 404 - 'Pagerfanta\Exception\OutOfRangeCurrentPageException': 404 body_listener: enabled: true decoders: @@ -45,7 +44,7 @@ handcraftedinthealps_rest_routing: routing_loader: default_format: 'json' prefix_methods: true - include_format: true + include_format: false formats: json: true xml: false diff --git a/config/packages/nelmio_api_doc.yaml b/config/packages/nelmio_api_doc.yaml index 3fd94c47..bc6a76df 100644 --- a/config/packages/nelmio_api_doc.yaml +++ b/config/packages/nelmio_api_doc.yaml @@ -42,9 +42,9 @@ nelmio_api_doc: - ^/api(?!/doc) documentation: info: - title: Kimai 2 - API Docs + title: Kimai - API Docs description: | - JSON API for the Kimai 2 time-tracking software: [API documentation](https://www.kimai.org/documentation/rest-api.html), [Swagger definition file](doc.json) + JSON API for the Kimai time-tracking software: [API documentation](https://www.kimai.org/documentation/rest-api.html), [Swagger definition file](doc.json) version: '0.6' securityDefinitions: apiUser: diff --git a/src/API/NotFoundException.php b/src/API/NotFoundException.php index ce8a84a2..fb46d9ea 100644 --- a/src/API/NotFoundException.php +++ b/src/API/NotFoundException.php @@ -15,7 +15,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class NotFoundException extends NotFoundHttpException { - public function __construct(string $message = 'Not found', \Exception $previous = null, int $code = 0, array $headers = []) + public function __construct(string $message = 'Not found', \Exception $previous = null, int $code = 404, array $headers = []) { parent::__construct($message, $previous, $code, $headers); } diff --git a/src/EventSubscriber/PagerfantaExceptionSubscriber.php b/src/EventSubscriber/PagerfantaExceptionSubscriber.php new file mode 100644 index 00000000..5d45ac45 --- /dev/null +++ b/src/EventSubscriber/PagerfantaExceptionSubscriber.php @@ -0,0 +1,45 @@ + ['onCoreException', 1] + ]; + } + + /** + * @param ExceptionEvent $event + */ + public function onCoreException(ExceptionEvent $event) + { + $throwable = $event->getThrowable(); + + if ($throwable instanceof NotValidMaxPerPageException || $throwable instanceof OutOfRangeCurrentPageException) { + $notFoundHttpException = new NotFoundHttpException($throwable->getMessage(), $throwable, $throwable->getCode()); + $event->setThrowable($notFoundHttpException); + } + } +} diff --git a/src/Form/FormTrait.php b/src/Form/FormTrait.php index bfa4e29a..94ae067c 100644 --- a/src/Form/FormTrait.php +++ b/src/Form/FormTrait.php @@ -28,27 +28,25 @@ use Symfony\Component\Form\FormEvent; use Symfony\Component\Form\FormEvents; /** - * Defines the form used to manipulate Timesheet entries. - * @internal + * Helper functions to manage dependent customer-project-activity fields. */ trait FormTrait { protected function addCustomer(FormBuilderInterface $builder, ?Customer $customer = null) { - $builder - ->add('customer', CustomerType::class, [ - 'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) { - $query = new CustomerFormTypeQuery($customer); - $query->setUser($builder->getOption('user')); + $builder->add('customer', CustomerType::class, [ + 'query_builder' => function (CustomerRepository $repo) use ($builder, $customer) { + $query = new CustomerFormTypeQuery($customer); + $query->setUser($builder->getOption('user')); - return $repo->getQueryBuilderForFormType($query); - }, - 'data' => $customer ? $customer : '', - 'required' => false, - 'placeholder' => '', - 'mapped' => false, - 'project_enabled' => true, - ]); + return $repo->getQueryBuilderForFormType($query); + }, + 'data' => $customer ? $customer : '', + 'required' => false, + 'placeholder' => '', + 'mapped' => false, + 'project_enabled' => true, + ]); } protected function addProject(FormBuilderInterface $builder, bool $isNew, ?Project $project = null, ?Customer $customer = null) @@ -102,17 +100,15 @@ trait FormTrait protected function addActivity(FormBuilderInterface $builder, ?Activity $activity = null, ?Project $project = null) { - $builder - ->add('activity', ActivityType::class, [ - 'placeholder' => '', - 'query_builder' => function (ActivityRepository $repo) use ($builder, $activity, $project) { - $query = new ActivityFormTypeQuery($activity, $project); - $query->setUser($builder->getOption('user')); + $builder->add('activity', ActivityType::class, [ + 'placeholder' => '', + 'query_builder' => function (ActivityRepository $repo) use ($builder, $activity, $project) { + $query = new ActivityFormTypeQuery($activity, $project); + $query->setUser($builder->getOption('user')); - return $repo->getQueryBuilderForFormType($query); - }, - ]) - ; + return $repo->getQueryBuilderForFormType($query); + }, + ]); // replaces the activity select after submission, to make sure only activities for the selected project are displayed $builder->addEventListener( @@ -143,20 +139,23 @@ trait FormTrait { @trigger_error('FormTrait::addDescription() is deprecated and will be removed with 2.0, use DescriptionType instead', E_USER_DEPRECATED); - $builder - ->add('description', DescriptionType::class, [ - 'required' => false, - 'attr' => [ - 'autofocus' => 'autofocus' - ] - ]); + $builder->add('description', DescriptionType::class, [ + 'required' => false, + 'attr' => [ + 'autofocus' => 'autofocus' + ] + ]); } + /** + * @deprecated since 1.14 + */ protected function addTags(FormBuilderInterface $builder) { - $builder - ->add('tags', TagsType::class, [ - 'required' => false, - ]); + @trigger_error('FormTrait::addTags() is deprecated and will be removed with 2.0, use TagsType instead', E_USER_DEPRECATED); + + $builder->add('tags', TagsType::class, [ + 'required' => false, + ]); } } diff --git a/src/Form/TimesheetEditForm.php b/src/Form/TimesheetEditForm.php index cfdfdd93..78c3cc02 100644 --- a/src/Form/TimesheetEditForm.php +++ b/src/Form/TimesheetEditForm.php @@ -16,6 +16,7 @@ use App\Form\Type\DurationType; use App\Form\Type\FixedRateType; use App\Form\Type\HourlyRateType; use App\Form\Type\MetaFieldsCollectionType; +use App\Form\Type\TagsType; use App\Form\Type\UserType; use App\Form\Type\YesNoType; use App\Repository\CustomerRepository; @@ -121,8 +122,7 @@ class TimesheetEditForm extends AbstractType $descriptionOptions['attr'] = ['autofocus' => 'autofocus']; } $builder->add('description', DescriptionType::class, $descriptionOptions); - - $this->addTags($builder); + $builder->add('tags', TagsType::class, ['required' => false]); $this->addRates($builder, $currency, $options); $this->addUser($builder, $options); $builder->add('metaFields', MetaFieldsCollectionType::class); diff --git a/src/Twig/Runtime/MarkdownExtension.php b/src/Twig/Runtime/MarkdownExtension.php index 1437c186..12a4da7f 100644 --- a/src/Twig/Runtime/MarkdownExtension.php +++ b/src/Twig/Runtime/MarkdownExtension.php @@ -69,6 +69,36 @@ final class MarkdownExtension implements RuntimeExtensionInterface return $content; } + /** + * Transforms the entities comment (customer, project, activity ...) into a one-liner. + * + * @param string|null $content + * @param bool $fullLength + * @return string + */ + public function commentOneLiner(?string $content, bool $fullLength = false): string + { + if (empty($content)) { + return ''; + } + + $addHellip = false; + + if (!$fullLength && \strlen($content) > 52) { + $content = trim(substr($content, 0, 50)); + $addHellip = true; + } + + $content = explode(PHP_EOL, $content); + $result = $content[0]; + + if (\count($content) > 1 || $addHellip) { + $result .= ' …'; + } + + return $result; + } + /** * Transforms the timesheet description content into HTML. * diff --git a/src/Twig/RuntimeExtensions.php b/src/Twig/RuntimeExtensions.php index 4a47fd70..6fbbde47 100644 --- a/src/Twig/RuntimeExtensions.php +++ b/src/Twig/RuntimeExtensions.php @@ -44,6 +44,7 @@ class RuntimeExtensions extends AbstractExtension new TwigFilter('md2html', [MarkdownExtension::class, 'markdownToHtml'], ['pre_escape' => 'html', 'is_safe' => ['html']]), new TwigFilter('desc2html', [MarkdownExtension::class, 'timesheetContent'], ['pre_escape' => 'html', 'is_safe' => ['html']]), new TwigFilter('comment2html', [MarkdownExtension::class, 'commentContent'], ['pre_escape' => 'html', 'is_safe' => ['html']]), + new TwigFilter('comment1line', [MarkdownExtension::class, 'commentOneLiner'], ['pre_escape' => 'html', 'is_safe' => ['html']]), ]; } } diff --git a/symfony.lock b/symfony.lock index e74f0318..cca7a38c 100644 --- a/symfony.lock +++ b/symfony.lock @@ -44,6 +44,9 @@ "doctrine/dbal": { "version": "v2.6.3" }, + "doctrine/deprecations": { + "version": "v0.5.3" + }, "doctrine/doctrine-bundle": { "version": "1.6", "recipe": { diff --git a/templates/activity/index.html.twig b/templates/activity/index.html.twig index 42601b9d..cd0c7071 100644 --- a/templates/activity/index.html.twig +++ b/templates/activity/index.html.twig @@ -60,7 +60,7 @@ {% endif %} {% endif %} - {{ entry.comment|comment2html }} + {{ entry.comment|comment1line }} {% for field in metaColumns %} {{ tables.datatable_meta_column(entry, field) }} diff --git a/templates/customer/embed_projects.html.twig b/templates/customer/embed_projects.html.twig index 5f9dabd7..efc1f8b9 100644 --- a/templates/customer/embed_projects.html.twig +++ b/templates/customer/embed_projects.html.twig @@ -37,7 +37,7 @@ {% for project in projects %} {{ widgets.label_project(project) }} - {{ project.comment|comment2html }} + {{ project.comment|comment1line(false) }} {% if project.end is not null %}{{ project.end|date_short }}{% endif %} {{ widgets.label_visible(project.visible) }} {{ widgets.badge_team_access(project.teams) }} diff --git a/templates/customer/index.html.twig b/templates/customer/index.html.twig index 3ba35d4d..fd1cb877 100644 --- a/templates/customer/index.html.twig +++ b/templates/customer/index.html.twig @@ -59,7 +59,7 @@ {% endif %} {{ widgets.label_color_dot('customer', true, entry.name, null, entry.color) }} - {{ entry.comment|comment2html }} + {{ entry.comment|comment1line }} {{ entry.number }} {{ entry.company }} {{ entry.vatId }} diff --git a/templates/project/embed_activities.html.twig b/templates/project/embed_activities.html.twig index 87cef846..0f6298ab 100644 --- a/templates/project/embed_activities.html.twig +++ b/templates/project/embed_activities.html.twig @@ -33,7 +33,7 @@ {% for activity in activities %} {{ widgets.label_activity(activity) }} - {{ activity.comment|comment2html }} + {{ activity.comment|comment1line(false) }} {{ widgets.label_visible(activity.visible) }} {{ widgets.badge_team_access(activity.teams) }} {{ actions.activity(activity, 'custom') }} diff --git a/templates/project/index.html.twig b/templates/project/index.html.twig index 2c411f95..d2f2511d 100644 --- a/templates/project/index.html.twig +++ b/templates/project/index.html.twig @@ -53,7 +53,7 @@ {{ widgets.label_color_dot('project', true, entry.name, null, entry.color) }} {{ widgets.label_customer(entry.customer) }} - {{ entry.comment|comment2html }} + {{ entry.comment|comment1line }} {{ entry.orderNumber }} {% if entry.orderDate is not null %}{{ entry.orderDate|date_full }}{% endif %} {% if entry.start is not null %}{{ entry.start|date_full }}{% endif %} diff --git a/templates/timesheet/layout-listing.html.twig b/templates/timesheet/layout-listing.html.twig index dc6d246e..ddad6d72 100644 --- a/templates/timesheet/layout-listing.html.twig +++ b/templates/timesheet/layout-listing.html.twig @@ -45,6 +45,7 @@ }) %} {% endfor %} {% set columns = columns|merge({ + 'exported': {'class': 'text-center hidden w-min', 'orderBy': false}, 'actions': {'class': 'actions alwaysVisible'}, }) %} @@ -162,6 +163,9 @@ {{ tables.datatable_meta_column(entry, field) }} {% endfor %} + + {{ widgets.label_boolean(entry.exported) }} + {{ block('row_action') }} diff --git a/tests/API/APIControllerBaseTest.php b/tests/API/APIControllerBaseTest.php index 1272e64f..ec162838 100644 --- a/tests/API/APIControllerBaseTest.php +++ b/tests/API/APIControllerBaseTest.php @@ -60,21 +60,8 @@ abstract class APIControllerBaseTest extends ControllerBaseTest return $client; } - /** - * @param string $url - * @param bool $json - * @return string - */ - protected function createUrl($url, $json = true) + protected function createUrl(string $url): string { - if ($json) { - if (stripos($url, '?') !== false) { - $url = str_replace('?', '.json?', $url); - } else { - $url .= '.json'; - } - } - return '/' . ltrim($url, '/'); } diff --git a/tests/API/ApiDocControllerTest.php b/tests/API/ApiDocControllerTest.php index eafe4a0b..3e7c2bda 100644 --- a/tests/API/ApiDocControllerTest.php +++ b/tests/API/ApiDocControllerTest.php @@ -26,7 +26,7 @@ class ApiDocControllerTest extends ControllerBaseTest { $client = $this->getClientForAuthenticatedUser(User::ROLE_USER); $this->assertAccessIsGranted($client, '/api/doc'); - $this->assertStringContainsString('Kimai 2 - API Docs', $client->getResponse()->getContent()); + $this->assertStringContainsString('Kimai - API Docs', $client->getResponse()->getContent()); $result = $client->getCrawler()->filter('script#swagger-data'); $swaggerJson = json_decode($result->text(), true); $tags = []; @@ -51,17 +51,13 @@ class ApiDocControllerTest extends ControllerBaseTest { $client = $this->getClientForAuthenticatedUser(User::ROLE_USER); $this->assertAccessIsGranted($client, '/api/doc.json'); - $this->assertStringContainsString('"title":"Kimai 2 - API Docs"', $client->getResponse()->getContent()); + $this->assertStringContainsString('"title":"Kimai - API Docs"', $client->getResponse()->getContent()); $result = json_decode($client->getResponse()->getContent(), true); $this->assertIsArray($result); $this->assertNotEmpty($result); } - /** - * @param string $url - * @return string - */ - protected function createUrl($url) + protected function createUrl(string $url): string { return '/' . ltrim($url, '/'); } diff --git a/tests/API/NotFoundExceptionTest.php b/tests/API/NotFoundExceptionTest.php new file mode 100644 index 00000000..4cfde6ba --- /dev/null +++ b/tests/API/NotFoundExceptionTest.php @@ -0,0 +1,26 @@ +getMessage()); + self::assertEquals(404, $sut->getCode()); + } +} diff --git a/tests/Controller/ControllerBaseTest.php b/tests/Controller/ControllerBaseTest.php index bbd595d1..0cf68f96 100644 --- a/tests/Controller/ControllerBaseTest.php +++ b/tests/Controller/ControllerBaseTest.php @@ -79,11 +79,7 @@ abstract class ControllerBaseTest extends WebTestCase return $client; } - /** - * @param string $url - * @return string - */ - protected function createUrl($url) + protected function createUrl(string $url): string { return '/' . self::DEFAULT_LANGUAGE . '/' . ltrim($url, '/'); } diff --git a/tests/EventSubscriber/PagerfantaExceptionSubscriberTest.php b/tests/EventSubscriber/PagerfantaExceptionSubscriberTest.php new file mode 100644 index 00000000..c73b7e10 --- /dev/null +++ b/tests/EventSubscriber/PagerfantaExceptionSubscriberTest.php @@ -0,0 +1,62 @@ +assertArrayHasKey(KernelEvents::EXCEPTION, $events); + $methodName = $events[KernelEvents::EXCEPTION][0]; + $this->assertTrue(method_exists(PagerfantaExceptionSubscriber::class, $methodName)); + } + + public function testWithExceptions() + { + $sut = new PagerfantaExceptionSubscriber(); + + $kernel = $this->createMock(HttpKernelInterface::class); + $request = $this->createMock(Request::class); + $exception = new \Exception(); + $requestType = HttpKernelInterface::MASTER_REQUEST; + + $event = new ExceptionEvent($kernel, $request, $requestType, $exception); + $sut->onCoreException($event); + self::assertSame($exception, $event->getThrowable()); + + $event = new ExceptionEvent($kernel, $request, $requestType, new NotValidMaxPerPageException('Foo baaaaar!', 999)); + $sut->onCoreException($event); + self::assertInstanceOf(NotFoundHttpException::class, $event->getThrowable()); + self::assertEquals('Foo baaaaar!', $event->getThrowable()->getMessage()); + self::assertEquals(999, $event->getThrowable()->getCode()); + self::assertEquals(404, $event->getThrowable()->getStatusCode()); + + $event = new ExceptionEvent($kernel, $request, $requestType, new OutOfRangeCurrentPageException('Trölölölölölö', 123)); + $sut->onCoreException($event); + self::assertInstanceOf(NotFoundHttpException::class, $event->getThrowable()); + self::assertEquals('Trölölölölölö', $event->getThrowable()->getMessage()); + self::assertEquals(123, $event->getThrowable()->getCode()); + self::assertEquals(404, $event->getThrowable()->getStatusCode()); + } +} diff --git a/tests/Twig/Runtime/MarkdownExtensionTest.php b/tests/Twig/Runtime/MarkdownExtensionTest.php index 66c8e104..fceb709c 100644 --- a/tests/Twig/Runtime/MarkdownExtensionTest.php +++ b/tests/Twig/Runtime/MarkdownExtensionTest.php @@ -77,4 +77,42 @@ class MarkdownExtensionTest extends TestCase $sut->commentContent("- test\n- foo\n\nfoo __bar__") ); } + + public function testCommentOneLiner() + { + $loader = $this->createMock(ConfigLoaderInterface::class); + $config = new SystemConfiguration($loader, []); + $sut = new MarkdownExtension(new Markdown(), $config); + + $loremIpsum = 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.'; + + $this->assertEquals('', $sut->commentOneLiner(null)); + $this->assertEquals('', $sut->commentOneLiner('')); + $this->assertEquals('', $sut->commentOneLiner(null, false)); + $this->assertEquals('', $sut->commentOneLiner('', true)); + + $this->assertEquals( + 'Lorem ipsum dolor sit amet, consetetur sadipscing …', + $sut->commentOneLiner($loremIpsum, false) + ); + + $this->assertEquals( + 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. …', + $sut->commentOneLiner(implode(PHP_EOL, [$loremIpsum, $loremIpsum, $loremIpsum]), true) + ); + + $this->assertEquals( + 'Lorem ipsum dolor sit amet, consetetur sadipscing …', + $sut->commentOneLiner(implode(PHP_EOL, [$loremIpsum, $loremIpsum, $loremIpsum]), false) + ); + + $this->assertEquals( + 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', + $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt']), true) + ); + $this->assertEquals( + 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt …', + $sut->commentOneLiner(implode(PHP_EOL, ['Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt', 'ssdf']), true) + ); + } } diff --git a/tests/Twig/RuntimeExtensionsTest.php b/tests/Twig/RuntimeExtensionsTest.php index 56877b50..e9ce9ec0 100644 --- a/tests/Twig/RuntimeExtensionsTest.php +++ b/tests/Twig/RuntimeExtensionsTest.php @@ -22,7 +22,7 @@ class RuntimeExtensionsTest extends TestCase { public function testGetFilters() { - $expected = ['md2html', 'desc2html', 'comment2html']; + $expected = ['md2html', 'desc2html', 'comment2html', 'comment1line']; $i = 0; $sut = new RuntimeExtensions(); @@ -67,6 +67,7 @@ class RuntimeExtensionsTest extends TestCase $found_md2html = false; $found_desc2html = false; $found_comment2html = false; + $found_comment1line = false; foreach ($filters as $filter) { switch ($filter->getName()) { @@ -85,11 +86,17 @@ class RuntimeExtensionsTest extends TestCase self::assertEquals(['html'], $filters[2]->getSafe(new Node())); $found_comment2html = true; break; + case 'comment1line': + self::assertEquals('html', $filters[3]->getPreEscape()); + self::assertEquals(['html'], $filters[3]->getSafe(new Node())); + $found_comment1line = true; + break; } } self::assertTrue($found_md2html, 'Missing filter: md2html'); self::assertTrue($found_desc2html, 'Missing filter: desc2html'); self::assertTrue($found_comment2html, 'Missing filter: comment2html'); + self::assertTrue($found_comment1line, 'Missing filter: comment1line'); } }