From 7f83d3efb20925d5f856ef9bc658ce4970d94436 Mon Sep 17 00:00:00 2001
From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com>
Date: Fri, 26 Jan 2024 03:37:56 +0100
Subject: [PATCH] chore: more specific psalm types

---
 app/Template/StaticPageLayout/Turbo.php       |    4 +-
 composer.json                                 |    3 +-
 composer.lock                                 | 1442 +----------------
 src/ApplicationConfiguration.php              |    5 +
 src/DatabaseConnectionPoolConfiguration.php   |    4 +
 src/FrontMatterCollectionReference.php        |    4 +
 src/InputValidator/FrontMatterValidator.php   |   18 +-
 src/LlamaCppConfiguration.php                 |    4 +
 src/OAuth2Configuration.php                   |    5 +
 src/OpenAPIConfiguration.php                  |    5 +
 src/RedisConnectionPoolConfiguration.php      |    3 +
 src/SQLiteVSSConfiguration.php                |    4 +
 src/SessionConfiguration.php                  |    3 +
 .../ApplicationConfigurationProvider.php      |   15 +-
 .../DatabaseConfigurationProvider.php         |    4 +-
 .../LlamaCppConfigurationProvider.php         |    6 +-
 .../OAuth2ConfigurationProvider.php           |   12 +-
 .../OpenAPIConfigurationProvider.php          |    6 +-
 .../RedisConfigurationProvider.php            |    4 +-
 .../SQLiteVSSConfigurationProvider.php        |    4 +-
 .../SessionConfigurationProvider.php          |    2 +-
 .../StaticPageConfigurationProvider.php       |   10 +-
 .../SwooleConfigurationProvider.php           |    8 +-
 .../TranslatorConfigurationProvider.php       |    4 +-
 src/StaticPageConfiguration.php               |    7 +
 src/SwooleConfiguration.php                   |    4 +
 26 files changed, 179 insertions(+), 1411 deletions(-)

diff --git a/app/Template/StaticPageLayout/Turbo.php b/app/Template/StaticPageLayout/Turbo.php
index 911ad79f..38095271 100644
--- a/app/Template/StaticPageLayout/Turbo.php
+++ b/app/Template/StaticPageLayout/Turbo.php
@@ -55,6 +55,8 @@ abstract readonly class Turbo extends StaticPageLayout
         $renderedStylesheets = $this->renderStylesheets($staticPage, $esbuildMetaEntryPoints);
         $renderedPreloads = $esbuildPreloadsRenderer->render();
 
+        $currentYear = date('Y');
+
         yield <<<HTML
         <!DOCTYPE html>
         <html lang="en">
@@ -96,7 +98,7 @@ abstract readonly class Turbo extends StaticPageLayout
         yield <<<HTML
                 <footer class="primary-footer">
                     <div class="primary-footer__copyright">
-                        Copyright &copy; 2023 Distantmagic.
+                        Copyright &copy; {$currentYear} Distantmagic.
                         Built with Resonance.
                     </div>
                 </footer>
diff --git a/composer.json b/composer.json
index fdfb0f62..a6ce2584 100644
--- a/composer.json
+++ b/composer.json
@@ -47,8 +47,7 @@
         "webonyx/graphql-php": "^15.6",
         "dragonmantank/cron-expression": "^3.3",
         "league/oauth2-client": "^2.7",
-        "opis/json-schema": "^2.3",
-        "rubix/ml": "^2.4"
+        "opis/json-schema": "^2.3"
     },
     "require-dev": {
         "mockery/mockery": "^1.6",
diff --git a/composer.lock b/composer.lock
index 86c09ec8..aef76b8c 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,564 +4,8 @@
         "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
         "This file is @generated automatically"
     ],
