From a4820b21ca6fc9964b481594ae04783482658478 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Sun, 18 Feb 2024 23:12:36 +0100 Subject: [PATCH 01/17] Fix same domain pagination --- src/Wallabag/CoreBundle/Controller/EntryController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index 9322860a6..3b624dd1f 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php @@ -592,7 +592,7 @@ class EntryController extends AbstractController * * @param int $page * - * @Route("/domain/{id}/{page}", requirements={"id" = ".+"}, defaults={"page" = 1}, name="same_domain") + * @Route("/domain/{id}/{page}", requirements={"id" = "\d+"}, defaults={"page" = 1}, name="same_domain") * * @return Response */ From 3e18b66e622c287deac172e3ccadb174e4fc8d48 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Mon, 19 Feb 2024 10:43:55 +0100 Subject: [PATCH 02/17] Upgrade PHP dependencies --- composer.json | 22 +- composer.lock | 1025 ++++++++++++++++++++++++++++--------------------- 2 files changed, 605 insertions(+), 442 deletions(-) diff --git a/composer.json b/composer.json index 5b11e16f2..b8af9dd0f 100644 --- a/composer.json +++ b/composer.json @@ -73,7 +73,7 @@ "enshrined/svg-sanitize": "^0.15.4", "friendsofsymfony/jsrouting-bundle": "^2.2", "friendsofsymfony/oauth-server-bundle": "dev-master#dc8ff343363cf794d30eb1a123610d186a43f162", - "friendsofsymfony/rest-bundle": "~3.4", + "friendsofsymfony/rest-bundle": "^3.4", "friendsofsymfony/user-bundle": "^3.1", "guzzlehttp/guzzle": "^5.3.1", "guzzlehttp/psr7": "^2.5", @@ -82,16 +82,16 @@ "j0k3r/graby": "^2.0", "javibravo/simpleue": "^2.0", "jms/serializer": "^3.17", - "jms/serializer-bundle": "~5.0", + "jms/serializer-bundle": "^5.0", "kphoen/rulerz": "^0.21", - "kphoen/rulerz-bundle": "~0.13", + "kphoen/rulerz-bundle": "^0.15", "laminas/laminas-code": "^4.7", - "lcobucci/jwt": "~4.1.5", + "lcobucci/jwt": "^4.1.5", "lexik/form-filter-bundle": "^7.0", - "mgargano/simplehtmldom": "~1.5", + "mgargano/simplehtmldom": "^1.5", "mnapoli/piwik-twig-extension": "^3.0", "nelmio/api-doc-bundle": "^4.10", - "nelmio/cors-bundle": "~2.2", + "nelmio/cors-bundle": "^2.2", "ocramius/proxy-manager": "^2.1.1", "pagerfanta/doctrine-orm-adapter": "^3.7", "pagerfanta/twig": "^3.7", @@ -115,7 +115,7 @@ "scheb/2fa-qr-code": "^5.13", "scheb/2fa-trusted-device": "^5.13", "sensio/framework-extra-bundle": "^6.2", - "sentry/sentry-symfony": "4.10.0", + "sentry/sentry-symfony": "^4.10.0", "stof/doctrine-extensions-bundle": "^1.2", "symfony/asset": "^4.4", "symfony/config": "^4.4", @@ -148,16 +148,16 @@ "twig/extra-bundle": "^3.4", "twig/string-extra": "^3.4", "twig/twig": "^3.4.3", - "wallabag/php-mobi": "~1.0", + "wallabag/php-mobi": "^1.0", "wallabag/phpepub": "^4.0.10", "willdurand/hateoas": "^3.8", - "willdurand/hateoas-bundle": "~2.1" + "willdurand/hateoas-bundle": "^2.1" }, "require-dev": { "dama/doctrine-test-bundle": "^7.1", - "doctrine/doctrine-fixtures-bundle": "~3.0", + "doctrine/doctrine-fixtures-bundle": "^3.0", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "~3.4", + "friendsofphp/php-cs-fixer": "^3.4", "friendsoftwig/twigcs": "^6.0", "m6web/redis-mock": "^5.0", "php-http/mock-client": "^1.0", diff --git a/composer.lock b/composer.lock index 57ce0a525..50b360f08 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": "58fdc6dd6e56061709edf197c7302a97", + "content-hash": "718a2a076d0976e921e334f1b3505e41", "packages": [ { "name": "babdev/pagerfanta-bundle", @@ -917,16 +917,16 @@ }, { "name": "doctrine/dbal", - "version": "3.7.2", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", - "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", + "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", "shasum": "" }, "require": { @@ -942,14 +942,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.42", + "phpstan/phpstan": "1.10.57", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.13", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4|^6.0", - "symfony/console": "^4.4|^5.4|^6.0", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" }, "suggest": { @@ -1010,7 +1010,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.2" }, "funding": [ { @@ -1026,20 +1026,20 @@ "type": "tidelift" } ], - "time": "2023-11-19T08:06:58+00:00" + "time": "2024-02-12T18:36:36+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -1071,9 +1071,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -1368,16 +1368,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.8", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", - "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -1439,7 +1439,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.8" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -1455,7 +1455,7 @@ "type": "tidelift" } ], - "time": "2023-06-16T13:40:37+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", @@ -1529,16 +1529,16 @@ }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { @@ -1546,11 +1546,11 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", "autoload": { @@ -1587,7 +1587,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/2.1.1" }, "funding": [ { @@ -1603,7 +1603,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "doctrine/migrations", @@ -1709,16 +1709,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.2", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77" + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/393679a4795e49b0b3ac317dce84d0f8888f2b77", - "reference": "393679a4795e49b0b3ac317dce84d0f8888f2b77", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b", + "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b", "shasum": "" }, "require": { @@ -1731,7 +1731,7 @@ "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^2", + "doctrine/lexer": "^2 || ^3", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -1767,7 +1767,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1804,9 +1804,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.2" + "source": "https://github.com/doctrine/orm/tree/2.18.0" }, - "time": "2023-12-20T21:47:52+00:00" + "time": "2024-01-31T15:53:12+00:00" }, { "name": "doctrine/persistence", @@ -2699,49 +2699,50 @@ }, { "name": "gedmo/doctrine-extensions", - "version": "v3.14.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf" + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf", - "reference": "3b5b5cba476b4ae32a55ef69ef2e59d64d5893cf", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/2a89103f4984d8970f3855284c8c04e6e6a63c0f", + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f", "shasum": "" }, "require": { "behat/transliterator": "^1.2", - "doctrine/annotations": "^1.13 || ^2.0", "doctrine/collections": "^1.2 || ^2.0", "doctrine/common": "^2.13 || ^3.0", + "doctrine/deprecations": "^1.0", "doctrine/event-manager": "^1.2 || ^2.0", "doctrine/persistence": "^2.2 || ^3.0", "php": "^7.4 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0" + "psr/clock": "^1", + "symfony/cache": "^5.4 || ^6.0 || ^7.0" }, "conflict": { - "doctrine/dbal": "<3.2", - "doctrine/mongodb-odm": "<2.3", - "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1", - "sebastian/comparator": "<2.0" + "doctrine/annotations": "<1.13 || >=3.0", + "doctrine/dbal": "<3.2 || >=4.0", + "doctrine/mongodb-odm": "<2.3 || >=3.0", + "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=3.0" }, "require-dev": { + "doctrine/annotations": "^1.13 || ^2.0", "doctrine/cache": "^1.11 || ^2.0", "doctrine/dbal": "^3.2", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", "doctrine/orm": "^2.14.0", "friendsofphp/php-cs-fixer": "^3.14.0", - "nesbot/carbon": "^2.71 || 3.x-dev as 3.0", + "nesbot/carbon": "^2.71 || ^3.0", "phpstan/phpstan": "^1.10.2", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.6", - "rector/rector": "^0.18", + "rector/rector": "^0.19", "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/phpunit-bridge": "^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0" @@ -2801,7 +2802,7 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.14.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.15.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, "funding": [ @@ -2822,7 +2823,7 @@ "type": "github" } ], - "time": "2023-12-03T09:10:34+00:00" + "time": "2024-02-12T15:17:22+00:00" }, { "name": "grandt/binstring", @@ -4519,16 +4520,16 @@ }, { "name": "j0k3r/graby", - "version": "2.4.4", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/j0k3r/graby.git", - "reference": "a8524b4c2847cf7c46c3e4153a57a5014b09f02e" + "reference": "3519a1e8fddec59b61d05461dcb16818a6fd2650" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby/zipball/a8524b4c2847cf7c46c3e4153a57a5014b09f02e", - "reference": "a8524b4c2847cf7c46c3e4153a57a5014b09f02e", + "url": "https://api.github.com/repos/j0k3r/graby/zipball/3519a1e8fddec59b61d05461dcb16818a6fd2650", + "reference": "3519a1e8fddec59b61d05461dcb16818a6fd2650", "shasum": "" }, "require": { @@ -4536,19 +4537,19 @@ "ext-tidy": "*", "fossar/htmlawed": "^1.2.7", "guzzlehttp/psr7": "^1.5.0|^2.0", - "http-interop/http-factory-guzzle": "^1.0", - "j0k3r/graby-site-config": "^1.0.110", + "http-interop/http-factory-guzzle": "^1.1", + "j0k3r/graby-site-config": "^1.0.181", "j0k3r/httplug-ssrf-plugin": "^2.0", - "j0k3r/php-readability": "^1.2.3", + "j0k3r/php-readability": "^1.2.10", "monolog/monolog": "^1.18.0|^2.0", "php": ">=7.1.3", - "php-http/client-common": "^2.3", - "php-http/discovery": "^1.12", - "php-http/httplug": "^2.2", - "php-http/message": "^1.9", - "simplepie/simplepie": "^1.5", - "smalot/pdfparser": "^1.0", - "symfony/options-resolver": "^3.4|^4.4|^5.3|^6.0", + "php-http/client-common": "^2.7", + "php-http/discovery": "^1.19", + "php-http/httplug": "^2.4", + "php-http/message": "^1.14", + "simplepie/simplepie": "^1.7", + "smalot/pdfparser": "^1.1", + "symfony/options-resolver": "^3.4|^4.4|^5.3|^6.0|^7.0", "true/punycode": "^2.1" }, "require-dev": { @@ -4560,7 +4561,7 @@ "phpstan/phpstan": "^0.12", "phpstan/phpstan-deprecation-rules": "^0.12", "phpstan/phpstan-phpunit": "^0.12", - "symfony/phpunit-bridge": "^5.3" + "symfony/phpunit-bridge": "^6.4.1" }, "type": "library", "extra": { @@ -4592,7 +4593,7 @@ "description": "Graby helps you extract article content from web pages", "support": { "issues": "https://github.com/j0k3r/graby/issues", - "source": "https://github.com/j0k3r/graby/tree/2.4.4" + "source": "https://github.com/j0k3r/graby/tree/2.4.5" }, "funding": [ { @@ -4600,20 +4601,20 @@ "type": "github" } ], - "time": "2023-03-07T14:02:51+00:00" + "time": "2024-01-04T08:46:05+00:00" }, { "name": "j0k3r/graby-site-config", - "version": "1.0.181", + "version": "1.0.182", "source": { "type": "git", "url": "https://github.com/j0k3r/graby-site-config.git", - "reference": "c8014aa7aba4142b68c368050b7f785b8ec5cef1" + "reference": "303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/c8014aa7aba4142b68c368050b7f785b8ec5cef1", - "reference": "c8014aa7aba4142b68c368050b7f785b8ec5cef1", + "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c", + "reference": "303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c", "shasum": "" }, "require": { @@ -4642,9 +4643,9 @@ "description": "Graby site config files", "support": { "issues": "https://github.com/j0k3r/graby-site-config/issues", - "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.181" + "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.182" }, - "time": "2024-01-01T02:14:13+00:00" + "time": "2024-02-01T02:09:26+00:00" }, { "name": "j0k3r/httplug-ssrf-plugin", @@ -5549,16 +5550,16 @@ }, { "name": "lcobucci/jwt", - "version": "4.1.5", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582" + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/fe2d89f2eaa7087af4aa166c6f480ef04e000582", - "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4", + "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4", "shasum": "" }, "require": { @@ -5567,19 +5568,19 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "lcobucci/clock": "^2.0", + "lcobucci/clock": "^2.0 || ^3.0", "php": "^7.4 || ^8.0" }, "require-dev": { "infection/infection": "^0.21", "lcobucci/coding-standard": "^6.0", "mikey179/vfsstream": "^1.6.7", - "phpbench/phpbench": "^1.0", + "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", "phpunit/php-invoker": "^3.1", "phpunit/phpunit": "^9.5" }, @@ -5607,7 +5608,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/4.1.5" + "source": "https://github.com/lcobucci/jwt/tree/4.3.0" }, "funding": [ { @@ -5619,7 +5620,7 @@ "type": "patreon" } ], - "time": "2021-09-28T19:34:56+00:00" + "time": "2023-01-02T13:28:00+00:00" }, { "name": "lexik/form-filter-bundle", @@ -6440,16 +6441,16 @@ }, { "name": "php-amqplib/php-amqplib", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/php-amqplib/php-amqplib.git", - "reference": "fb84e99589de0904a25861451b0552f806284ee5" + "reference": "76eee289e98b0b309a761787e65cbe1acbaf8c72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/fb84e99589de0904a25861451b0552f806284ee5", - "reference": "fb84e99589de0904a25861451b0552f806284ee5", + "url": "https://api.github.com/repos/php-amqplib/php-amqplib/zipball/76eee289e98b0b309a761787e65cbe1acbaf8c72", + "reference": "76eee289e98b0b309a761787e65cbe1acbaf8c72", "shasum": "" }, "require": { @@ -6515,35 +6516,35 @@ ], "support": { "issues": "https://github.com/php-amqplib/php-amqplib/issues", - "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.0" + "source": "https://github.com/php-amqplib/php-amqplib/tree/v3.6.1" }, - "time": "2023-10-22T15:02:02+00:00" + "time": "2024-02-07T17:21:26+00:00" }, { "name": "php-amqplib/rabbitmq-bundle", - "version": "2.13.2", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/RabbitMqBundle.git", - "reference": "7f151c6eacdacf9824ca5487c142c387bf2f5f7d" + "reference": "a80937c30214ffb36683c27edb226ed59492bd08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/7f151c6eacdacf9824ca5487c142c387bf2f5f7d", - "reference": "7f151c6eacdacf9824ca5487c142c387bf2f5f7d", + "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/a80937c30214ffb36683c27edb226ed59492bd08", + "reference": "a80937c30214ffb36683c27edb226ed59492bd08", "shasum": "" }, "require": { "php": "^7.4|^8.0", "php-amqplib/php-amqplib": "^2.12.2|^3.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/config": "^4.4|^5.3|^6.0", - "symfony/console": "^4.4|^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.3|^6.0", - "symfony/event-dispatcher": "^4.4|^5.3|^6.0", - "symfony/framework-bundle": "^4.4|^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.3|^6.0", - "symfony/yaml": "^4.4|^5.3|^6.0" + "symfony/config": "^4.4|^5.3|^6.0|^7.0", + "symfony/console": "^4.4|^5.3|^6.0|^7.0", + "symfony/dependency-injection": "^4.4|^5.3|^6.0|^7.0", + "symfony/event-dispatcher": "^4.4|^5.3|^6.0|^7.0", + "symfony/framework-bundle": "^4.4|^5.3|^6.0|^7.0", + "symfony/http-kernel": "^4.4|^5.3|^6.0|^7.0", + "symfony/yaml": "^4.4|^5.3|^6.0|^7.0" }, "replace": { "emag-tech-labs/rabbitmq-bundle": "self.version", @@ -6553,7 +6554,7 @@ "phpstan/phpstan": "^1.2", "phpstan/phpstan-phpunit": "^1.0", "phpunit/phpunit": "^9.5", - "symfony/serializer": "^4.4|^5.3|^6.0" + "symfony/serializer": "^4.4|^5.3|^6.0|^7.0" }, "suggest": { "ext-pcntl": "*", @@ -6594,9 +6595,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/RabbitMqBundle/issues", - "source": "https://github.com/php-amqplib/RabbitMqBundle/tree/2.13.2" + "source": "https://github.com/php-amqplib/RabbitMqBundle/tree/2.14.0" }, - "time": "2023-12-20T10:21:36+00:00" + "time": "2024-01-10T14:06:07+00:00" }, { "name": "php-http/client-common", @@ -6810,6 +6811,7 @@ "issues": "https://github.com/php-http/guzzle5-adapter/issues", "source": "https://github.com/php-http/guzzle5-adapter/tree/2.0.0" }, + "abandoned": "php-http/guzzle7-adapter", "time": "2019-02-05T12:28:45+00:00" }, { @@ -7155,16 +7157,16 @@ }, { "name": "php-http/promise", - "version": "1.2.1", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119" + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/44a67cb59f708f826f3bec35f22030b3edb90119", - "reference": "44a67cb59f708f826f3bec35f22030b3edb90119", + "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", "shasum": "" }, "require": { @@ -7201,9 +7203,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.2.1" + "source": "https://github.com/php-http/promise/tree/1.3.0" }, - "time": "2023-11-08T12:57:08+00:00" + "time": "2024-01-04T18:49:48+00:00" }, { "name": "php-http/stopwatch-plugin", @@ -7375,16 +7377,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.3", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", - "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", "shasum": "" }, "require": { @@ -7427,9 +7429,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" }, - "time": "2023-08-12T11:01:26+00:00" + "time": "2024-01-11T11:49:22+00:00" }, { "name": "phpseclib/phpseclib", @@ -7543,16 +7545,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.5", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", - "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -7584,9 +7586,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-12-16T09:33:33+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "phpzip/phpzip", @@ -7898,6 +7900,54 @@ }, "time": "2016-08-06T20:24:11+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "1.1.2", @@ -8873,60 +8923,57 @@ }, { "name": "sentry/sentry-symfony", - "version": "4.10.0", + "version": "4.13.2", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-symfony.git", - "reference": "be9d93e5aed6a76a98dc980ae9e6fb56a29083b1" + "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/be9d93e5aed6a76a98dc980ae9e6fb56a29083b1", - "reference": "be9d93e5aed6a76a98dc980ae9e6fb56a29083b1", + "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/bf049e69863465f2e0ba2555dbb5224641a37d67", + "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67", "shasum": "" }, "require": { "guzzlehttp/psr7": "^1.7 || ^2.0", "jean85/pretty-package-versions": "^1.5 || ^2.0", "php": "^7.2||^8.0", - "sentry/sdk": "^3.4", - "sentry/sentry": "^3.20.1", + "sentry/sdk": "^3.6", + "sentry/sentry": "^3.22.1", "symfony/cache-contracts": "^1.1||^2.4||^3.0", - "symfony/config": "^4.4.20||^5.0.11||^6.0", - "symfony/console": "^4.4.20||^5.0.11||^6.0", - "symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0", - "symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0", - "symfony/http-kernel": "^4.4.20||^5.0.11||^6.0", + "symfony/config": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/console": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dependency-injection": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/event-dispatcher": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-kernel": "^4.4.20||^5.0.11||^6.0||^7.0", "symfony/polyfill-php80": "^1.22", - "symfony/psr-http-message-bridge": "^1.2||^2.0", - "symfony/security-core": "^4.4.20||^5.0.11||^6.0", - "symfony/security-http": "^4.4.20||^5.0.11||^6.0" + "symfony/psr-http-message-bridge": "^1.2||^2.0||^6.4||^7.0", + "symfony/security-core": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0" }, "require-dev": { "doctrine/dbal": "^2.13||^3.0", "doctrine/doctrine-bundle": "^1.12||^2.5", - "friendsofphp/php-cs-fixer": "^2.19||<=3.16.0", - "jangregor/phpstan-prophecy": "^1.0", - "monolog/monolog": "^1.3||^2.0", - "phpspec/prophecy": "!=1.11.0", - "phpspec/prophecy-phpunit": "^1.1||^2.0", + "friendsofphp/php-cs-fixer": "^2.19||^3.40", + "masterminds/html5": "^2.8", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.3", "phpstan/phpstan-phpunit": "^1.0", "phpstan/phpstan-symfony": "^1.0", "phpunit/phpunit": "^8.5.14||^9.3.9", - "symfony/browser-kit": "^4.4.20||^5.0.11||^6.0", - "symfony/cache": "^4.4.20||^5.0.11||^6.0", - "symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0", - "symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0", - "symfony/http-client": "^4.4.20||^5.0.11||^6.0", - "symfony/messenger": "^4.4.20||^5.0.11||^6.0", + "symfony/browser-kit": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/cache": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/dom-crawler": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/framework-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/http-client": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/messenger": "^4.4.20||^5.0.11||^6.0||^7.0", "symfony/monolog-bundle": "^3.4", - "symfony/phpunit-bridge": "^5.2.6||^6.0", - "symfony/process": "^4.4.20||^5.0.11||^6.0", - "symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0", - "symfony/yaml": "^4.4.20||^5.0.11||^6.0", - "vimeo/psalm": "^4.3" + "symfony/phpunit-bridge": "^5.2.6||^6.0||^7.0", + "symfony/process": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/twig-bundle": "^4.4.20||^5.0.11||^6.0||^7.0", + "symfony/yaml": "^4.4.20||^5.0.11||^6.0||^7.0", + "vimeo/psalm": "^4.3||^5.16.0" }, "suggest": { "doctrine/doctrine-bundle": "Allow distributed tracing of database queries using Sentry.", @@ -8974,7 +9021,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-symfony/issues", - "source": "https://github.com/getsentry/sentry-symfony/tree/4.10.0" + "source": "https://github.com/getsentry/sentry-symfony/tree/4.13.2" }, "funding": [ { @@ -8986,7 +9033,7 @@ "type": "custom" } ], - "time": "2023-08-01T13:42:19+00:00" + "time": "2024-01-11T14:55:45+00:00" }, { "name": "simplepie/simplepie", @@ -9334,16 +9381,16 @@ }, { "name": "symfony/cache", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a" + "reference": "db1adb004e2da984085d0178964eb6f319d3cba1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", - "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", + "url": "https://api.github.com/repos/symfony/cache/zipball/db1adb004e2da984085d0178964eb6f319d3cba1", + "reference": "db1adb004e2da984085d0178964eb6f319d3cba1", "shasum": "" }, "require": { @@ -9411,7 +9458,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.34" + "source": "https://github.com/symfony/cache/tree/v5.4.35" }, "funding": [ { @@ -9427,7 +9474,7 @@ "type": "tidelift" } ], - "time": "2023-12-18T14:56:06+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/cache-contracts", @@ -10315,16 +10362,16 @@ }, { "name": "symfony/expression-language", - "version": "v5.4.21", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac" + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/d59441c10a5a73cd9d4d778b8253595a16f6716d", + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d", "shasum": "" }, "require": { @@ -10358,7 +10405,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.21" + "source": "https://github.com/symfony/expression-language/tree/v5.4.35" }, "funding": [ { @@ -10374,20 +10421,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.25", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086", + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086", "shasum": "" }, "require": { @@ -10422,7 +10469,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/filesystem/tree/v5.4.35" }, "funding": [ { @@ -10438,7 +10485,7 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/finder", @@ -10810,16 +10857,16 @@ }, { "name": "symfony/http-client", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0" + "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/8fe833b758bc5b325e9d96a913376d6d57a90fb0", - "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0", + "url": "https://api.github.com/repos/symfony/http-client/zipball/53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", + "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", "shasum": "" }, "require": { @@ -10881,7 +10928,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.34" + "source": "https://github.com/symfony/http-client/tree/v5.4.35" }, "funding": [ { @@ -10897,7 +10944,7 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-01-29T14:02:34+00:00" }, { "name": "symfony/http-client-contracts", @@ -11224,16 +11271,16 @@ }, { "name": "symfony/intl", - "version": "v5.4.30", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "cd6cce16151ac871071a3495e7a325460b952b5a" + "reference": "2fb503f81cd8032a624c55764d1fbaf893aa3cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/cd6cce16151ac871071a3495e7a325460b952b5a", - "reference": "cd6cce16151ac871071a3495e7a325460b952b5a", + "url": "https://api.github.com/repos/symfony/intl/zipball/2fb503f81cd8032a624c55764d1fbaf893aa3cf4", + "reference": "2fb503f81cd8032a624c55764d1fbaf893aa3cf4", "shasum": "" }, "require": { @@ -11293,7 +11340,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v5.4.30" + "source": "https://github.com/symfony/intl/tree/v5.4.35" }, "funding": [ { @@ -11309,7 +11356,7 @@ "type": "tidelift" } ], - "time": "2023-10-28T09:19:54+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/mailer", @@ -11701,16 +11748,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -11724,9 +11771,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11763,7 +11807,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -11779,20 +11823,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -11803,9 +11847,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11844,7 +11885,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -11860,20 +11901,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -11886,9 +11927,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -11931,7 +11969,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -11947,20 +11985,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -11971,9 +12009,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12015,7 +12050,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -12031,20 +12066,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -12058,9 +12093,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12098,7 +12130,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -12114,20 +12146,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", - "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -12135,9 +12167,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12174,7 +12203,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -12190,20 +12219,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", "shasum": "" }, "require": { @@ -12211,9 +12240,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12253,7 +12279,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" }, "funding": [ { @@ -12269,20 +12295,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -12290,9 +12316,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12336,7 +12359,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -12352,20 +12375,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -12373,9 +12396,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -12415,7 +12435,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -12431,7 +12451,7 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/property-access", @@ -12515,16 +12535,16 @@ }, { "name": "symfony/property-info", - "version": "v5.4.24", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d30d48f366ad2bfbf521256be85eb1c182c29198", + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198", "shasum": "" }, "require": { @@ -12586,7 +12606,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.24" + "source": "https://github.com/symfony/property-info/tree/v5.4.35" }, "funding": [ { @@ -12602,7 +12622,7 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:11:03+00:00" + "time": "2024-01-23T15:43:50+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -13435,16 +13455,16 @@ }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "887762aa99ff16f65dc8b48aafead415f942d407" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/887762aa99ff16f65dc8b48aafead415f942d407", + "reference": "887762aa99ff16f65dc8b48aafead415f942d407", "shasum": "" }, "require": { @@ -13477,7 +13497,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.35" }, "funding": [ { @@ -13493,20 +13513,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/string", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" + "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", + "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2", + "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2", "shasum": "" }, "require": { @@ -13563,7 +13583,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.34" + "source": "https://github.com/symfony/string/tree/v5.4.35" }, "funding": [ { @@ -13579,7 +13599,7 @@ "type": "tidelift" } ], - "time": "2023-12-09T13:20:28+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/templating", @@ -14218,16 +14238,16 @@ }, { "name": "symfony/var-exporter", - "version": "v5.4.32", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "fdb022f0d3d41df240c18e2eb9a117c430f06add" + "reference": "abb0a151b62d6b07e816487e20040464af96cae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/fdb022f0d3d41df240c18e2eb9a117c430f06add", - "reference": "fdb022f0d3d41df240c18e2eb9a117c430f06add", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/abb0a151b62d6b07e816487e20040464af96cae7", + "reference": "abb0a151b62d6b07e816487e20040464af96cae7", "shasum": "" }, "require": { @@ -14271,7 +14291,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.32" + "source": "https://github.com/symfony/var-exporter/tree/v5.4.35" }, "funding": [ { @@ -14287,7 +14307,7 @@ "type": "tidelift" } ], - "time": "2023-11-16T19:33:05+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/yaml", @@ -15255,16 +15275,16 @@ }, { "name": "zircote/swagger-php", - "version": "4.8.2", + "version": "4.8.4", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "a70a5dc5db26183c86f589ff3d76fb11e141fc58" + "reference": "bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/a70a5dc5db26183c86f589ff3d76fb11e141fc58", - "reference": "a70a5dc5db26183c86f589ff3d76fb11e141fc58", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c", + "reference": "bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c", "shasum": "" }, "require": { @@ -15278,7 +15298,7 @@ "require-dev": { "composer/package-versions-deprecated": "^1.11", "doctrine/annotations": "^1.7 || ^2.0", - "friendsofphp/php-cs-fixer": "^2.17 || ^3.0", + "friendsofphp/php-cs-fixer": "^2.17 || ^3.47.1", "phpstan/phpstan": "^1.6", "phpunit/phpunit": ">=8", "vimeo/psalm": "^4.23" @@ -15330,9 +15350,9 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/4.8.2" + "source": "https://github.com/zircote/swagger-php/tree/4.8.4" }, - "time": "2023-12-19T19:59:07+00:00" + "time": "2024-02-04T21:16:47+00:00" } ], "packages-dev": [ @@ -15790,35 +15810,40 @@ }, { "name": "ergebnis/composer-normalize", - "version": "2.28.3", + "version": "2.42.0", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "ec75a2bf751f6fec165e9ea0262655b8ca397e5c" + "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/ec75a2bf751f6fec165e9ea0262655b8ca397e5c", - "reference": "ec75a2bf751f6fec165e9ea0262655b8ca397e5c", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/02cf2b69ad2a74c6f11a8c3f5f054b8f949df910", + "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910", "shasum": "" }, "require": { "composer-plugin-api": "^2.0.0", - "ergebnis/json-normalizer": "~2.1.0", - "ergebnis/json-printer": "^3.2.0", + "ergebnis/json": "^1.2.0", + "ergebnis/json-normalizer": "^4.5.0", + "ergebnis/json-printer": "^3.5.0", + "ext-json": "*", "justinrainbow/json-schema": "^5.2.12", "localheinz/diff": "^1.1.1", - "php": "^7.4 || ^8.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "composer/composer": "^2.3.9", - "ergebnis/license": "^1.2.0", - "ergebnis/php-cs-fixer-config": "^4.4.0", - "fakerphp/faker": "^1.19.0", - "phpunit/phpunit": "^9.5.21", - "psalm/plugin-phpunit": "~0.17.0", - "symfony/filesystem": "^5.4.9", - "vimeo/psalm": "^4.24.0" + "composer/composer": "^2.6.6", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.2", + "symfony/filesystem": "^5.4.25", + "vimeo/psalm": "^5.20.0" }, "type": "composer-plugin", "extra": { @@ -15826,7 +15851,8 @@ "composer-normalize": { "indent-size": 2, "indent-style": "space" - } + }, + "plugin-optional": true }, "autoload": { "psr-4": { @@ -15840,7 +15866,8 @@ "authors": [ { "name": "Andreas Möller", - "email": "am@localheinz.com" + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], "description": "Provides a composer plugin for normalizing composer.json.", @@ -15853,40 +15880,114 @@ ], "support": { "issues": "https://github.com/ergebnis/composer-normalize/issues", + "security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/composer-normalize" }, - "time": "2022-07-05T16:09:10+00:00" + "time": "2024-01-30T11:54:02+00:00" }, { - "name": "ergebnis/json-normalizer", - "version": "2.1.0", + "name": "ergebnis/json", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "2039eb11131a243b9204bf51219baa08935e6b1d" + "url": "https://github.com/ergebnis/json.git", + "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/2039eb11131a243b9204bf51219baa08935e6b1d", - "reference": "2039eb11131a243b9204bf51219baa08935e6b1d", + "url": "https://api.github.com/repos/ergebnis/json/zipball/a457f25a5ba7ea11fc94f84d53678c5211abfce0", + "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0", "shasum": "" }, "require": { - "ergebnis/json-printer": "^3.2.0", - "ergebnis/json-schema-validator": "^2.0.0", "ext-json": "*", - "justinrainbow/json-schema": "^5.2.11", - "php": "^7.4 || ^8.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "ergebnis/data-provider": "^1.0.0", - "ergebnis/license": "^1.2.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.5", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.17.0" + "ergebnis/data-provider": "^3.2.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.2", + "vimeo/psalm": "^5.20.0" + }, + "type": "library", + "extra": { + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } + }, + "autoload": { + "psr-4": { + "Ergebnis\\Json\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" + } + ], + "description": "Provides a Json value object for representing a valid JSON string.", + "homepage": "https://github.com/ergebnis/json", + "keywords": [ + "json" + ], + "support": { + "issues": "https://github.com/ergebnis/json/issues", + "security": "https://github.com/ergebnis/json/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/json" + }, + "time": "2024-01-29T15:09:24+00:00" + }, + { + "name": "ergebnis/json-normalizer", + "version": "4.5.0", + "source": { + "type": "git", + "url": "https://github.com/ergebnis/json-normalizer.git", + "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/f0ee9e70739f121b27fac8b743e4a52b23de2152", + "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152", + "shasum": "" + }, + "require": { + "ergebnis/json": "^1.2.0", + "ergebnis/json-pointer": "^3.4.0", + "ergebnis/json-printer": "^3.5.0", + "ergebnis/json-schema-validator": "^4.2.0", + "ext-json": "*", + "justinrainbow/json-schema": "^5.2.12", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "composer/semver": "^3.4.0", + "ergebnis/data-provider": "^3.2.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.4", + "vimeo/psalm": "^5.20.0" + }, + "suggest": { + "composer/semver": "If you want to use ComposerJsonNormalizer or VersionConstraintNormalizer" }, "type": "library", "autoload": { @@ -15901,7 +16002,8 @@ "authors": [ { "name": "Andreas Möller", - "email": "am@localheinz.com" + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], "description": "Provides generic and vendor-specific normalizers for normalizing JSON documents.", @@ -15912,43 +16014,107 @@ ], "support": { "issues": "https://github.com/ergebnis/json-normalizer/issues", + "security": "https://github.com/ergebnis/json-normalizer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-normalizer" }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2022-01-04T11:19:55+00:00" + "time": "2024-01-30T09:10:15+00:00" }, { - "name": "ergebnis/json-printer", - "version": "3.2.0", + "name": "ergebnis/json-pointer", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/ergebnis/json-printer.git", - "reference": "651cab2b7604a6b338d0d16749f5ea0851a68005" + "url": "https://github.com/ergebnis/json-pointer.git", + "reference": "b654757d873050622c2166f55ab25d04685261c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/651cab2b7604a6b338d0d16749f5ea0851a68005", - "reference": "651cab2b7604a6b338d0d16749f5ea0851a68005", + "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/b654757d873050622c2166f55ab25d04685261c5", + "reference": "b654757d873050622c2166f55ab25d04685261c5", + "shasum": "" + }, + "require": { + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + }, + "require-dev": { + "ergebnis/data-provider": "^3.2.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.2", + "vimeo/psalm": "^5.20.0" + }, + "type": "library", + "extra": { + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } + }, + "autoload": { + "psr-4": { + "Ergebnis\\Json\\Pointer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Andreas Möller", + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" + } + ], + "description": "Provides an abstraction of a JSON pointer.", + "homepage": "https://github.com/ergebnis/json-pointer", + "keywords": [ + "RFC6901", + "json", + "pointer" + ], + "support": { + "issues": "https://github.com/ergebnis/json-pointer/issues", + "security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md", + "source": "https://github.com/ergebnis/json-pointer" + }, + "time": "2024-01-29T16:37:15+00:00" + }, + { + "name": "ergebnis/json-printer", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/ergebnis/json-printer.git", + "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/549e16fe6de34b8c3aee7b421be12caa552f3ced", + "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "^7.4 || ^8.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "^3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.5", - "phpunit/phpunit": "^9.5.11", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.16.1" + "ergebnis/data-provider": "^3.2.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.2", + "vimeo/psalm": "^5.20.0" }, "type": "library", "autoload": { @@ -15963,7 +16129,8 @@ "authors": [ { "name": "Andreas Möller", - "email": "am@localheinz.com" + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], "description": "Provides a JSON printer, allowing for flexible indentation.", @@ -15975,45 +16142,43 @@ ], "support": { "issues": "https://github.com/ergebnis/json-printer/issues", + "security": "https://github.com/ergebnis/json-printer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-printer" }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-12-27T12:39:13+00:00" + "time": "2024-01-29T15:33:37+00:00" }, { "name": "ergebnis/json-schema-validator", - "version": "2.0.0", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json-schema-validator.git", - "reference": "dacd8a47c1cc2c426ec71e952da3609ebe901fac" + "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/dacd8a47c1cc2c426ec71e952da3609ebe901fac", - "reference": "dacd8a47c1cc2c426ec71e952da3609ebe901fac", + "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef", + "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef", "shasum": "" }, "require": { + "ergebnis/json": "^1.2.0", + "ergebnis/json-pointer": "^3.4.0", "ext-json": "*", - "justinrainbow/json-schema": "^5.2.10", - "php": "^7.4 || ^8.0" + "justinrainbow/json-schema": "^5.2.12", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.18.0", - "ergebnis/data-provider": "^1.0.0", - "ergebnis/license": "^1.1.0", - "ergebnis/php-cs-fixer-config": "~3.4.0", - "fakerphp/faker": "^1.17.0", - "infection/infection": "~0.25.3", - "phpunit/phpunit": "~9.5.10", - "psalm/plugin-phpunit": "~0.16.1", - "vimeo/psalm": "^4.15.0" + "ergebnis/data-provider": "^3.2.0", + "ergebnis/license": "^2.4.0", + "ergebnis/php-cs-fixer-config": "^6.20.0", + "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "fakerphp/faker": "^1.23.1", + "infection/infection": "~0.26.6", + "phpunit/phpunit": "^9.6.16", + "psalm/plugin-phpunit": "~0.18.4", + "rector/rector": "~0.19.2", + "vimeo/psalm": "^5.20.0" }, "type": "library", "extra": { @@ -16034,7 +16199,8 @@ "authors": [ { "name": "Andreas Möller", - "email": "am@localheinz.com" + "email": "am@localheinz.com", + "homepage": "https://localheinz.com" } ], "description": "Provides a JSON schema validator, building on top of justinrainbow/json-schema.", @@ -16046,15 +16212,10 @@ ], "support": { "issues": "https://github.com/ergebnis/json-schema-validator/issues", + "security": "https://github.com/ergebnis/json-schema-validator/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-schema-validator" }, - "funding": [ - { - "url": "https://github.com/localheinz", - "type": "github" - } - ], - "time": "2021-12-13T16:54:56+00:00" + "time": "2024-01-29T16:50:15+00:00" }, { "name": "friendsofphp/php-cs-fixer", @@ -16596,16 +16757,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.50", + "version": "1.10.58", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" + "reference": "a23518379ec4defd9e47cbf81019526861623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", - "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", + "reference": "a23518379ec4defd9e47cbf81019526861623ec2", "shasum": "" }, "require": { @@ -16654,25 +16815,25 @@ "type": "tidelift" } ], - "time": "2023-12-13T10:59:42+00:00" + "time": "2024-02-12T20:02:57+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.53", + "version": "1.3.62", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "85def57e5db6ac6c8a512200c0cfadf7b6621b10" + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/85def57e5db6ac6c8a512200c0cfadf7b6621b10", - "reference": "85def57e5db6ac6c8a512200c0cfadf7b6621b10", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f3abbd8e93e12fed8091be3aeec216b06bed0950", + "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.12" + "phpstan/phpstan": "^1.10.48" }, "conflict": { "doctrine/collections": "<1.0", @@ -16682,24 +16843,26 @@ "doctrine/persistence": "<1.3" }, "require-dev": { + "cache/array-adapter": "^1.1", "composer/semver": "^3.3.2", - "doctrine/annotations": "^1.11.0", - "doctrine/collections": "^1.6", + "cweagans/composer-patches": "^1.7.3", + "doctrine/annotations": "^1.11 || ^2.0", + "doctrine/collections": "^1.6 || ^2.1", "doctrine/common": "^2.7 || ^3.0", "doctrine/dbal": "^2.13.8 || ^3.3.3", - "doctrine/lexer": "^1.2.1", - "doctrine/mongodb-odm": "^1.3 || ^2.1", - "doctrine/orm": "^2.11.0", - "doctrine/persistence": "^1.3.8 || ^2.2.1", + "doctrine/lexer": "^2.0 || ^3.0", + "doctrine/mongodb-odm": "^1.3 || ^2.4.3", + "doctrine/orm": "^2.16.0", + "doctrine/persistence": "^2.2.1 || ^3.2", "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", "nikic/php-parser": "^4.13.2", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/phpstan-phpunit": "^1.3.13", "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^9.5.10", - "ramsey/uuid-doctrine": "^1.5.0", - "symfony/cache": "^4.4.35" + "phpunit/phpunit": "^9.6.16", + "ramsey/uuid": "^4.2", + "symfony/cache": "^5.4" }, "type": "phpstan-extension", "extra": { @@ -16722,9 +16885,9 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.53" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.62" }, - "time": "2023-11-21T10:31:58+00:00" + "time": "2024-02-12T11:52:17+00:00" }, { "name": "phpstan/phpstan-phpunit", @@ -16780,16 +16943,16 @@ }, { "name": "phpstan/phpstan-symfony", - "version": "1.3.6", + "version": "1.3.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "34b3c43684834f6a20aa51af8d455480d9de8b88" + "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/34b3c43684834f6a20aa51af8d455480d9de8b88", - "reference": "34b3c43684834f6a20aa51af8d455480d9de8b88", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/ef7db637be9b85fa00278fc3477ac66abe8eb7d1", + "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1", "shasum": "" }, "require": { @@ -16846,9 +17009,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.6" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.7" }, - "time": "2023-12-22T11:22:34+00:00" + "time": "2024-01-10T21:54:42+00:00" }, { "name": "symfony/browser-kit", @@ -17157,16 +17320,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d49b4f6dc4690cf2c194311bb498abf0cf4f7485", + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485", "shasum": "" }, "require": { @@ -17218,7 +17381,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.3" }, "funding": [ { @@ -17234,20 +17397,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T09:12:31+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/process", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" + "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb", + "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb", "shasum": "" }, "require": { @@ -17280,7 +17443,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.34" + "source": "https://github.com/symfony/process/tree/v5.4.35" }, "funding": [ { @@ -17296,7 +17459,7 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/web-profiler-bundle", From db55cfbc0acc7392607b7c34e690623858c1ad1c Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Mon, 19 Feb 2024 11:05:25 +0100 Subject: [PATCH 03/17] Bump dependencies --- composer.json | 214 +++++++++++++++++++++++++------------------------- composer.lock | 2 +- 2 files changed, 108 insertions(+), 108 deletions(-) diff --git a/composer.json b/composer.json index b8af9dd0f..4a70273c6 100644 --- a/composer.json +++ b/composer.json @@ -56,124 +56,124 @@ "ext-tidy": "*", "ext-tokenizer": "*", "ext-xml": "*", - "babdev/pagerfanta-bundle": "^3.7", - "bdunogier/guzzle-site-authenticator": "^1.0.0", - "craue/config-bundle": "^2.3.0", - "defuse/php-encryption": "^2.1", - "doctrine/collections": "^1.6", - "doctrine/common": "^3.0", - "doctrine/dbal": "^3.3", - "doctrine/doctrine-bundle": "^2.0", - "doctrine/doctrine-migrations-bundle": "^3.2", - "doctrine/event-manager": "^1.1", - "doctrine/migrations": "^3.2", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^3.0", - "egulias/email-validator": "^3.2", + "babdev/pagerfanta-bundle": "^3.8", + "bdunogier/guzzle-site-authenticator": "^1.1.0", + "craue/config-bundle": "^2.7.0", + "defuse/php-encryption": "^2.4", + "doctrine/collections": "^1.8", + "doctrine/common": "^3.4.3", + "doctrine/dbal": "^3.8.2", + "doctrine/doctrine-bundle": "^2.7.2", + "doctrine/doctrine-migrations-bundle": "^3.2.5", + "doctrine/event-manager": "^1.2", + "doctrine/migrations": "^3.5.5", + "doctrine/orm": "^2.18", + "doctrine/persistence": "^3.2", + "egulias/email-validator": "^3.2.6", "enshrined/svg-sanitize": "^0.15.4", - "friendsofsymfony/jsrouting-bundle": "^2.2", + "friendsofsymfony/jsrouting-bundle": "^2.8", "friendsofsymfony/oauth-server-bundle": "dev-master#dc8ff343363cf794d30eb1a123610d186a43f162", - "friendsofsymfony/rest-bundle": "^3.4", - "friendsofsymfony/user-bundle": "^3.1", - "guzzlehttp/guzzle": "^5.3.1", - "guzzlehttp/psr7": "^2.5", - "html2text/html2text": "^4.1", - "incenteev/composer-parameter-handler": "^2.1", - "j0k3r/graby": "^2.0", - "javibravo/simpleue": "^2.0", - "jms/serializer": "^3.17", - "jms/serializer-bundle": "^5.0", - "kphoen/rulerz": "^0.21", + "friendsofsymfony/rest-bundle": "^3.5", + "friendsofsymfony/user-bundle": "^3.2.1", + "guzzlehttp/guzzle": "^5.3.4", + "guzzlehttp/psr7": "^2.6.2", + "html2text/html2text": "^4.3.1", + "incenteev/composer-parameter-handler": "^2.1.5", + "j0k3r/graby": "^2.4.5", + "javibravo/simpleue": "^2.1", + "jms/serializer": "^3.29.1", + "jms/serializer-bundle": "^5.3.1", + "kphoen/rulerz": "^0.21.1", "kphoen/rulerz-bundle": "^0.15", - "laminas/laminas-code": "^4.7", - "lcobucci/jwt": "^4.1.5", - "lexik/form-filter-bundle": "^7.0", + "laminas/laminas-code": "^4.7.1", + "lcobucci/jwt": "^4.3.0", + "lexik/form-filter-bundle": "^7.0.3", "mgargano/simplehtmldom": "^1.5", "mnapoli/piwik-twig-extension": "^3.0", - "nelmio/api-doc-bundle": "^4.10", - "nelmio/cors-bundle": "^2.2", + "nelmio/api-doc-bundle": "^4.11.1", + "nelmio/cors-bundle": "^2.3.1", "ocramius/proxy-manager": "^2.1.1", - "pagerfanta/doctrine-orm-adapter": "^3.7", - "pagerfanta/twig": "^3.7", - "php-amqplib/php-amqplib": "^3.4", - "php-amqplib/rabbitmq-bundle": "^2.11", - "php-http/client-common": "^2.4", - "php-http/discovery": "^1.14", + "pagerfanta/doctrine-orm-adapter": "^3.8", + "pagerfanta/twig": "^3.8", + "php-amqplib/php-amqplib": "^3.6.1", + "php-amqplib/rabbitmq-bundle": "^2.14", + "php-http/client-common": "^2.7.1", + "php-http/discovery": "^1.19.2", "php-http/guzzle5-adapter": "^2.0", - "php-http/httplug": "^2.3", - "php-http/httplug-bundle": "^1.14", - "php-http/message": "^1.13", - "php-http/message-factory": "^1.0", - "pragmarx/recovery": "^0.2.0", - "predis/predis": "^2.0.3", - "psr/http-message": "^1.0", - "psr/log": "^1.1", - "scheb/2fa-backup-code": "^5.13", - "scheb/2fa-bundle": "^5.13", - "scheb/2fa-email": "^5.13", - "scheb/2fa-google-authenticator": "^5.13", - "scheb/2fa-qr-code": "^5.13", - "scheb/2fa-trusted-device": "^5.13", - "sensio/framework-extra-bundle": "^6.2", - "sentry/sentry-symfony": "^4.10.0", - "stof/doctrine-extensions-bundle": "^1.2", - "symfony/asset": "^4.4", - "symfony/config": "^4.4", - "symfony/console": "^4.4", - "symfony/debug": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/doctrine-bridge": "^4.4", - "symfony/dom-crawler": "^4.4", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/finder": "^4.4", - "symfony/form": "^4.4", - "symfony/framework-bundle": "^4.4", - "symfony/google-mailer": "^4.4", - "symfony/http-foundation": "^4.4", - "symfony/http-kernel": "^4.4", - "symfony/mailer": "^4.4", - "symfony/mime": "^4.4", - "symfony/monolog-bundle": "^3.1", - "symfony/options-resolver": "^4.4", - "symfony/proxy-manager-bridge": "^4.4", - "symfony/routing": "^4.4", - "symfony/security-bundle": "^4.4", - "symfony/security-core": "^4.4", - "symfony/security-http": "^4.4", - "symfony/templating": "^4.4", - "symfony/twig-bundle": "^4.4", - "symfony/validator": "^4.4", - "tecnickcom/tcpdf": "^6.3.0", - "twig/extra-bundle": "^3.4", - "twig/string-extra": "^3.4", - "twig/twig": "^3.4.3", - "wallabag/php-mobi": "^1.0", + "php-http/httplug": "^2.4", + "php-http/httplug-bundle": "^1.32", + "php-http/message": "^1.16", + "php-http/message-factory": "^1.1", + "pragmarx/recovery": "^0.2.1", + "predis/predis": "^2.2.2", + "psr/http-message": "^1.1", + "psr/log": "^1.1.4", + "scheb/2fa-backup-code": "^5.13.2", + "scheb/2fa-bundle": "^5.13.2", + "scheb/2fa-email": "^5.13.2", + "scheb/2fa-google-authenticator": "^5.13.2", + "scheb/2fa-qr-code": "^5.13.2", + "scheb/2fa-trusted-device": "^5.13.2", + "sensio/framework-extra-bundle": "^6.2.10", + "sentry/sentry-symfony": "^4.13.2", + "stof/doctrine-extensions-bundle": "^1.7.2", + "symfony/asset": "^4.4.46", + "symfony/config": "^4.4.44", + "symfony/console": "^4.4.49", + "symfony/debug": "^4.4.44", + "symfony/dependency-injection": "^4.4.49", + "symfony/doctrine-bridge": "^4.4.48", + "symfony/dom-crawler": "^4.4.45", + "symfony/error-handler": "^4.4.44", + "symfony/event-dispatcher": "^4.4.44", + "symfony/finder": "^4.4.44", + "symfony/form": "^4.4.48", + "symfony/framework-bundle": "^4.4.51", + "symfony/google-mailer": "^4.4.41", + "symfony/http-foundation": "^4.4.49", + "symfony/http-kernel": "^4.4.51", + "symfony/mailer": "^4.4.49", + "symfony/mime": "^4.4.47", + "symfony/monolog-bundle": "^3.8", + "symfony/options-resolver": "^4.4.44", + "symfony/proxy-manager-bridge": "^4.4.39", + "symfony/routing": "^4.4.44", + "symfony/security-bundle": "^4.4.50", + "symfony/security-core": "^4.4.48", + "symfony/security-http": "^4.4.50", + "symfony/templating": "^4.4.44", + "symfony/twig-bundle": "^4.4.41", + "symfony/validator": "^4.4.48", + "tecnickcom/tcpdf": "^6.6.5", + "twig/extra-bundle": "^3.7", + "twig/string-extra": "^3.8", + "twig/twig": "^3.8.0", + "wallabag/php-mobi": "^1.1.1", "wallabag/phpepub": "^4.0.10", - "willdurand/hateoas": "^3.8", - "willdurand/hateoas-bundle": "^2.1" + "willdurand/hateoas": "^3.10", + "willdurand/hateoas-bundle": "^2.6" }, "require-dev": { - "dama/doctrine-test-bundle": "^7.1", - "doctrine/doctrine-fixtures-bundle": "^3.0", - "ergebnis/composer-normalize": "^2.28", + "dama/doctrine-test-bundle": "^7.1.1", + "doctrine/doctrine-fixtures-bundle": "^3.4.5", + "ergebnis/composer-normalize": "^2.42", "friendsofphp/php-cs-fixer": "^3.4", - "friendsoftwig/twigcs": "^6.0", - "m6web/redis-mock": "^5.0", - "php-http/mock-client": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-doctrine": "^1.3", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-symfony": "^1.2", - "symfony/browser-kit": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/debug-bundle": "^4.4", - "symfony/maker-bundle": "^1.18", - "symfony/phpunit-bridge": "^6.0", - "symfony/var-dumper": "^4.4", - "symfony/web-profiler-bundle": "^4.4", - "symfony/web-server-bundle": "^4.4" + "friendsoftwig/twigcs": "^6.1", + "m6web/redis-mock": "^5.6", + "php-http/mock-client": "^1.6", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.58", + "phpstan/phpstan-doctrine": "^1.3.62", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-symfony": "^1.3.7", + "symfony/browser-kit": "^4.4.44", + "symfony/css-selector": "^4.4.44", + "symfony/debug-bundle": "^4.4.37", + "symfony/maker-bundle": "^1.39.1", + "symfony/phpunit-bridge": "^6.4.3", + "symfony/var-dumper": "^4.4.47", + "symfony/web-profiler-bundle": "^4.4.47", + "symfony/web-server-bundle": "^4.4.44" }, "suggest": { "ext-imagick": "To keep GIF animation when downloading image is enabled" diff --git a/composer.lock b/composer.lock index 50b360f08..9a337a7a6 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": "718a2a076d0976e921e334f1b3505e41", + "content-hash": "c8e57d1a42415287fe16f3417d0c1b01", "packages": [ { "name": "babdev/pagerfanta-bundle", From 87ce9fd48dbeebbda45c717547b7f7e9e21aaf8c Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Mon, 19 Feb 2024 11:08:46 +0100 Subject: [PATCH 04/17] Normalize composer.json --- composer.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index 4a70273c6..182008d5a 100644 --- a/composer.json +++ b/composer.json @@ -196,9 +196,9 @@ }, "config": { "allow-plugins": { - "phpstan/extension-installer": true, + "ergebnis/composer-normalize": true, "php-http/discovery": true, - "ergebnis/composer-normalize": true + "phpstan/extension-installer": true }, "bin-dir": "bin", "platform": { From 09c2ddb79e8430300885c6c171378b79708e53eb Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Tue, 5 Mar 2024 15:46:40 +0100 Subject: [PATCH 05/17] Use a proper "how to" for elCurator --- .../Resources/views/Elcurator/index.html.twig | 44 ++++++++++++++++++- translations/messages.en.yml | 1 + translations/messages.fr.yml | 3 +- 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig index 2d950c95c..fd509288f 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig +++ b/src/Wallabag/ImportBundle/Resources/views/Elcurator/index.html.twig @@ -1,3 +1,45 @@ -{% extends "@WallabagImport/WallabagV1/index.html.twig" %} +{% extends "@WallabagCore/layout.html.twig" %} {% block title %}{{ 'import.elcurator.page_title'|trans }}{% endblock %} + +{% block content %} +
+
+
+ {% include '@WallabagImport/Import/_information.html.twig' %} + +
+
{{ import.description|trans }}
+

{{ 'import.elcurator.how_to'|trans }}

+ +
+ {{ form_start(form, {'method': 'POST'}) }} + {{ form_errors(form) }} +
+
+ {{ form_errors(form.file) }} +
+ {{ form.file.vars.label|trans }} + {{ form_widget(form.file) }} +
+
+ +
+
+
+
{{ 'import.form.mark_as_read_title'|trans }}
+ {{ form_widget(form.mark_as_read) }} + {{ form_label(form.mark_as_read) }} +
+
+ + {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} + + {{ form_rest(form) }} + +
+
+
+
+
+{% endblock %} diff --git a/translations/messages.en.yml b/translations/messages.en.yml index 51aa509f6..43b09fd45 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -502,6 +502,7 @@ import: elcurator: page_title: 'Import > elCurator' description: 'This importer will import all your elCurator articles.' + how_to: Please select your elCurator export and click on the button below to upload and import it. readability: page_title: Import > Readability description: This importer will import all your Readability articles. diff --git a/translations/messages.fr.yml b/translations/messages.fr.yml index 65d2d0ee6..b00b0171a 100644 --- a/translations/messages.fr.yml +++ b/translations/messages.fr.yml @@ -495,7 +495,7 @@ import: wallabag_v1: page_title: Importer > wallabag v1 description: Cet outil va importer toutes vos données de wallabag v1. Sur votre page de configuration de wallabag v1, cliquez sur « Export JSON » dans la section « Exporter vos données de wallabag ». Vous allez récupérer un fichier « wallabag-export-1-xxxx-xx-xx.json ». - how_to: Choisissez le fichier de votre export wallabag v1 et cliquez sur le bouton ci-dessous pour l’importer. + how_to: Choisissez le fichier de votre export wallabag et cliquez sur le bouton ci-dessous pour l’importer. wallabag_v2: page_title: Importer > wallabag v2 description: Cet outil va importer tous vos articles d’une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur « JSON ». Vous allez récupérer un fichier « All articles.json ». @@ -525,6 +525,7 @@ import: elcurator: description: Cet outil va importer tous vos articles depuis elCurator. page_title: Importer > elCurator + how_to: Choisissez le fichier de votre export elCurator et cliquez sur le bouton ci-dessous pour l’importer. delicious: page_title: Importer > del.icio.us how_to: Choisissez le fichier de votre export Delicious et cliquez sur le bouton ci-dessous pour l'importer. From 54ba9a6da88e586b249725813f3e4a83620b3c12 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Wed, 3 Apr 2024 09:26:58 +0200 Subject: [PATCH 06/17] Prepare 2.6.9 Also update deps. --- CHANGELOG.md | 8 + app/config/wallabag.yml | 2 +- composer.lock | 443 ++++++++++++++++++++-------------------- 3 files changed, 232 insertions(+), 221 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e90e27e84..ee1568da2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [2.6.9](https://github.com/wallabag/wallabag/tree/2.6.9) +[Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.8...2.6.9) + +### Fixes +* Fix same domain pagination by @yguedidi in https://github.com/wallabag/wallabag/pull/7266 +* Upgrade PHP dependencies by @yguedidi in https://github.com/wallabag/wallabag/pull/7272 +* Use a proper "how to" for elCurator by @j0k3r in https://github.com/wallabag/wallabag/pull/7323 + ## [2.6.8](https://github.com/wallabag/wallabag/tree/2.6.8) [Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.7...2.6.8) diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml index 4f144a99a..2bded6cd8 100644 --- a/app/config/wallabag.yml +++ b/app/config/wallabag.yml @@ -1,5 +1,5 @@ wallabag_core: - version: 2.6.8 + version: 2.6.9 paypal_url: "https://liberapay.com/wallabag/donate" languages: en: 'English' diff --git a/composer.lock b/composer.lock index 9a337a7a6..4c4c20ed9 100644 --- a/composer.lock +++ b/composer.lock @@ -917,16 +917,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.2", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb" + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/a19a1d05ca211f41089dffcc387733a6875196cb", - "reference": "a19a1d05ca211f41089dffcc387733a6875196cb", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", "shasum": "" }, "require": { @@ -942,12 +942,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.57", + "phpstan/phpstan": "1.10.58", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.8.1", + "squizlabs/php_codesniffer": "3.9.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -1010,7 +1010,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.2" + "source": "https://github.com/doctrine/dbal/tree/3.8.3" }, "funding": [ { @@ -1026,7 +1026,7 @@ "type": "tidelift" } ], - "time": "2024-02-12T18:36:36+00:00" + "time": "2024-03-03T15:55:06+00:00" }, { "name": "doctrine/deprecations", @@ -1709,16 +1709,16 @@ }, { "name": "doctrine/orm", - "version": "2.18.0", + "version": "2.19.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b" + "reference": "1a5a4c674a416b4fdf76833c627c5e7f58bbb890" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b", - "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a5a4c674a416b4fdf76833c627c5e7f58bbb890", + "reference": "1a5a4c674a416b4fdf76833c627c5e7f58bbb890", "shasum": "" }, "require": { @@ -1747,14 +1747,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpstan/phpstan": "~1.4.10 || 1.10.59", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "vimeo/psalm": "4.30.0 || 5.16.0" + "vimeo/psalm": "4.30.0 || 5.22.2" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1804,22 +1804,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.18.0" + "source": "https://github.com/doctrine/orm/tree/2.19.3" }, - "time": "2024-01-31T15:53:12+00:00" + "time": "2024-03-21T11:01:42+00:00" }, { "name": "doctrine/persistence", - "version": "3.2.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", - "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/477da35bd0255e032826f440b94b3e37f2d56f42", + "reference": "477da35bd0255e032826f440b94b3e37f2d56f42", "shasum": "" }, "require": { @@ -1888,7 +1888,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.2.0" + "source": "https://github.com/doctrine/persistence/tree/3.3.2" }, "funding": [ { @@ -1904,20 +1904,20 @@ "type": "tidelift" } ], - "time": "2023-05-17T18:32:04+00:00" + "time": "2024-03-12T14:54:36+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", "shasum": "" }, "require": { @@ -1954,9 +1954,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" + "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" }, - "time": "2022-05-23T21:33:49+00:00" + "time": "2023-08-16T21:49:04+00:00" }, { "name": "egulias/email-validator", @@ -2204,16 +2204,16 @@ }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.16", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", - "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", "shasum": "" }, "require": { @@ -2270,7 +2270,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18" }, "funding": [ { @@ -2282,7 +2282,7 @@ "type": "tidelift" } ], - "time": "2023-05-24T07:17:17+00:00" + "time": "2024-03-20T12:50:41+00:00" }, { "name": "friendsofsymfony/jsrouting-bundle", @@ -4605,24 +4605,24 @@ }, { "name": "j0k3r/graby-site-config", - "version": "1.0.182", + "version": "1.0.185", "source": { "type": "git", "url": "https://github.com/j0k3r/graby-site-config.git", - "reference": "303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c" + "reference": "c2fed027457913fe2e51b68283f1aca019524740" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c", - "reference": "303f34bb50d647aa0a00bc6f0ae933bebcf3bf1c", + "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/c2fed027457913fe2e51b68283f1aca019524740", + "reference": "c2fed027457913fe2e51b68283f1aca019524740", "shasum": "" }, "require": { - "symfony/finder": "~2.6|~3.0|~4.0|~5.0|~6.0" + "symfony/finder": "~2.6|~3.0|~4.0|~5.0|~6.0|~7.0" }, "require-dev": { "liip/rmt": "1.2.*", - "symfony/phpunit-bridge": "^6.0" + "symfony/phpunit-bridge": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -4643,9 +4643,9 @@ "description": "Graby site config files", "support": { "issues": "https://github.com/j0k3r/graby-site-config/issues", - "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.182" + "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.185" }, - "time": "2024-02-01T02:09:26+00:00" + "time": "2024-04-01T02:12:50+00:00" }, { "name": "j0k3r/httplug-ssrf-plugin", @@ -4864,16 +4864,16 @@ }, { "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", "shasum": "" }, "require": { @@ -4881,9 +4881,9 @@ "php": "^7.1|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", + "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", + "phpstan/phpstan": "^1.4", "phpunit/phpunit": "^7.5|^8.5|^9.4", "vimeo/psalm": "^4.3" }, @@ -4917,9 +4917,9 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2024-03-08T09:58:59+00:00" }, { "name": "jms/metadata", @@ -4987,27 +4987,27 @@ }, { "name": "jms/serializer", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "111451f43abb448ce297361a8ab96a9591e848cd" + "reference": "bf1105358123d7c02ee6cad08ea33ab535a09d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/111451f43abb448ce297361a8ab96a9591e848cd", - "reference": "111451f43abb448ce297361a8ab96a9591e848cd", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/bf1105358123d7c02ee6cad08ea33ab535a09d5e", + "reference": "bf1105358123d7c02ee6cad08ea33ab535a09d5e", "shasum": "" }, "require": { - "doctrine/annotations": "^1.14 || ^2.0", "doctrine/instantiator": "^1.3.1 || ^2.0", "doctrine/lexer": "^2.0 || ^3.0", "jms/metadata": "^2.6", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpstan/phpdoc-parser": "^1.20" }, "require-dev": { + "doctrine/annotations": "^1.14 || ^2.0", "doctrine/coding-standard": "^12.0", "doctrine/orm": "^2.14 || ^3.0", "doctrine/persistence": "^2.5.2 || ^3.0", @@ -5017,16 +5017,17 @@ "ocramius/proxy-manager": "^1.0 || ^2.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.0.2", - "phpunit/phpunit": "^8.5.21 || ^9.0 || ^10.0", + "phpunit/phpunit": "^9.0 || ^10.0", "psr/container": "^1.0 || ^2.0", - "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/expression-language": "^3.2 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/filesystem": "^4.2 || ^5.0 || ^6.0 || ^7.0", - "symfony/form": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/translation": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/uid": "^5.1 || ^6.0 || ^7.0", - "symfony/validator": "^3.1.9 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "rector/rector": "^0.19.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/expression-language": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/form": "^5.4 || ^6.0 || ^7.0", + "symfony/translation": "^5.4 || ^6.0 || ^7.0", + "symfony/uid": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.4 || ^3.0" }, "suggest": { @@ -5071,7 +5072,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.29.1" + "source": "https://github.com/schmittjoh/serializer/tree/3.30.0" }, "funding": [ { @@ -5079,7 +5080,7 @@ "type": "github" } ], - "time": "2023-12-14T15:25:09+00:00" + "time": "2024-02-24T14:12:14+00:00" }, { "name": "jms/serializer-bundle", @@ -6522,16 +6523,16 @@ }, { "name": "php-amqplib/rabbitmq-bundle", - "version": "2.14.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/php-amqplib/RabbitMqBundle.git", - "reference": "a80937c30214ffb36683c27edb226ed59492bd08" + "reference": "8c18f6db79b59de88e57bd805192a98e48076c41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/a80937c30214ffb36683c27edb226ed59492bd08", - "reference": "a80937c30214ffb36683c27edb226ed59492bd08", + "url": "https://api.github.com/repos/php-amqplib/RabbitMqBundle/zipball/8c18f6db79b59de88e57bd805192a98e48076c41", + "reference": "8c18f6db79b59de88e57bd805192a98e48076c41", "shasum": "" }, "require": { @@ -6595,9 +6596,9 @@ ], "support": { "issues": "https://github.com/php-amqplib/RabbitMqBundle/issues", - "source": "https://github.com/php-amqplib/RabbitMqBundle/tree/2.14.0" + "source": "https://github.com/php-amqplib/RabbitMqBundle/tree/2.16.0" }, - "time": "2024-01-10T14:06:07+00:00" + "time": "2024-03-25T12:12:05+00:00" }, { "name": "php-http/client-common", @@ -6670,16 +6671,16 @@ }, { "name": "php-http/discovery", - "version": "1.19.2", + "version": "1.19.4", "source": { "type": "git", "url": "https://github.com/php-http/discovery.git", - "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb" + "reference": "0700efda8d7526335132360167315fdab3aeb599" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", - "reference": "61e1a1eb69c92741f5896d9e05fb8e9d7e8bb0cb", + "url": "https://api.github.com/repos/php-http/discovery/zipball/0700efda8d7526335132360167315fdab3aeb599", + "reference": "0700efda8d7526335132360167315fdab3aeb599", "shasum": "" }, "require": { @@ -6703,7 +6704,8 @@ "php-http/httplug": "^1.0 || ^2.0", "php-http/message-factory": "^1.0", "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", - "symfony/phpunit-bridge": "^6.2" + "sebastian/comparator": "^3.0.5 || ^4.0.8", + "symfony/phpunit-bridge": "^6.4.4 || ^7.0.1" }, "type": "composer-plugin", "extra": { @@ -6742,9 +6744,9 @@ ], "support": { "issues": "https://github.com/php-http/discovery/issues", - "source": "https://github.com/php-http/discovery/tree/1.19.2" + "source": "https://github.com/php-http/discovery/tree/1.19.4" }, - "time": "2023-11-30T16:49:05+00:00" + "time": "2024-03-29T13:00:05+00:00" }, { "name": "php-http/guzzle5-adapter", @@ -6873,16 +6875,16 @@ }, { "name": "php-http/httplug-bundle", - "version": "1.32.0", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/php-http/HttplugBundle.git", - "reference": "7faff5c33d0fb507dae4a8dedfbe4dc32165e8fa" + "reference": "76e4c5d91f5149b56f3fccccd7a6e66901177b09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/HttplugBundle/zipball/7faff5c33d0fb507dae4a8dedfbe4dc32165e8fa", - "reference": "7faff5c33d0fb507dae4a8dedfbe4dc32165e8fa", + "url": "https://api.github.com/repos/php-http/HttplugBundle/zipball/76e4c5d91f5149b56f3fccccd7a6e66901177b09", + "reference": "76e4c5d91f5149b56f3fccccd7a6e66901177b09", "shasum": "" }, "require": { @@ -6903,6 +6905,7 @@ "symfony/options-resolver": "^4.4 || ^5.0 || ^6.0 || ^7.0" }, "conflict": { + "php-http/cache-plugin": "<1.7.0", "php-http/curl-client": "<2.0", "php-http/guzzle6-adapter": "<1.1", "php-http/socket-client": "<2.0" @@ -6968,9 +6971,9 @@ ], "support": { "issues": "https://github.com/php-http/HttplugBundle/issues", - "source": "https://github.com/php-http/HttplugBundle/tree/1.32.0" + "source": "https://github.com/php-http/HttplugBundle/tree/1.33.0" }, - "time": "2023-12-06T14:57:48+00:00" + "time": "2024-02-27T16:04:16+00:00" }, { "name": "php-http/logger-plugin", @@ -7033,16 +7036,16 @@ }, { "name": "php-http/message", - "version": "1.16.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/php-http/message.git", - "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd" + "reference": "5997f3289332c699fa2545c427826272498a2088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/47a14338bf4ebd67d317bf1144253d7db4ab55fd", - "reference": "47a14338bf4ebd67d317bf1144253d7db4ab55fd", + "url": "https://api.github.com/repos/php-http/message/zipball/5997f3289332c699fa2545c427826272498a2088", + "reference": "5997f3289332c699fa2545c427826272498a2088", "shasum": "" }, "require": { @@ -7096,9 +7099,9 @@ ], "support": { "issues": "https://github.com/php-http/message/issues", - "source": "https://github.com/php-http/message/tree/1.16.0" + "source": "https://github.com/php-http/message/tree/1.16.1" }, - "time": "2023-05-17T06:43:38+00:00" + "time": "2024-03-07T13:22:09+00:00" }, { "name": "php-http/message-factory", @@ -7157,16 +7160,16 @@ }, { "name": "php-http/promise", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07" + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/2916a606d3b390f4e9e8e2b8dd68581508be0f07", - "reference": "2916a606d3b390f4e9e8e2b8dd68581508be0f07", + "url": "https://api.github.com/repos/php-http/promise/zipball/fc85b1fba37c169a69a07ef0d5a8075770cc1f83", + "reference": "fc85b1fba37c169a69a07ef0d5a8075770cc1f83", "shasum": "" }, "require": { @@ -7203,9 +7206,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.3.0" + "source": "https://github.com/php-http/promise/tree/1.3.1" }, - "time": "2024-01-04T18:49:48+00:00" + "time": "2024-03-15T13:55:21+00:00" }, { "name": "php-http/stopwatch-plugin", @@ -7377,21 +7380,21 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.8.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fad452781b3d774e3337b0c0b245dd8e5a4455fc", - "reference": "fad452781b3d774e3337b0c0b245dd8e5a4455fc", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", "phpstan/phpdoc-parser": "^1.13" }, @@ -7429,22 +7432,22 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" }, - "time": "2024-01-11T11:49:22+00:00" + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpseclib/phpseclib", - "version": "3.0.35", + "version": "3.0.37", "source": { "type": "git", "url": "https://github.com/phpseclib/phpseclib.git", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe" + "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/4b1827beabce71953ca479485c0ae9c51287f2fe", - "reference": "4b1827beabce71953ca479485c0ae9c51287f2fe", + "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/cfa2013d0f68c062055180dd4328cc8b9d1f30b8", + "reference": "cfa2013d0f68c062055180dd4328cc8b9d1f30b8", "shasum": "" }, "require": { @@ -7525,7 +7528,7 @@ ], "support": { "issues": "https://github.com/phpseclib/phpseclib/issues", - "source": "https://github.com/phpseclib/phpseclib/tree/3.0.35" + "source": "https://github.com/phpseclib/phpseclib/tree/3.0.37" }, "funding": [ { @@ -7541,20 +7544,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T01:59:53+00:00" + "time": "2024-03-03T02:14:58+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.25.0", + "version": "1.27.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/86e4d5a4b036f8f0be1464522f4c6b584c452757", + "reference": "86e4d5a4b036f8f0be1464522f4c6b584c452757", "shasum": "" }, "require": { @@ -7586,9 +7589,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.27.0" }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2024-03-21T13:14:53+00:00" }, { "name": "phpzip/phpzip", @@ -8923,16 +8926,16 @@ }, { "name": "sentry/sentry-symfony", - "version": "4.13.2", + "version": "4.14.0", "source": { "type": "git", "url": "https://github.com/getsentry/sentry-symfony.git", - "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67" + "reference": "001c4cfd8fe93cbb00edaca903ffbfac28259170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/bf049e69863465f2e0ba2555dbb5224641a37d67", - "reference": "bf049e69863465f2e0ba2555dbb5224641a37d67", + "url": "https://api.github.com/repos/getsentry/sentry-symfony/zipball/001c4cfd8fe93cbb00edaca903ffbfac28259170", + "reference": "001c4cfd8fe93cbb00edaca903ffbfac28259170", "shasum": "" }, "require": { @@ -8953,8 +8956,8 @@ "symfony/security-http": "^4.4.20||^5.0.11||^6.0||^7.0" }, "require-dev": { - "doctrine/dbal": "^2.13||^3.0", - "doctrine/doctrine-bundle": "^1.12||^2.5", + "doctrine/dbal": "^2.13||^3.3||^4.0", + "doctrine/doctrine-bundle": "^2.6", "friendsofphp/php-cs-fixer": "^2.19||^3.40", "masterminds/html5": "^2.8", "phpstan/extension-installer": "^1.0", @@ -9021,7 +9024,7 @@ ], "support": { "issues": "https://github.com/getsentry/sentry-symfony/issues", - "source": "https://github.com/getsentry/sentry-symfony/tree/4.13.2" + "source": "https://github.com/getsentry/sentry-symfony/tree/4.14.0" }, "funding": [ { @@ -9033,7 +9036,7 @@ "type": "custom" } ], - "time": "2024-01-11T14:55:45+00:00" + "time": "2024-02-26T09:27:19+00:00" }, { "name": "simplepie/simplepie", @@ -9381,16 +9384,16 @@ }, { "name": "symfony/cache", - "version": "v5.4.35", + "version": "v5.4.38", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "db1adb004e2da984085d0178964eb6f319d3cba1" + "reference": "223c3afac82e003a76931b71d77db408636a0de8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/db1adb004e2da984085d0178964eb6f319d3cba1", - "reference": "db1adb004e2da984085d0178964eb6f319d3cba1", + "url": "https://api.github.com/repos/symfony/cache/zipball/223c3afac82e003a76931b71d77db408636a0de8", + "reference": "223c3afac82e003a76931b71d77db408636a0de8", "shasum": "" }, "require": { @@ -9458,7 +9461,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.35" + "source": "https://github.com/symfony/cache/tree/v5.4.38" }, "funding": [ { @@ -9474,7 +9477,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-03-19T09:55:32+00:00" }, { "name": "symfony/cache-contracts", @@ -10425,16 +10428,16 @@ }, { "name": "symfony/filesystem", - "version": "v5.4.35", + "version": "v5.4.38", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086" + "reference": "899330a01056077271e2f614c7b28b0379a671eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086", - "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/899330a01056077271e2f614c7b28b0379a671eb", + "reference": "899330a01056077271e2f614c7b28b0379a671eb", "shasum": "" }, "require": { @@ -10469,7 +10472,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.35" + "source": "https://github.com/symfony/filesystem/tree/v5.4.38" }, "funding": [ { @@ -10485,7 +10488,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-03-21T08:05:07+00:00" }, { "name": "symfony/finder", @@ -10857,23 +10860,23 @@ }, { "name": "symfony/http-client", - "version": "v5.4.35", + "version": "v5.4.38", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3" + "reference": "2a292194f6d4cf22d2348248d1c637750f72309d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", - "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", + "url": "https://api.github.com/repos/symfony/http-client/zipball/2a292194f6d4cf22d2348248d1c637750f72309d", + "reference": "2a292194f6d4cf22d2348248d1c637750f72309d", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", + "symfony/http-client-contracts": "^2.5.3", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.0|^2|^3" @@ -10889,7 +10892,7 @@ "amphp/http-client": "^4.2.1", "amphp/http-tunnel": "^1.0", "amphp/socket": "^1.1", - "guzzlehttp/promises": "^1.4", + "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "php-http/message-factory": "^1.0", @@ -10928,7 +10931,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.35" + "source": "https://github.com/symfony/http-client/tree/v5.4.38" }, "funding": [ { @@ -10944,20 +10947,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T14:02:34+00:00" + "time": "2024-04-01T18:54:44+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "version": "2.5.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1", + "reference": "e5cc97c2b4a4db0ba26bebc154f1426e3fd1d2f1", "shasum": "" }, "require": { @@ -11006,7 +11009,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/http-client-contracts/tree/2.5" }, "funding": [ { @@ -11022,7 +11025,7 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2024-03-26T19:42:53+00:00" }, { "name": "symfony/http-foundation", @@ -12535,16 +12538,16 @@ }, { "name": "symfony/property-info", - "version": "v5.4.35", + "version": "v5.4.38", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198" + "reference": "f3e4b84e5a33e655222167894398b671e93322d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d30d48f366ad2bfbf521256be85eb1c182c29198", - "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198", + "url": "https://api.github.com/repos/symfony/property-info/zipball/f3e4b84e5a33e655222167894398b671e93322d0", + "reference": "f3e4b84e5a33e655222167894398b671e93322d0", "shasum": "" }, "require": { @@ -12606,7 +12609,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.35" + "source": "https://github.com/symfony/property-info/tree/v5.4.38" }, "funding": [ { @@ -12622,7 +12625,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:43:50+00:00" + "time": "2024-03-21T07:26:31+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -13517,16 +13520,16 @@ }, { "name": "symfony/string", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2" + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2", - "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2", + "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", "shasum": "" }, "require": { @@ -13583,7 +13586,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.35" + "source": "https://github.com/symfony/string/tree/v5.4.36" }, "funding": [ { @@ -13599,7 +13602,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-01T08:49:30+00:00" }, { "name": "symfony/templating", @@ -14386,20 +14389,20 @@ }, { "name": "tecnickcom/tcpdf", - "version": "6.6.5", + "version": "6.7.4", "source": { "type": "git", "url": "https://github.com/tecnickcom/TCPDF.git", - "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce" + "reference": "d4adef47ca21c90e6483d59dcb9e5b1023696937" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/5fce932fcee4371865314ab7f6c0d85423c5c7ce", - "reference": "5fce932fcee4371865314ab7f6c0d85423c5c7ce", + "url": "https://api.github.com/repos/tecnickcom/TCPDF/zipball/d4adef47ca21c90e6483d59dcb9e5b1023696937", + "reference": "d4adef47ca21c90e6483d59dcb9e5b1023696937", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.5.0" }, "type": "library", "autoload": { @@ -14446,7 +14449,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/TCPDF/issues", - "source": "https://github.com/tecnickcom/TCPDF/tree/6.6.5" + "source": "https://github.com/tecnickcom/TCPDF/tree/6.7.4" }, "funding": [ { @@ -14454,7 +14457,7 @@ "type": "custom" } ], - "time": "2023-09-06T15:09:26+00:00" + "time": "2024-03-25T23:56:24+00:00" }, { "name": "thecodingmachine/safe", @@ -15275,16 +15278,16 @@ }, { "name": "zircote/swagger-php", - "version": "4.8.4", + "version": "4.8.7", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c" + "reference": "2357fafbb084be0f9eda7b5c1a659704fed65b28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c", - "reference": "bdee7f5a9216ce103ba2c953c1c43c4a3e139e4c", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/2357fafbb084be0f9eda7b5c1a659704fed65b28", + "reference": "2357fafbb084be0f9eda7b5c1a659704fed65b28", "shasum": "" }, "require": { @@ -15350,9 +15353,9 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/4.8.4" + "source": "https://github.com/zircote/swagger-php/tree/4.8.7" }, - "time": "2024-02-04T21:16:47+00:00" + "time": "2024-03-23T06:35:46+00:00" } ], "packages-dev": [ @@ -16542,21 +16545,21 @@ }, { "name": "nikic/php-parser", - "version": "v4.18.0", + "version": "v4.19.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", @@ -16592,9 +16595,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2023-12-10T21:03:43+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { "name": "php-cs-fixer/diff", @@ -16757,16 +16760,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.58", + "version": "1.10.66", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2" + "reference": "94779c987e4ebd620025d9e5fdd23323903950bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a23518379ec4defd9e47cbf81019526861623ec2", - "reference": "a23518379ec4defd9e47cbf81019526861623ec2", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/94779c987e4ebd620025d9e5fdd23323903950bd", + "reference": "94779c987e4ebd620025d9e5fdd23323903950bd", "shasum": "" }, "require": { @@ -16815,25 +16818,25 @@ "type": "tidelift" } ], - "time": "2024-02-12T20:02:57+00:00" + "time": "2024-03-28T16:17:31+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.62", + "version": "1.3.64", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950" + "reference": "f42828ad684e026054c3d94161d89870150bc3da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f3abbd8e93e12fed8091be3aeec216b06bed0950", - "reference": "f3abbd8e93e12fed8091be3aeec216b06bed0950", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/f42828ad684e026054c3d94161d89870150bc3da", + "reference": "f42828ad684e026054c3d94161d89870150bc3da", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.48" + "phpstan/phpstan": "^1.10.64" }, "conflict": { "doctrine/collections": "<1.0", @@ -16885,22 +16888,22 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.62" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.64" }, - "time": "2024-02-12T11:52:17+00:00" + "time": "2024-03-21T10:19:51+00:00" }, { "name": "phpstan/phpstan-phpunit", - "version": "1.3.15", + "version": "1.3.16", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a" + "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", - "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d5242a59d035e46774f2e634b374bc39ff62cb95", + "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95", "shasum": "" }, "require": { @@ -16937,28 +16940,28 @@ "description": "PHPUnit extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.15" + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.16" }, - "time": "2023-10-09T18:58:39+00:00" + "time": "2024-02-23T09:51:20+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.3.7", + "version": "1.3.9", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1" + "reference": "a32bc86da24495025d7aafd1ba62444d4a364a98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/ef7db637be9b85fa00278fc3477ac66abe8eb7d1", - "reference": "ef7db637be9b85fa00278fc3477ac66abe8eb7d1", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/a32bc86da24495025d7aafd1ba62444d4a364a98", + "reference": "a32bc86da24495025d7aafd1ba62444d4a364a98", "shasum": "" }, "require": { "ext-simplexml": "*", "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.36" + "phpstan/phpstan": "^1.10.62" }, "conflict": { "symfony/framework-bundle": "<3.0" @@ -17009,9 +17012,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.7" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.9" }, - "time": "2024-01-10T21:54:42+00:00" + "time": "2024-03-16T16:50:20+00:00" }, { "name": "symfony/browser-kit", @@ -17320,16 +17323,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.3", + "version": "v6.4.6", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485" + "reference": "3065d1c5b4cd0a46b11845b705d21ee692e52cd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d49b4f6dc4690cf2c194311bb498abf0cf4f7485", - "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/3065d1c5b4cd0a46b11845b705d21ee692e52cd6", + "reference": "3065d1c5b4cd0a46b11845b705d21ee692e52cd6", "shasum": "" }, "require": { @@ -17381,7 +17384,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.3" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.6" }, "funding": [ { @@ -17397,20 +17400,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-03-19T11:56:30+00:00" }, { "name": "symfony/process", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb" + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb", - "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb", + "url": "https://api.github.com/repos/symfony/process/zipball/4fdf34004f149cc20b2f51d7d119aa500caad975", + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975", "shasum": "" }, "require": { @@ -17443,7 +17446,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.35" + "source": "https://github.com/symfony/process/tree/v5.4.36" }, "funding": [ { @@ -17459,7 +17462,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-12T15:49:53+00:00" }, { "name": "symfony/web-profiler-bundle", From bee59d1c4a6b8546ef49070264bbd7a4bbc41dd8 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Mon, 15 Jul 2024 10:44:49 +0200 Subject: [PATCH 07/17] Update site config --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 4c4c20ed9..c2a61423b 100644 --- a/composer.lock +++ b/composer.lock @@ -4605,16 +4605,16 @@ }, { "name": "j0k3r/graby-site-config", - "version": "1.0.185", + "version": "1.0.189", "source": { "type": "git", "url": "https://github.com/j0k3r/graby-site-config.git", - "reference": "c2fed027457913fe2e51b68283f1aca019524740" + "reference": "4c4721be3e7b8830dd6881ff80e149fb14a19bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/c2fed027457913fe2e51b68283f1aca019524740", - "reference": "c2fed027457913fe2e51b68283f1aca019524740", + "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/4c4721be3e7b8830dd6881ff80e149fb14a19bb8", + "reference": "4c4721be3e7b8830dd6881ff80e149fb14a19bb8", "shasum": "" }, "require": { @@ -4643,9 +4643,9 @@ "description": "Graby site config files", "support": { "issues": "https://github.com/j0k3r/graby-site-config/issues", - "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.185" + "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.189" }, - "time": "2024-04-01T02:12:50+00:00" + "time": "2024-07-01T02:17:59+00:00" }, { "name": "j0k3r/httplug-ssrf-plugin", From 580c5fe810f0aab3ccc1784112b63c050e9fd400 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Mon, 15 Jul 2024 10:54:21 +0200 Subject: [PATCH 08/17] Downgrade `lcobucci/jwt` because of auth problem --- composer.json | 2 +- composer.lock | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 182008d5a..2d05b6065 100644 --- a/composer.json +++ b/composer.json @@ -86,7 +86,7 @@ "kphoen/rulerz": "^0.21.1", "kphoen/rulerz-bundle": "^0.15", "laminas/laminas-code": "^4.7.1", - "lcobucci/jwt": "^4.3.0", + "lcobucci/jwt": "4.1.5", "lexik/form-filter-bundle": "^7.0.3", "mgargano/simplehtmldom": "^1.5", "mnapoli/piwik-twig-extension": "^3.0", diff --git a/composer.lock b/composer.lock index c2a61423b..4de0c259d 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": "c8e57d1a42415287fe16f3417d0c1b01", + "content-hash": "313f6b39034c27c58a102bfadb5ae30f", "packages": [ { "name": "babdev/pagerfanta-bundle", @@ -5551,16 +5551,16 @@ }, { "name": "lcobucci/jwt", - "version": "4.3.0", + "version": "4.1.5", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4" + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/4d7de2fe0d51a96418c0d04004986e410e87f6b4", - "reference": "4d7de2fe0d51a96418c0d04004986e410e87f6b4", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/fe2d89f2eaa7087af4aa166c6f480ef04e000582", + "reference": "fe2d89f2eaa7087af4aa166c6f480ef04e000582", "shasum": "" }, "require": { @@ -5569,19 +5569,19 @@ "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "lcobucci/clock": "^2.0 || ^3.0", + "lcobucci/clock": "^2.0", "php": "^7.4 || ^8.0" }, "require-dev": { "infection/infection": "^0.21", "lcobucci/coding-standard": "^6.0", "mikey179/vfsstream": "^1.6.7", - "phpbench/phpbench": "^1.2", + "phpbench/phpbench": "^1.0", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", "phpunit/php-invoker": "^3.1", "phpunit/phpunit": "^9.5" }, @@ -5609,7 +5609,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/4.3.0" + "source": "https://github.com/lcobucci/jwt/tree/4.1.5" }, "funding": [ { @@ -5621,7 +5621,7 @@ "type": "patreon" } ], - "time": "2023-01-02T13:28:00+00:00" + "time": "2021-09-28T19:34:56+00:00" }, { "name": "lexik/form-filter-bundle", From 898890c3715fb486076df1c5e4e1c050592dd2b2 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Mon, 15 Jul 2024 13:11:18 +0200 Subject: [PATCH 09/17] Fix tests --- .../Controller/EntryControllerTest.php | 12 ++++++------ .../Controller/FirefoxControllerTest.php | 17 ----------------- .../fixtures/firefox-bookmarks.json | 4 ++-- 3 files changed, 8 insertions(+), 25 deletions(-) diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index db5555cda..35d6e8f90 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -17,9 +17,9 @@ use Wallabag\UserBundle\Entity\User; class EntryControllerTest extends WallabagCoreTestCase { - public const AN_URL_CONTAINING_AN_ARTICLE_WITH_IMAGE = 'https://www.lemonde.fr/judo/article/2017/11/11/judo-la-decima-de-teddy-riner_5213605_1556020.html'; + public const AN_URL_CONTAINING_AN_ARTICLE_WITH_IMAGE = 'https://www.20minutes.fr/sport/jo_2024/4095122-20240712-jo-paris-2024-saut-ange-bombe-comment-anne-hidalgo-va-plonger-seine-si-fait-vraiment'; public $downloadImagesEnabled = false; - public $url = 'https://www.lemonde.fr/pixels/article/2019/06/18/ce-qu-il-faut-savoir-sur-le-libra-la-cryptomonnaie-de-facebook_5477887_4408996.html'; + public $url = 'https://www.20minutes.fr/sport/jo_2024/4095122-20240712-jo-paris-2024-saut-ange-bombe-comment-anne-hidalgo-va-plonger-seine-si-fait-vraiment'; private $entryDataTestAttribute = '[data-test="entry"]'; /** @@ -175,9 +175,9 @@ class EntryControllerTest extends WallabagCoreTestCase $this->assertInstanceOf(Entry::class, $content); $this->assertSame($this->url, $content->getUrl()); - $this->assertStringContainsString('la cryptomonnaie de Facebook', $content->getTitle()); + $this->assertStringContainsString('Comment Hidalgo', $content->getTitle()); $this->assertSame('fr', $content->getLanguage()); - $this->assertArrayHasKey('x-frame-options', $content->getHeaders()); + $this->assertArrayHasKey('cache-control', $content->getHeaders()); $client->getContainer()->get(Config::class)->set('store_article_headers', 0); } @@ -1218,7 +1218,7 @@ class EntryControllerTest extends WallabagCoreTestCase $this->assertInstanceOf(Entry::class, $entry); $this->assertSame($url, $entry->getUrl()); - $this->assertStringContainsString('Judo', $entry->getTitle()); + $this->assertStringContainsString('Comment Hidalgo', $entry->getTitle()); // instead of checking for the filename (which might change) check that the image is now local $this->assertStringContainsString(rtrim($client->getContainer()->getParameter('domain_name'), '/') . '/assets/images/', $entry->getContent()); @@ -1499,7 +1499,7 @@ class EntryControllerTest extends WallabagCoreTestCase 'zh_CN', ], 'pt_BR' => [ - 'https://esportes.r7.com/lance/futebol/victor-hugo-e-matheus-franca-devem-desfalcar-flamengo-no-carioca-22112022', + 'https://esportes.r7.com/lance/futebol/victor-hugo-e-matheus-franca-devem-desfalcar-flamengo-no-carioca-22112022/', 'pt_BR', ], 'es-ES' => [ diff --git a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php index 1c30d6b0a..f6dfff4c8 100644 --- a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php @@ -127,23 +127,6 @@ class FirefoxControllerTest extends WallabagCoreTestCase $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://lexpansion.lexpress.fr is ok'); $this->assertNotEmpty($content->getLanguage(), 'Language for http://lexpansion.lexpress.fr is ok'); $this->assertCount(3, $content->getTags()); - - $content = $client->getContainer() - ->get(EntityManagerInterface::class) - ->getRepository(Entry::class) - ->findByUrlAndUserId( - 'https://www.lemonde.fr/disparitions/article/2018/07/05/le-journaliste-et-cineaste-claude-lanzmann-est-mort_5326313_3382.html', - $this->getLoggedInUserId() - ); - - $this->assertInstanceOf(Entry::class, $content); - $this->assertNotEmpty($content->getMimetype(), 'Mimetype for https://www.lemonde.fr is ok'); - $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://www.lemonde.fr is ok'); - $this->assertNotEmpty($content->getLanguage(), 'Language for https://www.lemonde.fr is ok'); - - $createdAt = $content->getCreatedAt(); - $this->assertSame('2013', $createdAt->format('Y')); - $this->assertSame('12', $createdAt->format('m')); } public function testImportWallabagWithEmptyFile() diff --git a/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json b/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json index 2491ea978..49fed169a 100644 --- a/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json +++ b/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json @@ -39,13 +39,13 @@ }, { "guid": "E385l9vZ_LVn", - "title": "Le journaliste et cinéaste Claude Lanzmann est mort", + "title": "JO Paris 2024 : Où courir dans la capitale maintenant que les quais sont fermés ?", "index": 1, "dateAdded": 1388166091544000, "lastModified": 1388166091545000, "id": 5, "type": "text/x-moz-place", - "uri": "https://www.lemonde.fr/disparitions/article/2018/07/05/le-journaliste-et-cineaste-claude-lanzmann-est-mort_5326313_3382.html" + "uri": "https://www.20minutes.fr/paris/4100740-20240715-jo-paris-2024-courir-capitale-maintenant-quais-fermes" } ] }, From d757612c778ccd6fc979c2730a9b14307da25da3 Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Sat, 17 Aug 2024 22:16:29 +0200 Subject: [PATCH 10/17] Update site config --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 4de0c259d..4e7d03b0d 100644 --- a/composer.lock +++ b/composer.lock @@ -4605,16 +4605,16 @@ }, { "name": "j0k3r/graby-site-config", - "version": "1.0.189", + "version": "1.0.190", "source": { "type": "git", "url": "https://github.com/j0k3r/graby-site-config.git", - "reference": "4c4721be3e7b8830dd6881ff80e149fb14a19bb8" + "reference": "9d7c4dbb8a2c5633e0f7652069943fae41f0dc4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/4c4721be3e7b8830dd6881ff80e149fb14a19bb8", - "reference": "4c4721be3e7b8830dd6881ff80e149fb14a19bb8", + "url": "https://api.github.com/repos/j0k3r/graby-site-config/zipball/9d7c4dbb8a2c5633e0f7652069943fae41f0dc4c", + "reference": "9d7c4dbb8a2c5633e0f7652069943fae41f0dc4c", "shasum": "" }, "require": { @@ -4643,9 +4643,9 @@ "description": "Graby site config files", "support": { "issues": "https://github.com/j0k3r/graby-site-config/issues", - "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.189" + "source": "https://github.com/j0k3r/graby-site-config/tree/1.0.190" }, - "time": "2024-07-01T02:17:59+00:00" + "time": "2024-08-01T02:18:53+00:00" }, { "name": "j0k3r/httplug-ssrf-plugin", From f2c72e1569513171521aa2833d93c10cdb51286e Mon Sep 17 00:00:00 2001 From: Yassine Guedidi Date: Sun, 18 Aug 2024 18:16:05 +0200 Subject: [PATCH 11/17] Prepare 2.6.10 --- CHANGELOG.md | 9 +++++++++ app/config/wallabag.yml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee1568da2..66916a148 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## [2.6.10](https://github.com/wallabag/wallabag/tree/2.6.10) +[Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.9...2.6.10) + +### Fixes + +* Update site config & tests by @j0k3r in https://github.com/wallabag/wallabag/pull/7582 (fixes "Key provided is shorter + than 256 bits, only 240 bits provided" https://github.com/wallabag/wallabag/issues/7531) +* Update site config by @yguedidi in https://github.com/wallabag/wallabag/pull/7623 + ## [2.6.9](https://github.com/wallabag/wallabag/tree/2.6.9) [Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.8...2.6.9) diff --git a/app/config/wallabag.yml b/app/config/wallabag.yml index 2bded6cd8..98d058425 100644 --- a/app/config/wallabag.yml +++ b/app/config/wallabag.yml @@ -1,5 +1,5 @@ wallabag_core: - version: 2.6.9 + version: 2.6.10 paypal_url: "https://liberapay.com/wallabag/donate" languages: en: 'English' From 7ddf5066efa1f46200bb04e948208fe5fa4cbe12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 31 Oct 2024 08:17:40 +0100 Subject: [PATCH 12/17] Replaced gitter with matrix --- .github/ISSUE_TEMPLATE/config.yml | 4 ++-- README.md | 2 +- .../CoreBundle/Resources/views/Static/quickstart.html.twig | 2 +- translations/messages.cs.yml | 2 +- translations/messages.de.yml | 2 +- translations/messages.el.yml | 2 +- translations/messages.en.yml | 2 +- translations/messages.es.yml | 2 +- translations/messages.fa.yml | 2 +- translations/messages.fr.yml | 2 +- translations/messages.gl.yml | 2 +- translations/messages.hr.yml | 2 +- translations/messages.hu.yml | 2 +- translations/messages.it.yml | 2 +- translations/messages.ja.yml | 2 +- translations/messages.ko.yml | 2 +- translations/messages.nb.yml | 2 +- translations/messages.nl.yml | 2 +- translations/messages.oc.yml | 2 +- translations/messages.pl.yml | 2 +- translations/messages.pt.yml | 2 +- translations/messages.ru.yml | 2 +- translations/messages.th.yml | 2 +- translations/messages.tr.yml | 2 +- translations/messages.uk.yml | 2 +- translations/messages.zh.yml | 2 +- 26 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 3be7f77da..13fb6d04e 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: false contact_links: - name: Want to ask something? - url: https://gitter.im/wallabag/wallabag - about: Use Gitter to ask questions. + url: https://matrix.to/#/#wallabag:matrix.org + about: Use Matrix to ask questions. diff --git a/README.md b/README.md index 376d99be0..d372016ef 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # wallabag ![CI](https://github.com/wallabag/wallabag/workflows/CI/badge.svg) -[![Gitter](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/wallabag/wallabag) +[![Matrix](https://matrix.to/img/matrix-badge.svg)](https://matrix.to/#/#wallabag:matrix.org) [![Donation Status](https://img.shields.io/liberapay/goal/wallabag.svg?logo=liberapay)](https://liberapay.com/wallabag/donate) [![Translation status](https://hosted.weblate.org/widgets/wallabag/-/svg-badge.svg)](https://hosted.weblate.org/engage/wallabag/?utm_source=widget) ![License](https://img.shields.io/github/license/wallabag/wallabag) diff --git a/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig index 44bc4ede7..c473650fb 100644 --- a/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/Static/quickstart.html.twig @@ -102,7 +102,7 @@ diff --git a/translations/messages.cs.yml b/translations/messages.cs.yml index b90a9c9ea..42a0bae07 100644 --- a/translations/messages.cs.yml +++ b/translations/messages.cs.yml @@ -343,7 +343,7 @@ tag: quickstart: support: title: Podpora - gitter: Na Gitteru + matrix: Na Gitteru email: E-mailem github: Na GitHubu description: Pokud potřebujete pomoc, jsme tu pro vás. diff --git a/translations/messages.de.yml b/translations/messages.de.yml index 7feb26f68..b59cab5a9 100644 --- a/translations/messages.de.yml +++ b/translations/messages.de.yml @@ -467,7 +467,7 @@ quickstart: description: Wenn du Hilfe brauchst, wir sind für dich da. github: Auf GitHub email: Über E-Mail - gitter: Auf Gitter + matrix: Auf Matrix tag: page_title: Tags list: diff --git a/translations/messages.el.yml b/translations/messages.el.yml index f42dcd5a4..ac4622f14 100644 --- a/translations/messages.el.yml +++ b/translations/messages.el.yml @@ -249,7 +249,7 @@ tag: page_title: Ετικέτες quickstart: support: - gitter: Στο Gitter + matrix: Στο Matrix email: Με email github: Στο GitHub description: Αν χρειάζεστε βοήθεια, είμαστε εδώ για εσάς. diff --git a/translations/messages.en.yml b/translations/messages.en.yml index 43b09fd45..e06387742 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -457,7 +457,7 @@ quickstart: description: If you need some help, we are here for you. github: On GitHub email: By email - gitter: On Gitter + matrix: On Matrix tag: confirm: delete: Delete the %name% tag diff --git a/translations/messages.es.yml b/translations/messages.es.yml index 0f15738ea..2a4e468ab 100644 --- a/translations/messages.es.yml +++ b/translations/messages.es.yml @@ -470,7 +470,7 @@ quickstart: description: 'Si necesitas ayuda, estamos a tu disposición.' github: 'En GitHub' email: 'Por correo electrónico' - gitter: 'En Gitter' + matrix: 'En Matrix' tag: page_title: 'Etiquetas' list: diff --git a/translations/messages.fa.yml b/translations/messages.fa.yml index 1a806cdc8..9941c5949 100644 --- a/translations/messages.fa.yml +++ b/translations/messages.fa.yml @@ -270,7 +270,7 @@ quickstart: description: به کمک نیاز دارید؟ ما پشتیبان شما هستیم. github: روی گیت‌هاب email: با ایمیل - gitter: روی گیتر + matrix: روی گیتر tag: page_title: برچسب‌ها list: diff --git a/translations/messages.fr.yml b/translations/messages.fr.yml index b00b0171a..c10a124ff 100644 --- a/translations/messages.fr.yml +++ b/translations/messages.fr.yml @@ -457,7 +457,7 @@ quickstart: description: Parce que vous avez peut-être besoin de nous poser une question, nous sommes disponibles pour vous. github: Sur GitHub email: Par courriel - gitter: Sur Gitter + matrix: Sur Matrix tag: confirm: delete: Supprimer le tag %name% diff --git a/translations/messages.gl.yml b/translations/messages.gl.yml index c6de3b6c7..952ab7800 100644 --- a/translations/messages.gl.yml +++ b/translations/messages.gl.yml @@ -477,7 +477,7 @@ tag: delete: Eliminar a etiqueta %name% quickstart: support: - gitter: En Gitter + matrix: En Matrix email: Por email github: En GitHub description: Se precisas axuda, aquí estamos para ti. diff --git a/translations/messages.hr.yml b/translations/messages.hr.yml index fac4cd4e4..b6dcdcdb7 100644 --- a/translations/messages.hr.yml +++ b/translations/messages.hr.yml @@ -628,7 +628,7 @@ quickstart: use_docker: Koristi Docker za instliranje wallabaga support: github: Na GitHubu - gitter: Na Gitteru + matrix: Na Gitteru title: Podrška email: Putem e-maila description: Ako trebaš pomoć, spremni smo ti pomoći. diff --git a/translations/messages.hu.yml b/translations/messages.hu.yml index 971189cd5..df4b15ada 100644 --- a/translations/messages.hu.yml +++ b/translations/messages.hu.yml @@ -382,7 +382,7 @@ quickstart: description: Ha segítségre van szüksége, itt vagyunk az Ön számára. github: A GitHub-on email: E-mailben - gitter: A Gitter-en + matrix: A Matrix-en tag: page_title: Címkék list: diff --git a/translations/messages.it.yml b/translations/messages.it.yml index 92fde38f8..cfdc854a8 100644 --- a/translations/messages.it.yml +++ b/translations/messages.it.yml @@ -399,7 +399,7 @@ quickstart: description: Se hai bisogno di aiuto, siamo qui per te. github: Su GitHub email: Per e-mail - gitter: Su Gitter + matrix: Su Matrix tag: page_title: Etichette list: diff --git a/translations/messages.ja.yml b/translations/messages.ja.yml index 34834a206..e3cf21034 100644 --- a/translations/messages.ja.yml +++ b/translations/messages.ja.yml @@ -462,7 +462,7 @@ quickstart: description: 何か助けが必要な場合は、私たちがお役に立ちます。 github: GitHub 上で email: メールで - gitter: Gitter 上で + matrix: Matrix 上で tag: list: number_on_the_page: '{0} タグはありません。|{1} 1 つタグがあります。|]1,Inf[ %count% タグがあります。' diff --git a/translations/messages.ko.yml b/translations/messages.ko.yml index 387db9fa3..08732b811 100644 --- a/translations/messages.ko.yml +++ b/translations/messages.ko.yml @@ -643,7 +643,7 @@ quickstart: more: 더보기… page_title: 빠른시작 support: - gitter: Gitter 에서 + matrix: Matrix 에서 email: 이메일로 github: GitHub에서 description: 도움이 필요하시면 저희가 도와 드리겠습니다. diff --git a/translations/messages.nb.yml b/translations/messages.nb.yml index cbc96cfa0..b4314b16f 100644 --- a/translations/messages.nb.yml +++ b/translations/messages.nb.yml @@ -410,7 +410,7 @@ quickstart: language: Endre språk og utseende title: Sett opp programmet support: - gitter: På Gitter + matrix: På Matrix email: Per e-post github: på GitHub title: Støtte diff --git a/translations/messages.nl.yml b/translations/messages.nl.yml index 9e57327a3..69ead8047 100644 --- a/translations/messages.nl.yml +++ b/translations/messages.nl.yml @@ -464,7 +464,7 @@ quickstart: support: description: Wij zijn er voor u als u hulp nodig heeft. title: Ondersteuning - gitter: Op Gitter + matrix: Op Matrix email: Per e-mail github: Op GitHub docs: diff --git a/translations/messages.oc.yml b/translations/messages.oc.yml index 99fedb770..5d97db595 100644 --- a/translations/messages.oc.yml +++ b/translations/messages.oc.yml @@ -473,7 +473,7 @@ quickstart: description: Perque avètz benlèu besonh de nos pausar una question, sèm disponibles per vosautres. github: Sus GitHub email: Per e-mail - gitter: Sus Gitter + matrix: Sus Matrix tag: page_title: Etiquetas list: diff --git a/translations/messages.pl.yml b/translations/messages.pl.yml index eaba0b23d..b09f16fe8 100644 --- a/translations/messages.pl.yml +++ b/translations/messages.pl.yml @@ -474,7 +474,7 @@ quickstart: description: Jeżeli potrzebujesz pomocy, jesteśmy tutaj dla ciebie. github: na GitHubie email: przez e-mail - gitter: na Gitterze + matrix: na Gitterze tag: page_title: Tagi list: diff --git a/translations/messages.pt.yml b/translations/messages.pt.yml index 0b2b228d1..744c6fde8 100644 --- a/translations/messages.pt.yml +++ b/translations/messages.pt.yml @@ -322,7 +322,7 @@ quickstart: description: 'Se você precisa de ajuda, nós estamos aqui.' github: 'No GitHub' email: 'Por e-mail' - gitter: 'No Gitter' + matrix: 'No Matrix' tag: page_title: 'Tags' list: diff --git a/translations/messages.ru.yml b/translations/messages.ru.yml index 1b7f348e4..3c5b8362c 100644 --- a/translations/messages.ru.yml +++ b/translations/messages.ru.yml @@ -469,7 +469,7 @@ quickstart: description: 'Если Вам нужна помощь, мы здесь чтобы помочь Вам.' github: 'На GitHub' email: 'По email' - gitter: 'На Gitter' + matrix: 'На Matrix' tag: page_title: 'Теги' list: diff --git a/translations/messages.th.yml b/translations/messages.th.yml index 069bd3a77..25b91409a 100644 --- a/translations/messages.th.yml +++ b/translations/messages.th.yml @@ -370,7 +370,7 @@ quickstart: description: 'ถ้าคุณต้องการการชวยเหลอบางอย่าง, พวกเราจะอยู่ที่นี้เพื่อคุณ' github: 'บน GitHub' email: 'โดยอีเมล' - gitter: 'บน Gitter' + matrix: 'บน Matrix' tag: page_title: 'แท็ก' list: diff --git a/translations/messages.tr.yml b/translations/messages.tr.yml index c4fdf3b45..8efd3e7f4 100644 --- a/translations/messages.tr.yml +++ b/translations/messages.tr.yml @@ -454,7 +454,7 @@ quickstart: description: Eğer yardıma ihtiyacınız varsa, biz her daim senin için burada olacağız. github: GitHub email: E-posta - gitter: Gitter + matrix: Matrix more: Daha fazlası… admin: title: Yönetim diff --git a/translations/messages.uk.yml b/translations/messages.uk.yml index e3525faa0..283f4b4a2 100644 --- a/translations/messages.uk.yml +++ b/translations/messages.uk.yml @@ -421,7 +421,7 @@ quickstart: description: Якщо вам потрібна допомога, ми завжди поруч. github: На GitHub email: Електронною поштою - gitter: В Gitter + matrix: В Matrix tag: page_title: Теги list: diff --git a/translations/messages.zh.yml b/translations/messages.zh.yml index 9e27b2987..ba5766784 100644 --- a/translations/messages.zh.yml +++ b/translations/messages.zh.yml @@ -468,7 +468,7 @@ quickstart: description: '如果你需要帮助,我们在这里。' github: 'GitHub 上' email: '通过 Email' - gitter: 'Gitter 上' + matrix: 'Matrix 上' tag: page_title: '标签' list: From 048221dbcfee8c96b66acedcd2b9658d01fede91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 31 Oct 2024 11:48:12 +0100 Subject: [PATCH 13/17] Removed uncertain translations --- translations/messages.cs.yml | 1 - translations/messages.fa.yml | 1 - translations/messages.hr.yml | 1 - translations/messages.pl.yml | 1 - 4 files changed, 4 deletions(-) diff --git a/translations/messages.cs.yml b/translations/messages.cs.yml index 42a0bae07..090fa5b9f 100644 --- a/translations/messages.cs.yml +++ b/translations/messages.cs.yml @@ -343,7 +343,6 @@ tag: quickstart: support: title: Podpora - matrix: Na Gitteru email: E-mailem github: Na GitHubu description: Pokud potřebujete pomoc, jsme tu pro vás. diff --git a/translations/messages.fa.yml b/translations/messages.fa.yml index 9941c5949..322fe92f7 100644 --- a/translations/messages.fa.yml +++ b/translations/messages.fa.yml @@ -270,7 +270,6 @@ quickstart: description: به کمک نیاز دارید؟ ما پشتیبان شما هستیم. github: روی گیت‌هاب email: با ایمیل - matrix: روی گیتر tag: page_title: برچسب‌ها list: diff --git a/translations/messages.hr.yml b/translations/messages.hr.yml index b6dcdcdb7..5c4d0bb38 100644 --- a/translations/messages.hr.yml +++ b/translations/messages.hr.yml @@ -628,7 +628,6 @@ quickstart: use_docker: Koristi Docker za instliranje wallabaga support: github: Na GitHubu - matrix: Na Gitteru title: Podrška email: Putem e-maila description: Ako trebaš pomoć, spremni smo ti pomoći. diff --git a/translations/messages.pl.yml b/translations/messages.pl.yml index b09f16fe8..bf96bfb9f 100644 --- a/translations/messages.pl.yml +++ b/translations/messages.pl.yml @@ -474,7 +474,6 @@ quickstart: description: Jeżeli potrzebujesz pomocy, jesteśmy tutaj dla ciebie. github: na GitHubie email: przez e-mail - matrix: na Gitterze tag: page_title: Tagi list: From bd8ccf924f4ae78be407b151b668679edd511e0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 31 Oct 2024 08:10:33 +0100 Subject: [PATCH 14/17] Added Omnivore Import --- app/config/config.yml | 14 + app/config/services.yml | 9 + app/config/services_rabbit.yml | 6 + app/config/services_redis.yml | 16 + .../ImportBundle/Command/ImportCommand.php | 8 +- .../Command/RedisWorkerCommand.php | 2 +- .../Consumer/RabbitMQConsumerTotalProxy.php | 7 +- .../Controller/ImportController.php | 2 + .../Controller/OmnivoreController.php | 84 +++++ .../ImportBundle/Import/OmnivoreImport.php | 158 ++++++++ .../Resources/views/Omnivore/index.html.twig | 45 +++ .../Controller/ImportControllerTest.php | 2 +- .../Controller/OmnivoreControllerTest.php | 203 +++++++++++ .../ImportBundle/fixtures/omnivore.json | 343 ++++++++++++++++++ translations/messages.en.yml | 4 + web/wallassets/41a1d465797f51702171.otf | Bin 0 -> 49652 bytes 16 files changed, 899 insertions(+), 4 deletions(-) create mode 100644 src/Wallabag/ImportBundle/Controller/OmnivoreController.php create mode 100644 src/Wallabag/ImportBundle/Import/OmnivoreImport.php create mode 100644 src/Wallabag/ImportBundle/Resources/views/Omnivore/index.html.twig create mode 100644 tests/Wallabag/ImportBundle/Controller/OmnivoreControllerTest.php create mode 100644 tests/Wallabag/ImportBundle/fixtures/omnivore.json create mode 100644 web/wallassets/41a1d465797f51702171.otf diff --git a/app/config/config.yml b/app/config/config.yml index 2155a2017..064df3623 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -267,6 +267,11 @@ old_sound_rabbit_mq: exchange_options: name: 'wallabag.import.elcurator' type: topic + import_omnivore: + connection: default + exchange_options: + name: 'wallabag.import.omnivore' + type: topic import_firefox: connection: default exchange_options: @@ -350,6 +355,15 @@ old_sound_rabbit_mq: name: 'wallabag.import.elcurator' callback: wallabag_import.consumer.amqp.elcurator qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"} + import_omnivore: + connection: default + exchange_options: + name: 'wallabag.import.omnivore' + type: topic + queue_options: + name: 'wallabag.import.omnivore' + callback: wallabag_import.consumer.amqp.omnivore + qos_options: {prefetch_count: "%rabbitmq_prefetch_count%"} import_firefox: connection: default exchange_options: diff --git a/app/config/services.yml b/app/config/services.yml index 270e79d9d..47f9b3aef 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -81,6 +81,11 @@ services: $rabbitMqProducer: '@old_sound_rabbit_mq.import_elcurator_producer' $redisProducer: '@wallabag_import.producer.redis.elcurator' + Wallabag\ImportBundle\Controller\OmnivoreController: + arguments: + $rabbitMqProducer: '@old_sound_rabbit_mq.import_omnivore_producer' + $redisProducer: '@wallabag_import.producer.redis.omnivore' + Wallabag\ImportBundle\Controller\FirefoxController: arguments: $rabbitMqProducer: '@old_sound_rabbit_mq.import_firefox_producer' @@ -377,6 +382,10 @@ services: tags: - { name: wallabag_import.import, alias: delicious } + Wallabag\ImportBundle\Import\OmnivoreImport: + tags: + - { name: wallabag_import.import, alias: omnivore } + Wallabag\ImportBundle\Import\FirefoxImport: tags: - { name: wallabag_import.import, alias: firefox } diff --git a/app/config/services_rabbit.yml b/app/config/services_rabbit.yml index 26e02a784..b6f9f1d52 100644 --- a/app/config/services_rabbit.yml +++ b/app/config/services_rabbit.yml @@ -18,6 +18,7 @@ services: $pinboardConsumer: '@old_sound_rabbit_mq.import_pinboard_consumer' $deliciousConsumer: '@old_sound_rabbit_mq.import_delicious_consumer' $elcuratorConsumer: '@old_sound_rabbit_mq.import_elcurator_consumer' + $omnivoreConsumer: '@old_sound_rabbit_mq.import_omnivore_consumer' wallabag_import.consumer.amqp.pocket: class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer @@ -44,6 +45,11 @@ services: arguments: $import: '@Wallabag\ImportBundle\Import\DeliciousImport' + wallabag_import.consumer.amqp.omnivore: + class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer + arguments: + $import: '@Wallabag\ImportBundle\Import\OmnivoreImport' + wallabag_import.consumer.amqp.wallabag_v1: class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer arguments: diff --git a/app/config/services_redis.yml b/app/config/services_redis.yml index 02c7eba95..2f0f1ac48 100644 --- a/app/config/services_redis.yml +++ b/app/config/services_redis.yml @@ -69,6 +69,22 @@ services: arguments: $import: '@Wallabag\ImportBundle\Import\DeliciousImport' + # Omnivore + wallabag_import.queue.redis.omnivore: + class: Simpleue\Queue\RedisQueue + arguments: + $queueName: "wallabag.import.omnivore" + + wallabag_import.producer.redis.omnivore: + class: Wallabag\ImportBundle\Redis\Producer + arguments: + - "@wallabag_import.queue.redis.omnivore" + + wallabag_import.consumer.redis.omnivore: + class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer + arguments: + $import: '@Wallabag\ImportBundle\Import\OmnivoreImport' + # pocket wallabag_import.queue.redis.pocket: class: Simpleue\Queue\RedisQueue diff --git a/src/Wallabag/ImportBundle/Command/ImportCommand.php b/src/Wallabag/ImportBundle/Command/ImportCommand.php index 1031e5675..edc85c01d 100644 --- a/src/Wallabag/ImportBundle/Command/ImportCommand.php +++ b/src/Wallabag/ImportBundle/Command/ImportCommand.php @@ -15,6 +15,7 @@ use Wallabag\ImportBundle\Import\ChromeImport; use Wallabag\ImportBundle\Import\DeliciousImport; use Wallabag\ImportBundle\Import\FirefoxImport; use Wallabag\ImportBundle\Import\InstapaperImport; +use Wallabag\ImportBundle\Import\OmnivoreImport; use Wallabag\ImportBundle\Import\PinboardImport; use Wallabag\ImportBundle\Import\ReadabilityImport; use Wallabag\ImportBundle\Import\WallabagV1Import; @@ -34,9 +35,10 @@ class ImportCommand extends Command private InstapaperImport $instapaperImport; private PinboardImport $pinboardImport; private DeliciousImport $deliciousImport; + private OmnivoreImport $omnivoreImport; private WallabagV1Import $wallabagV1Import; - public function __construct(EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage, UserRepository $userRepository, WallabagV2Import $wallabagV2Import, FirefoxImport $firefoxImport, ChromeImport $chromeImport, ReadabilityImport $readabilityImport, InstapaperImport $instapaperImport, PinboardImport $pinboardImport, DeliciousImport $deliciousImport, WallabagV1Import $wallabagV1Import) + public function __construct(EntityManagerInterface $entityManager, TokenStorageInterface $tokenStorage, UserRepository $userRepository, WallabagV2Import $wallabagV2Import, FirefoxImport $firefoxImport, ChromeImport $chromeImport, ReadabilityImport $readabilityImport, InstapaperImport $instapaperImport, PinboardImport $pinboardImport, DeliciousImport $deliciousImport, OmnivoreImport $omnivoreImport, WallabagV1Import $wallabagV1Import) { $this->entityManager = $entityManager; $this->tokenStorage = $tokenStorage; @@ -48,6 +50,7 @@ class ImportCommand extends Command $this->instapaperImport = $instapaperImport; $this->pinboardImport = $pinboardImport; $this->deliciousImport = $deliciousImport; + $this->omnivoreImport = $omnivoreImport; $this->wallabagV1Import = $wallabagV1Import; parent::__construct(); @@ -120,6 +123,9 @@ class ImportCommand extends Command case 'delicious': $import = $this->deliciousImport; break; + case 'omnivore': + $import = $this->omnivoreImport; + break; default: $import = $this->wallabagV1Import; } diff --git a/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php index 5c19d30b3..179e213de 100644 --- a/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php +++ b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php @@ -27,7 +27,7 @@ class RedisWorkerCommand extends Command $this ->setName('wallabag:import:redis-worker') ->setDescription('Launch Redis worker') - ->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, pinboard, delicious, firefox, chrome or instapaper') + ->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, pinboard, delicious, omnivore, firefox, chrome or instapaper') ->addOption('maxIterations', '', InputOption::VALUE_OPTIONAL, 'Number of iterations before stopping', false) ; } diff --git a/src/Wallabag/ImportBundle/Consumer/RabbitMQConsumerTotalProxy.php b/src/Wallabag/ImportBundle/Consumer/RabbitMQConsumerTotalProxy.php index 443d167cd..096d2b9a6 100644 --- a/src/Wallabag/ImportBundle/Consumer/RabbitMQConsumerTotalProxy.php +++ b/src/Wallabag/ImportBundle/Consumer/RabbitMQConsumerTotalProxy.php @@ -20,8 +20,9 @@ class RabbitMQConsumerTotalProxy private Consumer $pinboardConsumer; private Consumer $deliciousConsumer; private Consumer $elcuratorConsumer; + private Consumer $omnivoreConsumer; - public function __construct(Consumer $pocketConsumer, Consumer $readabilityConsumer, Consumer $wallabagV1Consumer, Consumer $wallabagV2Consumer, Consumer $firefoxConsumer, Consumer $chromeConsumer, Consumer $instapaperConsumer, Consumer $pinboardConsumer, Consumer $deliciousConsumer, Consumer $elcuratorConsumer) + public function __construct(Consumer $pocketConsumer, Consumer $readabilityConsumer, Consumer $wallabagV1Consumer, Consumer $wallabagV2Consumer, Consumer $firefoxConsumer, Consumer $chromeConsumer, Consumer $instapaperConsumer, Consumer $pinboardConsumer, Consumer $deliciousConsumer, Consumer $elcuratorConsumer, Consumer $omnivoreConsumer) { $this->pocketConsumer = $pocketConsumer; $this->readabilityConsumer = $readabilityConsumer; @@ -33,6 +34,7 @@ class RabbitMQConsumerTotalProxy $this->pinboardConsumer = $pinboardConsumer; $this->deliciousConsumer = $deliciousConsumer; $this->elcuratorConsumer = $elcuratorConsumer; + $this->omnivoreConsumer = $omnivoreConsumer; } /** @@ -77,6 +79,9 @@ class RabbitMQConsumerTotalProxy case 'elcurator': $consumer = $this->elcuratorConsumer; break; + case 'omnivore': + $consumer = $this->omnivoreConsumer; + break; default: return 0; } diff --git a/src/Wallabag/ImportBundle/Controller/ImportController.php b/src/Wallabag/ImportBundle/Controller/ImportController.php index 9309d7d4e..16414d885 100644 --- a/src/Wallabag/ImportBundle/Controller/ImportController.php +++ b/src/Wallabag/ImportBundle/Controller/ImportController.php @@ -57,6 +57,7 @@ class ImportController extends AbstractController + $this->rabbitMQConsumerTotalProxy->getTotalMessage('pinboard') + $this->rabbitMQConsumerTotalProxy->getTotalMessage('delicious') + $this->rabbitMQConsumerTotalProxy->getTotalMessage('elcurator') + + $this->rabbitMQConsumerTotalProxy->getTotalMessage('omnivore') ; } catch (\Exception $e) { $rabbitNotInstalled = true; @@ -75,6 +76,7 @@ class ImportController extends AbstractController + $redis->llen('wallabag.import.pinboard') + $redis->llen('wallabag.import.delicious') + $redis->llen('wallabag.import.elcurator') + + $redis->llen('wallabag.import.omnivore') ; } catch (\Exception $e) { $redisNotInstalled = true; diff --git a/src/Wallabag/ImportBundle/Controller/OmnivoreController.php b/src/Wallabag/ImportBundle/Controller/OmnivoreController.php new file mode 100644 index 000000000..13bc12922 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/OmnivoreController.php @@ -0,0 +1,84 @@ +rabbitMqProducer = $rabbitMqProducer; + $this->redisProducer = $redisProducer; + } + + /** + * @Route("/omnivore", name="import_omnivore") + */ + public function indexAction(Request $request, OmnivoreImport $omnivore, Config $craueConfig, TranslatorInterface $translator) + { + $form = $this->createForm(UploadImportType::class); + $form->handleRequest($request); + + $omnivore->setUser($this->getUser()); + + if ($craueConfig->get('import_with_rabbitmq')) { + $omnivore->setProducer($this->rabbitMqProducer); + } elseif ($craueConfig->get('import_with_redis')) { + $omnivore->setProducer($this->redisProducer); + } + + if ($form->isSubmitted() && $form->isValid()) { + $file = $form->get('file')->getData(); + $markAsRead = $form->get('mark_as_read')->getData(); + $name = 'omnivore_' . $this->getUser()->getId() . '.json'; + + if (null !== $file && \in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes'), true) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { + $res = $omnivore + ->setFilepath($this->getParameter('wallabag_import.resource_dir') . '/' . $name) + ->setMarkAsRead($markAsRead) + ->import(); + + $message = 'flashes.import.notice.failed'; + + if (true === $res) { + $summary = $omnivore->getSummary(); + $message = $translator->trans('flashes.import.notice.summary', [ + '%imported%' => $summary['imported'], + '%skipped%' => $summary['skipped'], + ]); + + if (0 < $summary['queued']) { + $message = $translator->trans('flashes.import.notice.summary_with_queue', [ + '%queued%' => $summary['queued'], + ]); + } + + unlink($this->getParameter('wallabag_import.resource_dir') . '/' . $name); + } + + $this->addFlash('notice', $message); + + return $this->redirect($this->generateUrl('homepage')); + } + + $this->addFlash('notice', 'flashes.import.notice.failed_on_file'); + } + + return $this->render('@WallabagImport/Omnivore/index.html.twig', [ + 'form' => $form->createView(), + 'import' => $omnivore, + ]); + } +} diff --git a/src/Wallabag/ImportBundle/Import/OmnivoreImport.php b/src/Wallabag/ImportBundle/Import/OmnivoreImport.php new file mode 100644 index 000000000..d4b9e8110 --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/OmnivoreImport.php @@ -0,0 +1,158 @@ +filepath = $filepath; + + return $this; + } + + /** + * {@inheritdoc} + */ + public function import() + { + if (!$this->user) { + $this->logger->error('OmnivoreImport: user is not defined'); + + return false; + } + + if (!file_exists($this->filepath) || !is_readable($this->filepath)) { + $this->logger->error('OmnivoreImport: unable to read file', ['filepath' => $this->filepath]); + + return false; + } + + $data = json_decode(file_get_contents($this->filepath), true); + + if (empty($data)) { + $this->logger->error('OmnivoreImport: no entries in imported file'); + + return false; + } + + if ($this->producer) { + $this->parseEntriesForProducer($data); + + return true; + } + + $this->parseEntries($data); + + return true; + } + + /** + * {@inheritdoc} + */ + public function validateEntry(array $importedEntry) + { + if (empty($importedEntry['url'])) { + return false; + } + + return true; + } + + /** + * {@inheritdoc} + */ + public function parseEntry(array $importedEntry) + { + $existingEntry = $this->em + ->getRepository(Entry::class) + ->findByUrlAndUserId($importedEntry['url'], $this->user->getId()); + + if (false !== $existingEntry) { + ++$this->skippedEntries; + + return; + } + + $data = [ + 'title' => $importedEntry['title'], + 'url' => $importedEntry['url'], + 'is_archived' => ('Archived' === $importedEntry['state']) || $this->markAsRead, + 'is_starred' => false, + 'created_at' => $importedEntry['savedAt'], + 'tags' => $importedEntry['labels'], + 'published_by' => [$importedEntry['author']], + 'published_at' => $importedEntry['publishedAt'], + 'preview_picture' => $importedEntry['thumbnail'], + ]; + + $entry = new Entry($this->user); + $entry->setUrl($data['url']); + $entry->setTitle($data['title']); + + // update entry with content (in case fetching failed, the given entry will be return) + $this->fetchContent($entry, $data['url'], $data); + + if (!empty($data['tags'])) { + $this->tagsAssigner->assignTagsToEntry( + $entry, + $data['tags'], + $this->em->getUnitOfWork()->getScheduledEntityInsertions() + ); + } + + $entry->updateArchived($data['is_archived']); + $entry->setCreatedAt(\DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', $data['created_at'])); + if (null !== $data['published_at']) { + $entry->setPublishedAt(\DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', $data['published_at'])); + } + $entry->setPublishedBy($data['published_by']); + $entry->setPreviewPicture($data['preview_picture']); + + $this->em->persist($entry); + ++$this->importedEntries; + + return $entry; + } + + /** + * {@inheritdoc} + */ + protected function setEntryAsRead(array $importedEntry) + { + return $importedEntry; + } +} diff --git a/src/Wallabag/ImportBundle/Resources/views/Omnivore/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Omnivore/index.html.twig new file mode 100644 index 000000000..4ce940d47 --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Omnivore/index.html.twig @@ -0,0 +1,45 @@ +{% extends "@WallabagCore/layout.html.twig" %} + +{% block title %}{{ 'import.omnivore.page_title'|trans }}{% endblock %} + +{% block content %} +
+
+
+ {% include '@WallabagImport/Import/_information.html.twig' %} + +
+
{{ import.description|trans }}
+

{{ 'import.omnivore.how_to'|trans }}

+ +
+ {{ form_start(form, {'method': 'POST'}) }} + {{ form_errors(form) }} +
+
+ {{ form_errors(form.file) }} +
+ {{ form.file.vars.label|trans }} + {{ form_widget(form.file) }} +
+
+ +
+
+
+
{{ 'import.form.mark_as_read_title'|trans }}
+ {{ form_widget(form.mark_as_read) }} + {{ form_label(form.mark_as_read) }} +
+
+ + {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} + + {{ form_rest(form) }} + +
+
+
+
+
+{% endblock %} diff --git a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php index 06a2a2e21..cf1739841 100644 --- a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php @@ -24,6 +24,6 @@ class ImportControllerTest extends WallabagCoreTestCase $crawler = $client->request('GET', '/import/'); $this->assertSame(200, $client->getResponse()->getStatusCode()); - $this->assertSame(10, $crawler->filter('blockquote')->count()); + $this->assertSame(11, $crawler->filter('blockquote')->count()); } } diff --git a/tests/Wallabag/ImportBundle/Controller/OmnivoreControllerTest.php b/tests/Wallabag/ImportBundle/Controller/OmnivoreControllerTest.php new file mode 100644 index 000000000..9d10048bf --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/OmnivoreControllerTest.php @@ -0,0 +1,203 @@ +logInAs('admin'); + $client = $this->getTestClient(); + + $crawler = $client->request('GET', '/import/omnivore'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + } + + public function testImportOmnivoreWithRabbitEnabled() + { + $this->logInAs('admin'); + $client = $this->getTestClient(); + + $client->getContainer()->get(Config::class)->set('import_with_rabbitmq', 1); + + $crawler = $client->request('GET', '/import/omnivore'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + + $client->getContainer()->get(Config::class)->set('import_with_rabbitmq', 0); + } + + public function testImportOmnivoreBadFile() + { + $this->logInAs('admin'); + $client = $this->getTestClient(); + + $crawler = $client->request('GET', '/import/omnivore'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $data = [ + 'upload_import_file[file]' => '', + ]; + + $client->submit($form, $data); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + } + + public function testImportOmnivoreWithRedisEnabled() + { + $this->checkRedis(); + $this->logInAs('admin'); + $client = $this->getTestClient(); + $client->getContainer()->get(Config::class)->set('import_with_redis', 1); + + $crawler = $client->request('GET', '/import/omnivore'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + $this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); + $this->assertSame(1, $crawler->filter('input[type=file]')->count()); + + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/omnivore.json', 'omnivore.json'); + + $data = [ + 'upload_import_file[file]' => $file, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertStringContainsString('flashes.import.notice.summary', $body[0]); + + $this->assertNotEmpty($client->getContainer()->get(Client::class)->lpop('wallabag.import.omnivore')); + + $client->getContainer()->get(Config::class)->set('import_with_redis', 0); + } + + public function testImportOmnivoreWithFile() + { + $this->logInAs('admin'); + $client = $this->getTestClient(); + + $crawler = $client->request('GET', '/import/omnivore'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/omnivore.json', 'omnivore.json'); + + $data = [ + 'upload_import_file[file]' => $file, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $content = $client->getContainer() + ->get(EntityManagerInterface::class) + ->getRepository(Entry::class) + ->findByUrlAndUserId( + 'https://www.lemonde.fr/economie/article/2024/10/29/malgre-la-crise-du-marche-des-montres-breitling-etend-son-reseau-commercial-et-devoile-ses-ambitions_6365425_3234.html', + $this->getLoggedInUserId() + ); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertStringContainsString('flashes.import.notice.summary', $body[0]); + + $this->assertInstanceOf(Entry::class, $content); + + $tags = $content->getTagsLabel(); + $this->assertContains('rss', $tags, 'It includes the "rss" tag'); + $this->assertGreaterThanOrEqual(2, \count($tags)); + + $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); + $this->assertSame('2024-10-29', $content->getCreatedAt()->format('Y-m-d')); + } + + public function testImportOmnivoreWithFileAndMarkAllAsRead() + { + $this->logInAs('admin'); + $client = $this->getTestClient(); + + $crawler = $client->request('GET', '/import/omnivore'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/omnivore.json', 'omnivore-read.json'); + + $data = [ + 'upload_import_file[file]' => $file, + 'upload_import_file[mark_as_read]' => 1, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $content1 = $client->getContainer() + ->get(EntityManagerInterface::class) + ->getRepository(Entry::class) + ->findByUrlAndUserId( + 'https://www.lemonde.fr/economie/article/2024/10/29/l-union-europeenne-adopte-jusqu-a-35-de-surtaxes-sur-les-voitures-electriques-importees-de-chine_6365258_3234.html', + $this->getLoggedInUserId() + ); + + $this->assertInstanceOf(Entry::class, $content1); + + $content2 = $client->getContainer() + ->get(EntityManagerInterface::class) + ->getRepository(Entry::class) + ->findByUrlAndUserId( + 'https://www.lemonde.fr/les-decodeurs/article/2024/10/29/presidentielle-americaine-2024-comment-le-calendrier-de-l-election-et-des-affaires-judiciaires-de-trump-s-entremelent_6210916_3211.html', + $this->getLoggedInUserId() + ); + + $this->assertInstanceOf(Entry::class, $content2); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertStringContainsString('flashes.import.notice.summary', $body[0]); + } + + public function testImportOmnivoreWithEmptyFile() + { + $this->logInAs('admin'); + $client = $this->getTestClient(); + + $crawler = $client->request('GET', '/import/omnivore'); + $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); + + $file = new UploadedFile(__DIR__ . '/../fixtures/test.txt', 'test.txt'); + + $data = [ + 'upload_import_file[file]' => $file, + ]; + + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); + $this->assertStringContainsString('flashes.import.notice.failed', $body[0]); + } +} diff --git a/tests/Wallabag/ImportBundle/fixtures/omnivore.json b/tests/Wallabag/ImportBundle/fixtures/omnivore.json new file mode 100644 index 000000000..6e36e7150 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/omnivore.json @@ -0,0 +1,343 @@ +[ + { + "id": "20db074a-34e1-4f55-b0e9-161e367946f6", + "slug": "malgre-la-crise-du-marche-des-montres-breitling-etend-son-reseau-192daf3a84e", + "title": "Malgré la crise du marché des montres, Breitling étend son réseau commercial et dévoile ses ambitions", + "description": "La marque suisse – peu présente en Chine – veut s’étendre ailleurs en Asie et n’exclut pas des acquisitions. En France, après s’être installée sur les Champs-Elysées, elle ouvre boutique à Lille et à Monaco.", + "author": "Juliette Garnier", + "url": "https://www.lemonde.fr/economie/article/2024/10/29/malgre-la-crise-du-marche-des-montres-breitling-etend-son-reseau-commercial-et-devoile-ses-ambitions_6365425_3234.html", + "state": "Archived", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/234/0/6192/3096/1440/720/60/0/5ee3f32_1730201062245-063-1432929408.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T16:30:11.000Z", + "updatedAt": "2024-10-31T13:01:28.320Z", + "publishedAt": "2024-10-29T16:30:11.000Z" + }, + { + "id": "5ace624c-ba30-48cc-82ba-5a4d585e0cd4", + "slug": "espagne-l-enquete-visant-l-epouse-de-pedro-sanchez-elargie-ce-de-192d9fe5ee4", + "title": "Espagne : l’enquête visant l’épouse de Pedro Sanchez élargie, ce dernier fait part de sa « tranquillité absolue »", + "description": "Begoña Gomez fait l’objet d’une enquête pour corruption et trafic d’influence, ouverte après des plaintes déposées par deux associations réputées proches de l’extrême droite.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/international/article/2024/10/29/espagne-l-enquete-visant-l-epouse-de-pedro-sanchez-elargie-ce-dernier-fait-part-de-sa-tranquillite-absolue_6365392_3210.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/385/0/3266/1633/1440/720/60/0/54ca5e3_2024-10-29t141242z-866115530-rc2g8aaxq4l9-rtrmadp-3-spain-argentina.JPG", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T16:21:32.000Z", + "updatedAt": "2024-10-29T20:36:19.400Z", + "publishedAt": "2024-10-29T16:21:32.000Z" + }, + { + "id": "1d72bb2e-2b3d-4d2d-8f17-90f441024358", + "slug": "montpellier-enquete-ouverte-apres-la-mort-d-une-jeune-femme-des--192d9fe4e61", + "title": "Montpellier : enquête ouverte après la mort d’une jeune femme des suites d’une méningite, malgré des appels au SAMU et aux pompiers", + "description": "Malgré deux appels aux secours, l’un au 15 et l’autre au 18, ce sont deux amis qui ont conduit la femme de 25 ans à une clinique montpelliéraine, avant qu’elle ne soit transférée au CHU et ne meure.", + "author": "Le Monde", + "url": "https://www.lemonde.fr/societe/article/2024/10/29/montpellier-enquete-ouverte-apres-la-mort-d-une-jeune-femme-des-suites-d-une-meningite-malgre-des-appels-au-samu-et-aux-pompiers_6365359_3224.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/24/187/0/2250/1125/1440/720/60/0/4e171be_1729786778722-frame-159.jpg", + "labels": [ + "RSS", + "TEST" + ], + "savedAt": "2024-10-29T16:09:19.000Z", + "updatedAt": "2024-10-31T13:03:21.779Z", + "publishedAt": "2024-10-29T16:09:19.000Z" + }, + { + "id": "5ac06f9c-52e8-47df-984c-038c501819cb", + "slug": "tuberculose-le-nombre-de-cas-dans-le-monde-se-stabilise-apres-le-192daa35669", + "title": "Tuberculose : le nombre de cas dans le monde se stabilise après le regain des années Covid", + "description": "L’incidence de la maladie est en baisse de 8,3 % par rapport aux chiffres de 2015, mais reste loin de l’objectif initialement fixé de diviser par deux le nombre de malades d’ici à 2025.", + "author": "Delphine Roucaute", + "url": "https://www.lemonde.fr/planete/article/2024/10/29/tuberculose-le-nombre-de-cas-dans-le-monde-se-stabilise-apres-le-regain-des-annees-covid_6365326_3244.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/501/0/6009/3004/1440/720/60/0/01bc1cc_1730215288364-000-34ne6t2.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T16:02:03.000Z", + "updatedAt": "2024-10-29T23:36:30.655Z", + "publishedAt": "2024-10-29T16:02:03.000Z" + }, + { + "id": "2f870f6d-79a9-45a4-8a64-e4cd3e7c4488", + "slug": "l-union-europeenne-adopte-jusqu-a-35-de-surtaxes-sur-les-voiture-192d9fe4fa0", + "title": "L’Union européenne adopte jusqu’à 35 % de surtaxes sur les voitures électriques importées de Chine", + "description": "L’objectif affiché est de rétablir des conditions de concurrence équitables avec des constructeurs accusés de profiter de subventions publiques massives.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/economie/article/2024/10/29/l-union-europeenne-adopte-jusqu-a-35-de-surtaxes-sur-les-voitures-electriques-importees-de-chine_6365258_3234.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/03/131/0/2405/1202/1440/720/60/0/9f89e19_5860742-01-06.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T15:36:53.000Z", + "updatedAt": "2024-10-29T20:36:15.460Z", + "publishedAt": "2024-10-29T15:36:53.000Z" + }, + { + "id": "fe9efcb1-1782-46c3-805d-c9b8074bee3b", + "slug": "l-ex-patron-de-la-dgse-bernard-bajolet-sera-juge-pour-complicite-192da0f4619", + "title": "L’ex-patron de la DGSE Bernard Bajolet sera jugé pour complicité de tentative d’extorsion", + "description": "L’homme d’affaires Alain Duménil accuse le service de renseignement d’avoir fait usage de la contrainte pour lui réclamer de l’argent en 2016.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/societe/article/2024/10/29/l-ex-patron-de-la-dgse-bernard-bajolet-sera-juge-pour-complicite-de-tentative-d-extorsion_6365225_3224.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/99/0/4804/2402/1440/720/60/0/e26408c_1730213831930-000-32hg2qa.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T15:32:35.000Z", + "updatedAt": "2024-10-29T20:54:47.245Z", + "publishedAt": "2024-10-29T15:32:35.000Z" + }, + { + "id": "885df5b1-b564-4535-8ad7-f65bb934375d", + "slug": "la-cour-d-appel-de-paris-confirme-le-proces-pour-viol-du-rappeur-192da4a24d7", + "title": "La cour d’appel de Paris confirme le procès pour viol du rappeur Naps", + "description": "L’artiste est soupçonné d’avoir violé une jeune femme pendant son sommeil à l’automne 2021.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/societe/article/2024/10/29/la-cour-d-appel-de-paris-confirme-le-proces-pour-viol-du-rappeur-naps_6365192_3224.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/369/0/4430/2215/1440/720/60/0/78d02d3_1730214584579-000-9t294r.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T15:26:15.000Z", + "updatedAt": "2024-10-29T21:59:05.276Z", + "publishedAt": "2024-10-29T15:26:15.000Z" + }, + { + "id": "647e36c0-2782-42b0-8694-8599b61e912a", + "slug": "les-serbes-apres-leur-medaille-de-bronze-aux-jo-on-a-bu-pendant--192d9ed5eef", + "title": "Les Serbes après leur médaille de bronze aux JO : \"On a bu pendant huit heures !\"", + "description": "Lors de la cérémonie de remise de médailles des Jeux Olympiques de Paris, les Serbes se sont fait remarquer en titubant sur le podium. La raison est simple...", + "author": "La rédaction", + "url": "https://www.basketeurope.com/les-serbes-apres-leur-medaille-de-bronze-aux-j0-on-a-bu-pendant-huit-heures/", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://www.basketeurope.com/content/images/2024/10/Marinkovic.webp", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T13:59:23.000Z", + "updatedAt": "2024-10-29T20:17:45.252Z", + "publishedAt": "2024-10-29T13:59:23.000Z" + }, + { + "id": "40c17460-d4bc-4408-aafb-3f6ffbe8d413", + "slug": "a-quoi-ressemble-le-parcours-du-tour-de-france-2025-192d9fe6f1d", + "title": "A quoi ressemble le parcours du Tour de France 2025 ?", + "description": "Le parcours de la prochaine Grande Boucle cycliste a été dévoilé mardi. Le peloton s’élancera de Lille pour retrouver, trois semaines plus tard, la traditionnelle arrivée sur les Champs-Elysées, à Paris. Entre-temps, il lui faudra enchaîner les cols mythiques.", + "author": "Valentin Moinard", + "url": "https://www.lemonde.fr/sport/article/2024/10/29/cyclisme-le-tour-de-france-2025-fera-la-part-belle-aux-grimpeurs_6364955_3242.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/07/07/410/0/5994/2997/1440/720/60/0/1df95b2_5013615-01-06.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T13:12:05.000Z", + "updatedAt": "2024-10-29T20:36:23.653Z", + "publishedAt": "2024-10-29T13:12:05.000Z" + }, + { + "id": "d4eb58ef-1cab-4aef-aee1-89dca60b8a80", + "slug": "arrets-maladie-des-fonctionnaires-les-arguments-discutables-du-g-192d9fe680a", + "title": "Arrêts maladie des fonctionnaires : les arguments discutables du gouvernement pour justifier sa réforme", + "description": "Alors que l’exécutif souhaite ne plus payer les trois premiers jours d’absence des agents publics, le fait qu’il prenne peu en compte l’amélioration de la qualité de vie au travail lui vaut de vives critiques, de la part des syndicats, mais aussi de personnalités ayant l’expérience du terrain.", + "author": "Bertrand Bissuel", + "url": "https://www.lemonde.fr/politique/article/2024/10/29/arrets-maladie-des-fonctionnaires-les-arguments-discutables-du-gouvernement-pour-justifier-sa-reforme_6364919_823448.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/265/0/6720/3360/1440/720/60/0/2f2f937_1730191618529-cbi1223010.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T13:00:08.000Z", + "updatedAt": "2024-10-29T20:36:21.703Z", + "publishedAt": "2024-10-29T13:00:08.000Z" + }, + { + "id": "ff9c411a-e91f-424b-a570-f92b311026a5", + "slug": "premium-jean-denys-choulet-selectionneur-du-kosovo-ma-nationalit-192db836507", + "title": "[Premium] Jean-Denys Choulet, sélectionneur du Kosovo : \"Ma nationalité, c'est le basket\"", + "description": "Huit mois après son licenciement de la Chorale de Roanne, Jean-Denys Choulet a retrouvé un poste en tant que sélectionneur du Kosovo. À 66 ans, il ne se voyait pas quitter le milieu du basket et reste ouvert à l'idée de diriger un club.", + "author": "Morgan Parmentier", + "url": "https://www.basketeurope.com/premium-jean-denys-choulet-ma-nationalite-cest-le-basket/", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://www.basketeurope.com/content/images/size/w1200/2024/10/choulet-jd-chorale-roanne-tuan-nguyen.webp", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T12:31:47.000Z", + "updatedAt": "2024-10-30T03:41:14.412Z", + "publishedAt": "2024-10-29T12:31:47.000Z" + }, + { + "id": "54ae4346-03c0-407e-b204-b09351174365", + "slug": "pedocriminalite-l-eglise-doit-mieux-sanctionner-les-auteurs-et-a-192da2d8b8f", + "title": "Pédocriminalité : l’Eglise doit mieux sanctionner les auteurs et aider les victimes, selon un rapport du Vatican", + "description": "En avril 2022, le pape François avait demandé à une commission pontificale un rapport sur la protection des mineurs dans l’Eglise. Très attendu, il vient d’être publié par le Saint-Siège.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/international/article/2024/10/29/pedocriminalite-l-eglise-doit-mieux-sanctionner-les-auteurs-et-aider-les-victimes-selon-un-rapport-du-vatican_6364916_3210.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/27/688/0/8256/4128/1440/720/60/0/a7b4e07_5084272-01-06.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T12:26:36.000Z", + "updatedAt": "2024-10-29T21:27:50.999Z", + "publishedAt": "2024-10-29T12:26:36.000Z" + }, + { + "id": "b2d30e8c-c344-4460-a583-4a2955fdc197", + "slug": "cybercriminalite-les-stealers-redline-et-meta-vises-par-une-oper-192d90d1624", + "title": "Cybercriminalité : les « stealers » Redline et META visés par une opération policière internationale", + "description": "Le marché des identifiants dérobés est devenu un secteur central de la cybercriminalité. Les deux virus visés par cette opération policière, baptisée « Magnus », ont permis le vol de plus de 227 millions de mots de passe en 2024.", + "author": "Florian Reynaud", + "url": "https://www.lemonde.fr/pixels/article/2024/10/29/cybercriminalite-les-stealers-redline-et-meta-vises-par-une-operation-policiere-internationale_6364915_4408996.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/10/252/0/3008/1504/1440/720/60/0/b3dbd8e_1728546840972-papier-271-16.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T12:21:06.000Z", + "updatedAt": "2024-10-29T16:12:46.658Z", + "publishedAt": "2024-10-29T12:21:06.000Z" + }, + { + "id": "a4a6e509-beab-4577-99db-2f1db819d669", + "slug": "au-maroc-emmanuel-macron-appelle-a-plus-de-resultats-contre-l-im-192d90d159a", + "title": "Au Maroc, Emmanuel Macron appelle à plus de « résultats » contre l’immigration illégale et réaffirme son soutien à la « souveraineté marocaine » au Sahara occidental", + "description": "Le chef de l’Etat français a également proposé au roi du Maroc, Mohammed VI, de signer un nouveau « cadre stratégique » bilatéral en 2025 à Paris, soixante-dix ans après la déclaration de la Celle-Saint-Cloud qui scella l’indépendance du Maroc de la France.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/international/article/2024/10/29/au-maroc-emmanuel-macron-appelle-a-plus-de-resultats-contre-l-immigration-illegale-et-reaffirme-son-soutien-a-la-souverainete-marocaine-au-sahara-occidental_6364914_3210.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/350/0/4201/2100/1440/720/60/0/c37301c_5103313-01-06.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T12:14:53.000Z", + "updatedAt": "2024-10-29T16:12:46.456Z", + "publishedAt": "2024-10-29T12:14:53.000Z" + }, + { + "id": "0ab9e8c7-c88b-4a31-af3e-62ec4766b99d", + "slug": "prison-de-noumea-l-etat-condamne-car-trop-lent-a-ameliorer-les-c-192d90d0722", + "title": "Prison de Nouméa : l’Etat condamné car trop lent à améliorer les conditions de détention", + "description": "En 2020, le Conseil d’Etat avait exigé des mesures urgentes pour les droits des détenus au Camp-Est, mais l’administration a pris du retard et les travaux n’auront pas lieu avant 2028, selon l’Observatoire international des prisons.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/societe/article/2024/10/29/prison-de-noumea-l-etat-condamne-car-trop-lent-a-ameliorer-les-conditions-de-detention_6364912_3224.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/520/0/4160/2080/1440/720/60/0/9ec59fb_1730203377797-cdo-cellule-case-g-cp-nouma-a-2.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T12:08:18.000Z", + "updatedAt": "2024-10-29T16:12:42.744Z", + "publishedAt": "2024-10-29T12:08:18.000Z" + }, + { + "id": "fe79a70e-d1e1-43fe-8555-094209d1b48d", + "slug": "tour-de-france-femmes-2025-la-course-traversera-l-hexagone-d-oue-192da131a9a", + "title": "Tour de France Femmes 2025 : la course traversera l’Hexagone d’Ouest en Est, de la Bretagne aux Alpes", + "description": "Le parcours de la quatrième édition de la course cycliste a été présenté mardi. Du 26 juillet au 3 août, il fera la part belle aux grimpeuses, qui auront trois étapes finales dans le massif alpin pour s’illustrer.", + "author": "Valentin Moinard", + "url": "https://www.lemonde.fr/sport/article/2024/10/29/tour-de-france-femmes-2025-de-la-bretagne-aux-alpes-la-course-traversera-la-france-d-ouest-en-est_6364908_3242.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/08/17/1194/0/7268/3634/1440/720/60/0/8bafa27_5442255-01-06.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T11:52:45.000Z", + "updatedAt": "2024-10-29T20:58:58.164Z", + "publishedAt": "2024-10-29T11:52:45.000Z" + }, + { + "id": "54687e28-21e1-42b4-bb92-cc5f39716464", + "slug": "en-direct-guerre-au-proche-orient-le-bombardement-israelien-sur--192da214287", + "title": "En direct, guerre au Proche-Orient : le bombardement israélien sur le nord de la bande de Gaza a fait 93 morts, selon un nouveau bilan de la défense civile", + "description": "Un précédent bilan, établi par la même source, faisait état de 55 morts. L’attaque aérienne, qui a eu lieu dans la nuit de lundi à mardi, a visé la ville de Beit Lahya, dans le nord de la bande de Gaza.", + "author": "Seb2000", + "url": "https://www.lemonde.fr/international/live/2024/10/29/en-direct-guerre-au-proche-orient-le-bombardement-israelien-sur-le-nord-de-la-bande-de-gaza-a-fait-93-morts-selon-un-nouveau-bilan-de-la-defense-civile_6362390_3210.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/303/0/3644/1822/1440/720/60/0/6b6faba_1730210101426-468617.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T11:52:34.000Z", + "updatedAt": "2024-10-29T21:14:26.095Z", + "publishedAt": "2024-10-29T11:52:34.000Z" + }, + { + "id": "a2b54509-62ad-4ab7-a68a-2a970ac25952", + "slug": "au-chili-le-gouvernement-de-gauche-malmene-aux-elections-locales-192da0e7d74", + "title": "Au Chili, le gouvernement de gauche malmené aux élections locales", + "description": "La droite de la coalition Chile Vamos sort renforcée des élections municipales et régionales, tandis que l’extrême droite progresse, sans enregistrer la percée qu’elle espérait.", + "author": "Flora Genoux", + "url": "https://www.lemonde.fr/international/article/2024/10/29/au-chili-le-gouvernement-de-gauche-malmene-aux-elections-locales_6364875_3210.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/720/0/8640/4320/1440/720/60/0/3632d71_1730193220296-852876.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T11:31:53.000Z", + "updatedAt": "2024-10-29T20:53:55.779Z", + "publishedAt": "2024-10-29T11:31:53.000Z" + }, + { + "id": "9c68ff83-1927-4377-a3b0-a048516a725d", + "slug": "en-isere-lyes-louffok-est-le-candidat-insoumis-investi-a-l-elect-192d90d319e", + "title": "En Isère, Lyes Louffok est le candidat « insoumis » investi à l’élection législative partielle", + "description": "Le siège est vacant depuis la démission d’Hugo Prevost (LFI), accusé de violences sexistes et sexuelles.", + "author": "Le Monde avec AFP", + "url": "https://www.lemonde.fr/politique/article/2024/10/29/en-isere-lyes-louffok-est-le-candidat-insoumis-investi-a-l-election-legislative-partielle_6364842_823448.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/10/29/552/0/6628/3314/1440/720/60/0/607f0f6_1730199775062-000-34r33w7.jpg", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T11:24:36.000Z", + "updatedAt": "2024-10-29T16:12:53.630Z", + "publishedAt": "2024-10-29T11:24:36.000Z" + }, + { + "id": "1015c224-bd79-4ed9-9268-8fa9803a52cd", + "slug": "presidentielle-americaine-2024-comment-le-calendrier-de-l-electi-192d90d3440", + "title": "Présidentielle américaine 2024 : comment le calendrier de l’élection et des affaires judiciaires de Trump s’entremêlent", + "description": "Le verdict du procès visant l’ancien président ne devrait être connu qu’après l’élection, et le reste des poursuites pénales reste incertain. « Le Monde » vous propose de suivre le déroulé, mis à jour continuellement, de cette année décisive pour les Etats-Unis.", + "author": "Gary Dagorn, Jean-Philippe Lefief", + "url": "https://www.lemonde.fr/les-decodeurs/article/2024/10/29/presidentielle-americaine-2024-comment-le-calendrier-de-l-election-et-des-affaires-judiciaires-de-trump-s-entremelent_6210916_3211.html", + "state": "Active", + "readingProgress": 0, + "thumbnail": "https://img.lemde.fr/2024/01/12/0/0/1500/750/1440/720/60/0/e9367e3_1705065713486-chrono-media-appel.png", + "labels": [ + "RSS" + ], + "savedAt": "2024-10-29T11:17:19.000Z", + "updatedAt": "2024-10-29T16:12:54.352Z", + "publishedAt": "2024-10-29T11:17:19.000Z" + } +] \ No newline at end of file diff --git a/translations/messages.en.yml b/translations/messages.en.yml index e06387742..312581153 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -503,6 +503,10 @@ import: page_title: 'Import > elCurator' description: 'This importer will import all your elCurator articles.' how_to: Please select your elCurator export and click on the button below to upload and import it. + omnivore: + page_title: 'Import > Omnivore' + description: 'This importer will import all your Omnivore articles.' + how_to: Please unzip your Omnivore export, then upload each JSON file named "metadata_x_to_y.json" one by one. readability: page_title: Import > Readability description: This importer will import all your Readability articles. diff --git a/web/wallassets/41a1d465797f51702171.otf b/web/wallassets/41a1d465797f51702171.otf new file mode 100644 index 0000000000000000000000000000000000000000..1a3027223aab6cc62f0855a7d4d064669705b81b GIT binary patch literal 49652 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 literal 0 HcmV?d00001 From d4171e9d633af070d4b0584a7a02666c235f554d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Sun, 3 Nov 2024 08:05:50 +0100 Subject: [PATCH 15/17] Prepare 2.6.10 release --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66916a148..67aac594d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,11 +3,16 @@ ## [2.6.10](https://github.com/wallabag/wallabag/tree/2.6.10) [Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.9...2.6.10) +### Improvement + +* Add Omnivore import by @nicosomb in https://github.com/wallabag/wallabag/pull/7754 + ### Fixes * Update site config & tests by @j0k3r in https://github.com/wallabag/wallabag/pull/7582 (fixes "Key provided is shorter than 256 bits, only 240 bits provided" https://github.com/wallabag/wallabag/issues/7531) * Update site config by @yguedidi in https://github.com/wallabag/wallabag/pull/7623 +* Replace gitter with matrix by @nicosomb in https://github.com/wallabag/wallabag/pull/7753 ## [2.6.9](https://github.com/wallabag/wallabag/tree/2.6.9) [Full Changelog](https://github.com/wallabag/wallabag/compare/2.6.8...2.6.9) From c4fe061a2e32aeadcff72ab603ab57159c69afd6 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Mon, 11 Nov 2024 17:02:34 +0100 Subject: [PATCH 16/17] phpcs: override trailing comma rule The @Symfony ruleSet comes with trailing_comma_in_multiline's elements set to ['array', 'array_destructuring', 'match', 'parameters']. However, 'parameters' breaks PHP 7.4 Reference: https://cs.symfony.com/doc/rules/control_structure/trailing_comma_in_multiline.html Signed-off-by: Kevin Decherf --- .php-cs-fixer.dist.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index e9e8e70f1..73bc89296 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -37,6 +37,17 @@ return $config // 'psr_autoloading' => true, 'strict_comparison' => true, 'strict_param' => true, + // We override next rule because of current @Symfony ruleSet + // 'parameters' element is breaking PHP 7.4 + // https://cs.symfony.com/doc/rules/control_structure/trailing_comma_in_multiline.html + // TODO: remove this configuration after dropping support of PHP 7.4 + 'trailing_comma_in_multiline' => [ + 'elements' => [ + 'arrays', + 'array_destructuring', + 'match', + ], + ], 'concat_space' => [ 'spacing' => 'one', ], From f28f5e0698cd0093921434e3ab1a9cfc057924e0 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Fri, 15 Nov 2024 23:56:28 +0100 Subject: [PATCH 17/17] Remove a built asset left after a merge Signed-off-by: Kevin Decherf --- web/wallassets/41a1d465797f51702171.otf | Bin 49652 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 web/wallassets/41a1d465797f51702171.otf diff --git a/web/wallassets/41a1d465797f51702171.otf b/web/wallassets/41a1d465797f51702171.otf deleted file mode 100644 index 1a3027223aab6cc62f0855a7d4d064669705b81b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49652 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