From 0d2c7e2e7ac8e9f5dc542d5adce3530210b7c66b Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 19:23:32 +0800 Subject: [PATCH 01/20] chore: Update dependencies --- .idea/php.xml | 3 + composer.json | 71 ++++---- composer.lock | 479 +++++++++++++++++++++---------------------------- devenv.lock | 12 +- importmap.php | 4 +- package.json | 4 +- pnpm-lock.yaml | 106 +++++------ 7 files changed, 304 insertions(+), 375 deletions(-) diff --git a/.idea/php.xml b/.idea/php.xml index b4cba32..aa2a1b7 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -216,6 +216,9 @@ + + + diff --git a/composer.json b/composer.json index 0ca717a..6a0f0f5 100644 --- a/composer.json +++ b/composer.json @@ -23,47 +23,47 @@ "nyholm/psr7": "dev-master", "openai-php/client": "dev-main", "oro/doctrine-extensions": "dev-master", - "phpdocumentor/reflection-docblock": "^5.5", + "phpdocumentor/reflection-docblock": "5.*", "runtime/frankenphp-symfony": "dev-main", "sensiolabs/typescript-bundle": "dev-main", - "symfony/asset": "7.2.*", - "symfony/asset-mapper": "7.2.*", - "symfony/console": "7.2.*", - "symfony/doctrine-messenger": "7.2.*", - "symfony/dotenv": "7.2.*", + "symfony/asset": "7.3.*", + "symfony/asset-mapper": "7.3.*", + "symfony/console": "7.3.*", + "symfony/doctrine-messenger": "7.3.*", + "symfony/dotenv": "7.3.*", "symfony/flex": "^2", - "symfony/form": "7.2.*", - "symfony/framework-bundle": "7.2.*", - "symfony/http-client": "7.2.*", - "symfony/intl": "7.2.*", - "symfony/line-notify-notifier": "7.2.*", - "symfony/lock": "7.2.*", - "symfony/mailer": "7.2.*", - "symfony/messenger": "7.2.*", - "symfony/mime": "7.2.*", + "symfony/form": "7.3.*", + "symfony/framework-bundle": "7.3.*", + "symfony/http-client": "7.3.*", + "symfony/intl": "7.3.*", + "symfony/line-notify-notifier": "7.3.*", + "symfony/lock": "7.3.*", + "symfony/mailer": "7.3.*", + "symfony/messenger": "7.3.*", + "symfony/mime": "7.3.*", "symfony/monolog-bundle": "^3.0", - "symfony/notifier": "7.2.*", - "symfony/password-hasher": "7.2.*", - "symfony/process": "7.2.*", - "symfony/runtime": "7.2.*", - "symfony/security-bundle": "7.2.*", - "symfony/serializer": "7.2.*", + "symfony/notifier": "7.3.*", + "symfony/password-hasher": "7.3.*", + "symfony/process": "7.3.*", + "symfony/runtime": "7.3.*", + "symfony/security-bundle": "7.3.*", + "symfony/serializer": "7.3.*", "symfony/stimulus-bundle": "2.*", - "symfony/string": "7.2.*", - "symfony/translation": "7.2.*", - "symfony/twig-bundle": "7.2.*", + "symfony/string": "7.3.*", + "symfony/translation": "7.3.*", + "symfony/twig-bundle": "7.3.*", "symfony/ux-chartjs": "2.*", "symfony/ux-live-component": "2.*", "symfony/ux-turbo": "2.*", "symfony/ux-twig-component": "2.*", - "symfony/validator": "7.2.*", - "symfony/yaml": "7.2.*", + "symfony/validator": "7.3.*", + "symfony/yaml": "7.3.*", "symfonycasts/sass-bundle": "dev-main", "twbs/bootstrap": "dev-main", "twig/extra-bundle": "3.*", "twig/markdown-extra": "3.*", "twig/string-extra": "3.*", - "twig/twig": "3.14.*" + "twig/twig": "3.*" }, "config": { "allow-plugins": { @@ -93,7 +93,8 @@ "symfony/polyfill-php80": "*", "symfony/polyfill-php81": "*", "symfony/polyfill-php82": "*", - "symfony/polyfill-php83": "*" + "symfony/polyfill-php83": "*", + "symfony/polyfill-php84": "*" }, "scripts": { "lint": [ @@ -122,7 +123,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "7.2.*", + "require": "7.3.*", "docker": true } }, @@ -135,13 +136,13 @@ "phpstan/phpstan-strict-rules": "2.0.x-dev", "phpstan/phpstan-symfony": "2.0.x-dev", "phpunit/phpunit": "^10", - "symfony/browser-kit": "7.2.*", - "symfony/css-selector": "7.2.*", - "symfony/debug-bundle": "7.2.*", + "symfony/browser-kit": "7.3.*", + "symfony/css-selector": "7.3.*", + "symfony/debug-bundle": "7.3.*", "symfony/maker-bundle": "^1.0", - "symfony/phpunit-bridge": "^7.2", - "symfony/stopwatch": "7.2.*", - "symfony/web-profiler-bundle": "7.2.*", + "symfony/phpunit-bridge": "7.3.*", + "symfony/stopwatch": "7.3.*", + "symfony/web-profiler-bundle": "7.3.*", "vincentlanglet/twig-cs-fixer": "dev-main" } } diff --git a/composer.lock b/composer.lock index 631ae23..f19c13e 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": "b6b9d76051e4f86a984f3817cd87bba1", + "content-hash": "7eed5df058de2b26a2bf8aba230f6c91", "packages": [ { "name": "composer/semver", @@ -351,12 +351,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "9c6e7c25653324c28791ebf70554b39cc7b92a68" + "reference": "54c770658f5cca9719a038ca0fb3e6a6403519ca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/9c6e7c25653324c28791ebf70554b39cc7b92a68", - "reference": "9c6e7c25653324c28791ebf70554b39cc7b92a68", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/54c770658f5cca9719a038ca0fb3e6a6403519ca", + "reference": "54c770658f5cca9719a038ca0fb3e6a6403519ca", "shasum": "" }, "require": { @@ -456,7 +456,7 @@ "type": "tidelift" } ], - "time": "2024-11-24T16:17:44+00:00" + "time": "2024-11-29T20:30:39+00:00" }, { "name": "doctrine/deprecations", @@ -464,12 +464,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" + "reference": "0d0c25d81be87f7143d1dfc635974d255e26291c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0d0c25d81be87f7143d1dfc635974d255e26291c", + "reference": "0d0c25d81be87f7143d1dfc635974d255e26291c", "shasum": "" }, "require": { @@ -491,7 +491,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -502,9 +502,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "source": "https://github.com/doctrine/deprecations/tree/1.1.x" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2024-12-01T07:04:16+00:00" }, { "name": "doctrine/doctrine-bundle", @@ -1052,12 +1052,12 @@ "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "610092c278c0430d6cc0c09cfb2a9f5c3f85ab33" + "reference": "72f58ae3a954b25460866ab0738d877f7c0cb0b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/610092c278c0430d6cc0c09cfb2a9f5c3f85ab33", - "reference": "610092c278c0430d6cc0c09cfb2a9f5c3f85ab33", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/72f58ae3a954b25460866ab0738d877f7c0cb0b7", + "reference": "72f58ae3a954b25460866ab0738d877f7c0cb0b7", "shasum": "" }, "require": { @@ -1147,7 +1147,7 @@ "type": "tidelift" } ], - "time": "2024-08-28T13:42:07+00:00" + "time": "2024-11-30T09:00:29+00:00" }, { "name": "doctrine/orm", @@ -1400,12 +1400,12 @@ "source": { "type": "git", "url": "https://github.com/EasyCorp/EasyAdminBundle.git", - "reference": "abe5cac99c21d01ad497b6af86fc0e5ecb632cab" + "reference": "2307da58ccfd0569f65943b9a01d49a4f3a71d7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/abe5cac99c21d01ad497b6af86fc0e5ecb632cab", - "reference": "abe5cac99c21d01ad497b6af86fc0e5ecb632cab", + "url": "https://api.github.com/repos/EasyCorp/EasyAdminBundle/zipball/2307da58ccfd0569f65943b9a01d49a4f3a71d7d", + "reference": "2307da58ccfd0569f65943b9a01d49a4f3a71d7d", "shasum": "" }, "require": { @@ -1481,7 +1481,7 @@ ], "support": { "issues": "https://github.com/EasyCorp/EasyAdminBundle/issues", - "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/v4.16.2" + "source": "https://github.com/EasyCorp/EasyAdminBundle/tree/4.x" }, "funding": [ { @@ -1489,7 +1489,7 @@ "type": "github" } ], - "time": "2024-11-26T19:48:14+00:00" + "time": "2024-11-29T18:27:19+00:00" }, { "name": "egulias/email-validator", @@ -1893,12 +1893,12 @@ "source": { "type": "git", "url": "https://github.com/meilisearch/meilisearch-symfony.git", - "reference": "9b25dfc49a2407ccdb2675cba4d0cf6e6cd8e300" + "reference": "e38bad8aa88e5e2b905492b3235e01d6eb4ecc64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/meilisearch/meilisearch-symfony/zipball/9b25dfc49a2407ccdb2675cba4d0cf6e6cd8e300", - "reference": "9b25dfc49a2407ccdb2675cba4d0cf6e6cd8e300", + "url": "https://api.github.com/repos/meilisearch/meilisearch-symfony/zipball/e38bad8aa88e5e2b905492b3235e01d6eb4ecc64", + "reference": "e38bad8aa88e5e2b905492b3235e01d6eb4ecc64", "shasum": "" }, "require": { @@ -1963,9 +1963,9 @@ ], "support": { "issues": "https://github.com/meilisearch/meilisearch-symfony/issues", - "source": "https://github.com/meilisearch/meilisearch-symfony/tree/v0.15.6" + "source": "https://github.com/meilisearch/meilisearch-symfony/tree/main" }, - "time": "2024-10-24T03:40:51+00:00" + "time": "2024-11-30T19:19:14+00:00" }, { "name": "monolog/monolog", @@ -3349,7 +3349,7 @@ }, { "name": "symfony/asset", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", @@ -3398,7 +3398,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/7.2" + "source": "https://github.com/symfony/asset/tree/v7.2.0" }, "funding": [ { @@ -3418,7 +3418,7 @@ }, { "name": "symfony/asset-mapper", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/asset-mapper.git", @@ -3477,7 +3477,7 @@ "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset-mapper/tree/7.2" + "source": "https://github.com/symfony/asset-mapper/tree/v7.2.0" }, "funding": [ { @@ -3497,7 +3497,7 @@ }, { "name": "symfony/cache", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", @@ -3575,7 +3575,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/7.2" + "source": "https://github.com/symfony/cache/tree/v7.2.0" }, "funding": [ { @@ -3672,7 +3672,7 @@ }, { "name": "symfony/clock", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", @@ -3726,7 +3726,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/7.2" + "source": "https://github.com/symfony/clock/tree/v7.2.0" }, "funding": [ { @@ -3746,7 +3746,7 @@ }, { "name": "symfony/config", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/config.git", @@ -3801,7 +3801,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/7.2" + "source": "https://github.com/symfony/config/tree/v7.2.0" }, "funding": [ { @@ -3821,7 +3821,7 @@ }, { "name": "symfony/console", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/console.git", @@ -3894,7 +3894,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/7.2" + "source": "https://github.com/symfony/console/tree/v7.2.0" }, "funding": [ { @@ -3914,7 +3914,7 @@ }, { "name": "symfony/dependency-injection", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", @@ -3974,7 +3974,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/7.2" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.0" }, "funding": [ { @@ -4062,7 +4062,7 @@ }, { "name": "symfony/doctrine-bridge", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", @@ -4151,7 +4151,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/7.2" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.0" }, "funding": [ { @@ -4171,7 +4171,7 @@ }, { "name": "symfony/doctrine-messenger", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", @@ -4223,7 +4223,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/7.2" + "source": "https://github.com/symfony/doctrine-messenger/tree/v7.2.0" }, "funding": [ { @@ -4243,7 +4243,7 @@ }, { "name": "symfony/dotenv", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", @@ -4297,7 +4297,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/7.2" + "source": "https://github.com/symfony/dotenv/tree/v7.2.0" }, "funding": [ { @@ -4317,7 +4317,7 @@ }, { "name": "symfony/error-handler", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", @@ -4372,7 +4372,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/7.2" + "source": "https://github.com/symfony/error-handler/tree/v7.2.0" }, "funding": [ { @@ -4392,7 +4392,7 @@ }, { "name": "symfony/event-dispatcher", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -4452,7 +4452,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/7.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -4549,7 +4549,7 @@ }, { "name": "symfony/filesystem", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -4595,7 +4595,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/7.2" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -4615,7 +4615,7 @@ }, { "name": "symfony/finder", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", @@ -4659,7 +4659,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/7.2" + "source": "https://github.com/symfony/finder/tree/v7.2.0" }, "funding": [ { @@ -4748,7 +4748,7 @@ }, { "name": "symfony/form", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/form.git", @@ -4825,7 +4825,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/7.2" + "source": "https://github.com/symfony/form/tree/v7.2.0" }, "funding": [ { @@ -4845,7 +4845,7 @@ }, { "name": "symfony/framework-bundle", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", @@ -4975,7 +4975,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/7.2" + "source": "https://github.com/symfony/framework-bundle/tree/v7.2.0" }, "funding": [ { @@ -4995,16 +4995,16 @@ }, { "name": "symfony/http-client", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "99ceaedb5fc35111147beff1f6973aafdcd2db69" + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/99ceaedb5fc35111147beff1f6973aafdcd2db69", - "reference": "99ceaedb5fc35111147beff1f6973aafdcd2db69", + "url": "https://api.github.com/repos/symfony/http-client/zipball/955e43336aff03df1e8a8e17daefabb0127a313b", + "reference": "955e43336aff03df1e8a8e17daefabb0127a313b", "shasum": "" }, "require": { @@ -5086,7 +5086,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T12:19:59+00:00" + "time": "2024-11-29T08:22:02+00:00" }, { "name": "symfony/http-client-contracts", @@ -5169,7 +5169,7 @@ }, { "name": "symfony/http-foundation", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", @@ -5227,7 +5227,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/7.2" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.0" }, "funding": [ { @@ -5247,16 +5247,16 @@ }, { "name": "symfony/http-kernel", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8672d96bd84b000f15c2b05724ef0b91fd4ac93f" + "reference": "52b0f33f21683a1a78a61a762a7632f45942f97d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8672d96bd84b000f15c2b05724ef0b91fd4ac93f", - "reference": "8672d96bd84b000f15c2b05724ef0b91fd4ac93f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/52b0f33f21683a1a78a61a762a7632f45942f97d", + "reference": "52b0f33f21683a1a78a61a762a7632f45942f97d", "shasum": "" }, "require": { @@ -5341,7 +5341,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/7.2" + "source": "https://github.com/symfony/http-kernel/tree/7.3" }, "funding": [ { @@ -5357,11 +5357,11 @@ "type": "tidelift" } ], - "time": "2024-11-20T11:17:29+00:00" + "time": "2024-11-20T12:24:43+00:00" }, { "name": "symfony/intl", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", @@ -5427,7 +5427,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/7.2" + "source": "https://github.com/symfony/intl/tree/v7.2.0" }, "funding": [ { @@ -5447,7 +5447,7 @@ }, { "name": "symfony/line-notify-notifier", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/line-notify-notifier.git", @@ -5498,7 +5498,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/line-notify-notifier/tree/7.2" + "source": "https://github.com/symfony/line-notify-notifier/tree/v7.2.0" }, "funding": [ { @@ -5518,7 +5518,7 @@ }, { "name": "symfony/lock", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", @@ -5576,7 +5576,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/7.2" + "source": "https://github.com/symfony/lock/tree/v7.2.0" }, "funding": [ { @@ -5596,7 +5596,7 @@ }, { "name": "symfony/mailer", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", @@ -5656,7 +5656,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/7.2" + "source": "https://github.com/symfony/mailer/tree/v7.2.0" }, "funding": [ { @@ -5676,7 +5676,7 @@ }, { "name": "symfony/messenger", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", @@ -5743,7 +5743,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/7.2" + "source": "https://github.com/symfony/messenger/tree/v7.2.0" }, "funding": [ { @@ -5763,7 +5763,7 @@ }, { "name": "symfony/mime", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", @@ -5827,7 +5827,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/7.2" + "source": "https://github.com/symfony/mime/tree/v7.2.0" }, "funding": [ { @@ -5847,7 +5847,7 @@ }, { "name": "symfony/monolog-bridge", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", @@ -5905,7 +5905,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/7.2" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.2.0" }, "funding": [ { @@ -6007,7 +6007,7 @@ }, { "name": "symfony/notifier", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/notifier.git", @@ -6065,7 +6065,7 @@ "notifier" ], "support": { - "source": "https://github.com/symfony/notifier/tree/7.2" + "source": "https://github.com/symfony/notifier/tree/v7.2.0" }, "funding": [ { @@ -6085,7 +6085,7 @@ }, { "name": "symfony/options-resolver", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", @@ -6132,7 +6132,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/7.2" + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" }, "funding": [ { @@ -6152,7 +6152,7 @@ }, { "name": "symfony/password-hasher", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", @@ -6204,7 +6204,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/7.2" + "source": "https://github.com/symfony/password-hasher/tree/v7.2.0" }, "funding": [ { @@ -6633,83 +6633,6 @@ ], "time": "2024-09-10T14:38:51+00:00" }, - { - "name": "symfony/polyfill-php84", - "version": "1.x-dev", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "48e55b8ecb3a52432be17bcac66eaaa3c3336f68" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/48e55b8ecb3a52432be17bcac66eaaa3c3336f68", - "reference": "48e55b8ecb3a52432be17bcac66eaaa3c3336f68", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "default-branch": true, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/1.x" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-10T14:38:51+00:00" - }, { "name": "symfony/polyfill-uuid", "version": "1.x-dev", @@ -6792,7 +6715,7 @@ }, { "name": "symfony/process", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/process.git", @@ -6833,7 +6756,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/7.2" + "source": "https://github.com/symfony/process/tree/v7.2.0" }, "funding": [ { @@ -6853,7 +6776,7 @@ }, { "name": "symfony/property-access", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", @@ -6909,7 +6832,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/7.2" + "source": "https://github.com/symfony/property-access/tree/v7.2.0" }, "funding": [ { @@ -6929,7 +6852,7 @@ }, { "name": "symfony/property-info", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", @@ -6992,7 +6915,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/7.2" + "source": "https://github.com/symfony/property-info/tree/v7.2.0" }, "funding": [ { @@ -7012,7 +6935,7 @@ }, { "name": "symfony/routing", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", @@ -7073,7 +6996,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/7.2" + "source": "https://github.com/symfony/routing/tree/v7.2.0" }, "funding": [ { @@ -7093,7 +7016,7 @@ }, { "name": "symfony/runtime", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", @@ -7152,7 +7075,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/7.2" + "source": "https://github.com/symfony/runtime/tree/v7.2.0" }, "funding": [ { @@ -7172,7 +7095,7 @@ }, { "name": "symfony/security-bundle", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", @@ -7258,7 +7181,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/7.2" + "source": "https://github.com/symfony/security-bundle/tree/v7.2.0" }, "funding": [ { @@ -7278,7 +7201,7 @@ }, { "name": "symfony/security-core", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", @@ -7345,7 +7268,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/7.2" + "source": "https://github.com/symfony/security-core/tree/v7.2.0" }, "funding": [ { @@ -7365,7 +7288,7 @@ }, { "name": "symfony/security-csrf", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", @@ -7415,7 +7338,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/7.2" + "source": "https://github.com/symfony/security-csrf/tree/v7.2.0" }, "funding": [ { @@ -7435,7 +7358,7 @@ }, { "name": "symfony/security-http", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", @@ -7503,7 +7426,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/7.2" + "source": "https://github.com/symfony/security-http/tree/v7.2.0" }, "funding": [ { @@ -7523,7 +7446,7 @@ }, { "name": "symfony/serializer", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", @@ -7601,7 +7524,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/7.2" + "source": "https://github.com/symfony/serializer/tree/v7.2.0" }, "funding": [ { @@ -7755,7 +7678,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/2.x" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.22.0" }, "funding": [ { @@ -7775,7 +7698,7 @@ }, { "name": "symfony/stopwatch", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -7817,7 +7740,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/7.2" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.0" }, "funding": [ { @@ -7837,7 +7760,7 @@ }, { "name": "symfony/string", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/string.git", @@ -7904,7 +7827,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/7.2" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -7924,7 +7847,7 @@ }, { "name": "symfony/translation", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", @@ -7999,7 +7922,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/7.2" + "source": "https://github.com/symfony/translation/tree/v7.2.0" }, "funding": [ { @@ -8098,7 +8021,7 @@ }, { "name": "symfony/twig-bridge", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", @@ -8188,7 +8111,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/7.2" + "source": "https://github.com/symfony/twig-bridge/tree/v7.2.0" }, "funding": [ { @@ -8208,7 +8131,7 @@ }, { "name": "symfony/twig-bundle", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", @@ -8272,7 +8195,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/7.2" + "source": "https://github.com/symfony/twig-bundle/tree/v7.2.0" }, "funding": [ { @@ -8292,7 +8215,7 @@ }, { "name": "symfony/type-info", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", @@ -8352,7 +8275,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/7.2" + "source": "https://github.com/symfony/type-info/tree/v7.2.0" }, "funding": [ { @@ -8372,7 +8295,7 @@ }, { "name": "symfony/uid", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", @@ -8426,7 +8349,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/7.2" + "source": "https://github.com/symfony/uid/tree/v7.2.0" }, "funding": [ { @@ -8478,8 +8401,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -8507,7 +8430,7 @@ "symfony-ux" ], "support": { - "source": "https://github.com/symfony/ux-chartjs/tree/2.x" + "source": "https://github.com/symfony/ux-chartjs/tree/v2.22.0" }, "funding": [ { @@ -8531,12 +8454,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/ux-live-component.git", - "reference": "b1e06e46dc00b6bf08d6ec24d278288bf71f3cf8" + "reference": "2df6a25f25788864e65cb8812d85e14ef80b6b44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/b1e06e46dc00b6bf08d6ec24d278288bf71f3cf8", - "reference": "b1e06e46dc00b6bf08d6ec24d278288bf71f3cf8", + "url": "https://api.github.com/repos/symfony/ux-live-component/zipball/2df6a25f25788864e65cb8812d85e14ef80b6b44", + "reference": "2df6a25f25788864e65cb8812d85e14ef80b6b44", "shasum": "" }, "require": { @@ -8575,8 +8498,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -8602,7 +8525,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-live-component/tree/2.x" + "source": "https://github.com/symfony/ux-live-component/tree/v2.22.0" }, "funding": [ { @@ -8618,7 +8541,7 @@ "type": "tidelift" } ], - "time": "2024-11-24T22:18:30+00:00" + "time": "2024-11-29T15:31:04+00:00" }, { "name": "symfony/ux-turbo", @@ -8626,12 +8549,12 @@ "source": { "type": "git", "url": "https://github.com/symfony/ux-turbo.git", - "reference": "23deaf13a4de289b99e86828172ee0ee065d8f9c" + "reference": "f7af0aa09190354dd4630ea330d8a3fc3e8ef278" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/23deaf13a4de289b99e86828172ee0ee065d8f9c", - "reference": "23deaf13a4de289b99e86828172ee0ee065d8f9c", + "url": "https://api.github.com/repos/symfony/ux-turbo/zipball/f7af0aa09190354dd4630ea330d8a3fc3e8ef278", + "reference": "f7af0aa09190354dd4630ea330d8a3fc3e8ef278", "shasum": "" }, "require": { @@ -8667,8 +8590,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -8701,7 +8624,7 @@ "turbo-stream" ], "support": { - "source": "https://github.com/symfony/ux-turbo/tree/2.x" + "source": "https://github.com/symfony/ux-turbo/tree/v2.22.0" }, "funding": [ { @@ -8717,7 +8640,7 @@ "type": "tidelift" } ], - "time": "2024-11-20T07:57:38+00:00" + "time": "2024-11-29T15:25:16+00:00" }, { "name": "symfony/ux-twig-component", @@ -8758,8 +8681,8 @@ "type": "symfony-bundle", "extra": { "thanks": { - "name": "symfony/ux", - "url": "https://github.com/symfony/ux" + "url": "https://github.com/symfony/ux", + "name": "symfony/ux" } }, "autoload": { @@ -8785,7 +8708,7 @@ "twig" ], "support": { - "source": "https://github.com/symfony/ux-twig-component/tree/2.x" + "source": "https://github.com/symfony/ux-twig-component/tree/v2.22.0" }, "funding": [ { @@ -8805,7 +8728,7 @@ }, { "name": "symfony/validator", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", @@ -8882,7 +8805,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/7.2" + "source": "https://github.com/symfony/validator/tree/v7.2.0" }, "funding": [ { @@ -8902,16 +8825,16 @@ }, { "name": "symfony/var-dumper", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c" + "reference": "340357866b7ebea88d2f325c167cb5e4dd3383e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c6a22929407dec8765d6e2b6ff85b800b245879c", - "reference": "c6a22929407dec8765d6e2b6ff85b800b245879c", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/340357866b7ebea88d2f325c167cb5e4dd3383e4", + "reference": "340357866b7ebea88d2f325c167cb5e4dd3383e4", "shasum": "" }, "require": { @@ -8965,7 +8888,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/7.2" + "source": "https://github.com/symfony/var-dumper/tree/7.3" }, "funding": [ { @@ -8981,11 +8904,11 @@ "type": "tidelift" } ], - "time": "2024-11-08T15:48:14+00:00" + "time": "2024-11-28T14:07:15+00:00" }, { "name": "symfony/var-exporter", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", @@ -9041,7 +8964,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/7.2" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -9061,7 +8984,7 @@ }, { "name": "symfony/yaml", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", @@ -9113,7 +9036,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/7.2" + "source": "https://github.com/symfony/yaml/tree/v7.2.0" }, "funding": [ { @@ -9299,7 +9222,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.15.0" + "source": "https://github.com/twigphp/twig-extra-bundle/tree/v3.16.0" }, "funding": [ { @@ -9372,7 +9295,7 @@ "twig" ], "support": { - "source": "https://github.com/twigphp/markdown-extra/tree/v3.15.0" + "source": "https://github.com/twigphp/markdown-extra/tree/v3.16.0" }, "funding": [ { @@ -9392,12 +9315,12 @@ "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "3f90208078a7d55ad4a561301ee3929d3e3840e0" + "reference": "cb4eec11de02f63ad8ea9d065a1f27752d0bf752" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/3f90208078a7d55ad4a561301ee3929d3e3840e0", - "reference": "3f90208078a7d55ad4a561301ee3929d3e3840e0", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/cb4eec11de02f63ad8ea9d065a1f27752d0bf752", + "reference": "cb4eec11de02f63ad8ea9d065a1f27752d0bf752", "shasum": "" }, "require": { @@ -9452,20 +9375,20 @@ "type": "tidelift" } ], - "time": "2024-11-20T13:10:15+00:00" + "time": "2024-11-30T08:42:13+00:00" }, { "name": "twig/twig", - "version": "3.14.x-dev", + "version": "3.x-dev", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" + "reference": "c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", - "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f", + "reference": "c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f", "shasum": "" }, "require": { @@ -9476,9 +9399,11 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { + "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, + "default-branch": true, "type": "library", "autoload": { "files": [ @@ -9519,7 +9444,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.14.2" + "source": "https://github.com/twigphp/Twig/tree/3.x" }, "funding": [ { @@ -9531,7 +9456,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T12:36:22+00:00" + "time": "2024-11-30T09:52:06+00:00" }, { "name": "webmozart/assert", @@ -9919,12 +9844,12 @@ "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "4fe0771f27e0d61e227d8b5a5b0fef8e5d138c1b" + "reference": "23534bff9eb778be9b1c55570548492741c3393c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/4fe0771f27e0d61e227d8b5a5b0fef8e5d138c1b", - "reference": "4fe0771f27e0d61e227d8b5a5b0fef8e5d138c1b", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/23534bff9eb778be9b1c55570548492741c3393c", + "reference": "23534bff9eb778be9b1c55570548492741c3393c", "shasum": "" }, "require": { @@ -10015,7 +9940,7 @@ "type": "github" } ], - "time": "2024-11-25T12:11:49+00:00" + "time": "2024-11-30T08:32:38+00:00" }, { "name": "masterminds/html5", @@ -10377,12 +10302,12 @@ "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f9e84e0add3ebffc48f7a9eaed0d869f8112dd1e" + "reference": "97ba50af456b28c156727c0c908266d1482885dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9e84e0add3ebffc48f7a9eaed0d869f8112dd1e", - "reference": "f9e84e0add3ebffc48f7a9eaed0d869f8112dd1e", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97ba50af456b28c156727c0c908266d1482885dd", + "reference": "97ba50af456b28c156727c0c908266d1482885dd", "shasum": "" }, "require": { @@ -10428,7 +10353,7 @@ "type": "github" } ], - "time": "2024-11-27T15:10:00+00:00" + "time": "2024-11-30T15:33:55+00:00" }, { "name": "phpstan/phpstan-doctrine", @@ -11004,12 +10929,12 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c4ccbf6978839f4113e9ecf6c9ad645429cb4301" + "reference": "e75fd04dce45b3a064a44107d8037b411ecbd307" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c4ccbf6978839f4113e9ecf6c9ad645429cb4301", - "reference": "c4ccbf6978839f4113e9ecf6c9ad645429cb4301", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e75fd04dce45b3a064a44107d8037b411ecbd307", + "reference": "e75fd04dce45b3a064a44107d8037b411ecbd307", "shasum": "" }, "require": { @@ -11097,7 +11022,7 @@ "type": "tidelift" } ], - "time": "2024-11-26T13:36:09+00:00" + "time": "2024-11-30T07:38:36+00:00" }, { "name": "react/cache", @@ -12558,7 +12483,7 @@ }, { "name": "symfony/browser-kit", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", @@ -12606,7 +12531,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/7.2" + "source": "https://github.com/symfony/browser-kit/tree/v7.2.0" }, "funding": [ { @@ -12626,7 +12551,7 @@ }, { "name": "symfony/css-selector", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -12671,7 +12596,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/7.2" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" }, "funding": [ { @@ -12691,7 +12616,7 @@ }, { "name": "symfony/debug-bundle", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", @@ -12745,7 +12670,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/7.2" + "source": "https://github.com/symfony/debug-bundle/tree/v7.2.0" }, "funding": [ { @@ -12765,7 +12690,7 @@ }, { "name": "symfony/dom-crawler", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", @@ -12812,7 +12737,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/7.2" + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.0" }, "funding": [ { @@ -12924,7 +12849,7 @@ }, { "name": "symfony/phpunit-bridge", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", @@ -12953,8 +12878,8 @@ "type": "symfony-bridge", "extra": { "thanks": { - "name": "phpunit/phpunit", - "url": "https://github.com/sebastianbergmann/phpunit" + "url": "https://github.com/sebastianbergmann/phpunit", + "name": "phpunit/phpunit" } }, "autoload": { @@ -12986,7 +12911,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/7.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.2.0" }, "funding": [ { @@ -13006,7 +12931,7 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "7.2.x-dev", + "version": "7.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", @@ -13068,7 +12993,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/7.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.0" }, "funding": [ { @@ -13142,12 +13067,12 @@ "source": { "type": "git", "url": "https://github.com/VincentLanglet/Twig-CS-Fixer.git", - "reference": "595fe48a3bf43282d21e6930e433d22014f9ecbd" + "reference": "0c50bdb80b2de1a39e6d3d3ad96255a0ebdbeab0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/595fe48a3bf43282d21e6930e433d22014f9ecbd", - "reference": "595fe48a3bf43282d21e6930e433d22014f9ecbd", + "url": "https://api.github.com/repos/VincentLanglet/Twig-CS-Fixer/zipball/0c50bdb80b2de1a39e6d3d3ad96255a0ebdbeab0", + "reference": "0c50bdb80b2de1a39e6d3d3ad96255a0ebdbeab0", "shasum": "" }, "require": { @@ -13207,7 +13132,7 @@ "homepage": "https://github.com/VincentLanglet/Twig-CS-Fixer", "support": { "issues": "https://github.com/VincentLanglet/Twig-CS-Fixer/issues", - "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/3.3.1" + "source": "https://github.com/VincentLanglet/Twig-CS-Fixer/tree/main" }, "funding": [ { @@ -13215,7 +13140,7 @@ "type": "github" } ], - "time": "2024-11-06T16:21:28+00:00" + "time": "2024-11-30T08:25:10+00:00" } ], "aliases": [], diff --git a/devenv.lock b/devenv.lock index 96d0062..9a9be7d 100644 --- a/devenv.lock +++ b/devenv.lock @@ -3,10 +3,10 @@ "devenv": { "locked": { "dir": "src/modules", - "lastModified": 1732585607, + "lastModified": 1732896163, "owner": "cachix", "repo": "devenv", - "rev": "a520f05c40ebecaf5e17064b27e28ba8e70c49fb", + "rev": "2c928a199d56191d7a53f29ccafa56238c8ce4e5", "type": "github" }, "original": { @@ -53,10 +53,10 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732617236, + "lastModified": 1732997066, "owner": "nixos", "repo": "nixpkgs", - "rev": "af51545ec9a44eadf3fe3547610a5cdd882bc34e", + "rev": "33b9d57c656e65a9c88c5f34e4eb00b83e2b0ca9", "type": "github" }, "original": { @@ -68,10 +68,10 @@ }, "nixpkgs-stable": { "locked": { - "lastModified": 1732632634, + "lastModified": 1732749044, "owner": "NixOS", "repo": "nixpkgs", - "rev": "6f6076c37180ea3a916f84928cf3a714c5207a30", + "rev": "0c5b4ecbed5b155b705336aa96d878e55acd8685", "type": "github" }, "original": { diff --git a/importmap.php b/importmap.php index 145004d..6be827a 100644 --- a/importmap.php +++ b/importmap.php @@ -56,7 +56,7 @@ 'version' => '6.4.1', ], '@codemirror/language' => [ - 'version' => '6.10.5', + 'version' => '6.10.6', ], '@codemirror/commands' => [ 'version' => '6.7.1', @@ -68,7 +68,7 @@ 'version' => '6.18.3', ], '@codemirror/lint' => [ - 'version' => '6.8.3', + 'version' => '6.8.4', ], '@lezer/highlight' => [ 'version' => '1.2.1', diff --git a/package.json b/package.json index 603a090..ac22c4c 100644 --- a/package.json +++ b/package.json @@ -15,12 +15,12 @@ }, "packageManager": "pnpm@9.13.2+sha512.88c9c3864450350e65a33587ab801acf946d7c814ed1134da4a924f6df5a2120fd36b46aab68f7cd1d413149112d53c7db3a4136624cfd00ff1846a0c6cef48a", "devDependencies": { - "@eslint/js": "^9.15.0", + "@eslint/js": "^9.16.0", "@hotwired/stimulus": "^3.2.2", "@types/bootstrap": "^5.2.10", "bootstrap": "^5.3.3", "dprint": "^0.47.5", - "eslint": "^9.15.0", + "eslint": "^9.16.0", "globals": "^15.12.0", "typescript-eslint": "^8.16.0" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 60fb856..459a3d9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ importers: version: 5.7.2 devDependencies: "@eslint/js": - specifier: ^9.15.0 - version: 9.15.0 + specifier: ^9.16.0 + version: 9.16.0 "@hotwired/stimulus": specifier: ^3.2.2 version: 3.2.2 @@ -39,14 +39,14 @@ importers: specifier: ^0.47.5 version: 0.47.5 eslint: - specifier: ^9.15.0 - version: 9.15.0 + specifier: ^9.16.0 + version: 9.16.0 globals: specifier: ^15.12.0 version: 15.12.0 typescript-eslint: specifier: ^8.16.0 - version: 8.16.0(eslint@9.15.0)(typescript@5.7.2) + version: 8.16.0(eslint@9.16.0)(typescript@5.7.2) packages: "@codemirror/autocomplete@6.18.3": @@ -69,14 +69,14 @@ packages: integrity: sha512-aGLmY4OwGqN3TdSx3h6QeA1NrvaYtF7kkoWR/+W7/JzB0gQtJ+VJxewlnE3+VImhA4WVlhmkJr109PefOOhjLg==, } - "@codemirror/language@6.10.5": + "@codemirror/language@6.10.6": resolution: { - integrity: sha512-sECWJyNmwqw6mSO6Qf0IVPHwhEnuYbqHBZaaIbdcXtZ6Y2r5vU/dxgC7K1ppWaJFy8XGtTBC0Pd60qI7NfJreQ==, + integrity: sha512-KrsbdCnxEztLVbB5PycWXFxas4EOyk/fPAfruSOnDDppevQgid2XZ+KbJ9u+fDikP/e7MW7HPBTvTb8JlZK9vA==, } - "@codemirror/lint@6.8.3": + "@codemirror/lint@6.8.4": resolution: { - integrity: sha512-GSGfKxCo867P7EX1k2LoCrjuQFeqVgPGRRsSl4J4c0KMkD+k1y6WYvTQkzv0iZ8JhLJDujEvlnMchv4CZQLh3Q==, + integrity: sha512-u4q7PnZlJUojeRe8FJa/njJcMctISGgPQ4PnWsd9268R4ZTtU+tfFYmwkBvgcrK2+QQ8tYFVALVb5fVJykKc5A==, } "@codemirror/search@6.5.8": @@ -182,9 +182,9 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - "@eslint/js@9.15.0": + "@eslint/js@9.16.0": resolution: { - integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==, + integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } @@ -552,9 +552,9 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint@9.15.0: + eslint@9.16.0: resolution: { - integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==, + integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==, } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } hasBin: true @@ -938,9 +938,9 @@ packages: } engines: { node: ">=8.0" } - ts-api-utils@1.4.2: + ts-api-utils@1.4.3: resolution: { - integrity: sha512-ZF5gQIQa/UmzfvxbHZI3JXN0/Jt+vnAfAviNRAMc491laiK6YCLpCW9ft8oaCRFOTxCZtUTE6XB0ZQAe3olntw==, + integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==, } engines: { node: ">=16" } peerDependencies: @@ -1001,24 +1001,24 @@ packages: engines: { node: ">=10" } snapshots: - "@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.5)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)": + "@codemirror/autocomplete@6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3)": dependencies: - "@codemirror/language": 6.10.5 + "@codemirror/language": 6.10.6 "@codemirror/state": 6.4.1 "@codemirror/view": 6.35.0 "@lezer/common": 1.2.3 "@codemirror/commands@6.7.1": dependencies: - "@codemirror/language": 6.10.5 + "@codemirror/language": 6.10.6 "@codemirror/state": 6.4.1 "@codemirror/view": 6.35.0 "@lezer/common": 1.2.3 "@codemirror/lang-sql@6.8.0(@codemirror/view@6.35.0)": dependencies: - "@codemirror/autocomplete": 6.18.3(@codemirror/language@6.10.5)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) - "@codemirror/language": 6.10.5 + "@codemirror/autocomplete": 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + "@codemirror/language": 6.10.6 "@codemirror/state": 6.4.1 "@lezer/common": 1.2.3 "@lezer/highlight": 1.2.1 @@ -1026,7 +1026,7 @@ snapshots: transitivePeerDependencies: - "@codemirror/view" - "@codemirror/language@6.10.5": + "@codemirror/language@6.10.6": dependencies: "@codemirror/state": 6.4.1 "@codemirror/view": 6.35.0 @@ -1035,7 +1035,7 @@ snapshots: "@lezer/lr": 1.4.2 style-mod: 4.1.2 - "@codemirror/lint@6.8.3": + "@codemirror/lint@6.8.4": dependencies: "@codemirror/state": 6.4.1 "@codemirror/view": 6.35.0 @@ -1079,9 +1079,9 @@ snapshots: "@dprint/win32-x64@0.47.5": optional: true - "@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)": + "@eslint-community/eslint-utils@4.4.1(eslint@9.16.0)": dependencies: - eslint: 9.15.0 + eslint: 9.16.0 eslint-visitor-keys: 3.4.3 "@eslint-community/regexpp@4.12.1": {} @@ -1110,7 +1110,7 @@ snapshots: transitivePeerDependencies: - supports-color - "@eslint/js@9.15.0": {} + "@eslint/js@9.16.0": {} "@eslint/object-schema@2.1.4": {} @@ -1180,32 +1180,32 @@ snapshots: "@types/webpack-env@1.18.5": {} - "@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2)": + "@typescript-eslint/eslint-plugin@8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)": dependencies: "@eslint-community/regexpp": 4.12.1 - "@typescript-eslint/parser": 8.16.0(eslint@9.15.0)(typescript@5.7.2) + "@typescript-eslint/parser": 8.16.0(eslint@9.16.0)(typescript@5.7.2) "@typescript-eslint/scope-manager": 8.16.0 - "@typescript-eslint/type-utils": 8.16.0(eslint@9.15.0)(typescript@5.7.2) - "@typescript-eslint/utils": 8.16.0(eslint@9.15.0)(typescript@5.7.2) + "@typescript-eslint/type-utils": 8.16.0(eslint@9.16.0)(typescript@5.7.2) + "@typescript-eslint/utils": 8.16.0(eslint@9.16.0)(typescript@5.7.2) "@typescript-eslint/visitor-keys": 8.16.0 - eslint: 9.15.0 + eslint: 9.16.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.2(typescript@5.7.2) + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2)": + "@typescript-eslint/parser@8.16.0(eslint@9.16.0)(typescript@5.7.2)": dependencies: "@typescript-eslint/scope-manager": 8.16.0 "@typescript-eslint/types": 8.16.0 "@typescript-eslint/typescript-estree": 8.16.0(typescript@5.7.2) "@typescript-eslint/visitor-keys": 8.16.0 debug: 4.3.7 - eslint: 9.15.0 + eslint: 9.16.0 optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -1216,13 +1216,13 @@ snapshots: "@typescript-eslint/types": 8.16.0 "@typescript-eslint/visitor-keys": 8.16.0 - "@typescript-eslint/type-utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)": + "@typescript-eslint/type-utils@8.16.0(eslint@9.16.0)(typescript@5.7.2)": dependencies: "@typescript-eslint/typescript-estree": 8.16.0(typescript@5.7.2) - "@typescript-eslint/utils": 8.16.0(eslint@9.15.0)(typescript@5.7.2) + "@typescript-eslint/utils": 8.16.0(eslint@9.16.0)(typescript@5.7.2) debug: 4.3.7 - eslint: 9.15.0 - ts-api-utils: 1.4.2(typescript@5.7.2) + eslint: 9.16.0 + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -1239,19 +1239,19 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.2(typescript@5.7.2) + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: - supports-color - "@typescript-eslint/utils@8.16.0(eslint@9.15.0)(typescript@5.7.2)": + "@typescript-eslint/utils@8.16.0(eslint@9.16.0)(typescript@5.7.2)": dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.15.0) + "@eslint-community/eslint-utils": 4.4.1(eslint@9.16.0) "@typescript-eslint/scope-manager": 8.16.0 "@typescript-eslint/types": 8.16.0 "@typescript-eslint/typescript-estree": 8.16.0(typescript@5.7.2) - eslint: 9.15.0 + eslint: 9.16.0 optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: @@ -1315,10 +1315,10 @@ snapshots: codemirror@6.0.1(@lezer/common@1.2.3): dependencies: - "@codemirror/autocomplete": 6.18.3(@codemirror/language@6.10.5)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) + "@codemirror/autocomplete": 6.18.3(@codemirror/language@6.10.6)(@codemirror/state@6.4.1)(@codemirror/view@6.35.0)(@lezer/common@1.2.3) "@codemirror/commands": 6.7.1 - "@codemirror/language": 6.10.5 - "@codemirror/lint": 6.8.3 + "@codemirror/language": 6.10.6 + "@codemirror/lint": 6.8.4 "@codemirror/search": 6.5.8 "@codemirror/state": 6.4.1 "@codemirror/view": 6.35.0 @@ -1371,14 +1371,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.15.0: + eslint@9.16.0: dependencies: - "@eslint-community/eslint-utils": 4.4.1(eslint@9.15.0) + "@eslint-community/eslint-utils": 4.4.1(eslint@9.16.0) "@eslint-community/regexpp": 4.12.1 "@eslint/config-array": 0.19.0 "@eslint/core": 0.9.0 "@eslint/eslintrc": 3.2.0 - "@eslint/js": 9.15.0 + "@eslint/js": 9.16.0 "@eslint/plugin-kit": 0.2.3 "@humanfs/node": 0.16.6 "@humanwhocodes/module-importer": 1.0.1 @@ -1620,7 +1620,7 @@ snapshots: dependencies: is-number: 7.0.0 - ts-api-utils@1.4.2(typescript@5.7.2): + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -1628,12 +1628,12 @@ snapshots: dependencies: prelude-ls: 1.2.1 - typescript-eslint@8.16.0(eslint@9.15.0)(typescript@5.7.2): + typescript-eslint@8.16.0(eslint@9.16.0)(typescript@5.7.2): dependencies: - "@typescript-eslint/eslint-plugin": 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.15.0)(typescript@5.7.2))(eslint@9.15.0)(typescript@5.7.2) - "@typescript-eslint/parser": 8.16.0(eslint@9.15.0)(typescript@5.7.2) - "@typescript-eslint/utils": 8.16.0(eslint@9.15.0)(typescript@5.7.2) - eslint: 9.15.0 + "@typescript-eslint/eslint-plugin": 8.16.0(@typescript-eslint/parser@8.16.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2) + "@typescript-eslint/parser": 8.16.0(eslint@9.16.0)(typescript@5.7.2) + "@typescript-eslint/utils": 8.16.0(eslint@9.16.0)(typescript@5.7.2) + eslint: 9.16.0 optionalDependencies: typescript: 5.7.2 transitivePeerDependencies: From d5206ad5c36bd2770009a89ab1a781f73a274549 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 19:35:33 +0800 Subject: [PATCH 02/20] feat(footer): Add Service Status --- templates/components/AppFooter.html.twig | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/templates/components/AppFooter.html.twig b/templates/components/AppFooter.html.twig index 533548c..d74e71f 100644 --- a/templates/components/AppFooter.html.twig +++ b/templates/components/AppFooter.html.twig @@ -10,6 +10,11 @@ GitHub +
  • + + 服務狀態 + +
  • 意見回饋 From c6044b7fb4e30d99bf33346b93f6afb73ddbc87a Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 19:55:09 +0800 Subject: [PATCH 03/20] refactor(frankenphp): Update FrankenPHP configuration https://github.com/dunglas/symfony-docker Besides, musl has been reverted to glibc: * https://frankenphp.dev/docs/performance/ * https://github.com/dunglas/frankenphp/issues/309 --- Dockerfile | 16 ++++++++-------- frankenphp/Caddyfile | 16 ++++++++++++++-- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index e809d78..7d31734 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # syntax=docker/dockerfile:1 # Versions -FROM dunglas/frankenphp:1-php8.3-alpine AS frankenphp_upstream +FROM dunglas/frankenphp:1-php8.3 AS frankenphp_upstream # Base FrankenPHP image FROM frankenphp_upstream AS frankenphp_base @@ -11,13 +11,13 @@ VOLUME /app/var/ # persistent / runtime deps RUN set -eux; \ - apk add --no-cache \ - acl \ - fcgi \ - file \ - gettext \ - git \ - ; + apt-get update \ + && apt-get install -y --no-install-recommends \ + acl \ + file \ + gettext \ + git \ + && rm -rf /var/lib/apt/lists/* RUN set -eux; \ install-php-extensions \ diff --git a/frankenphp/Caddyfile b/frankenphp/Caddyfile index 46186c7..402349c 100644 --- a/frankenphp/Caddyfile +++ b/frankenphp/Caddyfile @@ -15,6 +15,7 @@ {$SERVER_NAME:localhost} { log { + {$CADDY_SERVER_LOG_OPTIONS} # Redact the authorization query parameter that can be set by Mercure format filter { request>uri query { @@ -23,13 +24,24 @@ } } - root * /app/public + root /app/public encode zstd br gzip + vulcain + {$CADDY_SERVER_EXTRA_DIRECTIVES} # Disable Topics tracking if not enabled explicitly: https://github.com/jkarlin/topics header ?Permissions-Policy "browsing-topics=()" - php_server + @phpRoute { + not path /.well-known/mercure* + not file {path} + } + rewrite @phpRoute index.php + + @frontController path index.php + php @frontController + + file_server } \ No newline at end of file From 513d4bdb4f02220ab57fea43f376745f3e13ddd4 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 21:08:27 +0800 Subject: [PATCH 04/20] perf(frakenphp): Disable timestamp check in opcache --- frankenphp/conf.d/10-app.ini | 2 +- frankenphp/conf.d/20-app.prod.ini | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/frankenphp/conf.d/10-app.ini b/frankenphp/conf.d/10-app.ini index 21a279a..2806027 100644 --- a/frankenphp/conf.d/10-app.ini +++ b/frankenphp/conf.d/10-app.ini @@ -11,4 +11,4 @@ realpath_cache_ttl = 600 opcache.interned_strings_buffer = 16 opcache.max_accelerated_files = 20000 opcache.memory_consumption = 256 -opcache.enable_file_override = 1 \ No newline at end of file +opcache.enable_file_override = 1 diff --git a/frankenphp/conf.d/20-app.prod.ini b/frankenphp/conf.d/20-app.prod.ini index 0e712f6..54a4cdf 100644 --- a/frankenphp/conf.d/20-app.prod.ini +++ b/frankenphp/conf.d/20-app.prod.ini @@ -1,2 +1,3 @@ opcache.preload_user = root -opcache.preload = /app/config/preload.php \ No newline at end of file +opcache.preload = /app/config/preload.php +opcache.validate_timestamps = 0 \ No newline at end of file From b79ebd88d14bd17a355639cd1e184153b0f40897 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 22:31:00 +0800 Subject: [PATCH 05/20] refactor: Install SWC with pnpm Related: https://github.com/swc-project/swc/issues/9769 --- Dockerfile | 29 +- compose.yaml | 2 + config/packages/sensiolabs_typescript.yaml | 2 +- package.json | 14 +- pnpm-lock.yaml | 1302 +++++++++++++++++++- 5 files changed, 1305 insertions(+), 44 deletions(-) diff --git a/Dockerfile b/Dockerfile index 7d31734..0fc2cf5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,13 +11,17 @@ VOLUME /app/var/ # persistent / runtime deps RUN set -eux; \ - apt-get update \ - && apt-get install -y --no-install-recommends \ - acl \ - file \ - gettext \ - git \ - && rm -rf /var/lib/apt/lists/* + curl -fsSL https://deb.nodesource.com/setup_23.x -o nodesource_setup.sh \ + && bash nodesource_setup.sh \ + && apt-get update \ + && apt-get install -y --no-install-recommends \ + acl \ + file \ + gettext \ + git \ + nodejs \ + && corepack enable \ + && rm -rf /var/lib/apt/lists/* RUN set -eux; \ install-php-extensions \ @@ -58,7 +62,10 @@ RUN set -eux; \ xdebug \ ; -CMD (php bin/console sass:build --watch &); \ +CMD set -eux; \ + corepack prepare; \ + pnpm install --prod --prefer-frozen-lockfile; \ + (php bin/console sass:build --watch &); \ (php bin/console typescript:build --watch &); \ (frankenphp run --config /etc/caddy/Caddyfile --watch); @@ -75,9 +82,11 @@ COPY --link frankenphp/conf.d/20-app.prod.ini $PHP_INI_DIR/app.conf.d/ COPY --link frankenphp/worker.Caddyfile /etc/caddy/worker.Caddyfile # prevent the reinstallation of vendors at every changes in the source code -COPY --link composer.* symfony.* ./ +COPY --link composer.* symfony.* package.json* pnpm-lock.yaml* ./ RUN set -eux; \ - composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress + corepack prepare; \ + composer install --no-cache --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress; \ + pnpm install --prod --prefer-frozen-lockfile; # copy sources COPY --link . ./ diff --git a/compose.yaml b/compose.yaml index e27e85a..d9360ce 100644 --- a/compose.yaml +++ b/compose.yaml @@ -58,6 +58,7 @@ services: volumes: - caddy_data:/data - caddy_config:/config + - web_node_modules:/app/node_modules ports: # HTTP - target: 80 @@ -80,3 +81,4 @@ volumes: caddy_data: caddy_config: meili_data: + web_node_modules: diff --git a/config/packages/sensiolabs_typescript.yaml b/config/packages/sensiolabs_typescript.yaml index 7f33f23..604fcbc 100644 --- a/config/packages/sensiolabs_typescript.yaml +++ b/config/packages/sensiolabs_typescript.yaml @@ -1,2 +1,2 @@ sensiolabs_typescript: - swc_version: v1.9.3 + swc_binary: "node_modules/.bin/swc" diff --git a/package.json b/package.json index ac22c4c..fd0814e 100644 --- a/package.json +++ b/package.json @@ -7,21 +7,23 @@ "format": "dprint fmt" }, "dependencies": { - "@codemirror/lang-sql": "^6.8.0", - "@codemirror/state": "^6.4.1", - "@symfony/stimulus-bridge": "^3.2.2", - "codemirror": "^6.0.1", - "typescript": "^5.7.2" + "@swc/cli": "^0.5.1", + "@swc/core": "^1.9.3" }, - "packageManager": "pnpm@9.13.2+sha512.88c9c3864450350e65a33587ab801acf946d7c814ed1134da4a924f6df5a2120fd36b46aab68f7cd1d413149112d53c7db3a4136624cfd00ff1846a0c6cef48a", + "packageManager": "pnpm@9.14.4+sha512.c8180b3fbe4e4bca02c94234717896b5529740a6cbadf19fa78254270403ea2f27d4e1d46a08a0f56c89b63dc8ebfd3ee53326da720273794e6200fcf0d184ab", "devDependencies": { + "@codemirror/lang-sql": "^6.8.0", + "@codemirror/state": "^6.4.1", "@eslint/js": "^9.16.0", "@hotwired/stimulus": "^3.2.2", + "@symfony/stimulus-bridge": "^3.2.2", "@types/bootstrap": "^5.2.10", "bootstrap": "^5.3.3", + "codemirror": "^6.0.1", "dprint": "^0.47.5", "eslint": "^9.16.0", "globals": "^15.12.0", + "typescript": "^5.7.2", "typescript-eslint": "^8.16.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 459a3d9..a5e7a97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,34 +7,37 @@ settings: importers: .: dependencies: + "@swc/cli": + specifier: ^0.5.1 + version: 0.5.1(@swc/core@1.9.3) + "@swc/core": + specifier: ^1.9.3 + version: 1.9.3 + devDependencies: "@codemirror/lang-sql": specifier: ^6.8.0 version: 6.8.0(@codemirror/view@6.35.0) "@codemirror/state": specifier: ^6.4.1 version: 6.4.1 - "@symfony/stimulus-bridge": - specifier: ^3.2.2 - version: 3.2.2(@hotwired/stimulus@3.2.2) - codemirror: - specifier: ^6.0.1 - version: 6.0.1(@lezer/common@1.2.3) - typescript: - specifier: ^5.7.2 - version: 5.7.2 - devDependencies: "@eslint/js": specifier: ^9.16.0 version: 9.16.0 "@hotwired/stimulus": specifier: ^3.2.2 version: 3.2.2 + "@symfony/stimulus-bridge": + specifier: ^3.2.2 + version: 3.2.2(@hotwired/stimulus@3.2.2) "@types/bootstrap": specifier: ^5.2.10 version: 5.2.10 bootstrap: specifier: ^5.3.3 version: 5.3.3(@popperjs/core@2.11.8) + codemirror: + specifier: ^6.0.1 + version: 6.0.1(@lezer/common@1.2.3) dprint: specifier: ^0.47.5 version: 0.47.5 @@ -44,6 +47,9 @@ importers: globals: specifier: ^15.12.0 version: 15.12.0 + typescript: + specifier: ^5.7.2 + version: 5.7.2 typescript-eslint: specifier: ^8.16.0 version: 8.16.0(eslint@9.16.0)(typescript@5.7.2) @@ -257,6 +263,140 @@ packages: integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==, } + "@napi-rs/nice-android-arm-eabi@1.0.1": + resolution: { + integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==, + } + engines: { node: ">= 10" } + cpu: [arm] + os: [android] + + "@napi-rs/nice-android-arm64@1.0.1": + resolution: { + integrity: sha512-GqvXL0P8fZ+mQqG1g0o4AO9hJjQaeYG84FRfZaYjyJtZZZcMjXW5TwkL8Y8UApheJgyE13TQ4YNUssQaTgTyvA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [android] + + "@napi-rs/nice-darwin-arm64@1.0.1": + resolution: { + integrity: sha512-91k3HEqUl2fsrz/sKkuEkscj6EAj3/eZNCLqzD2AA0TtVbkQi8nqxZCZDMkfklULmxLkMxuUdKe7RvG/T6s2AA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + + "@napi-rs/nice-darwin-x64@1.0.1": + resolution: { + integrity: sha512-jXnMleYSIR/+TAN/p5u+NkCA7yidgswx5ftqzXdD5wgy/hNR92oerTXHc0jrlBisbd7DpzoaGY4cFD7Sm5GlgQ==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + + "@napi-rs/nice-freebsd-x64@1.0.1": + resolution: { + integrity: sha512-j+iJ/ezONXRQsVIB/FJfwjeQXX7A2tf3gEXs4WUGFrJjpe/z2KB7sOv6zpkm08PofF36C9S7wTNuzHZ/Iiccfw==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [freebsd] + + "@napi-rs/nice-linux-arm-gnueabihf@1.0.1": + resolution: { + integrity: sha512-G8RgJ8FYXYkkSGQwywAUh84m946UTn6l03/vmEXBYNJxQJcD+I3B3k5jmjFG/OPiU8DfvxutOP8bi+F89MCV7Q==, + } + engines: { node: ">= 10" } + cpu: [arm] + os: [linux] + + "@napi-rs/nice-linux-arm64-gnu@1.0.1": + resolution: { + integrity: sha512-IMDak59/W5JSab1oZvmNbrms3mHqcreaCeClUjwlwDr0m3BoR09ZiN8cKFBzuSlXgRdZ4PNqCYNeGQv7YMTjuA==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + + "@napi-rs/nice-linux-arm64-musl@1.0.1": + resolution: { + integrity: sha512-wG8fa2VKuWM4CfjOjjRX9YLIbysSVV1S3Kgm2Fnc67ap/soHBeYZa6AGMeR5BJAylYRjnoVOzV19Cmkco3QEPw==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + + "@napi-rs/nice-linux-ppc64-gnu@1.0.1": + resolution: { + integrity: sha512-lxQ9WrBf0IlNTCA9oS2jg/iAjQyTI6JHzABV664LLrLA/SIdD+I1i3Mjf7TsnoUbgopBcCuDztVLfJ0q9ubf6Q==, + } + engines: { node: ">= 10" } + cpu: [ppc64] + os: [linux] + + "@napi-rs/nice-linux-riscv64-gnu@1.0.1": + resolution: { + integrity: sha512-3xs69dO8WSWBb13KBVex+yvxmUeEsdWexxibqskzoKaWx9AIqkMbWmE2npkazJoopPKX2ULKd8Fm9veEn0g4Ig==, + } + engines: { node: ">= 10" } + cpu: [riscv64] + os: [linux] + + "@napi-rs/nice-linux-s390x-gnu@1.0.1": + resolution: { + integrity: sha512-lMFI3i9rlW7hgToyAzTaEybQYGbQHDrpRkg+1gJWEpH0PLAQoZ8jiY0IzakLfNWnVda1eTYYlxxFYzW8Rqczkg==, + } + engines: { node: ">= 10" } + cpu: [s390x] + os: [linux] + + "@napi-rs/nice-linux-x64-gnu@1.0.1": + resolution: { + integrity: sha512-XQAJs7DRN2GpLN6Fb+ZdGFeYZDdGl2Fn3TmFlqEL5JorgWKrQGRUrpGKbgZ25UeZPILuTKJ+OowG2avN8mThBA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + + "@napi-rs/nice-linux-x64-musl@1.0.1": + resolution: { + integrity: sha512-/rodHpRSgiI9o1faq9SZOp/o2QkKQg7T+DK0R5AkbnI/YxvAIEHf2cngjYzLMQSQgUhxym+LFr+UGZx4vK4QdQ==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + + "@napi-rs/nice-win32-arm64-msvc@1.0.1": + resolution: { + integrity: sha512-rEcz9vZymaCB3OqEXoHnp9YViLct8ugF+6uO5McifTedjq4QMQs3DHz35xBEGhH3gJWEsXMUbzazkz5KNM5YUg==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [win32] + + "@napi-rs/nice-win32-ia32-msvc@1.0.1": + resolution: { + integrity: sha512-t7eBAyPUrWL8su3gDxw9xxxqNwZzAqKo0Szv3IjVQd1GpXXVkb6vBBQUuxfIYaXMzZLwlxRQ7uzM2vdUE9ULGw==, + } + engines: { node: ">= 10" } + cpu: [ia32] + os: [win32] + + "@napi-rs/nice-win32-x64-msvc@1.0.1": + resolution: { + integrity: sha512-JlF+uDcatt3St2ntBG8H02F1mM45i5SF9W+bIKiReVE6wiy3o16oBP/yxt+RZ+N6LbCImJXJ6bXNO2kn9AXicg==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + + "@napi-rs/nice@1.0.1": + resolution: { + integrity: sha512-zM0mVWSXE0a0h9aKACLwKmD6nHcRiKrPpCfvaKqG1CqDEyjEawId0ocXxVzPMCAm6kkWr2P025msfxXEnt8UGQ==, + } + engines: { node: ">= 10" } + "@nodelib/fs.scandir@2.1.5": resolution: { integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, @@ -280,6 +420,131 @@ packages: integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==, } + "@sec-ant/readable-stream@0.4.1": + resolution: { + integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==, + } + + "@sindresorhus/is@5.6.0": + resolution: { + integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==, + } + engines: { node: ">=14.16" } + + "@swc/cli@0.5.1": + resolution: { + integrity: sha512-sxSXyjqFImYrqjhZSPymjmM/9V6auZG67UsDwbe7FZaBlyfW8ka3QG/zRjpJJ9+8Ahns/kKb8bXPKQq7V2MtBw==, + } + engines: { node: ">= 16.14.0" } + hasBin: true + peerDependencies: + "@swc/core": ^1.2.66 + chokidar: ^3.5.1 + peerDependenciesMeta: + chokidar: + optional: true + + "@swc/core-darwin-arm64@1.9.3": + resolution: { + integrity: sha512-hGfl/KTic/QY4tB9DkTbNuxy5cV4IeejpPD4zo+Lzt4iLlDWIeANL4Fkg67FiVceNJboqg48CUX+APhDHO5G1w==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [darwin] + + "@swc/core-darwin-x64@1.9.3": + resolution: { + integrity: sha512-IaRq05ZLdtgF5h9CzlcgaNHyg4VXuiStnOFpfNEMuI5fm5afP2S0FHq8WdakUz5WppsbddTdplL+vpeApt/WCQ==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [darwin] + + "@swc/core-linux-arm-gnueabihf@1.9.3": + resolution: { + integrity: sha512-Pbwe7xYprj/nEnZrNBvZfjnTxlBIcfApAGdz2EROhjpPj+FBqBa3wOogqbsuGGBdCphf8S+KPprL1z+oDWkmSQ==, + } + engines: { node: ">=10" } + cpu: [arm] + os: [linux] + + "@swc/core-linux-arm64-gnu@1.9.3": + resolution: { + integrity: sha512-AQ5JZiwNGVV/2K2TVulg0mw/3LYfqpjZO6jDPtR2evNbk9Yt57YsVzS+3vHSlUBQDRV9/jqMuZYVU3P13xrk+g==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [linux] + + "@swc/core-linux-arm64-musl@1.9.3": + resolution: { + integrity: sha512-tzVH480RY6RbMl/QRgh5HK3zn1ZTFsThuxDGo6Iuk1MdwIbdFYUY034heWUTI4u3Db97ArKh0hNL0xhO3+PZdg==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [linux] + + "@swc/core-linux-x64-gnu@1.9.3": + resolution: { + integrity: sha512-ivXXBRDXDc9k4cdv10R21ccBmGebVOwKXT/UdH1PhxUn9m/h8erAWjz5pcELwjiMf27WokqPgaWVfaclDbgE+w==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [linux] + + "@swc/core-linux-x64-musl@1.9.3": + resolution: { + integrity: sha512-ILsGMgfnOz1HwdDz+ZgEuomIwkP1PHT6maigZxaCIuC6OPEhKE8uYna22uU63XvYcLQvZYDzpR3ms47WQPuNEg==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [linux] + + "@swc/core-win32-arm64-msvc@1.9.3": + resolution: { + integrity: sha512-e+XmltDVIHieUnNJHtspn6B+PCcFOMYXNJB1GqoCcyinkEIQNwC8KtWgMqUucUbEWJkPc35NHy9k8aCXRmw9Kg==, + } + engines: { node: ">=10" } + cpu: [arm64] + os: [win32] + + "@swc/core-win32-ia32-msvc@1.9.3": + resolution: { + integrity: sha512-rqpzNfpAooSL4UfQnHhkW8aL+oyjqJniDP0qwZfGnjDoJSbtPysHg2LpcOBEdSnEH+uIZq6J96qf0ZFD8AGfXA==, + } + engines: { node: ">=10" } + cpu: [ia32] + os: [win32] + + "@swc/core-win32-x64-msvc@1.9.3": + resolution: { + integrity: sha512-3YJJLQ5suIEHEKc1GHtqVq475guiyqisKSoUnoaRtxkDaW5g1yvPt9IoSLOe2mRs7+FFhGGU693RsBUSwOXSdQ==, + } + engines: { node: ">=10" } + cpu: [x64] + os: [win32] + + "@swc/core@1.9.3": + resolution: { + integrity: sha512-oRj0AFePUhtatX+BscVhnzaAmWjpfAeySpM1TCbxA1rtBDeH/JDhi5yYzAKneDYtVtBvA7ApfeuzhMC9ye4xSg==, + } + engines: { node: ">=10" } + peerDependencies: + "@swc/helpers": "*" + peerDependenciesMeta: + "@swc/helpers": + optional: true + + "@swc/counter@0.1.3": + resolution: { + integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==, + } + + "@swc/types@0.1.17": + resolution: { + integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==, + } + "@symfony/stimulus-bridge@3.2.2": resolution: { integrity: sha512-kIaUEGPXW7g14zsHkIvQWw8cmfCdXSqsEQx18fuHPBb+R0h8nYPyY+e9uVtTuHlE2wHwAjrJoc6YBBK4a7CpKA==, @@ -288,6 +553,17 @@ packages: peerDependencies: "@hotwired/stimulus": ^3.0 + "@szmarczak/http-timer@5.0.1": + resolution: { + integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==, + } + engines: { node: ">=14.16" } + + "@tokenizer/token@0.3.0": + resolution: { + integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==, + } + "@types/bootstrap@5.2.10": resolution: { integrity: sha512-F2X+cd6551tep0MvVZ6nM8v7XgGN/twpdNDjqS1TUM7YFNEtQYWk+dKAnH+T1gr6QgCoGMPl487xw/9hXooa2g==, @@ -298,6 +574,11 @@ packages: integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==, } + "@types/http-cache-semantics@4.0.4": + resolution: { + integrity: sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==, + } + "@types/json-schema@7.0.15": resolution: { integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, @@ -386,6 +667,66 @@ packages: } engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } + "@xhmikosr/archive-type@7.0.0": + resolution: { + integrity: sha512-sIm84ZneCOJuiy3PpWR5bxkx3HaNt1pqaN+vncUBZIlPZCq8ASZH+hBVdu5H8znR7qYC6sKwx+ie2Q7qztJTxA==, + } + engines: { node: ^14.14.0 || >=16.0.0 } + + "@xhmikosr/bin-check@7.0.3": + resolution: { + integrity: sha512-4UnCLCs8DB+itHJVkqFp9Zjg+w/205/J2j2wNBsCEAm/BuBmtua2hhUOdAMQE47b1c7P9Xmddj0p+X1XVsfHsA==, + } + engines: { node: ">=18" } + + "@xhmikosr/bin-wrapper@13.0.5": + resolution: { + integrity: sha512-DT2SAuHDeOw0G5bs7wZbQTbf4hd8pJ14tO0i4cWhRkIJfgRdKmMfkDilpaJ8uZyPA0NVRwasCNAmMJcWA67osw==, + } + engines: { node: ">=18" } + + "@xhmikosr/decompress-tar@8.0.1": + resolution: { + integrity: sha512-dpEgs0cQKJ2xpIaGSO0hrzz3Kt8TQHYdizHsgDtLorWajuHJqxzot9Hbi0huRxJuAGG2qiHSQkwyvHHQtlE+fg==, + } + engines: { node: ">=18" } + + "@xhmikosr/decompress-tarbz2@8.0.1": + resolution: { + integrity: sha512-OF+6DysDZP5YTDO8uHuGG6fMGZjc+HszFPBkVltjoje2Cf60hjBg/YP5OQndW1hfwVWOdP7f3CnJiPZHJUTtEg==, + } + engines: { node: ">=18" } + + "@xhmikosr/decompress-targz@8.0.1": + resolution: { + integrity: sha512-mvy5AIDIZjQ2IagMI/wvauEiSNHhu/g65qpdM4EVoYHUJBAmkQWqcPJa8Xzi1aKVTmOA5xLJeDk7dqSjlHq8Mg==, + } + engines: { node: ">=18" } + + "@xhmikosr/decompress-unzip@7.0.0": + resolution: { + integrity: sha512-GQMpzIpWTsNr6UZbISawsGI0hJ4KA/mz5nFq+cEoPs12UybAqZWKbyIaZZyLbJebKl5FkLpsGBkrplJdjvUoSQ==, + } + engines: { node: ">=18" } + + "@xhmikosr/decompress@10.0.1": + resolution: { + integrity: sha512-6uHnEEt5jv9ro0CDzqWlFgPycdE+H+kbJnwyxgZregIMLQ7unQSCNVsYG255FoqU8cP46DyggI7F7LohzEl8Ag==, + } + engines: { node: ">=18" } + + "@xhmikosr/downloader@15.0.1": + resolution: { + integrity: sha512-fiuFHf3Dt6pkX8HQrVBsK0uXtkgkVlhrZEh8b7VgoDqFf+zrgFBPyrwCqE/3nDwn3hLeNz+BsrS7q3mu13Lp1g==, + } + engines: { node: ">=18" } + + "@xhmikosr/os-filter-obj@3.0.0": + resolution: { + integrity: sha512-siPY6BD5dQ2SZPl3I0OZBHL27ZqZvLEosObsZRQ1NUB8qcxegwt0T9eKtV96JMFQpIz1elhkzqOg4c/Ri6Dp9A==, + } + engines: { node: ^14.14.0 || >=16.0.0 } + acorn-jsx@5.3.2: resolution: { integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, @@ -418,21 +759,53 @@ packages: } engines: { node: ">=8" } + arch@3.0.0: + resolution: { + integrity: sha512-AmIAC+Wtm2AU8lGfTtHsw0Y9Qtftx2YXEEtiBP10xFUtMOA+sHHx6OAddyL52mUKh1vsXQ6/w1mVDptZCyUt4Q==, + } + argparse@2.0.1: resolution: { integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } + b4a@1.6.7: + resolution: { + integrity: sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==, + } + balanced-match@1.0.2: resolution: { integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } + bare-events@2.5.0: + resolution: { + integrity: sha512-/E8dDe9dsbLyh2qrZ64PEPadOQ0F4gbl1sUJOrmph7xOiIxfY8vwab/4bFLh4Y88/Hk/ujKcrQKc+ps0mv873A==, + } + + base64-js@1.5.1: + resolution: { + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, + } + big.js@5.2.2: resolution: { integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==, } + bin-version-check@5.1.0: + resolution: { + integrity: sha512-bYsvMqJ8yNGILLz1KP9zKLzQ6YpljV3ln1gqhuLkUtyfGi3qXKGuK2p+U4NAvjVFzDFiBBtOpCOSFNuYYEGZ5g==, + } + engines: { node: ">=12" } + + bin-version@6.0.0: + resolution: { + integrity: sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==, + } + engines: { node: ">=12" } + bootstrap@5.3.3: resolution: { integrity: sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==, @@ -456,6 +829,28 @@ packages: } engines: { node: ">=8" } + buffer-crc32@0.2.13: + resolution: { + integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==, + } + + buffer@5.7.1: + resolution: { + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, + } + + cacheable-lookup@7.0.0: + resolution: { + integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==, + } + engines: { node: ">=14.16" } + + cacheable-request@10.2.14: + resolution: { + integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==, + } + engines: { node: ">=14.16" } + callsites@3.1.0: resolution: { integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, @@ -484,11 +879,29 @@ packages: integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } + commander@6.2.1: + resolution: { + integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==, + } + engines: { node: ">= 6" } + + commander@8.3.0: + resolution: { + integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, + } + engines: { node: ">= 12" } + concat-map@0.0.1: resolution: { integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } + content-disposition@0.5.4: + resolution: { + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + } + engines: { node: ">= 0.6" } + crelt@1.0.6: resolution: { integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==, @@ -511,11 +924,29 @@ packages: supports-color: optional: true + decompress-response@6.0.0: + resolution: { + integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==, + } + engines: { node: ">=10" } + deep-is@0.1.4: resolution: { integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, } + defaults@3.0.0: + resolution: { + integrity: sha512-RsqXDEAALjfRTro+IFNKpcPCt0/Cy2FqHSIlnomiJp9YGadpQnrtbRpSgN2+np21qHcIKiva4fiOQGjS9/qR/A==, + } + engines: { node: ">=18" } + + defer-to-connect@2.0.1: + resolution: { + integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==, + } + engines: { node: ">=10" } + dprint@0.47.5: resolution: { integrity: sha512-EAP3OLYZXiW66HKMlhu6Gu0o7mzBVTWyMyuAAgT7dBtMX+W+pPJmIwyRUnTRQNyyFO4S7bAaa21rzIgo97Bg9A==, @@ -594,11 +1025,34 @@ packages: } engines: { node: ">=0.10.0" } + execa@5.1.1: + resolution: { + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + } + engines: { node: ">=10" } + + ext-list@2.2.2: + resolution: { + integrity: sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==, + } + engines: { node: ">=0.10.0" } + + ext-name@5.0.0: + resolution: { + integrity: sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==, + } + engines: { node: ">=4" } + fast-deep-equal@3.1.3: resolution: { integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } + fast-fifo@1.3.2: + resolution: { + integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==, + } + fast-glob@3.3.2: resolution: { integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, @@ -626,6 +1080,24 @@ packages: } engines: { node: ">=16.0.0" } + file-type@19.6.0: + resolution: { + integrity: sha512-VZR5I7k5wkD0HgFnMsq5hOsSc710MJMu5Nc5QYsbe38NN5iPV/XTObYLc/cpttRTf6lX538+5uO1ZQRhYibiZQ==, + } + engines: { node: ">=18" } + + filename-reserved-regex@3.0.0: + resolution: { + integrity: sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + filenamify@6.0.0: + resolution: { + integrity: sha512-vqIlNogKeyD3yzrm0yhRMQg8hOVwYcYRfjEoODd49iCprMn4HL85gK3HcykQE53EPIpX3HcAbGA5ELQv216dAQ==, + } + engines: { node: ">=16" } + fill-range@7.1.1: resolution: { integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, @@ -638,6 +1110,12 @@ packages: } engines: { node: ">=10" } + find-versions@5.1.0: + resolution: { + integrity: sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==, + } + engines: { node: ">=12" } + flat-cache@4.0.1: resolution: { integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==, @@ -649,6 +1127,24 @@ packages: integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==, } + form-data-encoder@2.1.4: + resolution: { + integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==, + } + engines: { node: ">= 14.17" } + + get-stream@6.0.1: + resolution: { + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + } + engines: { node: ">=10" } + + get-stream@9.0.1: + resolution: { + integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==, + } + engines: { node: ">=18" } + glob-parent@5.1.2: resolution: { integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, @@ -673,6 +1169,17 @@ packages: } engines: { node: ">=18" } + got@13.0.0: + resolution: { + integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==, + } + engines: { node: ">=16" } + + graceful-fs@4.2.11: + resolution: { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + graphemer@1.4.0: resolution: { integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, @@ -684,6 +1191,28 @@ packages: } engines: { node: ">=8" } + http-cache-semantics@4.1.1: + resolution: { + integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, + } + + http2-wrapper@2.2.1: + resolution: { + integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==, + } + engines: { node: ">=10.19.0" } + + human-signals@2.1.0: + resolution: { + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + } + engines: { node: ">=10.17.0" } + + ieee754@1.2.1: + resolution: { + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + } + ignore@5.3.2: resolution: { integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, @@ -702,6 +1231,11 @@ packages: } engines: { node: ">=0.8.19" } + inspect-with-kind@1.0.5: + resolution: { + integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==, + } + is-extglob@2.1.1: resolution: { integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, @@ -720,6 +1254,24 @@ packages: } engines: { node: ">=0.12.0" } + is-plain-obj@1.1.0: + resolution: { + integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, + } + engines: { node: ">=0.10.0" } + + is-stream@2.0.1: + resolution: { + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + } + engines: { node: ">=8" } + + is-stream@4.0.1: + resolution: { + integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==, + } + engines: { node: ">=18" } + isexe@2.0.0: resolution: { integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, @@ -758,6 +1310,12 @@ packages: integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } + kind-of@6.0.3: + resolution: { + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + } + engines: { node: ">=0.10.0" } + levn@0.4.1: resolution: { integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, @@ -781,6 +1339,23 @@ packages: integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, } + lowercase-keys@3.0.0: + resolution: { + integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + + make-dir@4.0.0: + resolution: { + integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, + } + engines: { node: ">=10" } + + merge-stream@2.0.0: + resolution: { + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + } + merge2@1.4.1: resolution: { integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, @@ -793,6 +1368,30 @@ packages: } engines: { node: ">=8.6" } + mime-db@1.53.0: + resolution: { + integrity: sha512-oHlN/w+3MQ3rba9rqFr6V/ypF10LSkdwUysQL7GkXoTgIWeV+tcXGA852TBxH+gsh8UWoyhR1hKcoMJTuWflpg==, + } + engines: { node: ">= 0.6" } + + mimic-fn@2.1.0: + resolution: { + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + } + engines: { node: ">=6" } + + mimic-response@3.1.0: + resolution: { + integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==, + } + engines: { node: ">=10" } + + mimic-response@4.0.0: + resolution: { + integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==, + } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + minimatch@3.1.2: resolution: { integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, @@ -814,12 +1413,36 @@ packages: integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, } + normalize-url@8.0.1: + resolution: { + integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==, + } + engines: { node: ">=14.16" } + + npm-run-path@4.0.1: + resolution: { + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + } + engines: { node: ">=8" } + + onetime@5.1.2: + resolution: { + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + } + engines: { node: ">=6" } + optionator@0.9.4: resolution: { integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, } engines: { node: ">= 0.8.0" } + p-cancelable@3.0.0: + resolution: { + integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==, + } + engines: { node: ">=12.20" } + p-limit@3.1.0: resolution: { integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, @@ -850,12 +1473,28 @@ packages: } engines: { node: ">=8" } + peek-readable@5.3.1: + resolution: { + integrity: sha512-GVlENSDW6KHaXcd9zkZltB7tCLosKB/4Hg0fqBJkAoBgYG2Tn1xtMgXtSUuMU9AK/gCm/tTdT8mgAeF4YNeeqw==, + } + engines: { node: ">=14.16" } + + pend@1.2.0: + resolution: { + integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==, + } + picomatch@2.3.1: resolution: { integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, } engines: { node: ">=8.6" } + piscina@4.7.0: + resolution: { + integrity: sha512-b8hvkpp9zS0zsfa939b/jXbe64Z2gZv0Ha7FYPNUiDIB1y2AtxcOZdfP8xN8HFjUaqQiT9gRlfjAsoL8vdJ1Iw==, + } + prelude-ls@1.2.1: resolution: { integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, @@ -873,47 +1512,137 @@ packages: integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, } + queue-tick@1.0.1: + resolution: { + integrity: sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==, + } + + quick-lru@5.1.1: + resolution: { + integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==, + } + engines: { node: ">=10" } + + resolve-alpn@1.2.1: + resolution: { + integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==, + } + resolve-from@4.0.0: resolution: { integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, } engines: { node: ">=4" } + responselike@3.0.0: + resolution: { + integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==, + } + engines: { node: ">=14.16" } + reusify@1.0.4: resolution: { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + run-parallel@1.2.0: + resolution: { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + + safe-buffer@5.2.1: + resolution: { + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + } + + schema-utils@3.3.0: + resolution: { + integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==, + } + engines: { node: ">= 10.13.0" } + + seek-bzip@2.0.0: + resolution: { + integrity: sha512-SMguiTnYrhpLdk3PwfzHeotrcwi8bNV4iemL9tx9poR/yeaMYwB9VzR1w7b57DuWpuqR8n6oZboi0hj3AxZxQg==, + } + hasBin: true + + semver-regex@4.0.5: + resolution: { + integrity: sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==, + } + engines: { node: ">=12" } + + semver-truncate@3.0.0: + resolution: { + integrity: sha512-LJWA9kSvMolR51oDE6PN3kALBNaUdkxzAGcexw8gjMA8xr5zUqK0JiR3CgARSqanYF3Z1YHvsErb1KDgh+v7Rg==, + } + engines: { node: ">=12" } + + semver@7.6.3: + resolution: { + integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, + } + engines: { node: ">=10" } + hasBin: true + + shebang-command@2.0.0: + resolution: { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + + shebang-regex@3.0.0: + resolution: { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + signal-exit@3.0.7: + resolution: { + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + } + + slash@3.0.0: + resolution: { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: ">=8" } + + sort-keys-length@1.0.1: + resolution: { + integrity: sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==, } - engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + engines: { node: ">=0.10.0" } - run-parallel@1.2.0: + sort-keys@1.1.2: resolution: { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + integrity: sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==, } + engines: { node: ">=0.10.0" } - schema-utils@3.3.0: + source-map@0.7.4: resolution: { - integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==, + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, } - engines: { node: ">= 10.13.0" } + engines: { node: ">= 8" } - semver@7.6.3: + streamx@2.20.2: resolution: { - integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, + integrity: sha512-aDGDLU+j9tJcUdPGOaHmVF1u/hhI+CsGkT02V3OKlHDV7IukOI+nTWAGkiZEKCO35rWN1wIr4tS7YFr1f4qSvA==, } - engines: { node: ">=10" } - hasBin: true - shebang-command@2.0.0: + strip-dirs@3.0.0: resolution: { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + integrity: sha512-I0sdgcFTfKQlUPZyAqPJmSG3HLO9rWDFnxonnIbskYNM3DwFOeTNB5KzVq3dA1GdRAc/25b5Y7UO2TQfKWw4aQ==, } - engines: { node: ">=8" } - shebang-regex@3.0.0: + strip-final-newline@2.0.0: resolution: { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, } - engines: { node: ">=8" } + engines: { node: ">=6" } strip-json-comments@3.1.1: resolution: { @@ -921,6 +1650,12 @@ packages: } engines: { node: ">=8" } + strtok3@9.1.1: + resolution: { + integrity: sha512-FhwotcEqjr241ZbjFzjlIYg6c5/L/s4yBGWSMvJ9UoExiSqL+FnFA/CaeZx17WGaZMS/4SOZp8wH18jSS4R4lw==, + } + engines: { node: ">=16" } + style-mod@4.1.2: resolution: { integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==, @@ -932,12 +1667,33 @@ packages: } engines: { node: ">=8" } + tar-stream@3.1.7: + resolution: { + integrity: sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==, + } + + text-decoder@1.2.1: + resolution: { + integrity: sha512-x9v3H/lTKIJKQQe7RPQkLfKAnc9lUTkWDypIQgTzPJAq+5/GCDHonmshfvlsNSj58yyshbIJJDLmU15qNERrXQ==, + } + + through@2.3.8: + resolution: { + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, + } + to-regex-range@5.0.1: resolution: { integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, } engines: { node: ">=8.0" } + token-types@6.0.0: + resolution: { + integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==, + } + engines: { node: ">=14.16" } + ts-api-utils@1.4.3: resolution: { integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==, @@ -971,6 +1727,17 @@ packages: engines: { node: ">=14.17" } hasBin: true + uint8array-extras@1.4.0: + resolution: { + integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==, + } + engines: { node: ">=18" } + + unbzip2-stream@1.4.3: + resolution: { + integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==, + } + uri-js@4.4.1: resolution: { integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, @@ -994,6 +1761,12 @@ packages: } engines: { node: ">=0.10.0" } + yauzl@3.2.0: + resolution: { + integrity: sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==, + } + engines: { node: ">=12" } + yocto-queue@0.1.0: resolution: { integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, @@ -1147,6 +1920,74 @@ snapshots: dependencies: "@lezer/common": 1.2.3 + "@napi-rs/nice-android-arm-eabi@1.0.1": + optional: true + + "@napi-rs/nice-android-arm64@1.0.1": + optional: true + + "@napi-rs/nice-darwin-arm64@1.0.1": + optional: true + + "@napi-rs/nice-darwin-x64@1.0.1": + optional: true + + "@napi-rs/nice-freebsd-x64@1.0.1": + optional: true + + "@napi-rs/nice-linux-arm-gnueabihf@1.0.1": + optional: true + + "@napi-rs/nice-linux-arm64-gnu@1.0.1": + optional: true + + "@napi-rs/nice-linux-arm64-musl@1.0.1": + optional: true + + "@napi-rs/nice-linux-ppc64-gnu@1.0.1": + optional: true + + "@napi-rs/nice-linux-riscv64-gnu@1.0.1": + optional: true + + "@napi-rs/nice-linux-s390x-gnu@1.0.1": + optional: true + + "@napi-rs/nice-linux-x64-gnu@1.0.1": + optional: true + + "@napi-rs/nice-linux-x64-musl@1.0.1": + optional: true + + "@napi-rs/nice-win32-arm64-msvc@1.0.1": + optional: true + + "@napi-rs/nice-win32-ia32-msvc@1.0.1": + optional: true + + "@napi-rs/nice-win32-x64-msvc@1.0.1": + optional: true + + "@napi-rs/nice@1.0.1": + optionalDependencies: + "@napi-rs/nice-android-arm-eabi": 1.0.1 + "@napi-rs/nice-android-arm64": 1.0.1 + "@napi-rs/nice-darwin-arm64": 1.0.1 + "@napi-rs/nice-darwin-x64": 1.0.1 + "@napi-rs/nice-freebsd-x64": 1.0.1 + "@napi-rs/nice-linux-arm-gnueabihf": 1.0.1 + "@napi-rs/nice-linux-arm64-gnu": 1.0.1 + "@napi-rs/nice-linux-arm64-musl": 1.0.1 + "@napi-rs/nice-linux-ppc64-gnu": 1.0.1 + "@napi-rs/nice-linux-riscv64-gnu": 1.0.1 + "@napi-rs/nice-linux-s390x-gnu": 1.0.1 + "@napi-rs/nice-linux-x64-gnu": 1.0.1 + "@napi-rs/nice-linux-x64-musl": 1.0.1 + "@napi-rs/nice-win32-arm64-msvc": 1.0.1 + "@napi-rs/nice-win32-ia32-msvc": 1.0.1 + "@napi-rs/nice-win32-x64-msvc": 1.0.1 + optional: true + "@nodelib/fs.scandir@2.1.5": dependencies: "@nodelib/fs.stat": 2.0.5 @@ -1161,6 +2002,75 @@ snapshots: "@popperjs/core@2.11.8": {} + "@sec-ant/readable-stream@0.4.1": {} + + "@sindresorhus/is@5.6.0": {} + + "@swc/cli@0.5.1(@swc/core@1.9.3)": + dependencies: + "@swc/core": 1.9.3 + "@swc/counter": 0.1.3 + "@xhmikosr/bin-wrapper": 13.0.5 + commander: 8.3.0 + fast-glob: 3.3.2 + minimatch: 9.0.5 + piscina: 4.7.0 + semver: 7.6.3 + slash: 3.0.0 + source-map: 0.7.4 + + "@swc/core-darwin-arm64@1.9.3": + optional: true + + "@swc/core-darwin-x64@1.9.3": + optional: true + + "@swc/core-linux-arm-gnueabihf@1.9.3": + optional: true + + "@swc/core-linux-arm64-gnu@1.9.3": + optional: true + + "@swc/core-linux-arm64-musl@1.9.3": + optional: true + + "@swc/core-linux-x64-gnu@1.9.3": + optional: true + + "@swc/core-linux-x64-musl@1.9.3": + optional: true + + "@swc/core-win32-arm64-msvc@1.9.3": + optional: true + + "@swc/core-win32-ia32-msvc@1.9.3": + optional: true + + "@swc/core-win32-x64-msvc@1.9.3": + optional: true + + "@swc/core@1.9.3": + dependencies: + "@swc/counter": 0.1.3 + "@swc/types": 0.1.17 + optionalDependencies: + "@swc/core-darwin-arm64": 1.9.3 + "@swc/core-darwin-x64": 1.9.3 + "@swc/core-linux-arm-gnueabihf": 1.9.3 + "@swc/core-linux-arm64-gnu": 1.9.3 + "@swc/core-linux-arm64-musl": 1.9.3 + "@swc/core-linux-x64-gnu": 1.9.3 + "@swc/core-linux-x64-musl": 1.9.3 + "@swc/core-win32-arm64-msvc": 1.9.3 + "@swc/core-win32-ia32-msvc": 1.9.3 + "@swc/core-win32-x64-msvc": 1.9.3 + + "@swc/counter@0.1.3": {} + + "@swc/types@0.1.17": + dependencies: + "@swc/counter": 0.1.3 + "@symfony/stimulus-bridge@3.2.2(@hotwired/stimulus@3.2.2)": dependencies: "@hotwired/stimulus": 3.2.2 @@ -1170,12 +2080,20 @@ snapshots: loader-utils: 2.0.4 schema-utils: 3.3.0 + "@szmarczak/http-timer@5.0.1": + dependencies: + defer-to-connect: 2.0.1 + + "@tokenizer/token@0.3.0": {} + "@types/bootstrap@5.2.10": dependencies: "@popperjs/core": 2.11.8 "@types/estree@1.0.6": {} + "@types/http-cache-semantics@4.0.4": {} + "@types/json-schema@7.0.15": {} "@types/webpack-env@1.18.5": {} @@ -1262,6 +2180,74 @@ snapshots: "@typescript-eslint/types": 8.16.0 eslint-visitor-keys: 4.2.0 + "@xhmikosr/archive-type@7.0.0": + dependencies: + file-type: 19.6.0 + + "@xhmikosr/bin-check@7.0.3": + dependencies: + execa: 5.1.1 + isexe: 2.0.0 + + "@xhmikosr/bin-wrapper@13.0.5": + dependencies: + "@xhmikosr/bin-check": 7.0.3 + "@xhmikosr/downloader": 15.0.1 + "@xhmikosr/os-filter-obj": 3.0.0 + bin-version-check: 5.1.0 + + "@xhmikosr/decompress-tar@8.0.1": + dependencies: + file-type: 19.6.0 + is-stream: 2.0.1 + tar-stream: 3.1.7 + + "@xhmikosr/decompress-tarbz2@8.0.1": + dependencies: + "@xhmikosr/decompress-tar": 8.0.1 + file-type: 19.6.0 + is-stream: 2.0.1 + seek-bzip: 2.0.0 + unbzip2-stream: 1.4.3 + + "@xhmikosr/decompress-targz@8.0.1": + dependencies: + "@xhmikosr/decompress-tar": 8.0.1 + file-type: 19.6.0 + is-stream: 2.0.1 + + "@xhmikosr/decompress-unzip@7.0.0": + dependencies: + file-type: 19.6.0 + get-stream: 6.0.1 + yauzl: 3.2.0 + + "@xhmikosr/decompress@10.0.1": + dependencies: + "@xhmikosr/decompress-tar": 8.0.1 + "@xhmikosr/decompress-tarbz2": 8.0.1 + "@xhmikosr/decompress-targz": 8.0.1 + "@xhmikosr/decompress-unzip": 7.0.0 + graceful-fs: 4.2.11 + make-dir: 4.0.0 + strip-dirs: 3.0.0 + + "@xhmikosr/downloader@15.0.1": + dependencies: + "@xhmikosr/archive-type": 7.0.0 + "@xhmikosr/decompress": 10.0.1 + content-disposition: 0.5.4 + defaults: 3.0.0 + ext-name: 5.0.0 + file-type: 19.6.0 + filenamify: 6.0.0 + get-stream: 6.0.1 + got: 13.0.0 + + "@xhmikosr/os-filter-obj@3.0.0": + dependencies: + arch: 3.0.0 + acorn-jsx@5.3.2(acorn@8.14.0): dependencies: acorn: 8.14.0 @@ -1283,12 +2269,32 @@ snapshots: dependencies: color-convert: 2.0.1 + arch@3.0.0: {} + argparse@2.0.1: {} + b4a@1.6.7: {} + balanced-match@1.0.2: {} + bare-events@2.5.0: + optional: true + + base64-js@1.5.1: {} + big.js@5.2.2: {} + bin-version-check@5.1.0: + dependencies: + bin-version: 6.0.0 + semver: 7.6.3 + semver-truncate: 3.0.0 + + bin-version@6.0.0: + dependencies: + execa: 5.1.1 + find-versions: 5.1.0 + bootstrap@5.3.3(@popperjs/core@2.11.8): dependencies: "@popperjs/core": 2.11.8 @@ -1306,6 +2312,25 @@ snapshots: dependencies: fill-range: 7.1.1 + buffer-crc32@0.2.13: {} + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + "@types/http-cache-semantics": 4.0.4 + get-stream: 6.0.1 + http-cache-semantics: 4.1.1 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.0.1 + responselike: 3.0.0 + callsites@3.1.0: {} chalk@4.1.2: @@ -1331,8 +2356,16 @@ snapshots: color-name@1.1.4: {} + commander@6.2.1: {} + + commander@8.3.0: {} + concat-map@0.0.1: {} + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + crelt@1.0.6: {} cross-spawn@7.0.6: @@ -1345,8 +2378,16 @@ snapshots: dependencies: ms: 2.1.3 + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + deep-is@0.1.4: {} + defaults@3.0.0: {} + + defer-to-connect@2.0.1: {} + dprint@0.47.5: optionalDependencies: "@dprint/darwin-arm64": 0.47.5 @@ -1428,8 +2469,31 @@ snapshots: esutils@2.0.3: {} + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + ext-list@2.2.2: + dependencies: + mime-db: 1.53.0 + + ext-name@5.0.0: + dependencies: + ext-list: 2.2.2 + sort-keys-length: 1.0.1 + fast-deep-equal@3.1.3: {} + fast-fifo@1.3.2: {} + fast-glob@3.3.2: dependencies: "@nodelib/fs.stat": 2.0.5 @@ -1450,6 +2514,19 @@ snapshots: dependencies: flat-cache: 4.0.1 + file-type@19.6.0: + dependencies: + get-stream: 9.0.1 + strtok3: 9.1.1 + token-types: 6.0.0 + uint8array-extras: 1.4.0 + + filename-reserved-regex@3.0.0: {} + + filenamify@6.0.0: + dependencies: + filename-reserved-regex: 3.0.0 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -1459,6 +2536,10 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + find-versions@5.1.0: + dependencies: + semver-regex: 4.0.5 + flat-cache@4.0.1: dependencies: flatted: 3.3.2 @@ -1466,6 +2547,15 @@ snapshots: flatted@3.3.2: {} + form-data-encoder@2.1.4: {} + + get-stream@6.0.1: {} + + get-stream@9.0.1: + dependencies: + "@sec-ant/readable-stream": 0.4.1 + is-stream: 4.0.1 + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 @@ -1478,10 +2568,37 @@ snapshots: globals@15.12.0: {} + got@13.0.0: + dependencies: + "@sindresorhus/is": 5.6.0 + "@szmarczak/http-timer": 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.11: {} + graphemer@1.4.0: {} has-flag@4.0.0: {} + http-cache-semantics@4.1.1: {} + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + human-signals@2.1.0: {} + + ieee754@1.2.1: {} + ignore@5.3.2: {} import-fresh@3.3.0: @@ -1491,6 +2608,10 @@ snapshots: imurmurhash@0.1.4: {} + inspect-with-kind@1.0.5: + dependencies: + kind-of: 6.0.3 + is-extglob@2.1.1: {} is-glob@4.0.3: @@ -1499,6 +2620,12 @@ snapshots: is-number@7.0.0: {} + is-plain-obj@1.1.0: {} + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + isexe@2.0.0: {} js-yaml@4.1.0: @@ -1517,6 +2644,8 @@ snapshots: dependencies: json-buffer: 3.0.1 + kind-of@6.0.3: {} + levn@0.4.1: dependencies: prelude-ls: 1.2.1 @@ -1534,6 +2663,14 @@ snapshots: lodash.merge@4.6.2: {} + lowercase-keys@3.0.0: {} + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + merge-stream@2.0.0: {} + merge2@1.4.1: {} micromatch@4.0.8: @@ -1541,6 +2678,14 @@ snapshots: braces: 3.0.3 picomatch: 2.3.1 + mime-db@1.53.0: {} + + mimic-fn@2.1.0: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -1553,6 +2698,16 @@ snapshots: natural-compare@1.4.0: {} + normalize-url@8.0.1: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + optionator@0.9.4: dependencies: deep-is: 0.1.4 @@ -1562,6 +2717,8 @@ snapshots: type-check: 0.4.0 word-wrap: 1.2.5 + p-cancelable@3.0.0: {} + p-limit@3.1.0: dependencies: yocto-queue: 0.1.0 @@ -1578,28 +2735,58 @@ snapshots: path-key@3.1.1: {} + peek-readable@5.3.1: {} + + pend@1.2.0: {} + picomatch@2.3.1: {} + piscina@4.7.0: + optionalDependencies: + "@napi-rs/nice": 1.0.1 + prelude-ls@1.2.1: {} punycode@2.3.1: {} queue-microtask@1.2.3: {} + queue-tick@1.0.1: {} + + quick-lru@5.1.1: {} + + resolve-alpn@1.2.1: {} + resolve-from@4.0.0: {} + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + reusify@1.0.4: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 + safe-buffer@5.2.1: {} + schema-utils@3.3.0: dependencies: "@types/json-schema": 7.0.15 ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) + seek-bzip@2.0.0: + dependencies: + commander: 6.2.1 + + semver-regex@4.0.5: {} + + semver-truncate@3.0.0: + dependencies: + semver: 7.6.3 + semver@7.6.3: {} shebang-command@2.0.0: @@ -1608,18 +2795,67 @@ snapshots: shebang-regex@3.0.0: {} + signal-exit@3.0.7: {} + + slash@3.0.0: {} + + sort-keys-length@1.0.1: + dependencies: + sort-keys: 1.1.2 + + sort-keys@1.1.2: + dependencies: + is-plain-obj: 1.1.0 + + source-map@0.7.4: {} + + streamx@2.20.2: + dependencies: + fast-fifo: 1.3.2 + queue-tick: 1.0.1 + text-decoder: 1.2.1 + optionalDependencies: + bare-events: 2.5.0 + + strip-dirs@3.0.0: + dependencies: + inspect-with-kind: 1.0.5 + is-plain-obj: 1.1.0 + + strip-final-newline@2.0.0: {} + strip-json-comments@3.1.1: {} + strtok3@9.1.1: + dependencies: + "@tokenizer/token": 0.3.0 + peek-readable: 5.3.1 + style-mod@4.1.2: {} supports-color@7.2.0: dependencies: has-flag: 4.0.0 + tar-stream@3.1.7: + dependencies: + b4a: 1.6.7 + fast-fifo: 1.3.2 + streamx: 2.20.2 + + text-decoder@1.2.1: {} + + through@2.3.8: {} + to-regex-range@5.0.1: dependencies: is-number: 7.0.0 + token-types@6.0.0: + dependencies: + "@tokenizer/token": 0.3.0 + ieee754: 1.2.1 + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: typescript: 5.7.2 @@ -1641,6 +2877,13 @@ snapshots: typescript@5.7.2: {} + uint8array-extras@1.4.0: {} + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + uri-js@4.4.1: dependencies: punycode: 2.3.1 @@ -1653,4 +2896,9 @@ snapshots: word-wrap@1.2.5: {} + yauzl@3.2.0: + dependencies: + buffer-crc32: 0.2.13 + pend: 1.2.0 + yocto-queue@0.1.0: {} From 65f9605181464304c17dd96862927a50e7d08cae Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 23:17:00 +0800 Subject: [PATCH 06/20] fix: Downgrade Twig to 3.14 Twig 3.15+ breaks EasyAdmin for some unknown reasons. Let's stick on 3.14 until EasyAdmin has fixed up their problem. https://github.com/EasyCorp/EasyAdminBundle/issues/6605 https://github.com/twigphp/Twig/issues/4480 --- composer.json | 2 +- composer.lock | 24 +++++++++++------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/composer.json b/composer.json index 6a0f0f5..a6b1a7c 100644 --- a/composer.json +++ b/composer.json @@ -63,7 +63,7 @@ "twig/extra-bundle": "3.*", "twig/markdown-extra": "3.*", "twig/string-extra": "3.*", - "twig/twig": "3.*" + "twig/twig": "3.14.*" }, "config": { "allow-plugins": { diff --git a/composer.lock b/composer.lock index f19c13e..ba34d74 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": "7eed5df058de2b26a2bf8aba230f6c91", + "content-hash": "1ab48f775ea4df46f9388b8feb2f8a90", "packages": [ { "name": "composer/semver", @@ -9379,16 +9379,16 @@ }, { "name": "twig/twig", - "version": "3.x-dev", + "version": "3.14.x-dev", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f" + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f", - "reference": "c5ebc12cde6f3f0de033184cc8f4a9efb7fac27f", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", + "reference": "0b6f9d8370bb3b7f1ce5313ed8feb0fafd6e399a", "shasum": "" }, "require": { @@ -9399,11 +9399,9 @@ "symfony/polyfill-php81": "^1.29" }, "require-dev": { - "phpstan/phpstan": "^2.0", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, - "default-branch": true, "type": "library", "autoload": { "files": [ @@ -9444,7 +9442,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/3.x" + "source": "https://github.com/twigphp/Twig/tree/v3.14.2" }, "funding": [ { @@ -9456,7 +9454,7 @@ "type": "tidelift" } ], - "time": "2024-11-30T09:52:06+00:00" + "time": "2024-11-07T12:36:22+00:00" }, { "name": "webmozart/assert", @@ -10302,12 +10300,12 @@ "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "97ba50af456b28c156727c0c908266d1482885dd" + "reference": "9bfe4a4ffb7047d595d55d6c30646727ba6c7947" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/97ba50af456b28c156727c0c908266d1482885dd", - "reference": "97ba50af456b28c156727c0c908266d1482885dd", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9bfe4a4ffb7047d595d55d6c30646727ba6c7947", + "reference": "9bfe4a4ffb7047d595d55d6c30646727ba6c7947", "shasum": "" }, "require": { @@ -10353,7 +10351,7 @@ "type": "github" } ], - "time": "2024-11-30T15:33:55+00:00" + "time": "2024-12-01T14:23:59+00:00" }, { "name": "phpstan/phpstan-doctrine", From 45270d44a022897c10c43ed60ad8e7cad3a8222d Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Sun, 1 Dec 2024 23:26:45 +0800 Subject: [PATCH 07/20] feat: Add assets to fetch in Link header Useful for some web servers to implement Early Hint. This server is fast enough for users to notice the changes. --- composer.json | 1 + composer.lock | 142 ++++++++++++++++++++++++++++++++++++++- templates/base.html.twig | 8 ++- 3 files changed, 148 insertions(+), 3 deletions(-) diff --git a/composer.json b/composer.json index a6b1a7c..73c8f08 100644 --- a/composer.json +++ b/composer.json @@ -57,6 +57,7 @@ "symfony/ux-turbo": "2.*", "symfony/ux-twig-component": "2.*", "symfony/validator": "7.3.*", + "symfony/web-link": "7.3.*", "symfony/yaml": "7.3.*", "symfonycasts/sass-bundle": "dev-main", "twbs/bootstrap": "dev-main", diff --git a/composer.lock b/composer.lock index ba34d74..e0cfcd0 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": "1ab48f775ea4df46f9388b8feb2f8a90", + "content-hash": "3669817e19896eaa4a91a0496d35cc44", "packages": [ { "name": "composer/semver", @@ -3186,6 +3186,63 @@ }, "time": "2023-04-04T09:54:51+00:00" }, + { + "name": "psr/link", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/php-fig/link.git", + "reference": "5b8d54ad01c46baa3bb13388640a62fdb34461a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/link/zipball/5b8d54ad01c46baa3bb13388640a62fdb34461a5", + "reference": "5b8d54ad01c46baa3bb13388640a62fdb34461a5", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "suggest": { + "fig/link-util": "Provides some useful PSR-13 utilities" + }, + "default-branch": true, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Link\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", + "keywords": [ + "http", + "http-link", + "link", + "psr", + "psr-13", + "rest" + ], + "support": { + "source": "https://github.com/php-fig/link/tree/master" + }, + "time": "2022-06-21T13:38:53+00:00" + }, { "name": "psr/log", "version": "dev-master", @@ -8982,6 +9039,89 @@ ], "time": "2024-10-18T07:58:17+00:00" }, + { + "name": "symfony/web-link", + "version": "7.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/web-link.git", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/web-link/zipball/f537556a885e14a1d28f6c759d41e57e93d0a532", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/link": "^1.1|^2.0" + }, + "conflict": { + "symfony/http-kernel": "<6.4" + }, + "provide": { + "psr/link-implementation": "1.0|2.0" + }, + "require-dev": { + "symfony/http-kernel": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\WebLink\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Manages links between resources", + "homepage": "https://symfony.com", + "keywords": [ + "dns-prefetch", + "http", + "http2", + "link", + "performance", + "prefetch", + "preload", + "prerender", + "psr13", + "push" + ], + "support": { + "source": "https://github.com/symfony/web-link/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, { "name": "symfony/yaml", "version": "7.3.x-dev", diff --git a/templates/base.html.twig b/templates/base.html.twig index ee5b42d..d7634f2 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -7,11 +7,15 @@ + {% block stylesheets %} - - + + + + + From d13a5d56947e118ce0a2a44e4fb816acf86a86a2 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 00:58:37 +0800 Subject: [PATCH 08/20] refactor: Flatten App\Exception --- .../{SqlRunner => }/QueryExecuteException.php | 2 +- src/Exception/ResourceException.php | 18 ------------------ .../{SqlRunner => }/SchemaExecuteException.php | 2 +- ...nerException.php => SqlRunnerException.php} | 4 ++-- src/Exception/TimedOutException.php | 18 ------------------ src/Service/QuestionSqlRunnerService.php | 12 ++++++------ src/Service/SqlRunnerService.php | 14 +++++++------- .../Challenge/Tabs/AnswerQueryResult.php | 4 ++-- .../Challenge/Tabs/UserQueryResult.php | 4 ++-- tests/SqlRunner/SqlRunnerServiceTest.php | 14 +++++++------- 10 files changed, 28 insertions(+), 64 deletions(-) rename src/Exception/{SqlRunner => }/QueryExecuteException.php (91%) delete mode 100644 src/Exception/ResourceException.php rename src/Exception/{SqlRunner => }/SchemaExecuteException.php (90%) rename src/Exception/{SqlRunner/RunnerException.php => SqlRunnerException.php} (77%) delete mode 100644 src/Exception/TimedOutException.php diff --git a/src/Exception/SqlRunner/QueryExecuteException.php b/src/Exception/QueryExecuteException.php similarity index 91% rename from src/Exception/SqlRunner/QueryExecuteException.php rename to src/Exception/QueryExecuteException.php index 83974d0..a7b634e 100644 --- a/src/Exception/SqlRunner/QueryExecuteException.php +++ b/src/Exception/QueryExecuteException.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Exception\SqlRunner; +namespace App\Exception; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; diff --git a/src/Exception/ResourceException.php b/src/Exception/ResourceException.php deleted file mode 100644 index 4666968..0000000 --- a/src/Exception/ResourceException.php +++ /dev/null @@ -1,18 +0,0 @@ -getContent(false); } catch (\Throwable $e) { - throw new RunnerException('CLIENT_ERROR', $e->getMessage(), previous: $e); + throw new SqlRunnerException('CLIENT_ERROR', $e->getMessage(), previous: $e); } try { @@ -67,7 +67,7 @@ public function runQuery(SqlRunnerRequest $request): SqlRunnerResult $this->context, ); } catch (\Throwable $e) { - throw new RunnerException('PROTOCOL_ERROR', $e->getMessage(), $e); + throw new SqlRunnerException('PROTOCOL_ERROR', $e->getMessage(), $e); } if (!$response->isSuccess()) { @@ -80,7 +80,7 @@ public function runQuery(SqlRunnerRequest $request): SqlRunnerResult case 'SCHEMA_ERROR': throw new SchemaExecuteException($response->getMessage()); default: - throw new RunnerException($response->getCode(), $response->getMessage()); + throw new SqlRunnerException($response->getCode(), $response->getMessage()); } } diff --git a/src/Twig/Components/Challenge/Tabs/AnswerQueryResult.php b/src/Twig/Components/Challenge/Tabs/AnswerQueryResult.php index 9e3e544..e29004f 100644 --- a/src/Twig/Components/Challenge/Tabs/AnswerQueryResult.php +++ b/src/Twig/Components/Challenge/Tabs/AnswerQueryResult.php @@ -6,8 +6,8 @@ use App\Entity\ChallengeDto\FallableSqlRunnerResult; use App\Entity\Question; -use App\Exception\SqlRunner\QueryExecuteException; -use App\Exception\SqlRunner\SchemaExecuteException; +use App\Exception\QueryExecuteException; +use App\Exception\SchemaExecuteException; use App\Service\QuestionSqlRunnerService; use Psr\Log\LoggerInterface; use Symfony\UX\TwigComponent\Attribute\AsTwigComponent; diff --git a/src/Twig/Components/Challenge/Tabs/UserQueryResult.php b/src/Twig/Components/Challenge/Tabs/UserQueryResult.php index 3896ad1..38f5957 100644 --- a/src/Twig/Components/Challenge/Tabs/UserQueryResult.php +++ b/src/Twig/Components/Challenge/Tabs/UserQueryResult.php @@ -7,8 +7,8 @@ use App\Entity\ChallengeDto\FallableSqlRunnerResult; use App\Entity\Question; use App\Entity\User; -use App\Exception\SqlRunner\QueryExecuteException; -use App\Exception\SqlRunner\SchemaExecuteException; +use App\Exception\QueryExecuteException; +use App\Exception\SchemaExecuteException; use App\Repository\SolutionEventRepository; use App\Service\QuestionSqlRunnerService; use App\Service\SqlRunnerComparer; diff --git a/tests/SqlRunner/SqlRunnerServiceTest.php b/tests/SqlRunner/SqlRunnerServiceTest.php index 524a51d..6792f5c 100644 --- a/tests/SqlRunner/SqlRunnerServiceTest.php +++ b/tests/SqlRunner/SqlRunnerServiceTest.php @@ -5,7 +5,7 @@ namespace App\Tests\SqlRunner; use App\Entity\SqlRunnerDto\SqlRunnerResponse; -use App\Exception\SqlRunner\RunnerException; +use App\Exception\SqlRunnerException; use Monolog\Test\TestCase; use Symfony\Component\HttpClient\Exception\TransportException; use Symfony\Component\Serializer\SerializerInterface; @@ -16,7 +16,7 @@ final class SqlRunnerServiceTest extends TestCase { public function testRunQueryClientError(): void { - $this->expectException(RunnerException::class); + $this->expectException(SqlRunnerException::class); $this->expectExceptionMessageMatches('/^CLIENT_ERROR: /'); $httpClient = self::createMock(HttpClientInterface::class); @@ -38,7 +38,7 @@ public function testRunQueryClientError(): void public function testRunQueryProtocolError(): void { - $this->expectException(RunnerException::class); + $this->expectException(SqlRunnerException::class); $this->expectExceptionMessageMatches('/^PROTOCOL_ERROR: /'); $httpClient = self::createMock(HttpClientInterface::class); @@ -61,7 +61,7 @@ public function testRunQueryProtocolError(): void public function testRunQueryRunnerException(): void { - $this->expectException(RunnerException::class); + $this->expectException(SqlRunnerException::class); $this->expectExceptionMessage('INTERNAL_ERROR: Internal error'); $httpClient = self::createMock(HttpClientInterface::class); @@ -89,7 +89,7 @@ public function testRunQueryRunnerException(): void public function testRunQueryQueryException(): void { - $this->expectException(\App\Exception\SqlRunner\QueryExecuteException::class); + $this->expectException(\App\Exception\QueryExecuteException::class); $this->expectExceptionMessage('Query error'); $httpClient = self::createMock(HttpClientInterface::class); @@ -117,7 +117,7 @@ public function testRunQueryQueryException(): void public function testRunQuerySchemaException(): void { - $this->expectException(\App\Exception\SqlRunner\SchemaExecuteException::class); + $this->expectException(\App\Exception\SchemaExecuteException::class); $this->expectExceptionMessage('Schema error'); $httpClient = self::createMock(HttpClientInterface::class); @@ -145,7 +145,7 @@ public function testRunQuerySchemaException(): void public function testRunQueryBadPayload(): void { - $this->expectException(RunnerException::class); + $this->expectException(SqlRunnerException::class); $this->expectExceptionMessageMatches('/^BAD_PAYLOAD: /'); $httpClient = self::createMock(HttpClientInterface::class); From 5ed788f8be5860cee1b5bfda34e047bf9100ae4e Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:10:59 +0800 Subject: [PATCH 09/20] feat: Implement GPT-4o support * GPT-4o has lower rate limit, so 429 is also handled. * Do not write HintOpenEvent if the hint cannot be opened. * Handle error from GPT API. --- src/Exception/HintException.php | 15 +++++ src/Service/PromptService.php | 59 +++++++++++-------- .../Challenge/Instruction/Modal.php | 23 ++++++-- translations/messages.zh_TW.yaml | 3 +- 4 files changed, 67 insertions(+), 33 deletions(-) create mode 100644 src/Exception/HintException.php diff --git a/src/Exception/HintException.php b/src/Exception/HintException.php new file mode 100644 index 0000000..0d406be --- /dev/null +++ b/src/Exception/HintException.php @@ -0,0 +1,15 @@ +getMessage()}", previous: $previous); + } +} diff --git a/src/Service/PromptService.php b/src/Service/PromptService.php index 8199cc0..b08b7d4 100644 --- a/src/Service/PromptService.php +++ b/src/Service/PromptService.php @@ -4,6 +4,7 @@ namespace App\Service; +use App\Exception\HintException; use Psr\Log\LoggerInterface; final readonly class PromptService @@ -25,6 +26,8 @@ public function __construct( * @param string $answer the answer to the query * * @return string the complete hint for the user + * + * @throws HintException if the hint cannot be generated */ public function hint(string $query, string $error, string $answer): string { @@ -46,37 +49,41 @@ public function hint(string $query, string $error, string $answer): string You should write your response in Chinese (Traditional, Taiwan) with the Taiwan native vocabularies. PROMPT; - $response = $this->client->chat()->create([ - 'model' => 'gpt-4o-mini', - 'messages' => [ - [ - 'role' => 'system', - 'content' => [ - [ - 'text' => $systemPrompt, - 'type' => 'text', + try { + $response = $this->client->chat()->create([ + 'model' => 'gpt-4o', + 'messages' => [ + [ + 'role' => 'system', + 'content' => [ + [ + 'text' => $systemPrompt, + 'type' => 'text', + ], ], ], - ], - [ - 'role' => 'user', - 'content' => [ - [ - 'text' => "$query\n---\n$error\n---\n$answer", - 'type' => 'text', + [ + 'role' => 'user', + 'content' => [ + [ + 'text' => "$query\n---\n$error\n---\n$answer", + 'type' => 'text', + ], ], ], ], - ], - 'temperature' => 0.2, - 'max_tokens' => 2048, - 'top_p' => 1, - 'frequency_penalty' => 0, - 'presence_penalty' => 0, - 'response_format' => [ - 'type' => 'text', - ], - ]); + 'temperature' => 0.2, + 'max_tokens' => 2048, + 'top_p' => 1, + 'frequency_penalty' => 0, + 'presence_penalty' => 0, + 'response_format' => [ + 'type' => 'text', + ], + ]); + } catch (\Throwable $e) { + throw new HintException($e); + } $this->logger->debug('Hinted.', [ 'response' => $response, diff --git a/src/Twig/Components/Challenge/Instruction/Modal.php b/src/Twig/Components/Challenge/Instruction/Modal.php index 462215c..04677b2 100644 --- a/src/Twig/Components/Challenge/Instruction/Modal.php +++ b/src/Twig/Components/Challenge/Instruction/Modal.php @@ -9,12 +9,14 @@ use App\Entity\SolutionEventStatus; use App\Entity\SqlRunnerDto\SqlRunnerRequest; use App\Entity\User; +use App\Exception\HintException; use App\Repository\SolutionEventRepository; use App\Service\PointCalculationService; use App\Service\PromptService; use App\Service\SqlRunnerComparer; use App\Service\SqlRunnerService; use Doctrine\ORM\EntityManagerInterface; +use Psr\Log\LoggerInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\Translation\TranslatableMessage; @@ -35,6 +37,7 @@ final class Modal public function __construct( private readonly TranslatorInterface $translator, + private readonly LoggerInterface $logger, ) { } @@ -92,7 +95,7 @@ public function instruct( ->setQuery($answer), ); } catch (\Throwable $e) { - $this->flushHint('informative', t('instruction.hint.error', [ + $this->flushHint('informative', t('instruction.hint.answer-wrong', [ '%error%' => $e->getMessage(), ])); @@ -113,8 +116,7 @@ public function instruct( ); } catch (\Throwable $e) { $hint = $promptService->hint($query->getQuery(), $e->getMessage(), $answer); - $hintOpenEvent->setResponse($hint); - + $entityManager->persist($hintOpenEvent->setResponse($hint)); $this->flushHint('hint', $hint); return; @@ -128,12 +130,21 @@ public function instruct( } $compareReason = $compareResult->reason()->trans($translator, 'en_US'); - $hint = $promptService->hint($query->getQuery(), "Different result: {$compareReason}", $answer); - $hintOpenEvent->setResponse($hint); + $hint = $promptService->hint($query->getQuery(), "Different result: {$compareReason}", $answer); + $entityManager->persist($hintOpenEvent->setResponse($hint)); $this->flushHint('hint', $hint); + } catch (HintException $e) { + $this->logger->error('Failed to generate hint', [ + 'exception' => $e, + 'query' => $query->getQuery(), + 'answer' => $answer, + ]); + + $this->flushHint('informative', t('instruction.hint.hint-service-error', [ + '%error%' => $e->getPrevious()?->getMessage() ?? $e->getMessage(), + ])); } finally { - $entityManager->persist($hintOpenEvent); $entityManager->flush(); } } diff --git a/translations/messages.zh_TW.yaml b/translations/messages.zh_TW.yaml index 8e29058..b409e65 100644 --- a/translations/messages.zh_TW.yaml +++ b/translations/messages.zh_TW.yaml @@ -100,7 +100,8 @@ instruction: hint: not_submitted: 提交答案之後才能請 GPT 提示。 solved: 正確答案不需要提示。 - error: 無法取得正確答案:%error% + answer-wrong: 無法取得正確答案:%error% + hint-service-error: 無法取得提示:%error% feedback: type: From f65733c22f444a7f9fb014cf615115a5ff4399f6 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:19:44 +0800 Subject: [PATCH 10/20] refactor(prompt): Use XML instead of unstructured format --- src/Service/PromptService.php | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/Service/PromptService.php b/src/Service/PromptService.php index b08b7d4..c643119 100644 --- a/src/Service/PromptService.php +++ b/src/Service/PromptService.php @@ -33,7 +33,7 @@ public function hint(string $query, string $error, string $answer): string { $systemPrompt = <<$queryXml + $answerXml + $messageXml + INPUT; + try { $response = $this->client->chat()->create([ 'model' => 'gpt-4o', @@ -66,7 +76,7 @@ public function hint(string $query, string $error, string $answer): string 'role' => 'user', 'content' => [ [ - 'text' => "$query\n---\n$error\n---\n$answer", + 'text' => $input, 'type' => 'text', ], ], @@ -86,6 +96,9 @@ public function hint(string $query, string $error, string $answer): string } $this->logger->debug('Hinted.', [ + 'query' => $queryXml, + 'answer' => $answerXml, + 'message' => $messageXml, 'response' => $response, ]); From f8229741e02601daeb16d301f416a68b3af97eac Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:47:32 +0800 Subject: [PATCH 11/20] feat: Announcement --- assets/styles/app.scss | 6 ++ migrations/Version20241201173441.php | 49 ++++++++++++ .../Admin/AnnouncementCrudController.php | 29 +++++++ src/Controller/Admin/DashboardController.php | 4 + src/Controller/OverviewController.php | 11 +++ src/Entity/Announcement.php | 77 +++++++++++++++++++ src/Repository/AnnouncementRepository.php | 30 ++++++++ templates/overview/announcements.html.twig | 13 ++++ templates/overview/index.html.twig | 4 + translations/messages.zh_TW.yaml | 3 + 10 files changed, 226 insertions(+) create mode 100644 migrations/Version20241201173441.php create mode 100644 src/Controller/Admin/AnnouncementCrudController.php create mode 100644 src/Entity/Announcement.php create mode 100644 src/Repository/AnnouncementRepository.php create mode 100644 templates/overview/announcements.html.twig diff --git a/assets/styles/app.scss b/assets/styles/app.scss index 9602906..578a9df 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -361,6 +361,7 @@ ul.credit { gap: 3rem; grid-template: "hello-text" auto + "announcements" auto "weekly-metrics" auto "historic-statistics" auto "leaderboard" auto; @@ -368,6 +369,7 @@ ul.credit { @media (min-width: 1440px) { grid-template: "hello-text hello-text hello-text hello-text" auto + "announcements announcements announcements announcements" auto "weekly-metrics weekly-metrics leaderboard leaderboard" 1fr "historic-statistics historic-statistics leaderboard leaderboard" 1fr; grid-template-columns: 2fr 2fr 1fr 1fr; @@ -388,6 +390,10 @@ ul.credit { &__leaderboard { grid-area: leaderboard; } + + &__announcements { + grid-area: announcements; + } } // The placeholder that shows only after 100ms diff --git a/migrations/Version20241201173441.php b/migrations/Version20241201173441.php new file mode 100644 index 0000000..04e8b4e --- /dev/null +++ b/migrations/Version20241201173441.php @@ -0,0 +1,49 @@ +addSql(<<<'SQL' + CREATE TABLE announcement ( + id VARCHAR(255) NOT NULL, + content TEXT NOT NULL, + url TEXT DEFAULT NULL, + published BOOLEAN NOT NULL, + created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, + updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, + PRIMARY KEY(id) + ) + SQL); + $this->addSql(<<<'SQL' + COMMENT ON COLUMN announcement.created_at IS '(DC2Type:datetime_immutable)' + SQL); + $this->addSql(<<<'SQL' + COMMENT ON COLUMN announcement.updated_at IS '(DC2Type:datetime_immutable)' + SQL); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql(<<<'SQL' + DROP TABLE announcement + SQL); + } +} diff --git a/src/Controller/Admin/AnnouncementCrudController.php b/src/Controller/Admin/AnnouncementCrudController.php new file mode 100644 index 0000000..269f72c --- /dev/null +++ b/src/Controller/Admin/AnnouncementCrudController.php @@ -0,0 +1,29 @@ +render('overview/index.html.twig'); } + + #[Route('/overview/announcements', name: 'app_overview_announcements')] + public function announcements(AnnouncementRepository $announcementRepository): Response + { + $announcements = $announcementRepository->findAllPublished(); + + return $this->render('overview/announcements.html.twig', [ + 'announcements' => $announcements, + ]); + } } diff --git a/src/Entity/Announcement.php b/src/Entity/Announcement.php new file mode 100644 index 0000000..66e0b98 --- /dev/null +++ b/src/Entity/Announcement.php @@ -0,0 +1,77 @@ +id; + } + + public function setId(string $id): static + { + $this->id = $id; + + return $this; + } + + public function getContent(): string + { + return $this->content; + } + + public function setContent(string $content): static + { + $this->content = $content; + + return $this; + } + + public function getUrl(): ?string + { + return $this->url; + } + + public function setUrl(?string $url): static + { + $this->url = $url; + + return $this; + } + + public function isPublished(): bool + { + return $this->published; + } + + public function setPublished(bool $published): static + { + $this->published = $published; + + return $this; + } +} diff --git a/src/Repository/AnnouncementRepository.php b/src/Repository/AnnouncementRepository.php new file mode 100644 index 0000000..f374a33 --- /dev/null +++ b/src/Repository/AnnouncementRepository.php @@ -0,0 +1,30 @@ + + */ +class AnnouncementRepository extends ServiceEntityRepository +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, Announcement::class); + } + + /** + * @return list + */ + public function findAllPublished(): array + { + return $this->findBy(['published' => true], orderBy: [ + 'createdAt' => 'DESC', + ]); + } +} diff --git a/templates/overview/announcements.html.twig b/templates/overview/announcements.html.twig new file mode 100644 index 0000000..ee8bd5a --- /dev/null +++ b/templates/overview/announcements.html.twig @@ -0,0 +1,13 @@ +{% extends 'base.html.twig' %} + +{% block body %} + +
    + {% for announcement in announcements %} + + {% endfor %} +
    +
    +{% endblock %} diff --git a/templates/overview/index.html.twig b/templates/overview/index.html.twig index 5c0c545..c3a336a 100644 --- a/templates/overview/index.html.twig +++ b/templates/overview/index.html.twig @@ -10,6 +10,10 @@

    這些是你最近的表現 ↓

    +
    + +
    +

    每週學習概況

    diff --git a/translations/messages.zh_TW.yaml b/translations/messages.zh_TW.yaml index b409e65..6ee0a31 100644 --- a/translations/messages.zh_TW.yaml +++ b/translations/messages.zh_TW.yaml @@ -55,6 +55,9 @@ Mark Closed: 標記為已關閉 New & In Progress: 新問題 & 處理中 Resolved & Closed: 已解決 & 已關閉 Impersonate: 模擬使用者 +Announcement: 公告 +URL: 網址 +Published: 發布 result_presenter.tabs.result: 執行結果 result_presenter.tabs.answer: 正確答案 From 7e32bd66bdfc01d792e6b9e62efffd8b2836c178 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:47:49 +0800 Subject: [PATCH 12/20] refactor(styles): Tweak gap of dashboard --- assets/styles/app.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/styles/app.scss b/assets/styles/app.scss index 578a9df..a3a504e 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -358,7 +358,7 @@ ul.credit { .app-overview-dashboard { display: grid; - gap: 3rem; + gap: 1rem; grid-template: "hello-text" auto "announcements" auto From b8bbc7deddde29172d3dbc190327b666bcdad3c8 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:52:03 +0800 Subject: [PATCH 13/20] l10n: Add "System Management" translation --- translations/messages.zh_TW.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/translations/messages.zh_TW.yaml b/translations/messages.zh_TW.yaml index 6ee0a31..92a3780 100644 --- a/translations/messages.zh_TW.yaml +++ b/translations/messages.zh_TW.yaml @@ -55,6 +55,7 @@ Mark Closed: 標記為已關閉 New & In Progress: 新問題 & 處理中 Resolved & Closed: 已解決 & 已關閉 Impersonate: 模擬使用者 +System Management: 系統管理 Announcement: 公告 URL: 網址 Published: 發布 From 76988d5723d9c45531f5415038f2dcb2086c4b14 Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 01:56:00 +0800 Subject: [PATCH 14/20] feat(overview): Implement "Learn More" button (by URL) --- templates/overview/announcements.html.twig | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/templates/overview/announcements.html.twig b/templates/overview/announcements.html.twig index ee8bd5a..60bdca5 100644 --- a/templates/overview/announcements.html.twig +++ b/templates/overview/announcements.html.twig @@ -4,8 +4,13 @@
    {% for announcement in announcements %} - From 7303945441d449c23e2897c33a49a08e9cde6fcc Mon Sep 17 00:00:00 2001 From: Yi-Jyun Pan Date: Mon, 2 Dec 2024 09:00:45 +0800 Subject: [PATCH 15/20] refactor(overview): Remove date from announcement --- templates/overview/announcements.html.twig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/overview/announcements.html.twig b/templates/overview/announcements.html.twig index 60bdca5..ba74ad1 100644 --- a/templates/overview/announcements.html.twig +++ b/templates/overview/announcements.html.twig @@ -4,12 +4,12 @@
    {% for announcement in announcements %} -