-    "content-hash": "e70cfc3cd3185200bf00c96fe64e1db1",
+    "content-hash": "54c7a151e1eb3558a606574811103c43",
     "packages": [
-        {
-            "name": "amphp/amp",
-            "version": "v2.6.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/amp.git",
-                "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
-                "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1",
-                "ext-json": "*",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^7 | ^8 | ^9",
-                "psalm/phar": "^3.11@dev",
-                "react/promise": "^2"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "2.x-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "lib/functions.php",
-                    "lib/Internal/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Daniel Lowrey",
-                    "email": "rdlowrey@php.net"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A non-blocking concurrency framework for PHP applications.",
-            "homepage": "https://amphp.org/amp",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "awaitable",
-                "concurrency",
-                "event",
-                "event-loop",
-                "future",
-                "non-blocking",
-                "promise"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/amp/issues",
-                "source": "https://github.com/amphp/amp/tree/v2.6.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2022-02-20T17:52:18+00:00"
-        },
-        {
-            "name": "amphp/byte-stream",
-            "version": "v1.8.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/byte-stream.git",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1.4",
-                "friendsofphp/php-cs-fixer": "^2.3",
-                "jetbrains/phpstorm-stubs": "^2019.3",
-                "phpunit/phpunit": "^6 || ^7 || ^8",
-                "psalm/phar": "^3.11.4"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-master": "1.x-dev"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "lib/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\ByteStream\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A stream abstraction to make working with non-blocking I/O simple.",
-            "homepage": "http://amphp.org/byte-stream",
-            "keywords": [
-                "amp",
-                "amphp",
-                "async",
-                "io",
-                "non-blocking",
-                "stream"
-            ],
-            "support": {
-                "irc": "irc://irc.freenode.org/amphp",
-                "issues": "https://github.com/amphp/byte-stream/issues",
-                "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-03-30T17:13:30+00:00"
-        },
-        {
-            "name": "amphp/parallel",
-            "version": "v1.4.3",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/parallel.git",
-                "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/parallel/zipball/3aac213ba7858566fd83d38ccb85b91b2d652cb0",
-                "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "amphp/byte-stream": "^1.6.1",
-                "amphp/parser": "^1",
-                "amphp/process": "^1",
-                "amphp/serialization": "^1",
-                "amphp/sync": "^1.0.1",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1.1",
-                "phpunit/phpunit": "^8 || ^7"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "lib/Context/functions.php",
-                    "lib/Sync/functions.php",
-                    "lib/Worker/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\Parallel\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Stephen Coakley",
-                    "email": "me@stephencoakley.com"
-                }
-            ],
-            "description": "Parallel processing component for Amp.",
-            "homepage": "https://github.com/amphp/parallel",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "concurrent",
-                "multi-processing",
-                "multi-threading"
-            ],
-            "support": {
-                "issues": "https://github.com/amphp/parallel/issues",
-                "source": "https://github.com/amphp/parallel/tree/v1.4.3"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2023-03-23T08:04:23+00:00"
-        },
-        {
-            "name": "amphp/parser",
-            "version": "v1.1.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/parser.git",
-                "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/parser/zipball/ff1de4144726c5dad5fab97f66692ebe8de3e151",
-                "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.4"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "^2",
-                "phpunit/phpunit": "^9",
-                "psalm/phar": "^5.4"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Amp\\Parser\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "A generator parser to make streaming parsers simple.",
-            "homepage": "https://github.com/amphp/parser",
-            "keywords": [
-                "async",
-                "non-blocking",
-                "parser",
-                "stream"
-            ],
-            "support": {
-                "issues": "https://github.com/amphp/parser/issues",
-                "source": "https://github.com/amphp/parser/tree/v1.1.0"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2022-12-30T18:08:47+00:00"
-        },
-        {
-            "name": "amphp/process",
-            "version": "v1.1.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/process.git",
-                "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f",
-                "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2",
-                "amphp/byte-stream": "^1.4",
-                "php": ">=7"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1",
-                "phpunit/phpunit": "^6"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "lib/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\Process\\": "lib"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Bob Weinand",
-                    "email": "bobwei9@hotmail.com"
-                },
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "Asynchronous process manager.",
-            "homepage": "https://github.com/amphp/process",
-            "support": {
-                "issues": "https://github.com/amphp/process/issues",
-                "source": "https://github.com/amphp/process/tree/v1.1.4"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2022-07-06T23:50:12+00:00"
-        },
-        {
-            "name": "amphp/serialization",
-            "version": "v1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/serialization.git",
-                "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/serialization/zipball/693e77b2fb0b266c3c7d622317f881de44ae94a1",
-                "reference": "693e77b2fb0b266c3c7d622317f881de44ae94a1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "phpunit/phpunit": "^9 || ^8 || ^7"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\Serialization\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Niklas Keller",
-                    "email": "me@kelunik.com"
-                }
-            ],
-            "description": "Serialization tools for IPC and data storage in PHP.",
-            "homepage": "https://github.com/amphp/serialization",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "serialization",
-                "serialize"
-            ],
-            "support": {
-                "issues": "https://github.com/amphp/serialization/issues",
-                "source": "https://github.com/amphp/serialization/tree/master"
-            },
-            "time": "2020-03-25T21:39:07+00:00"
-        },
-        {
-            "name": "amphp/sync",
-            "version": "v1.4.2",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/amphp/sync.git",
-                "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/amphp/sync/zipball/85ab06764f4f36d63b1356b466df6111cf4b89cf",
-                "reference": "85ab06764f4f36d63b1356b466df6111cf4b89cf",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/amp": "^2.2",
-                "php": ">=7.1"
-            },
-            "require-dev": {
-                "amphp/php-cs-fixer-config": "dev-master",
-                "amphp/phpunit-util": "^1.1",
-                "phpunit/phpunit": "^9 || ^8 || ^7"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/functions.php",
-                    "src/ConcurrentIterator/functions.php"
-                ],
-                "psr-4": {
-                    "Amp\\Sync\\": "src"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Aaron Piotrowski",
-                    "email": "aaron@trowski.com"
-                },
-                {
-                    "name": "Stephen Coakley",
-                    "email": "me@stephencoakley.com"
-                }
-            ],
-            "description": "Mutex, Semaphore, and other synchronization tools for Amp.",
-            "homepage": "https://github.com/amphp/sync",
-            "keywords": [
-                "async",
-                "asynchronous",
-                "mutex",
-                "semaphore",
-                "synchronization"
-            ],
-            "support": {
-                "issues": "https://github.com/amphp/sync/issues",
-                "source": "https://github.com/amphp/sync/tree/v1.4.2"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/amphp",
-                    "type": "github"
-                }
-            ],
-            "time": "2021-10-25T18:29:10+00:00"
-        },
-        {
-            "name": "andrewdalpino/okbloomer",
-            "version": "1.0.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/andrewdalpino/OkBloomer.git",
-                "reference": "39321cb515c1e99128d28489b0187120ba7ce84c"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/andrewdalpino/OkBloomer/zipball/39321cb515c1e99128d28489b0187120ba7ce84c",
-                "reference": "39321cb515c1e99128d28489b0187120ba7ce84c",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.4"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.0",
-                "phpbench/phpbench": "^1.0",
-                "phpstan/extension-installer": "^1.0",
-                "phpstan/phpstan": "^1.0",
-                "phpstan/phpstan-phpunit": "^1.0",
-                "phpunit/phpunit": "^9.5"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "OkBloomer\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Andrew DalPino",
-                    "email": "support@andrewdalpino.com",
-                    "homepage": "https://github.com/andrewdalpino",
-                    "role": "Lead Developer"
-                }
-            ],
-            "description": "An autoscaling Bloom filter with ultra-low memory usage for PHP.",
-            "keywords": [
-                "Bloom Filter",
-                "layered bloom filter",
-                "scalable bloom filter"
-            ],
-            "support": {
-                "docs": "https://github.com/andrewdalpino/OkBloomer/README.md",
-                "email": "support@andrewdalpino.com",
-                "issues": "https://github.com/andrewdalpino/OkBloomer/issues",
-                "source": "https://github.com/andrewdalpino/OkBloomer"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sponsors/andrewdalpino",
-                    "type": "github"
-                }
-            ],
-            "time": "2022-01-24T03:41:23+00:00"
-        },
         {
             "name": "defuse/php-encryption",
             "version": "v2.4.0",
@@ -4191,223 +3635,9 @@
             },
             "type": "library",
             "autoload": {
-                "files": [
-                    "src/getallheaders.php"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Ralph Khattar",
-                    "email": "ralph.khattar@gmail.com"
-                }
-            ],
-            "description": "A polyfill for getallheaders.",
-            "support": {
-                "issues": "https://github.com/ralouphie/getallheaders/issues",
-                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
-            },
-            "time": "2019-03-08T08:55:37+00:00"
-        },
-        {
-            "name": "rubix/ml",
-            "version": "2.4.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/RubixML/ML.git",
-                "reference": "e804cdc318801545307ed4a0f3a835fcf22f5864"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/RubixML/ML/zipball/e804cdc318801545307ed4a0f3a835fcf22f5864",
-                "reference": "e804cdc318801545307ed4a0f3a835fcf22f5864",
-                "shasum": ""
-            },
-            "require": {
-                "amphp/parallel": "^1.3",
-                "andrewdalpino/okbloomer": "^1.0",
-                "ext-json": "*",
-                "php": ">=7.4",
-                "psr/log": "^1.1|^2.0|^3.0",
-                "rubix/tensor": "^3.0",
-                "symfony/polyfill-mbstring": "^1.0",
-                "symfony/polyfill-php80": "^1.17",
-                "symfony/polyfill-php82": "^1.27",
-                "symfony/polyfill-php83": "^1.27",
-                "wamania/php-stemmer": "^3.0"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.0",
-                "phpbench/phpbench": "^1.0",
-                "phpstan/extension-installer": "^1.0",
-                "phpstan/phpstan": "^1.0",
-                "phpstan/phpstan-phpunit": "^1.0",
-                "phpunit/phpunit": "^9.0"
-            },
-            "suggest": {
-                "ext-gd": "For image support",
-                "ext-mbstring": "For fast multibyte string manipulation",
-                "ext-svm": "For Support Vector Machine engine (libsvm)",
-                "ext-tensor": "For fast Matrix/Vector computing"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/constants.php",
-                    "src/functions.php"
-                ],
-                "psr-4": {
-                    "Rubix\\ML\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Andrew DalPino",
-                    "homepage": "https://github.com/andrewdalpino"
-                },
-                {
-                    "name": "Contributors",
-                    "homepage": "https://github.com/RubixML/ML/graphs/contributors"
-                }
-            ],
-            "description": "A high-level machine learning and deep learning library for the PHP language.",
-            "homepage": "https://rubixml.com",
-            "keywords": [
-                "Algorithm",
-                "Deep learning",
-                "Linear regression",
-                "Neural network",
-                "Rubix",
-                "TF-IDF",
-                "adaboost",
-                "ai",
-                "analytics",
-                "anomaly detection",
-                "artificial intelligence",
-                "cart",
-                "classification",
-                "classifier",
-                "clustering",
-                "cross validation",
-                "data mining",
-                "data science",
-                "dataset",
-                "dbscan",
-                "dimensionality reduction",
-                "ensemble",
-                "estimator",
-                "etl",
-                "feature extraction",
-                "feature importance",
-                "feature selection",
-                "gaussian mixture",
-                "gbm",
-                "gmm",
-                "gradient boost",
-                "grid search",
-                "image recognition",
-                "imputation",
-                "inference",
-                "isolation forest",
-                "k-means",
-                "k-nearest neighbors",
-                "kmeans",
-                "knn",
-                "local outlier factor",
-                "loda",
-                "lof",
-                "logistic regression",
-                "machine learning",
-                "manifold learning",
-                "mean shift",
-                "ml",
-                "mlp",
-                "multilayer perceptron",
-                "naive bayes",
-                "natural language processing",
-                "nearest neighbors",
-                "nlp",
-                "outlier detection",
-                "php",
-                "php ai",
-                "php machine learning",
-                "php ml",
-                "prediction",
-                "predictive modeling",
-                "random forest",
-                "ranking",
-                "recommendation",
-                "regression",
-                "regressor",
-                "ridge",
-                "rubix ml",
-                "rubixml",
-                "softmax",
-                "supervised learning",
-                "support vector machine",
-                "svm",
-                "t-sne",
-                "text mining",
-                "tf idf",
-                "tsne",
-                "unsupervised learning"
-            ],
-            "support": {
-                "chat": "https://t.me/RubixML",
-                "docs": "https://docs.rubixml.com",
-                "issues": "https://github.com/RubixML/ML/issues",
-                "source": "https://github.com/RubixML/ML"
-            },
-            "funding": [
-                {
-                    "url": "https://github.com/sponsors/andrewdalpino",
-                    "type": "github"
-                }
-            ],
-            "time": "2023-05-26T16:49:18+00:00"
-        },
-        {
-            "name": "rubix/tensor",
-            "version": "3.0.4",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/RubixML/Tensor.git",
-                "reference": "e1537119c5f1f87eb506852df3b5b7c7e34c452a"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/RubixML/Tensor/zipball/e1537119c5f1f87eb506852df3b5b7c7e34c452a",
-                "reference": "e1537119c5f1f87eb506852df3b5b7c7e34c452a",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.4"
-            },
-            "require-dev": {
-                "friendsofphp/php-cs-fixer": "^3.0",
-                "phalcon/zephir": "^0.17",
-                "phpbench/phpbench": "^1.0",
-                "phpstan/extension-installer": "^1.0",
-                "phpstan/phpstan": "^1.0",
-                "phpstan/phpstan-phpunit": "^1.0",
-                "phpunit/phpunit": "^9.0"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "src/constants.php"
-                ],
-                "psr-4": {
-                    "Tensor\\": "src/",
-                    "Zephir\\Optimizers\\FunctionCall\\": "optimizers/"
-                }
+                "files": [
+                    "src/getallheaders.php"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -4415,66 +3645,16 @@
             ],
             "authors": [
                 {
-                    "name": "Andrew DalPino",
-                    "email": "support@andrewdalpino.com",
-                    "homepage": "https://github.com/andrewdalpino",
-                    "role": "Project Lead"
-                },
-                {
-                    "name": "Contributors",
-                    "homepage": "https://github.com/RubixML/Tensor/graphs/contributors"
+                    "name": "Ralph Khattar",
+                    "email": "ralph.khattar@gmail.com"
                 }
             ],
