diff --git a/.gitignore b/.gitignore
index 27fb725..09f8d6c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,3 +9,8 @@
/vendor/
###< symfony/framework-bundle ###
/.php-styler.cache
+
+###> squizlabs/php_codesniffer ###
+/.phpcs-cache
+/phpcs.xml
+###< squizlabs/php_codesniffer ###
diff --git a/.idea/codeception.xml b/.idea/codeception.xml
index 11b4cca..42a91a8 100644
--- a/.idea/codeception.xml
+++ b/.idea/codeception.xml
@@ -27,6 +27,12 @@
+
+
+
+
+
+
diff --git a/.idea/futtern.iml b/.idea/futtern.iml
index 46cc551..8702762 100644
--- a/.idea/futtern.iml
+++ b/.idea/futtern.iml
@@ -43,7 +43,6 @@
-
@@ -82,6 +81,7 @@
+
diff --git a/.idea/php.xml b/.idea/php.xml
index 39ac2f6..15257a3 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -17,83 +17,83 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/.idea/phpspec.xml b/.idea/phpspec.xml
index b11fb30..8b8e568 100644
--- a/.idea/phpspec.xml
+++ b/.idea/phpspec.xml
@@ -26,6 +26,12 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/composer.json b/composer.json
index f55c104..b38af24 100644
--- a/composer.json
+++ b/composer.json
@@ -9,7 +9,7 @@
"ext-iconv": "*",
"doctrine/doctrine-bundle": "^2.11",
"doctrine/doctrine-migrations-bundle": "^3.3",
- "doctrine/orm": "^2.17",
+ "doctrine/orm": "^2.18",
"lubiana/code-quality": "^1.4",
"symfony/console": "7.0.*",
"symfony/dotenv": "7.0.*",
@@ -27,7 +27,7 @@
"doctrine/doctrine-fixtures-bundle": "^3.5",
"fakerphp/faker": "^1.23",
"pmjones/php-styler": "0.x-dev",
- "symfony/maker-bundle": "^1.53"
+ "symfony/maker-bundle": "^1.54"
},
"config": {
"allow-plugins": {
diff --git a/composer.lock b/composer.lock
index 80fee04..8d4a424 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": "819ccb5535c468b5a449a26b029fbb73",
+ "content-hash": "72b8eb151eaf7da0138e53c9ebce0cee",
"packages": [
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
@@ -356,16 +356,16 @@
},
{
"name": "doctrine/dbal",
- "version": "3.8.0",
+ "version": "3.8.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9"
+ "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9",
- "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/c9ea252cdce4da324ede3d6c5913dd89f769afd2",
+ "reference": "c9ea252cdce4da324ede3d6c5913dd89f769afd2",
"shasum": ""
},
"require": {
@@ -381,9 +381,9 @@
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
- "phpstan/phpstan": "1.10.56",
+ "phpstan/phpstan": "1.10.57",
"phpstan/phpstan-strict-rules": "^1.5",
- "phpunit/phpunit": "9.6.15",
+ "phpunit/phpunit": "9.6.16",
"psalm/plugin-phpunit": "0.18.4",
"slevomat/coding-standard": "8.13.1",
"squizlabs/php_codesniffer": "3.8.1",
@@ -449,7 +449,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.8.0"
+ "source": "https://github.com/doctrine/dbal/tree/3.8.1"
},
"funding": [
{
@@ -465,7 +465,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-25T21:44:02+00:00"
+ "time": "2024-02-03T17:33:49+00:00"
},
{
"name": "doctrine/deprecations",
@@ -516,16 +516,16 @@
},
{
"name": "doctrine/doctrine-bundle",
- "version": "2.11.1",
+ "version": "2.11.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git",
- "reference": "4089f1424b724786c062aea50aae5f773449b94b"
+ "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b",
- "reference": "4089f1424b724786c062aea50aae5f773449b94b",
+ "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf",
+ "reference": "fb22c9320383caa2829c32dc3b84c1b5e0f1ceaf",
"shasum": ""
},
"require": {
@@ -546,18 +546,18 @@
},
"conflict": {
"doctrine/annotations": ">=3.0",
- "doctrine/orm": "<2.14 || >=4.0",
+ "doctrine/orm": "<2.17 || >=4.0",
"twig/twig": "<1.34 || >=2.0 <2.4"
},
"require-dev": {
"doctrine/annotations": "^1 || ^2",
"doctrine/coding-standard": "^12",
"doctrine/deprecations": "^1.0",
- "doctrine/orm": "^2.14 || ^3.0",
+ "doctrine/orm": "^2.17 || ^3.0",
"friendsofphp/proxy-manager-lts": "^1.0",
- "phpunit/phpunit": "^9.5.26 || ^10.0",
+ "phpunit/phpunit": "^9.5.26",
"psalm/plugin-phpunit": "^0.18.4",
- "psalm/plugin-symfony": "^4",
+ "psalm/plugin-symfony": "^5",
"psr/log": "^1.1.4 || ^2.0 || ^3.0",
"symfony/phpunit-bridge": "^6.1 || ^7.0",
"symfony/property-info": "^5.4 || ^6.0 || ^7.0",
@@ -570,7 +570,7 @@
"symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0",
"twig/twig": "^1.34 || ^2.12 || ^3.0",
- "vimeo/psalm": "^4.30"
+ "vimeo/psalm": "^5.15"
},
"suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
@@ -615,7 +615,7 @@
],
"support": {
"issues": "https://github.com/doctrine/DoctrineBundle/issues",
- "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1"
+ "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.2"
},
"funding": [
{
@@ -631,7 +631,7 @@
"type": "tidelift"
}
],
- "time": "2023-11-15T20:01:50+00:00"
+ "time": "2024-02-06T15:41:25+00:00"
},
{
"name": "doctrine/doctrine-migrations-bundle",
@@ -978,28 +978,27 @@
},
{
"name": "doctrine/lexer",
- "version": "2.1.0",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
- "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^9 || ^10",
- "phpstan/phpstan": "^1.3",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
"psalm/plugin-phpunit": "^0.18.3",
- "vimeo/psalm": "^4.11 || ^5.0"
+ "vimeo/psalm": "^5.21"
},
"type": "library",
"autoload": {
@@ -1036,7 +1035,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/2.1.0"
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
},
"funding": [
{
@@ -1052,7 +1051,7 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T08:49:07+00:00"
+ "time": "2024-02-05T11:56:58+00:00"
},
{
"name": "doctrine/migrations",
@@ -1158,16 +1157,16 @@
},
{
"name": "doctrine/orm",
- "version": "2.17.4",
+ "version": "2.18.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d"
+ "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d",
- "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/f2176a9ce56cafdfd1624d54bfdb076819083d5b",
+ "reference": "f2176a9ce56cafdfd1624d54bfdb076819083d5b",
"shasum": ""
},
"require": {
@@ -1180,7 +1179,7 @@
"doctrine/event-manager": "^1.2 || ^2",
"doctrine/inflector": "^1.4 || ^2.0",
"doctrine/instantiator": "^1.3 || ^2",
- "doctrine/lexer": "^2",
+ "doctrine/lexer": "^2 || ^3",
"doctrine/persistence": "^2.4 || ^3",
"ext-ctype": "*",
"php": "^7.1 || ^8.0",
@@ -1216,7 +1215,7 @@
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\ORM\\": "lib/Doctrine/ORM"
+ "Doctrine\\ORM\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1253,9 +1252,9 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.17.4"
+ "source": "https://github.com/doctrine/orm/tree/2.18.0"
},
- "time": "2024-01-26T19:41:16+00:00"
+ "time": "2024-01-31T15:53:12+00:00"
},
{
"name": "doctrine/persistence",
@@ -1749,16 +1748,16 @@
},
{
"name": "rector/rector",
- "version": "0.19.5",
+ "version": "0.19.8",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "89c895d127b9d248d2af007068a824b5348ef81f"
+ "reference": "de3b3bb159abd704b144aa86fb244f7f1f4ac947"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/89c895d127b9d248d2af007068a824b5348ef81f",
- "reference": "89c895d127b9d248d2af007068a824b5348ef81f",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/de3b3bb159abd704b144aa86fb244f7f1f4ac947",
+ "reference": "de3b3bb159abd704b144aa86fb244f7f1f4ac947",
"shasum": ""
},
"require": {
@@ -1793,7 +1792,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.19.5"
+ "source": "https://github.com/rectorphp/rector/tree/0.19.8"
},
"funding": [
{
@@ -1801,7 +1800,7 @@
"type": "github"
}
],
- "time": "2024-01-29T23:53:47+00:00"
+ "time": "2024-02-05T10:59:13+00:00"
},
{
"name": "slevomat/coding-standard",
@@ -2975,16 +2974,16 @@
},
{
"name": "symfony/flex",
- "version": "v2.4.3",
+ "version": "v2.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/flex.git",
- "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1"
+ "reference": "bec213c39511eda66663baa2ee7440c65f89c695"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/flex/zipball/6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1",
- "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1",
+ "url": "https://api.github.com/repos/symfony/flex/zipball/bec213c39511eda66663baa2ee7440c65f89c695",
+ "reference": "bec213c39511eda66663baa2ee7440c65f89c695",
"shasum": ""
},
"require": {
@@ -3020,7 +3019,7 @@
"description": "Composer plugin for Symfony",
"support": {
"issues": "https://github.com/symfony/flex/issues",
- "source": "https://github.com/symfony/flex/tree/v2.4.3"
+ "source": "https://github.com/symfony/flex/tree/v2.4.4"
},
"funding": [
{
@@ -3036,7 +3035,7 @@
"type": "tidelift"
}
],
- "time": "2024-01-02T11:08:32+00:00"
+ "time": "2024-02-05T18:04:53+00:00"
},
{
"name": "symfony/form",
@@ -3610,16 +3609,16 @@
},
{
"name": "symfony/polyfill-intl-icu",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-icu.git",
- "reference": "e46b4da57951a16053cd751f63f4a24292788157"
+ "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157",
- "reference": "e46b4da57951a16053cd751f63f4a24292788157",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1",
+ "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1",
"shasum": ""
},
"require": {
@@ -3630,9 +3629,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3677,7 +3673,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0"
},
"funding": [
{
@@ -3693,20 +3689,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-21T17:27:24+00:00"
+ "time": "2024-01-29T20:12:16+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "42292d99c55abe617799667f454222c54c60e229"
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
- "reference": "42292d99c55abe617799667f454222c54c60e229",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
+ "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec",
"shasum": ""
},
"require": {
@@ -3720,9 +3716,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3760,7 +3753,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0"
},
"funding": [
{
@@ -3776,20 +3769,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-28T09:04:16+00:00"
+ "time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/polyfill-uuid",
- "version": "v1.28.0",
+ "version": "v1.29.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
- "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e"
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e",
- "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853",
+ "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853",
"shasum": ""
},
"require": {
@@ -3803,9 +3796,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3842,7 +3832,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0"
},
"funding": [
{
@@ -3858,7 +3848,7 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-01-29T20:11:03+00:00"
},
{
"name": "symfony/property-access",
@@ -5229,16 +5219,16 @@
},
{
"name": "symplify/easy-coding-standard",
- "version": "12.1.8",
+ "version": "12.1.10",
"source": {
"type": "git",
"url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
- "reference": "7962c810a8eebc4174a38d7dff673f1999e61595"
+ "reference": "67f643befd6997961aa6bd759b4529e94bb18b53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/7962c810a8eebc4174a38d7dff673f1999e61595",
- "reference": "7962c810a8eebc4174a38d7dff673f1999e61595",
+ "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/67f643befd6997961aa6bd759b4529e94bb18b53",
+ "reference": "67f643befd6997961aa6bd759b4529e94bb18b53",
"shasum": ""
},
"require": {
@@ -5271,7 +5261,7 @@
],
"support": {
"issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues",
- "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.8"
+ "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.10"
},
"funding": [
{
@@ -5283,7 +5273,7 @@
"type": "github"
}
],
- "time": "2024-01-16T22:56:06+00:00"
+ "time": "2024-02-05T10:58:24+00:00"
},
{
"name": "twig/twig",
@@ -5757,44 +5747,44 @@
},
{
"name": "symfony/maker-bundle",
- "version": "v1.53.0",
+ "version": "v1.54.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/maker-bundle.git",
- "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9"
+ "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/8d2f3f96704766837548d177fe3ae39ae94822d9",
- "reference": "8d2f3f96704766837548d177fe3ae39ae94822d9",
+ "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a8523cf35d777bf2d8cf5703fa73f378fdc27125",
+ "reference": "a8523cf35d777bf2d8cf5703fa73f378fdc27125",
"shasum": ""
},
"require": {
"doctrine/inflector": "^2.0",
"nikic/php-parser": "^4.18|^5.0",
"php": ">=8.1",
- "symfony/config": "^6.3|^7.0",
- "symfony/console": "^6.3|^7.0",
- "symfony/dependency-injection": "^6.3|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
"symfony/deprecation-contracts": "^2.2|^3",
- "symfony/filesystem": "^6.3|^7.0",
- "symfony/finder": "^6.3|^7.0",
- "symfony/framework-bundle": "^6.3|^7.0",
- "symfony/http-kernel": "^6.3|^7.0",
- "symfony/process": "^6.3|^7.0"
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/framework-bundle": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0"
},
"conflict": {
- "doctrine/doctrine-bundle": "<2.4",
- "doctrine/orm": "<2.10"
+ "doctrine/doctrine-bundle": "<2.10",
+ "doctrine/orm": "<2.15"
},
"require-dev": {
"composer/semver": "^3.0",
"doctrine/doctrine-bundle": "^2.5.0",
- "doctrine/orm": "^2.10.0",
- "symfony/http-client": "^6.3|^7.0",
- "symfony/phpunit-bridge": "^6.3|^7.0",
- "symfony/security-core": "^6.3|^7.0",
- "symfony/yaml": "^6.3|^7.0",
+ "doctrine/orm": "^2.15|^3",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/phpunit-bridge": "^6.4.1|^7.0",
+ "symfony/security-core": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0",
"twig/twig": "^3.0|^4.x-dev"
},
"type": "symfony-bundle",
@@ -5829,7 +5819,7 @@
],
"support": {
"issues": "https://github.com/symfony/maker-bundle/issues",
- "source": "https://github.com/symfony/maker-bundle/tree/v1.53.0"
+ "source": "https://github.com/symfony/maker-bundle/tree/v1.54.0"
},
"funding": [
{
@@ -5845,7 +5835,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-01T10:05:38+00:00"
+ "time": "2024-02-06T21:23:55+00:00"
},
{
"name": "symfony/process",
diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml
new file mode 100644
index 0000000..9fe3f61
--- /dev/null
+++ b/config/packages/doctrine.yaml
@@ -0,0 +1,49 @@
+doctrine:
+ dbal:
+ url: '%env(resolve:DATABASE_URL)%'
+
+ # IMPORTANT: You MUST configure your server version,
+ # either here or in the DATABASE_URL env var (see .env file)
+ #server_version: '16'
+
+ profiling_collect_backtrace: '%kernel.debug%'
+ orm:
+ auto_generate_proxy_classes: true
+ enable_lazy_ghost_objects: true
+ report_fields_where_declared: true
+ validate_xml_mapping: true
+ naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
+ auto_mapping: true
+ mappings:
+ App:
+ type: attribute
+ is_bundle: false
+ dir: '%kernel.project_dir%/src/Entity'
+ prefix: 'App\Entity'
+ alias: App
+
+when@test:
+ doctrine:
+ dbal:
+ # "TEST_TOKEN" is typically set by ParaTest
+ dbname_suffix: '_test%env(default::TEST_TOKEN)%'
+
+when@prod:
+ doctrine:
+ orm:
+ auto_generate_proxy_classes: false
+ proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies'
+ query_cache_driver:
+ type: pool
+ pool: doctrine.system_cache_pool
+ result_cache_driver:
+ type: pool
+ pool: doctrine.result_cache_pool
+
+ framework:
+ cache:
+ pools:
+ doctrine.result_cache_pool:
+ adapter: cache.app
+ doctrine.system_cache_pool:
+ adapter: cache.system
diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml
new file mode 100644
index 0000000..8166181
--- /dev/null
+++ b/config/packages/routing.yaml
@@ -0,0 +1,10 @@
+framework:
+ router:
+ # Configure how to generate URLs in non-HTTP contexts, such as CLI commands.
+ # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands
+ #default_uri: http://localhost
+
+when@prod:
+ framework:
+ router:
+ strict_requirements: null
diff --git a/config/packages/twig.php b/config/packages/twig.php
index 0819dee..e4963fd 100644
--- a/config/packages/twig.php
+++ b/config/packages/twig.php
@@ -1,15 +1,18 @@
extension('twig', [
- 'file_name_pattern' => '*.twig',
- ]);
+use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
- if ($containerConfigurator->env() === 'test') {
- $containerConfigurator->extension('twig', [
- 'strict_variables' => true,
- ]);
+use App\Service\WhoAreYou;
+
+return static function (TwigConfig $twig): void {
+ $twig
+ ->fileNamePattern('*.twig')
+ ->global('username', service(WhoAreYou::class));
+
+ if ($_SERVER['APP_ENV'] === 'test') {
+ $twig->strictVariables(true);
}
};
diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml
new file mode 100644
index 0000000..3f795d9
--- /dev/null
+++ b/config/packages/twig.yaml
@@ -0,0 +1,6 @@
+twig:
+ file_name_pattern: '*.twig'
+
+when@test:
+ twig:
+ strict_variables: true
diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml
new file mode 100644
index 0000000..dd47a6a
--- /dev/null
+++ b/config/packages/validator.yaml
@@ -0,0 +1,11 @@
+framework:
+ validation:
+ # Enables validator auto-mapping support.
+ # For instance, basic validation constraints will be inferred from Doctrine's metadata.
+ #auto_mapping:
+ # App\Entity\: []
+
+when@test:
+ framework:
+ validation:
+ not_compromised_password: false
diff --git a/config/routes.yaml b/config/routes.yaml
new file mode 100644
index 0000000..41ef814
--- /dev/null
+++ b/config/routes.yaml
@@ -0,0 +1,5 @@
+controllers:
+ resource:
+ path: ../src/Controller/
+ namespace: App\Controller
+ type: attribute
diff --git a/config/routes/framework.yaml b/config/routes/framework.yaml
new file mode 100644
index 0000000..0fc74bb
--- /dev/null
+++ b/config/routes/framework.yaml
@@ -0,0 +1,4 @@
+when@dev:
+ _errors:
+ resource: '@FrameworkBundle/Resources/config/routing/errors.xml'
+ prefix: /_error
diff --git a/config/services.php b/config/services.php
index 28c9a72..41fbcd4 100644
--- a/config/services.php
+++ b/config/services.php
@@ -1,6 +1,7 @@
services();
@@ -14,4 +15,5 @@ return static function (ContainerConfigurator $containerConfigurator): void {
__DIR__ . '/../src/Entity/',
__DIR__ . '/../src/Kernel.php',
]);
+ $services->alias(AppVariable::class, 'twig.app_variable');
};
diff --git a/migrations/Version20240203164757.php b/migrations/Version20240212201659.php
similarity index 65%
rename from migrations/Version20240203164757.php
rename to migrations/Version20240212201659.php
index 98a2197..b57f6dc 100644
--- a/migrations/Version20240203164757.php
+++ b/migrations/Version20240212201659.php
@@ -10,7 +10,7 @@ use Doctrine\Migrations\AbstractMigration;
/**
* Auto-generated Migration: Please modify to your needs!
*/
-final class Version20240203164757 extends AbstractMigration
+final class Version20240212201659 extends AbstractMigration
{
public function getDescription(): string
{
@@ -21,27 +21,25 @@ final class Version20240203164757 extends AbstractMigration
{
// this up() migration is auto-generated, please modify it to your needs
$this->addSql('CREATE TABLE food_order (id BLOB NOT NULL --(DC2Type:ulid)
- , vendor_id BLOB NOT NULL --(DC2Type:ulid)
- , started_by_name VARCHAR(255) NOT NULL, closed_at DATETIME DEFAULT NULL --(DC2Type:datetime_immutable)
- , started_at DATETIME NOT NULL --(DC2Type:datetime_immutable)
- , PRIMARY KEY(id), CONSTRAINT FK_4485672F603EE73 FOREIGN KEY (vendor_id) REFERENCES vendor (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
- $this->addSql('CREATE INDEX IDX_4485672F603EE73 ON food_order (vendor_id)');
+ , closed_at DATETIME DEFAULT NULL --(DC2Type:datetime_immutable)
+ , started_by VARCHAR(30) NOT NULL, started_at DATETIME NOT NULL --(DC2Type:datetime_immutable)
+ , PRIMARY KEY(id))');
$this->addSql('CREATE TABLE menu_item (id BLOB NOT NULL --(DC2Type:ulid)
, vendor_id BLOB NOT NULL --(DC2Type:ulid)
- , price INTEGER DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_D754D550F603EE73 FOREIGN KEY (vendor_id) REFERENCES vendor (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ , price INTEGER NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_D754D550F603EE73 FOREIGN KEY (vendor_id) REFERENCES vendor (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
$this->addSql('CREATE INDEX IDX_D754D550F603EE73 ON menu_item (vendor_id)');
$this->addSql('CREATE TABLE menu_item_alias (id BLOB NOT NULL --(DC2Type:ulid)
, menu_item_id BLOB NOT NULL --(DC2Type:ulid)
- , name VARCHAR(255) NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_EA66C4969AB44FE0 FOREIGN KEY (menu_item_id) REFERENCES menu_item (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ , name VARCHAR(50) NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_EA66C4969AB44FE0 FOREIGN KEY (menu_item_id) REFERENCES menu_item (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
$this->addSql('CREATE INDEX IDX_EA66C4969AB44FE0 ON menu_item_alias (menu_item_id)');
$this->addSql('CREATE TABLE order_item (id BLOB NOT NULL --(DC2Type:ulid)
, food_order_id BLOB NOT NULL --(DC2Type:ulid)
, menu_item_id BLOB NOT NULL --(DC2Type:ulid)
, PRIMARY KEY(id), CONSTRAINT FK_52EA1F09A5D24A7A FOREIGN KEY (food_order_id) REFERENCES food_order (id) NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_52EA1F099AB44FE0 FOREIGN KEY (menu_item_id) REFERENCES menu_item (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
$this->addSql('CREATE INDEX IDX_52EA1F09A5D24A7A ON order_item (food_order_id)');
- $this->addSql('CREATE INDEX IDX_52EA1F099AB44FE0 ON order_item (menu_item_id)');
+ $this->addSql('CREATE UNIQUE INDEX UNIQ_52EA1F099AB44FE0 ON order_item (menu_item_id)');
$this->addSql('CREATE TABLE vendor (id BLOB NOT NULL --(DC2Type:ulid)
- , name VARCHAR(255) NOT NULL, PRIMARY KEY(id))');
+ , name VARCHAR(50) NOT NULL, PRIMARY KEY(id))');
}
public function down(Schema $schema): void
diff --git a/migrations/Version20240212202919.php b/migrations/Version20240212202919.php
new file mode 100644
index 0000000..ffaee95
--- /dev/null
+++ b/migrations/Version20240212202919.php
@@ -0,0 +1,47 @@
+addSql('CREATE TEMPORARY TABLE __temp__food_order AS SELECT id, closed_at, started_by, started_at FROM food_order');
+ $this->addSql('DROP TABLE food_order');
+ $this->addSql('CREATE TABLE food_order (id BLOB NOT NULL --(DC2Type:ulid)
+ , vendor_id BLOB NOT NULL --(DC2Type:ulid)
+ , closed_at DATETIME DEFAULT NULL --(DC2Type:datetime_immutable)
+ , started_by VARCHAR(30) NOT NULL, started_at DATETIME NOT NULL --(DC2Type:datetime_immutable)
+ , PRIMARY KEY(id), CONSTRAINT FK_4485672F603EE73 FOREIGN KEY (vendor_id) REFERENCES vendor (id) NOT DEFERRABLE INITIALLY IMMEDIATE)');
+ $this->addSql('INSERT INTO food_order (id, closed_at, started_by, started_at) SELECT id, closed_at, started_by, started_at FROM __temp__food_order');
+ $this->addSql('DROP TABLE __temp__food_order');
+ $this->addSql('CREATE INDEX IDX_4485672F603EE73 ON food_order (vendor_id)');
+ }
+
+ public function down(Schema $schema): void
+ {
+ // this down() migration is auto-generated, please modify it to your needs
+ $this->addSql('CREATE TEMPORARY TABLE __temp__food_order AS SELECT id, closed_at, started_by, started_at FROM food_order');
+ $this->addSql('DROP TABLE food_order');
+ $this->addSql('CREATE TABLE food_order (id BLOB NOT NULL --(DC2Type:ulid)
+ , closed_at DATETIME DEFAULT NULL --(DC2Type:datetime_immutable)
+ , started_by VARCHAR(30) NOT NULL, started_at DATETIME NOT NULL --(DC2Type:datetime_immutable)
+ , PRIMARY KEY(id))');
+ $this->addSql('INSERT INTO food_order (id, closed_at, started_by, started_at) SELECT id, closed_at, started_by, started_at FROM __temp__food_order');
+ $this->addSql('DROP TABLE __temp__food_order');
+ }
+}
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
new file mode 100644
index 0000000..89195e2
--- /dev/null
+++ b/phpcs.xml.dist
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+ bin/
+ config/
+ public/
+ src/
+ tests/
+
+
diff --git a/public/css/missing.css b/public/css/missing.css
new file mode 100644
index 0000000..c07eae1
--- /dev/null
+++ b/public/css/missing.css
@@ -0,0 +1 @@
+*,:before,:after{box-sizing:border-box;background-repeat:no-repeat}:before,:after{-webkit-text-decoration:inherit;text-decoration:inherit;vertical-align:inherit}:root{cursor:default;overflow-wrap:break-word;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}abbr[title]{text-decoration:underline dotted}strong,b{font-weight:bolder}small{font-size:80%}audio,canvas,iframe,img,svg,video{vertical-align:middle}svg:not([fill]){fill:currentColor}table{border-collapse:collapse;text-indent:0;border-color:currentColor}button,input,select{margin:0}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}fieldset{border:1px solid #a0a0a0}progress{vertical-align:baseline}textarea{margin:0}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}::-webkit-input-placeholder{color:inherit;opacity:.54}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}[hidden]{display:none!important}:focus-visible{outline:.2em solid var(--accent);z-index:32}iframe:focus-visible,html:focus-visible,body:focus-visible{outline:none}:target{outline:.2em solid var(--fg);z-index:2}details>summary:first-of-type{display:list-item}[aria-busy=true]{cursor:progress}[aria-disabled=true],[disabled]{cursor:not-allowed}datalist{display:none!important}:root{--gray-0:#f8fafb;--gray-1:#f2f4f6;--gray-2:#ebedef;--gray-3:#e0e4e5;--gray-4:#d1d6d8;--gray-5:#b1b6b9;--gray-6:#979b9d;--gray-7:#7e8282;--gray-8:#666968;--gray-9:#50514f;--gray-10:#3a3a37;--gray-11:#252521;--gray-12:#121210;--red-0:#fff5f5;--red-1:#ffe3e3;--red-2:#ffc9c9;--red-3:#ffa8a8;--red-4:#ff8787;--red-5:#ff6b6b;--red-6:#fa5252;--red-7:#f03e3e;--red-8:#e03131;--red-9:#c92a2a;--red-10:#b02525;--red-11:#962020;--red-12:#7d1a1a;--pink-0:#fff0f6;--pink-1:#ffdeeb;--pink-2:#fcc2d7;--pink-3:#faa2c1;--pink-4:#f783ac;--pink-5:#f06595;--pink-6:#e64980;--pink-7:#d6336c;--pink-8:#c2255c;--pink-9:#a61e4d;--pink-10:#8c1941;--pink-11:#731536;--pink-12:#59102a;--purple-0:#f8f0fc;--purple-1:#f3d9fa;--purple-2:#eebefa;--purple-3:#e599f7;--purple-4:#da77f2;--purple-5:#cc5de8;--purple-6:#be4bdb;--purple-7:#ae3ec9;--purple-8:#9c36b5;--purple-9:#862e9c;--purple-10:#702682;--purple-11:#5a1e69;--purple-12:#44174f;--violet-0:#f3f0ff;--violet-1:#e5dbff;--violet-2:#d0bfff;--violet-3:#b197fc;--violet-4:#9775fa;--violet-5:#845ef7;--violet-6:#7950f2;--violet-7:#7048e8;--violet-8:#6741d9;--violet-9:#5f3dc4;--violet-10:#5235ab;--violet-11:#462d91;--violet-12:#3a2578;--indigo-0:#edf2ff;--indigo-1:#dbe4ff;--indigo-2:#bac8ff;--indigo-3:#91a7ff;--indigo-4:#748ffc;--indigo-5:#5c7cfa;--indigo-6:#4c6ef5;--indigo-7:#4263eb;--indigo-8:#3b5bdb;--indigo-9:#364fc7;--indigo-10:#2f44ad;--indigo-11:#283a94;--indigo-12:#21307a;--blue-0:#e7f5ff;--blue-1:#d0ebff;--blue-2:#a5d8ff;--blue-3:#74c0fc;--blue-4:#4dabf7;--blue-5:#339af0;--blue-6:#228be6;--blue-7:#1c7ed6;--blue-8:#1971c2;--blue-9:#1864ab;--blue-10:#145591;--blue-11:#114678;--blue-12:#0d375e;--cyan-0:#e3fafc;--cyan-1:#c5f6fa;--cyan-2:#99e9f2;--cyan-3:#66d9e8;--cyan-4:#3bc9db;--cyan-5:#22b8cf;--cyan-6:#15aabf;--cyan-7:#1098ad;--cyan-8:#0c8599;--cyan-9:#0b7285;--cyan-10:#095c6b;--cyan-11:#074652;--cyan-12:#053038;--teal-0:#e6fcf5;--teal-1:#c3fae8;--teal-2:#96f2d7;--teal-3:#63e6be;--teal-4:#38d9a9;--teal-5:#20c997;--teal-6:#12b886;--teal-7:#0ca678;--teal-8:#099268;--teal-9:#087f5b;--teal-10:#066649;--teal-11:#054d37;--teal-12:#033325;--green-0:#ebfbee;--green-1:#d3f9d8;--green-2:#b2f2bb;--green-3:#8ce99a;--green-4:#69db7c;--green-5:#51cf66;--green-6:#40c057;--green-7:#37b24d;--green-8:#2f9e44;--green-9:#2b8a3e;--green-10:#237032;--green-11:#1b5727;--green-12:#133d1b;--lime-0:#f4fce3;--lime-1:#e9fac8;--lime-2:#d8f5a2;--lime-3:#c0eb75;--lime-4:#a9e34b;--lime-5:#94d82d;--lime-6:#82c91e;--lime-7:#74b816;--lime-8:#66a80f;--lime-9:#5c940d;--lime-10:#4c7a0b;--lime-11:#3c6109;--lime-12:#2c4706;--yellow-0:#fff9db;--yellow-1:#fff3bf;--yellow-2:#ffec99;--yellow-3:#ffe066;--yellow-4:#ffd43b;--yellow-5:#fcc419;--yellow-6:#fab005;--yellow-7:#f59f00;--yellow-8:#f08c00;--yellow-9:#e67700;--yellow-10:#b35c00;--yellow-11:#804200;--yellow-12:#663500;--orange-0:#fff4e6;--orange-1:#ffe8cc;--orange-2:#ffd8a8;--orange-3:#ffc078;--orange-4:#ffa94d;--orange-5:#ff922b;--orange-6:#fd7e14;--orange-7:#f76707;--orange-8:#e8590c;--orange-9:#d9480f;--orange-10:#bf400d;--orange-11:#99330b;--orange-12:#802b09;--choco-0:#fff8dc;--choco-1:#fce1bc;--choco-2:#f7ca9e;--choco-3:#f1b280;--choco-4:#e99b62;--choco-5:#df8545;--choco-6:#d46e25;--choco-7:#bd5f1b;--choco-8:#a45117;--choco-9:#8a4513;--choco-10:#703a13;--choco-11:#572f12;--choco-12:#3d210d;--brown-0:#faf4eb;--brown-1:#ede0d1;--brown-2:#e0cab7;--brown-3:#d3b79e;--brown-4:#c5a285;--brown-5:#b78f6d;--brown-6:#a87c56;--brown-7:#956b47;--brown-8:#825b3a;--brown-9:#6f4b2d;--brown-10:#5e3a21;--brown-11:#4e2b15;--brown-12:#422412;--sand-0:#f8fafb;--sand-1:#e6e4dc;--sand-2:#d5cfbd;--sand-3:#c2b9a0;--sand-4:#aea58c;--sand-5:#9a9178;--sand-6:#867c65;--sand-7:#736a53;--sand-8:#5f5746;--sand-9:#4b4639;--sand-10:#38352d;--sand-11:#252521;--sand-12:#121210;--camo-0:#f9fbe7;--camo-1:#e8ed9c;--camo-2:#d2df4e;--camo-3:#c2ce34;--camo-4:#b5bb2e;--camo-5:#a7a827;--camo-6:#999621;--camo-7:#8c851c;--camo-8:#7e7416;--camo-9:#6d6414;--camo-10:#5d5411;--camo-11:#4d460e;--camo-12:#36300a;--jungle-0:#ecfeb0;--jungle-1:#def39a;--jungle-2:#d0e884;--jungle-3:#c2dd6e;--jungle-4:#b5d15b;--jungle-5:#a8c648;--jungle-6:#9bbb36;--jungle-7:#8fb024;--jungle-8:#84a513;--jungle-9:#7a9908;--jungle-10:#658006;--jungle-11:#516605;--jungle-12:#3d4d04}html{font-family:var(--main-font);line-height:var(--rhythm);background:var(--bg);color:var(--fg);scroll-padding-block-start:calc(4*var(--gap))}body{margin:0}header,footer,section+section{margin-block:calc(2*var(--gap))}nav a{color:var(--accent);text-decoration:none}aside{font-size:.8em;line-height:calc(var(--rhythm)*2/3);--gap:calc(var(--rhythm)*var(--density)*2/3);border-block:1px solid var(--graphical-fg);padding-block:var(--gap);margin-block:calc(var(--gap)*3/2)}aside.bg{padding-inline:var(--gap)}aside h1,aside h2,aside h3,aside h4,aside h5,aside h6{text-transform:none;letter-spacing:none;font-size:1em}aside.big{color:var(--accent);background:0 0;border:none;border-radius:0;padding:0;font-style:italic}aside.big:not(:lang(ae)):not(:lang(ar)):not(:lang(arc)):not(:lang(bcc)):not(:lang(bqi)):not(:lang(ckb)):not(:lang(dv)):not(:lang(fa)):not(:lang(glk)):not(:lang(he)):not(:lang(ku)):not(:lang(mzn)):not(:lang(nqo)):not(:lang(pnb)):not(:lang(ps)):not(:lang(sd)):not(:lang(ug)):not(:lang(ur)):not(:lang(yi)){border-left:1px solid var(--muted-fg);padding-left:var(--rhythm)}aside.big:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),aside.big:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-right:1px solid var(--muted-fg);padding-right:var(--rhythm)}aside.big:-webkit-any(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)),aside.big:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){border-right:1px solid var(--muted-fg);padding-right:var(--rhythm)}h1,h2,h3,h4,h5,h6,.\