-            "description": "A library and extension that provides objects for scientific computing in PHP.",
-            "homepage": "https://github.com/RubixML/Tensor",
-            "keywords": [
-                "1d convolution",
-                "2d convolution",
-                "arithmetic",
-                "blas",
-                "computation",
-                "computing",
-                "convolution",
-                "decomposition",
-                "dot product",
-                "eigendecomposition",
-                "eigenvalue",
-                "eigenvector",
-                "engineering",
-                "extension",
-                "lapack",
-                "linear algebra",
-                "math",
-                "matmul",
-                "matrix",
-                "matrix multiplication",
-                "multithreaded",
-                "php",
-                "php extension",
-                "pseudoinverse",
-                "scientific computing",
-                "signal processing",
-                "singular value decomposition",
-                "statistics",
-                "svd",
-                "tensor",
-                "trigonometry",
-                "vector",
-                "vector norm"
-            ],
+            "description": "A polyfill for getallheaders.",
             "support": {
-                "chat": "https://t.me/RubixML",
-                "email": "support@andrewdalpino.com",
-                "issues": "https://github.com/RubixML/Tensor/issues",
-                "source": "https://github.com/RubixML/Tensor"
+                "issues": "https://github.com/ralouphie/getallheaders/issues",
+                "source": "https://github.com/ralouphie/getallheaders/tree/develop"
             },
-            "funding": [
-                {
-                    "url": "https://github.com/andrewdalpino",
-                    "type": "github"
-                }
-            ],
-            "time": "2023-09-20T05:03:49+00:00"
+            "time": "2019-03-08T08:55:37+00:00"
         },
         {
             "name": "symfony/cache",
@@ -5173,89 +4353,6 @@
             ],
             "time": "2023-01-26T09:26:14+00:00"
         },
-        {
-            "name": "symfony/polyfill-iconv",
-            "version": "v1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-iconv.git",
-                "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1",
-                "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "provide": {
-                "ext-iconv": "*"
-            },
-            "suggest": {
-                "ext-iconv": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Iconv\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for the Iconv extension",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "iconv",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
-        },
         {
             "name": "symfony/polyfill-intl-grapheme",
             "version": "v1.28.0",
@@ -5266,183 +4363,15 @@
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
-                "reference": "875e90aeea2777b6f135677f618529449334a612",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's grapheme_* functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "grapheme",
-                "intl",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
-        },
-        {
-            "name": "symfony/polyfill-intl-normalizer",
-            "version": "v1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
-                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.1"
-            },
-            "suggest": {
-                "ext-intl": "For best performance"
-            },
-            "type": "library",
-            "extra": {
-                "branch-alias": {
-                    "dev-main": "1.28-dev"
-                },
-                "thanks": {
-                    "name": "symfony/polyfill",
-                    "url": "https://github.com/symfony/polyfill"
-                }
-            },
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Symfony Community",
-                    "homepage": "https://symfony.com/contributors"
-                }
-            ],
-            "description": "Symfony polyfill for intl's Normalizer class and related functions",
-            "homepage": "https://symfony.com",
-            "keywords": [
-                "compatibility",
-                "intl",
-                "normalizer",
-                "polyfill",
-                "portable",
-                "shim"
-            ],
-            "support": {
-                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.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": "2023-01-26T09:26:14+00:00"
-        },
-        {
-            "name": "symfony/polyfill-mbstring",
-            "version": "v1.28.0",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/symfony/polyfill-mbstring.git",
-                "reference": "42292d99c55abe617799667f454222c54c60e229"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
-                "reference": "42292d99c55abe617799667f454222c54c60e229",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
+                "reference": "875e90aeea2777b6f135677f618529449334a612",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.1"
             },
-            "provide": {
-                "ext-mbstring": "*"
-            },
             "suggest": {
-                "ext-mbstring": "For best performance"
+                "ext-intl": "For best performance"
             },
             "type": "library",
             "extra": {
@@ -5459,7 +4388,7 @@
                     "bootstrap.php"
                 ],
                 "psr-4": {
-                    "Symfony\\Polyfill\\Mbstring\\": ""
+                    "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
                 }
             },
             "notification-url": "https://packagist.org/downloads/",
@@ -5476,17 +4405,18 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill for the Mbstring extension",
+            "description": "Symfony polyfill for intl's grapheme_* functions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
-                "mbstring",
+                "grapheme",
+                "intl",
                 "polyfill",
                 "portable",
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
             },
             "funding": [
                 {
@@ -5502,25 +4432,28 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-07-28T09:04:16+00:00"
+            "time": "2023-01-26T09:26:14+00:00"
         },
         {
-            "name": "symfony/polyfill-php72",
+            "name": "symfony/polyfill-intl-normalizer",
             "version": "v1.28.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php72.git",
-                "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179"
+                "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179",
-                "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179",
+                "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+                "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.1"
             },
+            "suggest": {
+                "ext-intl": "For best performance"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -5536,8 +4469,11 @@
                     "bootstrap.php"
                 ],
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php72\\": ""
-                }
+                    "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+                },
+                "classmap": [
+                    "Resources/stubs"
+                ]
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -5553,16 +4489,18 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
+            "description": "Symfony polyfill for intl's Normalizer class and related functions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
+                "intl",
+                "normalizer",
                 "polyfill",
                 "portable",
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
             },
             "funding": [
                 {
@@ -5581,22 +4519,28 @@
             "time": "2023-01-26T09:26:14+00:00"
         },
         {
-            "name": "symfony/polyfill-php80",
+            "name": "symfony/polyfill-mbstring",
             "version": "v1.28.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php80.git",
-                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
+                "url": "https://github.com/symfony/polyfill-mbstring.git",
+                "reference": "42292d99c55abe617799667f454222c54c60e229"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
-                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
+                "reference": "42292d99c55abe617799667f454222c54c60e229",
                 "shasum": ""
             },
             "require": {
                 "php": ">=7.1"
             },
+            "provide": {
+                "ext-mbstring": "*"
+            },
+            "suggest": {
+                "ext-mbstring": "For best performance"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -5612,21 +4556,14 @@
                     "bootstrap.php"
                 ],
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php80\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
+                    "Symfony\\Polyfill\\Mbstring\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
                 "MIT"
             ],
             "authors": [
-                {
-                    "name": "Ion Bazan",
-                    "email": "ion.bazan@gmail.com"
-                },
                 {
                     "name": "Nicolas Grekas",
                     "email": "p@tchwork.com"
@@ -5636,16 +4573,17 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+            "description": "Symfony polyfill for the Mbstring extension",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
+                "mbstring",
                 "polyfill",
                 "portable",
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
             },
             "funding": [
                 {
@@ -5661,20 +4599,20 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-01-26T09:26:14+00:00"
+            "time": "2023-07-28T09:04:16+00:00"
         },
         {
-            "name": "symfony/polyfill-php82",
+            "name": "symfony/polyfill-php72",
             "version": "v1.28.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php82.git",
-                "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49"
+                "url": "https://github.com/symfony/polyfill-php72.git",
+                "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/7716bea9c86776fb3362d6b52fe1fc9471056a49",
-                "reference": "7716bea9c86776fb3362d6b52fe1fc9471056a49",
+                "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179",
+                "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179",
                 "shasum": ""
             },
             "require": {
@@ -5695,11 +4633,8 @@
                     "bootstrap.php"
                 ],
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php82\\": ""
-                },
-                "classmap": [
-                    "Resources/stubs"
-                ]
+                    "Symfony\\Polyfill\\Php72\\": ""
+                }
             },
             "notification-url": "https://packagist.org/downloads/",
             "license": [
@@ -5715,7 +4650,7 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions",
+            "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
@@ -5724,7 +4659,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php82/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0"
             },
             "funding": [
                 {
@@ -5740,25 +4675,24 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-08-25T17:27:25+00:00"
+            "time": "2023-01-26T09:26:14+00:00"
         },
         {
-            "name": "symfony/polyfill-php83",
+            "name": "symfony/polyfill-php80",
             "version": "v1.28.0",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/polyfill-php83.git",
-                "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11"
+                "url": "https://github.com/symfony/polyfill-php80.git",
+                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
-                "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
+                "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+                "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
                 "shasum": ""
             },
             "require": {
-                "php": ">=7.1",
-                "symfony/polyfill-php80": "^1.14"
+                "php": ">=7.1"
             },
             "type": "library",
             "extra": {
@@ -5775,7 +4709,7 @@
                     "bootstrap.php"
                 ],
                 "psr-4": {
-                    "Symfony\\Polyfill\\Php83\\": ""
+                    "Symfony\\Polyfill\\Php80\\": ""
                 },
                 "classmap": [
                     "Resources/stubs"
@@ -5786,6 +4720,10 @@
                 "MIT"
             ],
             "authors": [
+                {
+                    "name": "Ion Bazan",
+                    "email": "ion.bazan@gmail.com"
+                },
                 {
                     "name": "Nicolas Grekas",
                     "email": "p@tchwork.com"
@@ -5795,7 +4733,7 @@
                     "homepage": "https://symfony.com/contributors"
                 }
             ],
-            "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+            "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
             "homepage": "https://symfony.com",
             "keywords": [
                 "compatibility",
@@ -5804,7 +4742,7 @@
                 "shim"
             ],
             "support": {
-                "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0"
+                "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
             },
             "funding": [
                 {
@@ -5820,7 +4758,7 @@
                     "type": "tidelift"
                 }
             ],
-            "time": "2023-08-16T06:22:46+00:00"
+            "time": "2023-01-26T09:26:14+00:00"
         },
         {
             "name": "symfony/routing",
@@ -6415,232 +5353,6 @@
             ],
             "time": "2023-11-21T18:54:41+00:00"
         },
-        {
-            "name": "voku/portable-ascii",
-            "version": "2.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/voku/portable-ascii.git",
-                "reference": "b56450eed252f6801410d810c8e1727224ae0743"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
-                "reference": "b56450eed252f6801410d810c8e1727224ae0743",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.0.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
-            },
-            "suggest": {
-                "ext-intl": "Use Intl for transliterator_transliterate() support"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "voku\\": "src/voku/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Lars Moelleken",
-                    "homepage": "http://www.moelleken.org/"
-                }
-            ],
-            "description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
-            "homepage": "https://github.com/voku/portable-ascii",
-            "keywords": [
-                "ascii",
-                "clean",
-                "php"
-            ],
-            "support": {
-                "issues": "https://github.com/voku/portable-ascii/issues",
-                "source": "https://github.com/voku/portable-ascii/tree/2.0.1"
-            },
-            "funding": [
-                {
-                    "url": "https://www.paypal.me/moelleken",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/voku",
-                    "type": "github"
-                },
-                {
-                    "url": "https://opencollective.com/portable-ascii",
-                    "type": "open_collective"
-                },
-                {
-                    "url": "https://www.patreon.com/voku",
-                    "type": "patreon"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2022-03-08T17:03:00+00:00"
-        },
-        {
-            "name": "voku/portable-utf8",
-            "version": "6.0.13",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/voku/portable-utf8.git",
-                "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/voku/portable-utf8/zipball/b8ce36bf26593e5c2e81b1850ef0ffb299d2043f",
-                "reference": "b8ce36bf26593e5c2e81b1850ef0ffb299d2043f",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.0.0",
-                "symfony/polyfill-iconv": "~1.0",
-                "symfony/polyfill-intl-grapheme": "~1.0",
-                "symfony/polyfill-intl-normalizer": "~1.0",
-                "symfony/polyfill-mbstring": "~1.0",
-                "symfony/polyfill-php72": "~1.0",
-                "voku/portable-ascii": "~2.0.0"
-            },
-            "require-dev": {
-                "phpstan/phpstan": "1.9.*@dev",
-                "phpstan/phpstan-strict-rules": "1.4.*@dev",
-                "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0",
-                "thecodingmachine/phpstan-strict-rules": "1.0.*@dev",
-                "voku/phpstan-rules": "3.1.*@dev"
-            },
-            "suggest": {
-                "ext-ctype": "Use Ctype for e.g. hexadecimal digit detection",
-                "ext-fileinfo": "Use Fileinfo for better binary file detection",
-                "ext-iconv": "Use iconv for best performance",
-                "ext-intl": "Use Intl for best performance",
-                "ext-json": "Use JSON for string detection",
-                "ext-mbstring": "Use Mbstring for best performance"
-            },
-            "type": "library",
-            "autoload": {
-                "files": [
-                    "bootstrap.php"
-                ],
-                "psr-4": {
-                    "voku\\": "src/voku/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "(Apache-2.0 or GPL-2.0)"
-            ],
-            "authors": [
-                {
-                    "name": "Nicolas Grekas",
-                    "email": "p@tchwork.com"
-                },
-                {
-                    "name": "Hamid Sarfraz",
-                    "homepage": "http://pageconfig.com/"
-                },
-                {
-                    "name": "Lars Moelleken",
-                    "homepage": "http://www.moelleken.org/"
-                }
-            ],
-            "description": "Portable UTF-8 library - performance optimized (unicode) string functions for php.",
-            "homepage": "https://github.com/voku/portable-utf8",
-            "keywords": [
-                "UTF",
-                "clean",
-                "php",
-                "unicode",
-                "utf-8",
-                "utf8"
-            ],
-            "support": {
-                "issues": "https://github.com/voku/portable-utf8/issues",
-                "source": "https://github.com/voku/portable-utf8/tree/6.0.13"
-            },
-            "funding": [
-                {
-                    "url": "https://www.paypal.me/moelleken",
-                    "type": "custom"
-                },
-                {
-                    "url": "https://github.com/voku",
-                    "type": "github"
-                },
-                {
-                    "url": "https://opencollective.com/portable-utf8",
-                    "type": "open_collective"
-                },
-                {
-                    "url": "https://www.patreon.com/voku",
-                    "type": "patreon"
-                },
-                {
-                    "url": "https://tidelift.com/funding/github/packagist/voku/portable-utf8",
-                    "type": "tidelift"
-                }
-            ],
-            "time": "2023-03-08T08:35:38+00:00"
-        },
-        {
-            "name": "wamania/php-stemmer",
-            "version": "v3.0.1",
-            "source": {
-                "type": "git",
-                "url": "https://github.com/wamania/php-stemmer.git",
-                "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66"
-            },
-            "dist": {
-                "type": "zip",
-                "url": "https://api.github.com/repos/wamania/php-stemmer/zipball/8ea32b6fa27d6888587fe860b64a8763525c5a66",
-                "reference": "8ea32b6fa27d6888587fe860b64a8763525c5a66",
-                "shasum": ""
-            },
-            "require": {
-                "php": ">=7.3",
-                "voku/portable-utf8": "^5.4|^6.0"
-            },
-            "require-dev": {
-                "phpunit/phpunit": "^9.0"
-            },
-            "type": "library",
-            "autoload": {
-                "psr-4": {
-                    "Wamania\\Snowball\\": "src/"
-                }
-            },
-            "notification-url": "https://packagist.org/downloads/",
-            "license": [
-                "MIT"
-            ],
-            "authors": [
-                {
-                    "name": "Wamania",
-                    "homepage": "http://wamania.com"
-                }
-            ],
-            "description": "Native PHP Stemmer",
-            "keywords": [
-                "php",
-                "porter",
-                "stemmer"
-            ],
-            "support": {
-                "issues": "https://github.com/wamania/php-stemmer/issues",
-                "source": "https://github.com/wamania/php-stemmer/tree/v3.0.1"
-            },
-            "time": "2023-05-11T10:50:27+00:00"
-        },
         {
             "name": "webmozart/assert",
             "version": "1.11.0",
diff --git a/src/ApplicationConfiguration.php b/src/ApplicationConfiguration.php
index bfc9d775..aa9b8308 100644
--- a/src/ApplicationConfiguration.php
+++ b/src/ApplicationConfiguration.php
@@ -6,6 +6,11 @@ namespace Distantmagic\Resonance;
 
 readonly class ApplicationConfiguration
 {
+    /**
+     * @param non-empty-string $esbuildMetafile
+     * @param non-empty-string $scheme
+     * @param non-empty-string $url
+     */
     public function __construct(
         public Environment $environment,
         public string $esbuildMetafile,
diff --git a/src/DatabaseConnectionPoolConfiguration.php b/src/DatabaseConnectionPoolConfiguration.php
index 4eed44a0..91a5374c 100644
--- a/src/DatabaseConnectionPoolConfiguration.php
+++ b/src/DatabaseConnectionPoolConfiguration.php
@@ -8,6 +8,10 @@ use SensitiveParameter;
 
 readonly class DatabaseConnectionPoolConfiguration
 {
+    /**
+     * @param non-empty-string $host
+     * @param non-empty-string $username
+     */
     public function __construct(
         #[SensitiveParameter]
         public string $database,
diff --git a/src/FrontMatterCollectionReference.php b/src/FrontMatterCollectionReference.php
index c835cf69..61e8cadf 100644
--- a/src/FrontMatterCollectionReference.php
+++ b/src/FrontMatterCollectionReference.php
@@ -6,6 +6,10 @@ namespace Distantmagic\Resonance;
 
 readonly class FrontMatterCollectionReference
 {
+    /**
+     * @param non-empty-string      $name
+     * @param null|non-empty-string $next
+     */
     public function __construct(
         public string $name,
         public ?string $next,
diff --git a/src/InputValidator/FrontMatterValidator.php b/src/InputValidator/FrontMatterValidator.php
index 627f9977..1206614b 100644
--- a/src/InputValidator/FrontMatterValidator.php
+++ b/src/InputValidator/FrontMatterValidator.php
@@ -14,15 +14,15 @@ use Generator;
 
 /**
  * @extends InputValidator<FrontMatter, object{
- *     collections: array<string|object{ name: string, next: string }>,
- *     content_type: string,
- *     description: string,
+ *     collections: array<non-empty-string|object{ name: non-empty-string, next: non-empty-string }>,
+ *     content_type: non-empty-string,
+ *     description: non-empty-string,
  *     draft: bool,
- *     next: null|string,
- *     layout: string,
- *     parent: null|string,
- *     register_stylesheets: array<string>,
- *     title: string,
+ *     next: null|non-empty-string,
+ *     layout: non-empty-string,
+ *     parent: null|non-empty-string,
+ *     register_stylesheets: array<non-empty-string>,
+ *     title: non-empty-string,
  * }>
  */
 #[Singleton]
@@ -121,7 +121,7 @@ readonly class FrontMatterValidator extends InputValidator
     }
 
     /**
-     * @param array<object{ name: string, next: string }|string> $collections
+     * @param array<non-empty-string|object{ name: non-empty-string, next: non-empty-string }> $collections
      *
      * @return Generator<FrontMatterCollectionReference>
      */
diff --git a/src/LlamaCppConfiguration.php b/src/LlamaCppConfiguration.php
index afdb15e8..c1ca0bd2 100644
--- a/src/LlamaCppConfiguration.php
+++ b/src/LlamaCppConfiguration.php
@@ -14,6 +14,10 @@ readonly class LlamaCppConfiguration
      * @psalm-taint-source system_secret $host
      * @psalm-taint-source system_secret $port
      * @psalm-taint-source system_secret $scheme
+     *
+     * @param null|non-empty-string $apiKey
+     * @param non-empty-string      $host
+     * @param non-empty-string      $scheme
      */
     public function __construct(
         #[SensitiveParameter]
diff --git a/src/OAuth2Configuration.php b/src/OAuth2Configuration.php
index d147d2b6..0bb234c1 100644
--- a/src/OAuth2Configuration.php
+++ b/src/OAuth2Configuration.php
@@ -9,6 +9,11 @@ use League\OAuth2\Server\CryptKey;
 
 readonly class OAuth2Configuration
 {
+    /**
+     * @param non-empty-string $sessionKeyAuthorizationRequest
+     * @param non-empty-string $sessionKeyPkce
+     * @param non-empty-string $sessionKeyState
+     */
     public function __construct(
         public Key $encryptionKey,
         public CryptKey $jwtSigningKeyPrivate,
diff --git a/src/OpenAPIConfiguration.php b/src/OpenAPIConfiguration.php
index 0f716d87..2e3930b6 100644
--- a/src/OpenAPIConfiguration.php
+++ b/src/OpenAPIConfiguration.php
@@ -6,6 +6,11 @@ namespace Distantmagic\Resonance;
 
 readonly class OpenAPIConfiguration
 {
+    /**
+     * @param non-empty-string $description
+     * @param non-empty-string $title
+     * @param non-empty-string $version
+     */
     public function __construct(
         public string $description,
         public string $title,
diff --git a/src/RedisConnectionPoolConfiguration.php b/src/RedisConnectionPoolConfiguration.php
index 8ef65152..e3cdc8e0 100644
--- a/src/RedisConnectionPoolConfiguration.php
+++ b/src/RedisConnectionPoolConfiguration.php
@@ -17,6 +17,9 @@ readonly class RedisConnectionPoolConfiguration
      * @psalm-taint-source system_secret $port
      * @psalm-taint-source system_secret $prefix
      * @psalm-taint-source system_secret $timeout
+     *
+     * @param non-empty-string $host
+     * @param non-empty-string $prefix
      */
     public function __construct(
         #[SensitiveParameter]
diff --git a/src/SQLiteVSSConfiguration.php b/src/SQLiteVSSConfiguration.php
index 8117fb76..10a9d868 100644
--- a/src/SQLiteVSSConfiguration.php
+++ b/src/SQLiteVSSConfiguration.php
@@ -8,6 +8,10 @@ use SensitiveParameter;
 
 readonly class SQLiteVSSConfiguration
 {
+    /**
+     * @param non-empty-string $extensionVector0
+     * @param non-empty-string $extensionVss0
+     */
     public function __construct(
         #[SensitiveParameter]
         public string $extensionVector0,
diff --git a/src/SessionConfiguration.php b/src/SessionConfiguration.php
index 3621ccf8..395327a7 100644
--- a/src/SessionConfiguration.php
+++ b/src/SessionConfiguration.php
@@ -6,6 +6,9 @@ namespace Distantmagic\Resonance;
 
 readonly class SessionConfiguration
 {
+    /**
+     * @param non-empty-string $cookieName
+     */
     public function __construct(
         public string $cookieName,
         public int $cookieLifespan,
diff --git a/src/SingletonProvider/ConfigurationProvider/ApplicationConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/ApplicationConfigurationProvider.php
index 0495bcc1..d3280e51 100644
--- a/src/SingletonProvider/ConfigurationProvider/ApplicationConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/ApplicationConfigurationProvider.php
@@ -9,13 +9,14 @@ use Distantmagic\Resonance\Attribute\Singleton;
 use Distantmagic\Resonance\Environment;
 use Distantmagic\Resonance\JsonSchema;
 use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
+use RuntimeException;
 
 /**
  * @template-extends ConfigurationProvider<ApplicationConfiguration, object{
  *     env: string,
- *     esbuild_metafile: string,
- *     scheme: string,
- *     url: string,
+ *     esbuild_metafile: non-empty-string,
+ *     scheme: non-empty-string,
+ *     url: non-empty-string,
  * }>
  */
 #[Singleton(provides: ApplicationConfiguration::class)]
@@ -57,11 +58,17 @@ final readonly class ApplicationConfigurationProvider extends ConfigurationProvi
 
     protected function provideConfiguration($validatedData): ApplicationConfiguration
     {
+        $url = rtrim($validatedData->url, '/');
+
+        if (empty($url)) {
+            throw new RuntimeException('URL cannot be an empty string');
+        }
+
         return new ApplicationConfiguration(
             environment: Environment::from($validatedData->env),
             esbuildMetafile: DM_ROOT.'/'.$validatedData->esbuild_metafile,
             scheme: $validatedData->scheme,
-            url: rtrim($validatedData->url, '/'),
+            url: $url,
         );
     }
 }
diff --git a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
index cceea18d..def66fcf 100644
--- a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php
@@ -17,14 +17,14 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
  *     array<string, object{
  *         database: string,
  *         driver: string,
- *         host: string,
+ *         host: non-empty-string,
  *         log_queries: bool,
  *         password: string,
  *         pool_prefill: bool,
  *         pool_size: int,
  *         port: int,
  *         unix_socket: string,
- *         username: string,
+ *         username: non-empty-string,
  *     }>
  * >
  */
diff --git a/src/SingletonProvider/ConfigurationProvider/LlamaCppConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/LlamaCppConfigurationProvider.php
index 8964da35..468f669d 100644
--- a/src/SingletonProvider/ConfigurationProvider/LlamaCppConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/LlamaCppConfigurationProvider.php
@@ -11,11 +11,11 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
 
 /**
  * @template-extends ConfigurationProvider<LlamaCppConfiguration, object{
- *     api_key: null|string,
+ *     api_key: null|non-empty-string,
  *     completion_token_timeout: float,
- *     host: string,
+ *     host: non-empty-string,
  *     port: int,
- *     scheme: string,
+ *     scheme: non-empty-string,
  * }>
  */
 #[Singleton(provides: LlamaCppConfiguration::class)]
diff --git a/src/SingletonProvider/ConfigurationProvider/OAuth2ConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/OAuth2ConfigurationProvider.php
index f5b45cd6..15340cc2 100644
--- a/src/SingletonProvider/ConfigurationProvider/OAuth2ConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/OAuth2ConfigurationProvider.php
@@ -16,13 +16,13 @@ use Swoole\Coroutine;
 
 /**
  * @template-extends ConfigurationProvider<OAuth2Configuration, object{
- *     encryption_key: string,
+ *     encryption_key: non-empty-string,
  *     jwt_signing_key_passphrase: null|string,
- *     jwt_signing_key_private: string,
- *     jwt_signing_key_public: string,
- *     session_key_authorization_request: string,
- *     session_key_pkce: string,
- *     session_key_state: string,
+ *     jwt_signing_key_private: non-empty-string,
+ *     jwt_signing_key_public: non-empty-string,
+ *     session_key_authorization_request: non-empty-string,
+ *     session_key_pkce: non-empty-string,
+ *     session_key_state: non-empty-string,
  * }>
  */
 #[Singleton(
diff --git a/src/SingletonProvider/ConfigurationProvider/OpenAPIConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/OpenAPIConfigurationProvider.php
index 9cf75ada..de82092d 100644
--- a/src/SingletonProvider/ConfigurationProvider/OpenAPIConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/OpenAPIConfigurationProvider.php
@@ -11,9 +11,9 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
 
 /**
  * @template-extends ConfigurationProvider<OpenAPIConfiguration, object{
- *     description: string,
- *     title: string,
- *     version: string,
+ *     description: non-empty-string,
+ *     title: non-empty-string,
+ *     version: non-empty-string,
  * }>
  */
 #[Singleton(provides: OpenAPIConfiguration::class)]
diff --git a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
index 9a93a514..5b562b22 100644
--- a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php
@@ -15,12 +15,12 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
  *     RedisConfiguration,
  *     array<string, object{
  *         db_index: int,
- *         host: string,
+ *         host: non-empty-string,
  *         password: string,
  *         pool_prefill: bool,
  *         pool_size: int,
  *         port: int,
- *         prefix: string,
+ *         prefix: non-empty-string,
  *         timeout: int,
  *     }>
  * >
diff --git a/src/SingletonProvider/ConfigurationProvider/SQLiteVSSConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/SQLiteVSSConfigurationProvider.php
index 65d02893..654f676b 100644
--- a/src/SingletonProvider/ConfigurationProvider/SQLiteVSSConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/SQLiteVSSConfigurationProvider.php
@@ -11,8 +11,8 @@ use Distantmagic\Resonance\SQLiteVSSConfiguration;
 
 /**
  * @template-extends ConfigurationProvider<SQLiteVSSConfiguration, object{
- *     extension_vector0: string,
- *     extension_vss0: string,
+ *     extension_vector0: non-empty-string,
+ *     extension_vss0: non-empty-string,
  * }>
  */
 #[Singleton(provides: SQLiteVSSConfiguration::class)]
diff --git a/src/SingletonProvider/ConfigurationProvider/SessionConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/SessionConfigurationProvider.php
index 7041902c..ec00d6eb 100644
--- a/src/SingletonProvider/ConfigurationProvider/SessionConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/SessionConfigurationProvider.php
@@ -15,7 +15,7 @@ use Distantmagic\Resonance\SingletonProvider\ConfigurationProvider;
 /**
  * @template-extends ConfigurationProvider<SessionConfiguration, object{
  *     cookie_lifespan: int,
- *     cookie_name: string,
+ *     cookie_name: non-empty-string,
  *     cookie_samesite: string,
  *     redis_connection_pool: string,
  * }>
diff --git a/src/SingletonProvider/ConfigurationProvider/StaticPageConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/StaticPageConfigurationProvider.php
index e1c354fe..38f90ebf 100644
--- a/src/SingletonProvider/ConfigurationProvider/StaticPageConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/StaticPageConfigurationProvider.php
@@ -11,11 +11,11 @@ use Distantmagic\Resonance\StaticPageConfiguration;
 
 /**
  * @template-extends ConfigurationProvider<StaticPageConfiguration, object{
- *     base_url: string,
- *     esbuild_metafile: string,
- *     input_directory: string,
- *     output_directory: string,
- *     sitemap: string,
+ *     base_url: non-empty-string,
+ *     esbuild_metafile: non-empty-string,
+ *     input_directory: non-empty-string,
+ *     output_directory: non-empty-string,
+ *     sitemap: non-empty-string,
  * }>
  */
 #[Singleton(provides: StaticPageConfiguration::class)]
diff --git a/src/SingletonProvider/ConfigurationProvider/SwooleConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/SwooleConfigurationProvider.php
index 83abf243..b060ba28 100644
--- a/src/SingletonProvider/ConfigurationProvider/SwooleConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/SwooleConfigurationProvider.php
@@ -11,12 +11,12 @@ use Distantmagic\Resonance\SwooleConfiguration;
 
 /**
  * @template-extends ConfigurationProvider<SwooleConfiguration, object{
- *     host: string,
- *     log_level: string,
+ *     host: non-empty-string,
+ *     log_level: non-empty-string,
  *     log_requests: boolean,
  *     port: int,
- *     ssl_cert_file: string,
- *     ssl_key_file: string,
+ *     ssl_cert_file: non-empty-string,
+ *     ssl_key_file: non-empty-string,
  * }>
  */
 #[Singleton(provides: SwooleConfiguration::class)]
diff --git a/src/SingletonProvider/ConfigurationProvider/TranslatorConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/TranslatorConfigurationProvider.php
index a3d15f89..87c4216a 100644
--- a/src/SingletonProvider/ConfigurationProvider/TranslatorConfigurationProvider.php
+++ b/src/SingletonProvider/ConfigurationProvider/TranslatorConfigurationProvider.php
@@ -11,8 +11,8 @@ use Distantmagic\Resonance\TranslatorConfiguration;
 
 /**
  * @template-extends ConfigurationProvider<TranslatorConfiguration, object{
- *     base_directory: string,
- *     default_primary_language: string,
+ *     base_directory: non-empty-string,
+ *     default_primary_language: non-empty-string,
  * }>
  */
 #[Singleton(provides: TranslatorConfiguration::class)]
diff --git a/src/StaticPageConfiguration.php b/src/StaticPageConfiguration.php
index 29e678e2..64b86192 100644
--- a/src/StaticPageConfiguration.php
+++ b/src/StaticPageConfiguration.php
@@ -12,6 +12,13 @@ readonly class StaticPageConfiguration
      * @psalm-taint-source file $esbuildMetafile
      * @psalm-taint-source file $outputDirectory
      * @psalm-taint-source file $sitemap
+     *
+     * @param non-empty-string $baseUrl
+     * @param non-empty-string $esbuildMetafile
+     * @param non-empty-string $inputDirectory
+     * @param non-empty-string $outputDirectory
+     * @param non-empty-string $sitemap
+     * @param non-empty-string $stripOutputPrefix
      */
     public function __construct(
         public string $baseUrl,
diff --git a/src/SwooleConfiguration.php b/src/SwooleConfiguration.php
index e312b8ad..75fd23fc 100644
--- a/src/SwooleConfiguration.php
+++ b/src/SwooleConfiguration.php
@@ -13,6 +13,10 @@ readonly class SwooleConfiguration
      * @psalm-taint-source file $sslKeyFile
      * @psalm-taint-source system_secret $host
      * @psalm-taint-source system_secret $port
+     *
+     * @param non-empty-string $host
+     * @param non-empty-string $sslCertFile
+     * @param non-empty-string $sslKeyFile
      */
     public function __construct(
         #[SensitiveParameter]
-- 
GitLab