From 02dc3a090e830fa630483c94eb5acf456e4c266a Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:13:12 -0400
Subject: [PATCH 01/22] feature(app): Implement `RoadRunner` stack.
---
.env | 9 -
.rr.yaml | 41 +
composer.json | 12 +-
composer.lock | 3280 ++++++++++++++-----
config/web/app.php | 9 +-
config/web/container.php | 37 +
config/web/modules.php | 7 +-
docker-compose.caddy.yml | 34 -
docker-compose.frankenphp.yml | 35 -
docker-compose.nginx.yml | 30 -
docker-compose.yml | 30 -
docker/apache/Dockerfile | 64 -
docker/apache/apache.conf | 234 --
docker/apache/vhost.conf | 71 -
docker/caddy/Caddyfile | 65 -
docker/caddy/Dockerfile | 85 -
docker/entrypoint.sh | 14 -
docker/frankenphp/Caddyfile | 62 -
docker/frankenphp/Dockerfile | 74 -
docker/init.sh | 107 -
docker/nginx/Dockerfile | 60 -
docker/nginx/default.conf | 94 -
docker/nginx/nginx.conf | 58 -
docker/php/php.ini | 23 -
docker/ssl/localhost-key.pem | 28 -
docker/ssl/localhost.pem | 26 -
docker/supervisor/conf.d/apache2.conf | 8 -
docker/supervisor/conf.d/caddy-php-fpm.conf | 21 -
docker/supervisor/conf.d/frankenphp.conf | 13 -
docker/supervisor/conf.d/nginx.conf | 12 -
docker/supervisor/conf.d/php-fpm.conf | 13 -
docker/supervisor/conf.d/queue.conf | 11 -
docker/supervisor/supervisord.conf | 14 -
web/index.php | 26 +-
34 files changed, 2519 insertions(+), 2188 deletions(-)
delete mode 100644 .env
create mode 100644 .rr.yaml
create mode 100644 config/web/container.php
delete mode 100644 docker-compose.caddy.yml
delete mode 100644 docker-compose.frankenphp.yml
delete mode 100644 docker-compose.nginx.yml
delete mode 100644 docker-compose.yml
delete mode 100644 docker/apache/Dockerfile
delete mode 100644 docker/apache/apache.conf
delete mode 100644 docker/apache/vhost.conf
delete mode 100644 docker/caddy/Caddyfile
delete mode 100644 docker/caddy/Dockerfile
delete mode 100644 docker/entrypoint.sh
delete mode 100644 docker/frankenphp/Caddyfile
delete mode 100644 docker/frankenphp/Dockerfile
delete mode 100644 docker/init.sh
delete mode 100644 docker/nginx/Dockerfile
delete mode 100644 docker/nginx/default.conf
delete mode 100644 docker/nginx/nginx.conf
delete mode 100644 docker/php/php.ini
delete mode 100644 docker/ssl/localhost-key.pem
delete mode 100644 docker/ssl/localhost.pem
delete mode 100644 docker/supervisor/conf.d/apache2.conf
delete mode 100644 docker/supervisor/conf.d/caddy-php-fpm.conf
delete mode 100644 docker/supervisor/conf.d/frankenphp.conf
delete mode 100644 docker/supervisor/conf.d/nginx.conf
delete mode 100644 docker/supervisor/conf.d/php-fpm.conf
delete mode 100644 docker/supervisor/conf.d/queue.conf
delete mode 100644 docker/supervisor/supervisord.conf
diff --git a/.env b/.env
deleted file mode 100644
index c5a03a1..0000000
--- a/.env
+++ /dev/null
@@ -1,9 +0,0 @@
-# === SYSTEM CONFIGURATION ===
-USER_ID=1000
-GROUP_ID=1000
-USER_NAME=www-data
-GROUP_NAME=www-data
-
-# === YII2 APPLICATION ===
-YII_DEBUG=true
-YII_ENV=dev
diff --git a/.rr.yaml b/.rr.yaml
new file mode 100644
index 0000000..d8ed716
--- /dev/null
+++ b/.rr.yaml
@@ -0,0 +1,41 @@
+version: '3'
+rpc:
+ listen: 'tcp://127.0.0.1:6001'
+server:
+ command: 'php web/index.php'
+ relay: pipes
+ env:
+ YII_DEBUG: true
+ YII_ENV: dev
+http:
+ address: '0.0.0.0:8080'
+
+ headers:
+ response:
+ "Cache-Control": "no-cache"
+
+ middleware:
+ - static # serve files first
+ - gzip # compress dynamic output
+
+ static:
+ dir: web
+ forbid:
+ - .php
+ - .htaccess
+ pool:
+ num_workers: 1
+ supervisor:
+ max_worker_memory: 100
+jobs:
+ pool:
+ num_workers: 2
+ max_worker_memory: 100
+ consume: { }
+kv:
+ local:
+ driver: memory
+ config:
+ interval: 60
+metrics:
+ address: '127.0.0.1:2112'
diff --git a/composer.json b/composer.json
index c96046c..63ce1e8 100644
--- a/composer.json
+++ b/composer.json
@@ -3,20 +3,24 @@
"type": "project",
"description": "Web Application Basic",
"keywords": [
+ "yii2-extensions",
"application",
"basic",
+ "road-runner",
"web",
- "yii2"
+ "worker"
],
+ "minimum-stability": "dev",
"license": "BSD-3-Clause",
"require": {
"php": ">=8.1",
+ "httpsoft/http-message": "^1.0",
"php-forge/foxy": "^0.1",
"ui-awesome/html-svg":"^0.2",
- "vlucas/phpdotenv": "^5.6",
"yiisoft/yii2": "^2.0.53|^22",
"yiisoft/yii2-bootstrap5": "^2.0.50|^22",
- "yiisoft/yii2-symfonymailer": "^4.0|^22"
+ "yiisoft/yii2-symfonymailer": "^4.0|^22",
+ "yii2-extensions/road-runner": "^0.1.0@dev"
},
"require-dev": {
"codeception/c3": "^2.8",
@@ -35,7 +39,7 @@
"symfony/process": "^6.3",
"symplify/easy-coding-standard": "^12.3",
"yii2-extensions/phpstan": "^0.3.0",
- "yiisoft/yii2-debug": "^2.1.27|^22",
+ "yii2-extensions/worker-debug": "^0.1",
"yiisoft/yii2-gii": "^2.2.7|^22"
},
"autoload": {
diff --git a/composer.lock b/composer.lock
index 4395466..cf9c854 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "79369565fba8387bdaacddb16fe6a3d3",
+ "content-hash": "30d51f9fb22622acb6c5e3f4ddb0d2bd",
"packages": [
{
"name": "cebe/markdown",
- "version": "1.2.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/cebe/markdown.git",
- "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86"
+ "reference": "2b2461bed9e15305486319ee552bafca75d1cdaa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/cebe/markdown/zipball/9bac5e971dd391e2802dca5400bbeacbaea9eb86",
- "reference": "9bac5e971dd391e2802dca5400bbeacbaea9eb86",
+ "url": "https://api.github.com/repos/cebe/markdown/zipball/2b2461bed9e15305486319ee552bafca75d1cdaa",
+ "reference": "2b2461bed9e15305486319ee552bafca75d1cdaa",
"shasum": ""
},
"require": {
@@ -29,6 +29,7 @@
"facebook/xhprof": "*@dev",
"phpunit/phpunit": "4.1.*"
},
+ "default-branch": true,
"bin": [
"bin/markdown"
],
@@ -68,11 +69,11 @@
"issues": "https://github.com/cebe/markdown/issues",
"source": "https://github.com/cebe/markdown"
},
- "time": "2018-03-26T11:24:36+00:00"
+ "time": "2020-02-26T01:55:18+00:00"
},
{
"name": "composer/ca-bundle",
- "version": "1.5.8",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/ca-bundle.git",
@@ -95,6 +96,7 @@
"psr/log": "^1.0 || ^2.0 || ^3.0",
"symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -144,7 +146,7 @@
},
{
"name": "composer/class-map-generator",
- "version": "1.6.2",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/class-map-generator.git",
@@ -169,6 +171,7 @@
"phpunit/phpunit": "^8",
"symfony/filesystem": "^5.4 || ^6"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -213,23 +216,23 @@
},
{
"name": "composer/composer",
- "version": "2.8.11",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/composer.git",
- "reference": "00e1a3396eea67033775c4a49c772376f45acd73"
+ "reference": "b88968cf6ad5098de2d5510e42216c4d912940cc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/composer/zipball/00e1a3396eea67033775c4a49c772376f45acd73",
- "reference": "00e1a3396eea67033775c4a49c772376f45acd73",
+ "url": "https://api.github.com/repos/composer/composer/zipball/b88968cf6ad5098de2d5510e42216c4d912940cc",
+ "reference": "b88968cf6ad5098de2d5510e42216c4d912940cc",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.5",
"composer/class-map-generator": "^1.4.0",
"composer/metadata-minifier": "^1.0",
- "composer/pcre": "^2.2 || ^3.2",
+ "composer/pcre": "^2.3 || ^3.3",
"composer/semver": "^3.3",
"composer/spdx-licenses": "^1.5.7",
"composer/xdebug-handler": "^2.0.2 || ^3.0.3",
@@ -240,13 +243,13 @@
"seld/jsonlint": "^1.4",
"seld/phar-utils": "^1.2",
"seld/signal-handler": "^2.0",
- "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3",
- "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3",
+ "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0",
+ "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0",
+ "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0",
"symfony/polyfill-php73": "^1.24",
"symfony/polyfill-php80": "^1.24",
"symfony/polyfill-php81": "^1.24",
- "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3"
+ "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.11.8",
@@ -254,13 +257,14 @@
"phpstan/phpstan-phpunit": "^1.4.0",
"phpstan/phpstan-strict-rules": "^1.6.0",
"phpstan/phpstan-symfony": "^1.4.0",
- "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1"
+ "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1 || ^8.0"
},
"suggest": {
"ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages",
"ext-zip": "Enabling the zip extension allows you to unzip archives",
"ext-zlib": "Allow gzip compression of HTTP requests"
},
+ "default-branch": true,
"bin": [
"bin/composer"
],
@@ -272,7 +276,7 @@
]
},
"branch-alias": {
- "dev-main": "2.8-dev"
+ "dev-main": "2.9-dev"
}
},
"autoload": {
@@ -307,7 +311,7 @@
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/composer/issues",
"security": "https://github.com/composer/composer/security/policy",
- "source": "https://github.com/composer/composer/tree/2.8.11"
+ "source": "https://github.com/composer/composer/tree/main"
},
"funding": [
{
@@ -319,20 +323,20 @@
"type": "github"
}
],
- "time": "2025-08-21T09:29:39+00:00"
+ "time": "2025-08-27T20:54:37+00:00"
},
{
"name": "composer/metadata-minifier",
- "version": "1.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/metadata-minifier.git",
- "reference": "c549d23829536f0d0e984aaabbf02af91f443207"
+ "reference": "0a38292ff395f3716454613e3a6c6eaa422456c8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207",
- "reference": "c549d23829536f0d0e984aaabbf02af91f443207",
+ "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/0a38292ff395f3716454613e3a6c6eaa422456c8",
+ "reference": "0a38292ff395f3716454613e3a6c6eaa422456c8",
"shasum": ""
},
"require": {
@@ -340,9 +344,10 @@
},
"require-dev": {
"composer/composer": "^2",
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1",
+ "symfony/phpunit-bridge": "^4.2 || ^5 || ^6 || ^7"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -372,7 +377,7 @@
],
"support": {
"issues": "https://github.com/composer/metadata-minifier/issues",
- "source": "https://github.com/composer/metadata-minifier/tree/1.0.0"
+ "source": "https://github.com/composer/metadata-minifier/tree/main"
},
"funding": [
{
@@ -388,20 +393,20 @@
"type": "tidelift"
}
],
- "time": "2021-04-07T13:37:33+00:00"
+ "time": "2025-02-17T12:51:19+00:00"
},
{
"name": "composer/pcre",
- "version": "3.3.2",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
+ "reference": "fadb6382c5d62e4e59ca45a4e77d3a356b40c594"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
- "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/fadb6382c5d62e4e59ca45a4e77d3a356b40c594",
+ "reference": "fadb6382c5d62e4e59ca45a4e77d3a356b40c594",
"shasum": ""
},
"require": {
@@ -412,9 +417,11 @@
},
"require-dev": {
"phpstan/phpstan": "^1.12 || ^2",
+ "phpstan/phpstan-deprecation-rules": "^1 || ^2",
"phpstan/phpstan-strict-rules": "^1 || ^2",
"phpunit/phpunit": "^8 || ^9"
},
+ "default-branch": true,
"type": "library",
"extra": {
"phpstan": {
@@ -451,7 +458,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.3.2"
+ "source": "https://github.com/composer/pcre/tree/main"
},
"funding": [
{
@@ -461,17 +468,13 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-11-12T16:29:46+00:00"
+ "time": "2025-05-28T08:54:55+00:00"
},
{
"name": "composer/semver",
- "version": "3.4.4",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
@@ -490,6 +493,7 @@
"phpstan/phpstan": "^1.11",
"symfony/phpunit-bridge": "^3 || ^7"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -548,7 +552,7 @@
},
{
"name": "composer/spdx-licenses",
- "version": "1.5.9",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/composer/spdx-licenses.git",
@@ -567,6 +571,7 @@
"phpstan/phpstan": "^1.11",
"symfony/phpunit-bridge": "^3 || ^7"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -694,16 +699,16 @@
},
{
"name": "doctrine/lexer",
- "version": "3.0.1",
+ "version": "3.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
+ "reference": "042e47e28c5e03f1cf6772fdf3dd4e0785433e05"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
- "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/042e47e28c5e03f1cf6772fdf3dd4e0785433e05",
+ "reference": "042e47e28c5e03f1cf6772fdf3dd4e0785433e05",
"shasum": ""
},
"require": {
@@ -751,7 +756,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/3.0.1"
+ "source": "https://github.com/doctrine/lexer/tree/3.1.x"
},
"funding": [
{
@@ -767,11 +772,11 @@
"type": "tidelift"
}
],
- "time": "2024-02-05T11:56:58+00:00"
+ "time": "2024-07-29T08:29:21+00:00"
},
{
"name": "egulias/email-validator",
- "version": "4.0.4",
+ "version": "4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/egulias/EmailValidator.git",
@@ -795,6 +800,7 @@
"suggest": {
"ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -943,30 +949,85 @@
"time": "2024-11-01T03:51:45+00:00"
},
{
- "name": "graham-campbell/result-type",
- "version": "v1.1.3",
+ "name": "google/protobuf",
+ "version": "v4.32.0",
"source": {
"type": "git",
- "url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "3ba905c11371512af9d9bdd27d99b782216b6945"
+ "url": "https://github.com/protocolbuffers/protobuf-php.git",
+ "reference": "9a9a92ecbe9c671dc1863f6d4a91ea3ea12c8646"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/3ba905c11371512af9d9bdd27d99b782216b6945",
- "reference": "3ba905c11371512af9d9bdd27d99b782216b6945",
+ "url": "https://api.github.com/repos/protocolbuffers/protobuf-php/zipball/9a9a92ecbe9c671dc1863f6d4a91ea3ea12c8646",
+ "reference": "9a9a92ecbe9c671dc1863f6d4a91ea3ea12c8646",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.3"
+ "php": ">=8.1.0"
+ },
+ "provide": {
+ "ext-protobuf": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": ">=5.0.0 <8.5.27"
+ },
+ "suggest": {
+ "ext-bcmath": "Need to support JSON deserialization"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Google\\Protobuf\\": "src/Google/Protobuf",
+ "GPBMetadata\\Google\\Protobuf\\": "src/GPBMetadata/Google/Protobuf"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "proto library for PHP",
+ "homepage": "https://developers.google.com/protocol-buffers/",
+ "keywords": [
+ "proto"
+ ],
+ "support": {
+ "source": "https://github.com/protocolbuffers/protobuf-php/tree/v4.32.0"
+ },
+ "time": "2025-08-14T20:00:33+00:00"
+ },
+ {
+ "name": "httpsoft/http-message",
+ "version": "1.1.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/httpsoft/http-message.git",
+ "reference": "f6c88e2189b9f75f10dfaeb0a85c56ea04a53c19"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/httpsoft/http-message/zipball/f6c88e2189b9f75f10dfaeb0a85c56ea04a53c19",
+ "reference": "f6c88e2189b9f75f10dfaeb0a85c56ea04a53c19",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4|^8.0",
+ "psr/http-factory": "^1.0",
+ "psr/http-message": "^1.1|^2.0"
+ },
+ "provide": {
+ "psr/http-factory-implementation": "1.0",
+ "psr/http-message-implementation": "1.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.39 || ^9.6.20 || ^10.5.28"
+ "php-http/psr7-integration-tests": "^1.3",
+ "phpunit/phpunit": "^9.5",
+ "squizlabs/php_codesniffer": "^3.7",
+ "vimeo/psalm": "^4.9|^5.2"
},
"type": "library",
"autoload": {
"psr-4": {
- "GrahamCampbell\\ResultType\\": "src/"
+ "HttpSoft\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -975,38 +1036,31 @@
],
"authors": [
{
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
+ "name": "Evgeniy Zyubin",
+ "email": "mail@devanych.ru",
+ "homepage": "https://devanych.ru/",
+ "role": "Founder and lead developer"
}
],
- "description": "An Implementation Of The Result Type",
+ "description": "Strict and fast implementation of PSR-7 and PSR-17",
+ "homepage": "https://httpsoft.org/",
"keywords": [
- "Graham Campbell",
- "GrahamCampbell",
- "Result Type",
- "Result-Type",
- "result"
+ "http",
+ "http-message",
+ "php",
+ "psr-17",
+ "psr-7"
],
"support": {
- "issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.3"
+ "docs": "https://httpsoft.org/docs/message",
+ "issues": "https://github.com/httpsoft/http-message/issues",
+ "source": "https://github.com/httpsoft/http-message"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type",
- "type": "tidelift"
- }
- ],
- "time": "2024-07-20T21:45:45+00:00"
+ "time": "2024-08-09T07:13:21+00:00"
},
{
"name": "justinrainbow/json-schema",
- "version": "6.5.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/jsonrainbow/json-schema.git",
@@ -1031,6 +1085,7 @@
"phpstan/phpstan": "^1.12",
"phpunit/phpunit": "^8.5"
},
+ "default-branch": true,
"bin": [
"bin/validate-json"
],
@@ -1081,7 +1136,7 @@
},
{
"name": "marc-mabe/php-enum",
- "version": "v4.7.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/marc-mabe/php-enum.git",
@@ -1103,6 +1158,7 @@
"phpunit/phpunit": "^7.5.20 | ^8.5.22 | ^9.5.11",
"vimeo/psalm": "^4.17.0 | ^5.26.1"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1275,97 +1331,182 @@
"time": "2025-03-13T13:03:07+00:00"
},
{
- "name": "phpoption/phpoption",
- "version": "1.9.4",
+ "name": "psr/container",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/schmittjoh/php-option.git",
- "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d"
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "707984727bd5b2b670e59559d3ed2500240cf875"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
- "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/707984727bd5b2b670e59559d3ed2500240cf875",
+ "reference": "707984727bd5b2b670e59559d3ed2500240cf875",
"shasum": ""
},
"require": {
- "php": "^7.2.5 || ^8.0"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34"
+ "php": ">=7.4.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- },
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "PhpOption\\": "src/PhpOption/"
+ "Psr\\Container\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "Apache-2.0"
+ "MIT"
],
"authors": [
{
- "name": "Johannes M. Schmitt",
- "email": "schmittjoh@gmail.com",
- "homepage": "https://github.com/schmittjoh"
- },
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Option Type for PHP",
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
"keywords": [
- "language",
- "option",
- "php",
- "type"
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
],
"support": {
- "issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.4"
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container"
},
- "funding": [
+ "time": "2023-09-22T11:11:30+00:00"
+ },
+ {
+ "name": "psr/event-dispatcher",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/event-dispatcher.git",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\EventDispatcher\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
{
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Standard interfaces for event handling.",
+ "keywords": [
+ "events",
+ "psr",
+ "psr-14"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/event-dispatcher/issues",
+ "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ },
+ "time": "2019-01-08T18:20:26+00:00"
+ },
+ {
+ "name": "psr/http-factory",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1",
+ "psr/http-message": "^1.0 || ^2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
{
- "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption",
- "type": "tidelift"
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
}
],
- "time": "2025-08-21T11:53:16+00:00"
+ "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory"
+ },
+ "time": "2024-04-15T12:06:14+00:00"
},
{
- "name": "psr/container",
- "version": "2.0.2",
+ "name": "psr/http-message",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
- "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
"shasum": ""
},
"require": {
- "php": ">=7.4.0"
+ "php": "^7.2 || ^8.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1374,7 +1515,7 @@
},
"autoload": {
"psr-4": {
- "Psr\\Container\\": "src/"
+ "Psr\\Http\\Message\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1387,38 +1528,40 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
"keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
],
"support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/2.0.2"
+ "source": "https://github.com/php-fig/http-message/tree/2.0"
},
- "time": "2021-11-05T16:47:00+00:00"
+ "time": "2023-04-04T09:54:51+00:00"
},
{
- "name": "psr/event-dispatcher",
- "version": "1.0.0",
+ "name": "psr/http-server-handler",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/event-dispatcher.git",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0"
+ "url": "https://github.com/php-fig/http-server-handler.git",
+ "reference": "13403d43196ab3382d0a4ca28be32984282641f9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0",
- "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0",
+ "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/13403d43196ab3382d0a4ca28be32984282641f9",
+ "reference": "13403d43196ab3382d0a4ca28be32984282641f9",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=7.0",
+ "psr/http-message": "^1.0 || ^2.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1427,7 +1570,7 @@
},
"autoload": {
"psr-4": {
- "Psr\\EventDispatcher\\": "src/"
+ "Psr\\Http\\Server\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1437,24 +1580,29 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
- "description": "Standard interfaces for event handling.",
+ "description": "Common interface for HTTP server-side request handler",
"keywords": [
- "events",
+ "handler",
+ "http",
+ "http-interop",
"psr",
- "psr-14"
+ "psr-15",
+ "psr-7",
+ "request",
+ "response",
+ "server"
],
"support": {
- "issues": "https://github.com/php-fig/event-dispatcher/issues",
- "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0"
+ "source": "https://github.com/php-fig/http-server-handler"
},
- "time": "2019-01-08T18:20:26+00:00"
+ "time": "2023-11-16T18:17:39+00:00"
},
{
"name": "psr/log",
- "version": "3.0.2",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
@@ -1469,6 +1617,7 @@
"require": {
"php": ">=8.0.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1504,7 +1653,7 @@
},
{
"name": "react/promise",
- "version": "v3.3.0",
+ "version": "3.x-dev",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
@@ -1523,6 +1672,7 @@
"phpstan/phpstan": "1.12.28 || 1.4.10",
"phpunit/phpunit": "^9.6 || ^7.5"
},
+ "default-branch": true,
"type": "library",
"autoload": {
"files": [
@@ -1576,33 +1726,883 @@
"time": "2025-08-19T18:57:03+00:00"
},
{
- "name": "seld/jsonlint",
- "version": "1.11.0",
+ "name": "roadrunner-php/roadrunner-api-dto",
+ "version": "1.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/jsonlint.git",
- "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2"
+ "url": "https://github.com/roadrunner-php/roadrunner-api-dto.git",
+ "reference": "8a683f5057005bef742916847c0befbf9a00c543"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2",
- "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2",
+ "url": "https://api.github.com/repos/roadrunner-php/roadrunner-api-dto/zipball/8a683f5057005bef742916847c0befbf9a00c543",
+ "reference": "8a683f5057005bef742916847c0befbf9a00c543",
+ "shasum": ""
+ },
+ "require": {
+ "google/protobuf": "^4.31.1",
+ "php": "^8.1"
+ },
+ "conflict": {
+ "temporal/sdk": "<2.9.0"
+ },
+ "suggest": {
+ "google/common-protos": "Required for Temporal API"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Temporal\\": "generated/Temporal",
+ "RoadRunner\\": "generated/RoadRunner",
+ "GPBMetadata\\": "generated/GPBMetadata"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors"
+ }
+ ],
+ "description": "RoadRunner PHP API",
+ "homepage": "https://roadrunner.dev",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://docs.roadrunner.dev",
+ "forum": "https://forum.roadrunner.dev",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-php/roadrunner-api-dto/tree/v1.13.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/roadrunner-server",
+ "type": "github"
+ }
+ ],
+ "time": "2025-08-12T14:04:38+00:00"
+ },
+ {
+ "name": "seld/jsonlint",
+ "version": "1.11.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/jsonlint.git",
+ "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2",
+ "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2",
"shasum": ""
},
"require": {
"php": "^5.3 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.11",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13"
+ "phpstan/phpstan": "^1.11",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13"
+ },
+ "bin": [
+ "bin/jsonlint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "https://seld.be"
+ }
+ ],
+ "description": "JSON Linter",
+ "keywords": [
+ "json",
+ "linter",
+ "parser",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/jsonlint/issues",
+ "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-07-11T14:55:45+00:00"
+ },
+ {
+ "name": "seld/phar-utils",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/phar-utils.git",
+ "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c",
+ "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\PharUtils\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "PHAR file format utilities, for when PHP phars you up",
+ "keywords": [
+ "phar"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/phar-utils/issues",
+ "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1"
+ },
+ "time": "2022-08-31T10:31:18+00:00"
+ },
+ {
+ "name": "seld/signal-handler",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/signal-handler.git",
+ "reference": "606a192bf4783dd811b906e4a64b0866d16e61a9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/606a192bf4783dd811b906e4a64b0866d16e61a9",
+ "reference": "606a192bf4783dd811b906e4a64b0866d16e61a9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.11.11",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpstan/phpstan-phpunit": "^1.4",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "^8.5.38 || ^9.6.20",
+ "psr/log": "^1.1.4 || ^2 || ^3"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Seld\\Signal\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development",
+ "keywords": [
+ "posix",
+ "sigint",
+ "signal",
+ "sigterm",
+ "unix"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/signal-handler/issues",
+ "source": "https://github.com/Seldaek/signal-handler/tree/main"
+ },
+ "time": "2024-08-23T08:24:29+00:00"
+ },
+ {
+ "name": "spiral/core",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spiral/core.git",
+ "reference": "b89418ad62b3f68cf14e2e58f64f5f096bd9c7ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spiral/core/zipball/b89418ad62b3f68cf14e2e58f64f5f096bd9c7ba",
+ "reference": "b89418ad62b3f68cf14e2e58f64f5f096bd9c7ba",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
+ "spiral/security": "^3.16"
+ },
+ "provide": {
+ "psr/container-implementation": "^1.1|^2.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.6.12",
+ "phpunit/phpunit": "^10.5.41",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spiral\\Core\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ }
+ ],
+ "description": "IoC container, IoC scopes, factory, memory, configuration interfaces",
+ "homepage": "https://spiral.dev",
+ "support": {
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/core"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:13:14+00:00"
+ },
+ {
+ "name": "spiral/goridge",
+ "version": "4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roadrunner-php/goridge.git",
+ "reference": "2a372118dac1f0c0511e2862f963ce649fefd9fa"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roadrunner-php/goridge/zipball/2a372118dac1f0c0511e2862f963ce649fefd9fa",
+ "reference": "2a372118dac1f0c0511e2862f963ce649fefd9fa",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-sockets": "*",
+ "php": ">=8.1",
+ "spiral/roadrunner": "^2023 || ^2024.1 || ^2025.1"
+ },
+ "require-dev": {
+ "google/protobuf": "^3.22 || ^4.0",
+ "infection/infection": "^0.29.0",
+ "jetbrains/phpstorm-attributes": "^1.0",
+ "phpunit/phpunit": "^10.5.45",
+ "rybakit/msgpack": "^0.7",
+ "spiral/code-style": "*",
+ "vimeo/psalm": "^6.0"
+ },
+ "suggest": {
+ "ext-msgpack": "MessagePack codec support",
+ "ext-protobuf": "Protobuf codec support",
+ "google/protobuf": "(^3.0) Protobuf codec support",
+ "rybakit/msgpack": "(^0.7) MessagePack codec support"
+ },
+ "default-branch": true,
+ "type": "goridge",
+ "autoload": {
+ "psr-4": {
+ "Spiral\\Goridge\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Valery Piashchynski",
+ "homepage": "https://github.com/rustatian"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "homepage": "https://github.com/roxblnfk"
+ },
+ {
+ "name": "Pavel Buchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors"
+ }
+ ],
+ "description": "High-performance PHP-to-Golang RPC bridge",
+ "homepage": "https://spiral.dev/",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://docs.roadrunner.dev",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-php/goridge/tree/4.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/roadrunner-server",
+ "type": "github"
+ }
+ ],
+ "time": "2025-05-05T13:55:33+00:00"
+ },
+ {
+ "name": "spiral/hmvc",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spiral/hmvc.git",
+ "reference": "3f09459c1fb1a546edcacc8b7502d33d93cfa6c4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spiral/hmvc/zipball/3f09459c1fb1a546edcacc8b7502d33d93cfa6c4",
+ "reference": "3f09459c1fb1a546edcacc8b7502d33d93cfa6c4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1.0",
+ "spiral/core": "^3.16",
+ "spiral/interceptors": "^3.16"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.5.41",
+ "spiral/testing": "^2.8.3",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spiral\\Core\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ }
+ ],
+ "description": "HMVC Core and Controllers",
+ "homepage": "https://spiral.dev",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://spiral.dev/docs",
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/hmvc"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:13:09+00:00"
+ },
+ {
+ "name": "spiral/interceptors",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spiral/interceptors.git",
+ "reference": "2676b3cbc3505aba5ff29ec08bf85345f0b8c6ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spiral/interceptors/zipball/2676b3cbc3505aba5ff29ec08bf85345f0b8c6ac",
+ "reference": "2676b3cbc3505aba5ff29ec08bf85345f0b8c6ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/event-dispatcher": "^1.0",
+ "spiral/core": "^3.16"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^10.5.41",
+ "spiral/testing": "^2.8.3",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spiral\\Interceptors\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ }
+ ],
+ "description": "Spiral Interceptors",
+ "homepage": "https://spiral.dev",
+ "keywords": [
+ "aop",
+ "interceptors",
+ "spiral"
+ ],
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://spiral.dev/docs",
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/interceptors"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:09:07+00:00"
+ },
+ {
+ "name": "spiral/logger",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spiral/logger.git",
+ "reference": "ac6b019f9157d83a6fbe9a16ee312b5c6994cbd7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spiral/logger/zipball/ac6b019f9157d83a6fbe9a16ee312b5c6994cbd7",
+ "reference": "ac6b019f9157d83a6fbe9a16ee312b5c6994cbd7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/log": "1 - 3",
+ "spiral/core": "^3.16"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.6.12",
+ "phpunit/phpunit": "^10.5.41",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.16.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Spiral\\Logger\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ }
+ ],
+ "description": "LogFactory and global log listeners",
+ "homepage": "https://spiral.dev",
+ "support": {
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/logger"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:12:17+00:00"
+ },
+ {
+ "name": "spiral/roadrunner",
+ "version": "v2025.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roadrunner-server/roadrunner.git",
+ "reference": "885c7087efa77380d5109901cf0a4888f611294b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roadrunner-server/roadrunner/zipball/885c7087efa77380d5109901cf0a4888f611294b",
+ "reference": "885c7087efa77380d5109901cf0a4888f611294b",
+ "shasum": ""
+ },
+ "type": "metapackage",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov / Wolfy-J",
+ "email": "wolfy.jd@gmail.com"
+ },
+ {
+ "name": "Valery Piashchynski",
+ "homepage": "https://github.com/rustatian"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors"
+ }
+ ],
+ "description": "RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins",
+ "homepage": "https://roadrunner.dev/",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://roadrunner.dev/docs",
+ "forum": "https://forum.roadrunner.dev/",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-server/roadrunner/tree/v2025.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/roadrunner-server",
+ "type": "github"
+ }
+ ],
+ "time": "2025-06-14T22:21:13+00:00"
+ },
+ {
+ "name": "spiral/roadrunner-cli",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roadrunner-php/cli.git",
+ "reference": "a51ff873654744821437e76406df7b6a0d4dbfe1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roadrunner-php/cli/zipball/a51ff873654744821437e76406df7b6a0d4dbfe1",
+ "reference": "a51ff873654744821437e76406df7b6a0d4dbfe1",
+ "shasum": ""
+ },
+ "require": {
+ "composer/semver": "^3.4",
+ "ext-json": "*",
+ "php": ">=8.1",
+ "spiral/roadrunner-worker": "^2 || ^3",
+ "spiral/tokenizer": "^2.13 || ^3.15",
+ "symfony/console": "^5.3 || ^6.0 || ^7.0",
+ "symfony/http-client": "^4.4.51 || ^5.4.49 || ^6.4.17 || ^7.2",
+ "symfony/yaml": "^5.4.49 || ^6.4.17 || ^7.2"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "^1.2",
+ "spiral/code-style": "^2.2.2",
+ "spiral/dumper": "^3.3",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
+ "bin": [
+ "bin/rr"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spiral\\RoadRunner\\Console\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/spiral/roadrunner/graphs/contributors"
+ }
+ ],
+ "description": "RoadRunner: Command Line Interface",
+ "homepage": "https://roadrunner.dev",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://docs.roadrunner.dev",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-php/cli/tree/v2.7.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/roadrunner-server",
+ "type": "github"
+ }
+ ],
+ "time": "2025-02-18T12:24:20+00:00"
+ },
+ {
+ "name": "spiral/roadrunner-http",
+ "version": "3.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roadrunner-php/http.git",
+ "reference": "c00ab7afd289df7a6b49f9ef07ce57dcb8020df1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roadrunner-php/http/zipball/c00ab7afd289df7a6b49f9ef07ce57dcb8020df1",
+ "reference": "c00ab7afd289df7a6b49f9ef07ce57dcb8020df1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": ">=8.1",
+ "psr/http-factory": "^1.0.1",
+ "psr/http-message": "^1.0.1 || ^2.0",
+ "roadrunner-php/roadrunner-api-dto": "^1.6",
+ "spiral/roadrunner": "^2023.3 || ^2024.1 || ^2025.1",
+ "spiral/roadrunner-worker": "^3.5",
+ "symfony/polyfill-php83": "^1.29"
+ },
+ "require-dev": {
+ "jetbrains/phpstorm-attributes": "^1.0",
+ "nyholm/psr7": "^1.3",
+ "phpunit/phpunit": "^10.0",
+ "symfony/process": "^6.2 || ^7.0",
+ "vimeo/psalm": "^5.9"
+ },
+ "suggest": {
+ "ext-protobuf": "Provides Protocol Buffers support. Without it, performance will be lower.",
+ "spiral/roadrunner-cli": "Provides RoadRunner installation and management CLI tools"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spiral\\RoadRunner\\Http\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Valery Piashchynski",
+ "homepage": "https://github.com/rustatian"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "homepage": "https://github.com/roxblnfk"
+ },
+ {
+ "name": "Pavel Buchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors"
+ }
+ ],
+ "description": "RoadRunner: HTTP and PSR-7 worker",
+ "homepage": "https://spiral.dev/",
+ "support": {
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://docs.roadrunner.dev",
+ "forum": "https://forum.roadrunner.dev/",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-php/http/tree/v3.5.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/roadrunner-server",
+ "type": "github"
+ }
+ ],
+ "time": "2025-05-13T09:40:10+00:00"
+ },
+ {
+ "name": "spiral/roadrunner-worker",
+ "version": "3.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/roadrunner-php/worker.git",
+ "reference": "8d9905b1e6677f34ff8623893f35b5e2fa828e37"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/roadrunner-php/worker/zipball/8d9905b1e6677f34ff8623893f35b5e2fa828e37",
+ "reference": "8d9905b1e6677f34ff8623893f35b5e2fa828e37",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.0",
+ "ext-json": "*",
+ "ext-sockets": "*",
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0",
+ "spiral/goridge": "^4.1.0",
+ "spiral/roadrunner": "^2023.1 || ^2024.1 || ^2025.1"
+ },
+ "require-dev": {
+ "buggregator/trap": "^1.13",
+ "jetbrains/phpstorm-attributes": "^1.0",
+ "phpunit/phpunit": "^10.5.45",
+ "spiral/code-style": "^2.2",
+ "vimeo/psalm": "^6.0"
},
- "bin": [
- "bin/jsonlint"
- ],
+ "suggest": {
+ "spiral/roadrunner-cli": "Provides RoadRunner installation and management CLI tools"
+ },
+ "default-branch": true,
"type": "library",
"autoload": {
"psr-4": {
- "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ "Spiral\\RoadRunner\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1611,60 +2611,81 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "https://seld.be"
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Valery Piashchynski",
+ "homepage": "https://github.com/rustatian"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "homepage": "https://github.com/roxblnfk"
+ },
+ {
+ "name": "Pavel Buchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
+ },
+ {
+ "name": "RoadRunner Community",
+ "homepage": "https://github.com/roadrunner-server/roadrunner/graphs/contributors"
}
],
- "description": "JSON Linter",
- "keywords": [
- "json",
- "linter",
- "parser",
- "validator"
- ],
+ "description": "RoadRunner: PHP worker",
+ "homepage": "https://spiral.dev/",
"support": {
- "issues": "https://github.com/Seldaek/jsonlint/issues",
- "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0"
+ "chat": "https://discord.gg/V6EK4he",
+ "docs": "https://docs.roadrunner.dev",
+ "issues": "https://github.com/roadrunner-server/roadrunner/issues",
+ "source": "https://github.com/roadrunner-php/worker/tree/v3.6.2"
},
"funding": [
{
- "url": "https://github.com/Seldaek",
+ "url": "https://github.com/sponsors/roadrunner-server",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
- "type": "tidelift"
}
],
- "time": "2024-07-11T14:55:45+00:00"
+ "time": "2025-05-05T12:34:50+00:00"
},
{
- "name": "seld/phar-utils",
- "version": "1.2.1",
+ "name": "spiral/security",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/phar-utils.git",
- "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c"
+ "url": "https://github.com/spiral/security.git",
+ "reference": "9a6c8e104480b7aebe63552a42a0e7d856af4b01"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/ea2f4014f163c1be4c601b9b7bd6af81ba8d701c",
- "reference": "ea2f4014f163c1be4c601b9b7bd6af81ba8d701c",
+ "url": "https://api.github.com/repos/spiral/security/zipball/9a6c8e104480b7aebe63552a42a0e7d856af4b01",
+ "reference": "9a6c8e104480b7aebe63552a42a0e7d856af4b01",
"shasum": ""
},
"require": {
- "php": ">=5.3"
+ "php": ">=8.1",
+ "spiral/core": "^3.16",
+ "spiral/hmvc": "^3.16"
},
+ "require-dev": {
+ "mockery/mockery": "^1.6.12",
+ "phpunit/phpunit": "^10.5.41",
+ "spiral/console": "^3.16",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.x-dev"
+ "dev-master": "3.16.x-dev"
}
},
"autoload": {
"psr-4": {
- "Seld\\PharUtils\\": "src/"
+ "Spiral\\Security\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1673,54 +2694,75 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be"
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
}
],
- "description": "PHAR file format utilities, for when PHP phars you up",
- "keywords": [
- "phar"
- ],
+ "description": "Spiral, RBAC security layer",
+ "homepage": "https://spiral.dev",
"support": {
- "issues": "https://github.com/Seldaek/phar-utils/issues",
- "source": "https://github.com/Seldaek/phar-utils/tree/1.2.1"
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/security"
},
- "time": "2022-08-31T10:31:18+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:11:49+00:00"
},
{
- "name": "seld/signal-handler",
- "version": "2.0.2",
+ "name": "spiral/tokenizer",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/Seldaek/signal-handler.git",
- "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98"
+ "url": "https://github.com/spiral/tokenizer.git",
+ "reference": "e79796f093a8b976c8fe67efc6ee63695116c3df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/signal-handler/zipball/04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98",
- "reference": "04a6112e883ad76c0ada8e4a9f7520bbfdb6bb98",
+ "url": "https://api.github.com/repos/spiral/tokenizer/zipball/e79796f093a8b976c8fe67efc6ee63695116c3df",
+ "reference": "e79796f093a8b976c8fe67efc6ee63695116c3df",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "ext-tokenizer": "*",
+ "php": ">=8.1",
+ "spiral/core": "^3.16",
+ "spiral/logger": "^3.16",
+ "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.2"
},
"require-dev": {
- "phpstan/phpstan": "^1",
- "phpstan/phpstan-deprecation-rules": "^1.0",
- "phpstan/phpstan-phpunit": "^1",
- "phpstan/phpstan-strict-rules": "^1.3",
- "phpunit/phpunit": "^7.5.20 || ^8.5.23",
- "psr/log": "^1 || ^2 || ^3"
- },
+ "mockery/mockery": "^1.6.12",
+ "phpunit/phpunit": "^10.5.41",
+ "spiral/attributes": "^2.8|^3.0",
+ "spiral/boot": "^3.16",
+ "spiral/files": "^3.16",
+ "vimeo/psalm": "^6.0"
+ },
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.x-dev"
+ "dev-master": "3.16.x-dev"
}
},
"autoload": {
"psr-4": {
- "Seld\\Signal\\": "src/"
+ "Spiral\\Tokenizer\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1729,37 +2771,48 @@
],
"authors": [
{
- "name": "Jordi Boggiano",
- "email": "j.boggiano@seld.be",
- "homepage": "http://seld.be"
+ "name": "Anton Titov (wolfy-j)",
+ "email": "wolfy-j@spiralscout.com"
+ },
+ {
+ "name": "Pavel Butchnev (butschster)",
+ "email": "pavel.buchnev@spiralscout.com"
+ },
+ {
+ "name": "Aleksei Gagarin (roxblnfk)",
+ "email": "alexey.gagarin@spiralscout.com"
+ },
+ {
+ "name": "Maksim Smakouz (msmakouz)",
+ "email": "maksim.smakouz@spiralscout.com"
}
],
- "description": "Simple unix signal handler that silently fails where signals are not supported for easy cross-platform development",
- "keywords": [
- "posix",
- "sigint",
- "signal",
- "sigterm",
- "unix"
- ],
+ "description": "Static Analysis: Class and Invocation locators",
+ "homepage": "https://spiral.dev",
"support": {
- "issues": "https://github.com/Seldaek/signal-handler/issues",
- "source": "https://github.com/Seldaek/signal-handler/tree/2.0.2"
+ "issues": "https://github.com/spiral/framework/issues",
+ "source": "https://github.com/spiral/tokenizer"
},
- "time": "2023-09-03T09:24:00+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/spiral",
+ "type": "github"
+ }
+ ],
+ "time": "2025-04-22T14:13:58+00:00"
},
{
"name": "symfony/console",
- "version": "v7.3.3",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7"
+ "reference": "dc8d57e6d71f26f368f80053b4e5bc92f6c395e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
- "reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
+ "url": "https://api.github.com/repos/symfony/console/zipball/dc8d57e6d71f26f368f80053b4e5bc92f6c395e5",
+ "reference": "dc8d57e6d71f26f368f80053b4e5bc92f6c395e5",
"shasum": ""
},
"require": {
@@ -1767,7 +2820,7 @@
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^7.2"
+ "symfony/string": "^7.2|^8.0"
},
"conflict": {
"symfony/dependency-injection": "<6.4",
@@ -1781,16 +2834,16 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/stopwatch": "^6.4|^7.0",
- "symfony/var-dumper": "^6.4|^7.0"
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/lock": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0",
+ "symfony/var-dumper": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -1824,7 +2877,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.3"
+ "source": "https://github.com/symfony/console/tree/7.4"
},
"funding": [
{
@@ -1844,11 +2897,11 @@
"type": "tidelift"
}
],
- "time": "2025-08-25T06:35:40+00:00"
+ "time": "2025-08-29T07:40:56+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.6.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
@@ -1863,6 +2916,7 @@
"require": {
"php": ">=8.1"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -1906,6 +2960,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -1915,16 +2973,16 @@
},
{
"name": "symfony/event-dispatcher",
- "version": "v7.3.3",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191"
+ "reference": "c511634ea987e9f96eafe4270a3c5e7cf6f2f747"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191",
- "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c511634ea987e9f96eafe4270a3c5e7cf6f2f747",
+ "reference": "c511634ea987e9f96eafe4270a3c5e7cf6f2f747",
"shasum": ""
},
"require": {
@@ -1941,13 +2999,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^6.4|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/expression-language": "^6.4|^7.0",
- "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0|^8.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/error-handler": "^6.4|^7.0|^8.0",
+ "symfony/expression-language": "^6.4|^7.0|^8.0",
+ "symfony/http-foundation": "^6.4|^7.0|^8.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^6.4|^7.0"
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -1975,7 +3033,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/7.4"
},
"funding": [
{
@@ -1995,11 +3053,11 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T11:49:31+00:00"
+ "time": "2025-08-13T13:43:36+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.6.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
@@ -2015,6 +3073,7 @@
"php": ">=8.1",
"psr/event-dispatcher": "^1"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2066,6 +3125,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -2075,30 +3138,195 @@
},
{
"name": "symfony/filesystem",
- "version": "v7.3.2",
+ "version": "8.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd"
+ "reference": "63006b83e6e80c47eb9f5bd19832c7ea0534b110"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/63006b83e6e80c47eb9f5bd19832c7ea0534b110",
+ "reference": "63006b83e6e80c47eb9f5bd19832c7ea0534b110",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.4",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
+ },
+ "require-dev": {
+ "symfony/process": "^7.4|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/8.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-13T12:47:22+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "7.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "57861c3e46d9c85d89b73588afae62049ceafc5e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/57861c3e46d9c85d89b73588afae62049ceafc5e",
+ "reference": "57861c3e46d9c85d89b73588afae62049ceafc5e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.4|^7.0|^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/7.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-12T20:20:59+00:00"
+ },
+ {
+ "name": "symfony/http-client",
+ "version": "7.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/http-client.git",
+ "reference": "9a33f2d83a114cfd82a65b1f5152926809a3f977"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/edcbb768a186b5c3f25d0643159a787d3e63b7fd",
- "reference": "edcbb768a186b5c3f25d0643159a787d3e63b7fd",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/9a33f2d83a114cfd82a65b1f5152926809a3f977",
+ "reference": "9a33f2d83a114cfd82a65b1f5152926809a3f977",
"shasum": ""
},
- "require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.8"
+ "require": {
+ "php": ">=8.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/http-client-contracts": "~3.4.4|^3.5.2",
+ "symfony/polyfill-php83": "^1.29",
+ "symfony/service-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "amphp/amp": "<2.5",
+ "amphp/socket": "<1.1",
+ "php-http/discovery": "<1.15",
+ "symfony/http-foundation": "<6.4"
+ },
+ "provide": {
+ "php-http/async-client-implementation": "*",
+ "php-http/client-implementation": "*",
+ "psr/http-client-implementation": "1.0",
+ "symfony/http-client-implementation": "3.0"
},
"require-dev": {
- "symfony/process": "^6.4|^7.0"
+ "amphp/http-client": "^4.2.1|^5.0",
+ "amphp/http-tunnel": "^1.0|^2.0",
+ "guzzlehttp/promises": "^1.4|^2.0",
+ "nyholm/psr7": "^1.0",
+ "php-http/httplug": "^1.0|^2.0",
+ "psr/http-client": "^1.0",
+ "symfony/amphp-http-client-meta": "^1.0|^2.0",
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/rate-limiter": "^6.4|^7.0|^8.0",
+ "symfony/stopwatch": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
"psr-4": {
- "Symfony\\Component\\Filesystem\\": ""
+ "Symfony\\Component\\HttpClient\\": ""
},
"exclude-from-classmap": [
"/Tests/"
@@ -2110,18 +3338,21 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Provides basic utilities for the filesystem",
+ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously",
"homepage": "https://symfony.com",
+ "keywords": [
+ "http"
+ ],
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.3.2"
+ "source": "https://github.com/symfony/http-client/tree/7.4"
},
"funding": [
{
@@ -2141,35 +3372,42 @@
"type": "tidelift"
}
],
- "time": "2025-07-07T08:17:47+00:00"
+ "time": "2025-08-27T07:45:14+00:00"
},
{
- "name": "symfony/finder",
- "version": "v7.3.2",
+ "name": "symfony/http-client-contracts",
+ "version": "dev-main",
"source": {
"type": "git",
- "url": "https://github.com/symfony/finder.git",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe"
+ "url": "https://github.com/symfony/http-client-contracts.git",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/2a6614966ba1074fa93dae0bc804227422df4dfe",
- "reference": "2a6614966ba1074fa93dae0bc804227422df4dfe",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c",
+ "reference": "75d7043853a42837e68111812f4d964b01e5101c",
"shasum": ""
},
"require": {
- "php": ">=8.2"
- },
- "require-dev": {
- "symfony/filesystem": "^6.4|^7.0"
+ "php": ">=8.1"
},
+ "default-branch": true,
"type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.6-dev"
+ }
+ },
"autoload": {
"psr-4": {
- "Symfony\\Component\\Finder\\": ""
+ "Symfony\\Contracts\\HttpClient\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -2178,18 +3416,26 @@
],
"authors": [
{
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Finds files and directories via an intuitive fluent interface",
+ "description": "Generic abstractions related to HTTP clients",
"homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.3.2"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0"
},
"funding": [
{
@@ -2209,20 +3455,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T13:41:35+00:00"
+ "time": "2025-04-29T11:18:49+00:00"
},
{
"name": "symfony/mailer",
- "version": "v7.3.3",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/mailer.git",
- "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575"
+ "reference": "0b0692fe8062ad7dede1919ebe3359d5e9b3b810"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mailer/zipball/a32f3f45f1990db8c4341d5122a7d3a381c7e575",
- "reference": "a32f3f45f1990db8c4341d5122a7d3a381c7e575",
+ "url": "https://api.github.com/repos/symfony/mailer/zipball/0b0692fe8062ad7dede1919ebe3359d5e9b3b810",
+ "reference": "0b0692fe8062ad7dede1919ebe3359d5e9b3b810",
"shasum": ""
},
"require": {
@@ -2230,8 +3476,8 @@
"php": ">=8.2",
"psr/event-dispatcher": "^1",
"psr/log": "^1|^2|^3",
- "symfony/event-dispatcher": "^6.4|^7.0",
- "symfony/mime": "^7.2",
+ "symfony/event-dispatcher": "^6.4|^7.0|^8.0",
+ "symfony/mime": "^7.2|^8.0",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
@@ -2239,13 +3485,14 @@
"symfony/http-kernel": "<6.4",
"symfony/messenger": "<6.4",
"symfony/mime": "<6.4",
+ "symfony/polyfill-php83": "<1.30",
"symfony/twig-bridge": "<6.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/messenger": "^6.4|^7.0",
- "symfony/twig-bridge": "^6.4|^7.0"
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/http-client": "^6.4|^7.0|^8.0",
+ "symfony/messenger": "^6.4|^7.0|^8.0",
+ "symfony/twig-bridge": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -2273,7 +3520,7 @@
"description": "Helps sending emails",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/mailer/tree/v7.3.3"
+ "source": "https://github.com/symfony/mailer/tree/7.4"
},
"funding": [
{
@@ -2293,24 +3540,25 @@
"type": "tidelift"
}
],
- "time": "2025-08-13T11:49:31+00:00"
+ "time": "2025-08-20T10:31:41+00:00"
},
{
"name": "symfony/mime",
- "version": "v7.3.2",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/mime.git",
- "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1"
+ "reference": "6e6ccd6a15abbd32a060992b376ea39d9bc8f987"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/mime/zipball/e0a0f859148daf1edf6c60b398eb40bfc96697d1",
- "reference": "e0a0f859148daf1edf6c60b398eb40bfc96697d1",
+ "url": "https://api.github.com/repos/symfony/mime/zipball/6e6ccd6a15abbd32a060992b376ea39d9bc8f987",
+ "reference": "6e6ccd6a15abbd32a060992b376ea39d9bc8f987",
"shasum": ""
},
"require": {
"php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
@@ -2325,11 +3573,11 @@
"egulias/email-validator": "^2.1.10|^3.1|^4",
"league/html-to-markdown": "^5.0",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/dependency-injection": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/property-access": "^6.4|^7.0",
- "symfony/property-info": "^6.4|^7.0",
- "symfony/serializer": "^6.4.3|^7.0.3"
+ "symfony/dependency-injection": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/property-access": "^6.4|^7.0|^8.0",
+ "symfony/property-info": "^6.4|^7.0|^8.0",
+ "symfony/serializer": "^6.4.3|^7.0.3|^8.0"
},
"type": "library",
"autoload": {
@@ -2361,7 +3609,7 @@
"mime-type"
],
"support": {
- "source": "https://github.com/symfony/mime/tree/v7.3.2"
+ "source": "https://github.com/symfony/mime/tree/7.4"
},
"funding": [
{
@@ -2381,11 +3629,11 @@
"type": "tidelift"
}
],
- "time": "2025-07-15T13:41:35+00:00"
+ "time": "2025-08-14T14:54:10+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -2406,6 +3654,7 @@
"suggest": {
"ext-ctype": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2468,7 +3717,7 @@
},
{
"name": "symfony/polyfill-iconv",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
@@ -2489,6 +3738,7 @@
"suggest": {
"ext-iconv": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2552,7 +3802,7 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
@@ -2570,6 +3820,7 @@
"suggest": {
"ext-intl": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2634,7 +3885,7 @@
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
@@ -2653,6 +3904,7 @@
"suggest": {
"ext-intl": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2721,7 +3973,7 @@
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -2739,6 +3991,7 @@
"suggest": {
"ext-intl": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2806,7 +4059,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -2828,6 +4081,7 @@
"suggest": {
"ext-mbstring": "For best performance"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -2891,7 +4145,7 @@
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.31.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
@@ -2906,6 +4160,7 @@
"require": {
"php": ">=7.2"
},
+ "default-branch": true,
"type": "metapackage",
"extra": {
"thanks": {
@@ -2947,6 +4202,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -2956,7 +4215,7 @@
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
@@ -2971,6 +4230,7 @@
"require": {
"php": ">=7.2"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -3036,7 +4296,7 @@
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
@@ -3051,6 +4311,7 @@
"require": {
"php": ">=7.2"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -3120,7 +4381,7 @@
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.33.0",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
@@ -3135,6 +4396,7 @@
"require": {
"php": ">=7.2"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -3198,9 +4460,90 @@
],
"time": "2024-09-09T11:45:10+00:00"
},
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "1.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "reference": "17f6f9a6b1735c0f163024d959f700cfbc5155e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php83\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.33.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-07-08T02:45:35+00:00"
+ },
{
"name": "symfony/process",
- "version": "v6.4.25",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
@@ -3241,7 +4584,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v6.4.25"
+ "source": "https://github.com/symfony/process/tree/6.4"
},
"funding": [
{
@@ -3265,16 +4608,16 @@
},
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -3285,6 +4628,7 @@
"conflict": {
"ext-psr": "<1.1|>=2"
},
+ "default-branch": true,
"type": "library",
"extra": {
"thanks": {
@@ -3328,7 +4672,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/main"
},
"funding": [
{
@@ -3339,44 +4683,48 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-25T09:37:31+00:00"
+ "time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/string",
- "version": "v7.3.3",
+ "version": "8.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c"
+ "reference": "b87a95c24475492ac665704843e341873eea1b28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
- "reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
+ "url": "https://api.github.com/repos/symfony/string/zipball/b87a95c24475492ac665704843e341873eea1b28",
+ "reference": "b87a95c24475492ac665704843e341873eea1b28",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-intl-grapheme": "~1.0",
- "symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0"
+ "php": ">=8.4",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-intl-grapheme": "^1.33",
+ "symfony/polyfill-intl-normalizer": "^1.0",
+ "symfony/polyfill-mbstring": "^1.0"
},
"conflict": {
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/emoji": "^7.1",
- "symfony/error-handler": "^6.4|^7.0",
- "symfony/http-client": "^6.4|^7.0",
- "symfony/intl": "^6.4|^7.0",
+ "symfony/emoji": "^7.4|^8.0",
+ "symfony/error-handler": "^7.4|^8.0",
+ "symfony/http-client": "^7.4|^8.0",
+ "symfony/intl": "^7.4|^8.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.4|^7.0"
+ "symfony/var-exporter": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -3415,7 +4763,83 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.3"
+ "source": "https://github.com/symfony/string/tree/8.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2025-08-26T09:23:28+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "7.4.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/87fee1ea580fbbd338642ee42c2dd1906f161bce",
+ "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "symfony/console": "<6.4"
+ },
+ "require-dev": {
+ "symfony/console": "^6.4|^7.0|^8.0"
+ },
+ "bin": [
+ "Resources/bin/yaml-lint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Loads and dumps YAML files",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/yaml/tree/7.4"
},
"funding": [
{
@@ -3435,7 +4859,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-25T06:35:40+00:00"
+ "time": "2025-08-27T12:26:27+00:00"
},
{
"name": "ui-awesome/html-attribute",
@@ -3744,132 +5168,48 @@
"roave/infection-static-analysis-plugin": "^1.34",
"symplify/easy-coding-standard": "^12.1",
"vimeo/psalm": "^5.20"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "UIAwesome\\Html\\Graphic\\": "src"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "mit"
- ],
- "description": "UI Awesome HTML SVG tag for PHP.",
- "keywords": [
- "html",
- "php",
- "svg",
- "tag",
- "ui-awesome"
- ],
- "support": {
- "issues": "https://github.com/ui-awesome/html-svg/issues",
- "source": "https://github.com/ui-awesome/html-svg/tree/0.2.0"
- },
- "time": "2024-03-31T13:02:29+00:00"
- },
- {
- "name": "vlucas/phpdotenv",
- "version": "v5.6.2",
- "source": {
- "type": "git",
- "url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
- "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af",
- "shasum": ""
- },
- "require": {
- "ext-pcre": "*",
- "graham-campbell/result-type": "^1.1.3",
- "php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.3",
- "symfony/polyfill-ctype": "^1.24",
- "symfony/polyfill-mbstring": "^1.24",
- "symfony/polyfill-php80": "^1.24"
- },
- "require-dev": {
- "bamarni/composer-bin-plugin": "^1.8.2",
- "ext-filter": "*",
- "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2"
- },
- "suggest": {
- "ext-filter": "Required to use the boolean validator."
- },
- "type": "library",
- "extra": {
- "bamarni-bin": {
- "bin-links": true,
- "forward-command": false
- },
+ },
+ "type": "library",
+ "extra": {
"branch-alias": {
- "dev-master": "5.6-dev"
+ "dev-main": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Dotenv\\": "src/"
+ "UIAwesome\\Html\\Graphic\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Vance Lucas",
- "email": "vance@vancelucas.com",
- "homepage": "https://github.com/vlucas"
- }
+ "mit"
],
- "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "description": "UI Awesome HTML SVG tag for PHP.",
"keywords": [
- "dotenv",
- "env",
- "environment"
+ "html",
+ "php",
+ "svg",
+ "tag",
+ "ui-awesome"
],
"support": {
- "issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2"
+ "issues": "https://github.com/ui-awesome/html-svg/issues",
+ "source": "https://github.com/ui-awesome/html-svg/tree/0.2.0"
},
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv",
- "type": "tidelift"
- }
- ],
- "time": "2025-04-30T23:37:27+00:00"
+ "time": "2024-03-31T13:02:29+00:00"
},
{
"name": "voku/anti-xss",
- "version": "4.1.42",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/voku/anti-xss.git",
- "reference": "bca1f8607e55a3c5077483615cd93bd8f11bd675"
+ "reference": "25a3cf6a6d2e43b7aa4dd08f7c633ad544484643"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/voku/anti-xss/zipball/bca1f8607e55a3c5077483615cd93bd8f11bd675",
- "reference": "bca1f8607e55a3c5077483615cd93bd8f11bd675",
+ "url": "https://api.github.com/repos/voku/anti-xss/zipball/25a3cf6a6d2e43b7aa4dd08f7c633ad544484643",
+ "reference": "25a3cf6a6d2e43b7aa4dd08f7c633ad544484643",
"shasum": ""
},
"require": {
@@ -3879,6 +5219,7 @@
"require-dev": {
"phpunit/phpunit": "~6.0 || ~7.0 || ~9.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -3915,7 +5256,7 @@
],
"support": {
"issues": "https://github.com/voku/anti-xss/issues",
- "source": "https://github.com/voku/anti-xss/tree/4.1.42"
+ "source": "https://github.com/voku/anti-xss/tree/master"
},
"funding": [
{
@@ -3939,7 +5280,7 @@
"type": "tidelift"
}
],
- "time": "2023-07-03T14:40:46+00:00"
+ "time": "2023-09-04T15:36:40+00:00"
},
{
"name": "voku/portable-ascii",
@@ -4118,18 +5459,163 @@
],
"time": "2023-03-08T08:35:38+00:00"
},
+ {
+ "name": "yii2-extensions/psr-bridge",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yii2-extensions/psr-bridge.git",
+ "reference": "5a95f3576b520c6cd66d22f640aab8a6054926d4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yii2-extensions/psr-bridge/zipball/5a95f3576b520c6cd66d22f640aab8a6054926d4",
+ "reference": "5a95f3576b520c6cd66d22f640aab8a6054926d4",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "ext-mbstring": "*",
+ "php": ">=8.1",
+ "psr/http-factory": "^1.1",
+ "psr/http-message": "^2.0",
+ "psr/http-server-handler": "^1.0",
+ "yiisoft/yii2": "^2.0.53|^22"
+ },
+ "require-dev": {
+ "httpsoft/http-message": "^1.1",
+ "infection/infection": "^0.27|^0.31",
+ "maglnet/composer-require-checker": "^4.1",
+ "php-forge/support": "^0.2",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan-strict-rules": "^2.0.3",
+ "phpunit/phpunit": "^10.5",
+ "rector/rector": "^2.1",
+ "symplify/easy-coding-standard": "^12.5",
+ "xepozz/internal-mocker": "^1.4",
+ "yii2-extensions/phpstan": "^0.3"
+ },
+ "suggest": {
+ "yii2-extensions/worker-debug": "Provides Yii debug integration for PSR requests"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "yii2\\extensions\\psrbridge\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "PSR bridge for Yii2",
+ "keywords": [
+ "psr-bridge",
+ "psr-http-factory",
+ "psr-http-message",
+ "psr-http-server-handler",
+ "yii2-extension"
+ ],
+ "support": {
+ "issues": "https://github.com/yii2-extensions/psr-bridge/issues",
+ "source": "https://github.com/yii2-extensions/psr-bridge/tree/main"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/terabytesoftw",
+ "type": "github"
+ }
+ ],
+ "time": "2025-08-30T12:31:59+00:00"
+ },
+ {
+ "name": "yii2-extensions/road-runner",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yii2-extensions/road-runner.git",
+ "reference": "f8a0d008ab1e49e46a90451d43201e11d32805b5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yii2-extensions/road-runner/zipball/f8a0d008ab1e49e46a90451d43201e11d32805b5",
+ "reference": "f8a0d008ab1e49e46a90451d43201e11d32805b5",
+ "shasum": ""
+ },
+ "require": {
+ "ext-sockets": "*",
+ "php": ">=8.1",
+ "psr/http-factory": "^1.1",
+ "psr/http-message": "^2.0",
+ "spiral/roadrunner": "^2025.1.2",
+ "spiral/roadrunner-cli": "^2.5.0",
+ "spiral/roadrunner-http": "^v3.0.0",
+ "spiral/roadrunner-worker": "^3.0.0",
+ "yii2-extensions/psr-bridge": "^0.1@dev"
+ },
+ "require-dev": {
+ "httpsoft/http-message": "^1.1",
+ "infection/infection": "^0.27|^0.31",
+ "maglnet/composer-require-checker": "^4.1",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan-strict-rules": "^2.0.3",
+ "phpunit/phpunit": "^10.5",
+ "rector/rector": "^2.1",
+ "symplify/easy-coding-standard": "^12.5",
+ "yii2-extensions/phpstan": "^0.3"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "yii2\\extensions\\roadrunner\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Yii2 Road Runner runtime.",
+ "keywords": [
+ "road-runner",
+ "runtime",
+ "yii2-extension"
+ ],
+ "support": {
+ "issues": "https://github.com/yii2-extensions/road-runner/issues",
+ "source": "https://github.com/yii2-extensions/road-runner/tree/main"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/terabytesoftw",
+ "type": "github"
+ }
+ ],
+ "time": "2025-08-17T20:39:35+00:00"
+ },
{
"name": "yiisoft/yii2",
- "version": "2.0.53",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/yiisoft/yii2-framework.git",
- "reference": "6c622fb8243181d7912b62ad80821cc0e1c745db"
+ "reference": "17a50f86ef8bd33f2de71fd8cb5351dc7811f400"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/6c622fb8243181d7912b62ad80821cc0e1c745db",
- "reference": "6c622fb8243181d7912b62ad80821cc0e1c745db",
+ "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/17a50f86ef8bd33f2de71fd8cb5351dc7811f400",
+ "reference": "17a50f86ef8bd33f2de71fd8cb5351dc7811f400",
"shasum": ""
},
"require": {
@@ -4145,6 +5631,7 @@
"php": ">=7.3.0",
"yiisoft/yii2-composer": "~2.0.4"
},
+ "default-branch": true,
"bin": [
"yii"
],
@@ -4237,20 +5724,20 @@
"type": "tidelift"
}
],
- "time": "2025-06-27T07:42:53+00:00"
+ "time": "2025-08-30T11:02:12+00:00"
},
{
"name": "yiisoft/yii2-bootstrap5",
- "version": "2.0.50",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/yiisoft/yii2-bootstrap5.git",
- "reference": "ad080a7ea063074888c2d801f6b05162064f8ae0"
+ "reference": "bd19a9d413a5778f09ec6f8e2fe8105cd4bf11d6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap5/zipball/ad080a7ea063074888c2d801f6b05162064f8ae0",
- "reference": "ad080a7ea063074888c2d801f6b05162064f8ae0",
+ "url": "https://api.github.com/repos/yiisoft/yii2-bootstrap5/zipball/bd19a9d413a5778f09ec6f8e2fe8105cd4bf11d6",
+ "reference": "bd19a9d413a5778f09ec6f8e2fe8105cd4bf11d6",
"shasum": ""
},
"require": {
@@ -4261,12 +5748,14 @@
},
"require-dev": {
"phpunit/phpunit": "^9.6",
+ "symplify/easy-coding-standard": "^12.1",
"twbs/bootstrap-icons": "^1.7.2",
"yiisoft/yii2-coding-standards": "~2.0"
},
"suggest": {
"twbs/bootstrap-icons": "Add this package to the `require` section of your `composer.json` if you'd like to use the bootstrap icon asset."
},
+ "default-branch": true,
"type": "yii2-extension",
"extra": {
"bootstrap": "yii\\bootstrap5\\i18n\\TranslationBootstrap",
@@ -4318,20 +5807,20 @@
"type": "tidelift"
}
],
- "time": "2025-04-10T08:03:20+00:00"
+ "time": "2025-04-11T09:27:32+00:00"
},
{
"name": "yiisoft/yii2-composer",
- "version": "2.0.11",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/yiisoft/yii2-composer.git",
- "reference": "b684b01ecb119c8287721def726a0e24fec2fef2"
+ "reference": "e3c0eac06e0f1276fcfb2cb95a393336dd8300f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/b684b01ecb119c8287721def726a0e24fec2fef2",
- "reference": "b684b01ecb119c8287721def726a0e24fec2fef2",
+ "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/e3c0eac06e0f1276fcfb2cb95a393336dd8300f1",
+ "reference": "e3c0eac06e0f1276fcfb2cb95a393336dd8300f1",
"shasum": ""
},
"require": {
@@ -4341,6 +5830,7 @@
"composer/composer": "^1.0 | ^2.0@dev",
"phpunit/phpunit": "<7"
},
+ "default-branch": true,
"type": "composer-plugin",
"extra": {
"class": "yii\\composer\\Plugin",
@@ -4394,7 +5884,7 @@
"type": "tidelift"
}
],
- "time": "2025-02-13T20:59:36+00:00"
+ "time": "2025-02-13T20:59:51+00:00"
},
{
"name": "yiisoft/yii2-symfonymailer",
@@ -4485,16 +5975,16 @@
"packages-dev": [
{
"name": "behat/gherkin",
- "version": "v4.14.0",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/Behat/Gherkin.git",
- "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4"
+ "reference": "a70421e94b11b7e92e9922e2494ea7debdcac79a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Gherkin/zipball/34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4",
- "reference": "34c9b59c59355a7b4c53b9f041c8dbd1c8acc3b4",
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/a70421e94b11b7e92e9922e2494ea7debdcac79a",
+ "reference": "a70421e94b11b7e92e9922e2494ea7debdcac79a",
"shasum": ""
},
"require": {
@@ -4502,8 +5992,8 @@
"php": "8.1.* || 8.2.* || 8.3.* || 8.4.*"
},
"require-dev": {
- "cucumber/gherkin-monorepo": "dev-gherkin-v32.1.1",
- "friendsofphp/php-cs-fixer": "^3.65",
+ "cucumber/gherkin-monorepo": "dev-gherkin-v34.0.0",
+ "friendsofphp/php-cs-fixer": "^3.77",
"mikey179/vfsstream": "^1.6",
"phpstan/extension-installer": "^1",
"phpstan/phpstan": "^2",
@@ -4514,6 +6004,7 @@
"suggest": {
"symfony/yaml": "If you want to parse features, represented in YAML files"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -4548,9 +6039,9 @@
],
"support": {
"issues": "https://github.com/Behat/Gherkin/issues",
- "source": "https://github.com/Behat/Gherkin/tree/v4.14.0"
+ "source": "https://github.com/Behat/Gherkin/tree/master"
},
- "time": "2025-05-23T15:06:40+00:00"
+ "time": "2025-08-19T15:39:32+00:00"
},
{
"name": "codeception/c3",
@@ -5229,7 +6720,7 @@
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.10.0",
+ "version": "7.10.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
@@ -5265,6 +6756,7 @@
"ext-intl": "Required for Internationalized Domain Name (IDN) support",
"psr/log": "Required for using the Log middleware"
},
+ "default-branch": true,
"type": "library",
"extra": {
"bamarni-bin": {
@@ -5355,7 +6847,7 @@
},
{
"name": "guzzlehttp/promises",
- "version": "2.3.0",
+ "version": "2.3.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
@@ -5374,6 +6866,7 @@
"bamarni/composer-bin-plugin": "^1.8.2",
"phpunit/phpunit": "^8.5.44 || ^9.6.25"
},
+ "default-branch": true,
"type": "library",
"extra": {
"bamarni-bin": {
@@ -5438,7 +6931,7 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "2.8.0",
+ "version": "2.8.x-dev",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
@@ -5468,6 +6961,7 @@
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
},
+ "default-branch": true,
"type": "library",
"extra": {
"bamarni-bin": {
@@ -5554,38 +7048,39 @@
},
{
"name": "maglnet/composer-require-checker",
- "version": "4.16.1",
+ "version": "4.17.x-dev",
"source": {
"type": "git",
"url": "https://github.com/maglnet/ComposerRequireChecker.git",
- "reference": "2449a6298a0c39d940287d5d3afaf05a6f80fd0c"
+ "reference": "28620edbd3953cfab4ebc026f793c7327b9ccd89"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/2449a6298a0c39d940287d5d3afaf05a6f80fd0c",
- "reference": "2449a6298a0c39d940287d5d3afaf05a6f80fd0c",
+ "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/28620edbd3953cfab4ebc026f793c7327b9ccd89",
+ "reference": "28620edbd3953cfab4ebc026f793c7327b9ccd89",
"shasum": ""
},
"require": {
"composer-runtime-api": "^2.0.0",
"ext-phar": "*",
- "nikic/php-parser": "^5.4.0",
+ "nikic/php-parser": "^5.5.0",
"php": "~8.2.0 || ~8.3.0 || ~8.4.0",
"symfony/console": "^6.4.1 || ^7.0.1",
"webmozart/assert": "^1.11.0",
"webmozart/glob": "^4.7.0"
},
"require-dev": {
- "doctrine/coding-standard": "^12.0.0",
+ "doctrine/coding-standard": "^13.0.1",
"ext-zend-opcache": "*",
"phing/phing": "^3.0.1",
- "phpstan/phpstan": "^2.1.2",
- "phpunit/phpunit": "^11.5.7",
- "psalm/plugin-phpunit": "^0.19.2",
- "roave/infection-static-analysis-plugin": "^1.36.0",
+ "phpstan/phpstan": "^2.1.19",
+ "phpunit/phpunit": "^11.5.27",
+ "psalm/plugin-phpunit": "^0.19.5",
+ "roave/infection-static-analysis-plugin": "^1.38.0",
"spatie/temporary-directory": "^2.3.0",
- "vimeo/psalm": "^6.4.0"
+ "vimeo/psalm": "^6.13.0"
},
+ "default-branch": true,
"bin": [
"bin/composer-require-checker"
],
@@ -5629,9 +7124,9 @@
],
"support": {
"issues": "https://github.com/maglnet/ComposerRequireChecker/issues",
- "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.16.1"
+ "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.17.x"
},
- "time": "2025-02-07T09:09:45+00:00"
+ "time": "2025-08-12T03:09:47+00:00"
},
{
"name": "masterminds/html5",
@@ -5702,7 +7197,7 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.13.4",
+ "version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
@@ -5727,6 +7222,7 @@
"phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
+ "default-branch": true,
"type": "library",
"autoload": {
"files": [
@@ -5762,16 +7258,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v5.6.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2"
+ "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
- "reference": "f103601b29efebd7ff4a1ca7b3eeea9e3336a2a2",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f7c23a43eee861070ab4e88819a4e76a611c7e4f",
+ "reference": "f7c23a43eee861070ab4e88819a4e76a611c7e4f",
"shasum": ""
},
"require": {
@@ -5784,6 +7280,7 @@
"ircmaxell/php-yacc": "^0.0.7",
"phpunit/phpunit": "^9.0"
},
+ "default-branch": true,
"bin": [
"bin/php-parse"
],
@@ -5814,22 +7311,22 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/master"
},
- "time": "2025-08-13T20:13:15+00:00"
+ "time": "2025-08-19T18:41:44+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.4",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "54750ef60c58e43759730615a392c31c80e23176"
+ "reference": "65f90285728eae4eae313b8b6ba11b2f5436038e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
- "reference": "54750ef60c58e43759730615a392c31c80e23176",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/65f90285728eae4eae313b8b6ba11b2f5436038e",
+ "reference": "65f90285728eae4eae313b8b6ba11b2f5436038e",
"shasum": ""
},
"require": {
@@ -5840,6 +7337,7 @@
"phar-io/version": "^3.0.1",
"php": "^7.2 || ^8.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -5875,7 +7373,7 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.4"
+ "source": "https://github.com/phar-io/manifest/tree/master"
},
"funding": [
{
@@ -5883,7 +7381,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:33:53+00:00"
+ "time": "2025-07-05T08:48:25+00:00"
},
{
"name": "phar-io/version",
@@ -5979,28 +7477,29 @@
},
{
"name": "phpstan/extension-installer",
- "version": "1.4.3",
+ "version": "1.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpstan/extension-installer.git",
- "reference": "85e90b3942d06b2326fba0403ec24fe912372936"
+ "reference": "a998f10f8e3f5f38739e82cacebdee731a3c04a3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936",
- "reference": "85e90b3942d06b2326fba0403ec24fe912372936",
+ "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/a998f10f8e3f5f38739e82cacebdee731a3c04a3",
+ "reference": "a998f10f8e3f5f38739e82cacebdee731a3c04a3",
"shasum": ""
},
"require": {
"composer-plugin-api": "^2.0",
"php": "^7.2 || ^8.0",
- "phpstan/phpstan": "^1.9.0 || ^2.0"
+ "phpstan/phpstan": "^1.12.0 || ^2.0"
},
"require-dev": {
"composer/composer": "^2.0",
"php-parallel-lint/php-parallel-lint": "^1.2.0",
"phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0"
},
+ "default-branch": true,
"type": "composer-plugin",
"extra": {
"class": "PHPStan\\ExtensionInstaller\\Plugin"
@@ -6021,22 +7520,22 @@
],
"support": {
"issues": "https://github.com/phpstan/extension-installer/issues",
- "source": "https://github.com/phpstan/extension-installer/tree/1.4.3"
+ "source": "https://github.com/phpstan/extension-installer/tree/1.4.x"
},
- "time": "2024-09-04T20:21:43+00:00"
+ "time": "2025-08-21T08:44:40+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "2.1.22",
+ "version": "2.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4"
+ "reference": "5a39902d7871018ebf1b4a47284a984e2d39c012"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4",
- "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5a39902d7871018ebf1b4a47284a984e2d39c012",
+ "reference": "5a39902d7871018ebf1b4a47284a984e2d39c012",
"shasum": ""
},
"require": {
@@ -6045,6 +7544,7 @@
"conflict": {
"phpstan/phpstan-shim": "*"
},
+ "default-branch": true,
"bin": [
"phpstan",
"phpstan.phar"
@@ -6081,20 +7581,20 @@
"type": "github"
}
],
- "time": "2025-08-04T19:17:37+00:00"
+ "time": "2025-08-30T16:32:16+00:00"
},
{
"name": "phpstan/phpstan-strict-rules",
- "version": "2.0.6",
+ "version": "2.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan-strict-rules.git",
- "reference": "f9f77efa9de31992a832ff77ea52eb42d675b094"
+ "reference": "b043bd81404b8e4e4783c8b348c05bc08fafeb02"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/f9f77efa9de31992a832ff77ea52eb42d675b094",
- "reference": "f9f77efa9de31992a832ff77ea52eb42d675b094",
+ "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b043bd81404b8e4e4783c8b348c05bc08fafeb02",
+ "reference": "b043bd81404b8e4e4783c8b348c05bc08fafeb02",
"shasum": ""
},
"require": {
@@ -6107,6 +7607,7 @@
"phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^9.6"
},
+ "default-branch": true,
"type": "phpstan-extension",
"extra": {
"phpstan": {
@@ -6127,13 +7628,13 @@
"description": "Extra strict and opinionated rules for PHPStan",
"support": {
"issues": "https://github.com/phpstan/phpstan-strict-rules/issues",
- "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.6"
+ "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.x"
},
- "time": "2025-07-21T12:19:29+00:00"
+ "time": "2025-08-30T08:29:42+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "12.3.4",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
@@ -6166,6 +7667,7 @@
"ext-pcov": "PHP extension that provides line coverage",
"ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6222,16 +7724,16 @@
},
{
"name": "phpunit/php-file-iterator",
- "version": "6.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782"
+ "reference": "43ce4a5be5e5e2d254a04af27a531f044c3f4b98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782",
- "reference": "961bc913d42fe24a257bfff826a5068079ac7782",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/43ce4a5be5e5e2d254a04af27a531f044c3f4b98",
+ "reference": "43ce4a5be5e5e2d254a04af27a531f044c3f4b98",
"shasum": ""
},
"require": {
@@ -6240,6 +7742,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6271,28 +7774,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:37+00:00"
+ "time": "2025-05-25T06:45:36+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "6.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406"
+ "reference": "e894566d235809c82c77424f08810952755d9f80"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/12b54e689b07a25a9b41e57736dfab6ec9ae5406",
- "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/e894566d235809c82c77424f08810952755d9f80",
+ "reference": "e894566d235809c82c77424f08810952755d9f80",
"shasum": ""
},
"require": {
@@ -6305,6 +7820,7 @@
"suggest": {
"ext-pcntl": "*"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6335,28 +7851,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
"security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-invoker",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:58+00:00"
+ "time": "2025-05-25T06:46:26+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "5.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53"
+ "reference": "cee043439ecbe031d409def48af2f1e3bf13a6eb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/e1367a453f0eda562eedb4f659e13aa900d66c53",
- "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/cee043439ecbe031d409def48af2f1e3bf13a6eb",
+ "reference": "cee043439ecbe031d409def48af2f1e3bf13a6eb",
"shasum": ""
},
"require": {
@@ -6365,6 +7893,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6395,28 +7924,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
"security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-text-template",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:59:16+00:00"
+ "time": "2025-05-25T06:47:03+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "8.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc"
+ "reference": "23036cd263bd4812edd4642cd866db831704821f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
- "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/23036cd263bd4812edd4642cd866db831704821f",
+ "reference": "23036cd263bd4812edd4642cd866db831704821f",
"shasum": ""
},
"require": {
@@ -6425,6 +7966,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6455,28 +7997,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
"security": "https://github.com/sebastianbergmann/php-timer/security/policy",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0"
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/php-timer",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:59:38+00:00"
+ "time": "2025-05-25T06:47:33+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "12.3.7",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "b8fa997c49682979ad6bfaa0d7fb25f54954965e"
+ "reference": "fb9037c729d0298d9052e92303a8bd4213659116"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8fa997c49682979ad6bfaa0d7fb25f54954965e",
- "reference": "b8fa997c49682979ad6bfaa0d7fb25f54954965e",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9037c729d0298d9052e92303a8bd4213659116",
+ "reference": "fb9037c729d0298d9052e92303a8bd4213659116",
"shasum": ""
},
"require": {
@@ -6490,7 +8044,7 @@
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=8.3",
- "phpunit/php-code-coverage": "^12.3.3",
+ "phpunit/php-code-coverage": "^12.3.4",
"phpunit/php-file-iterator": "^6.0.0",
"phpunit/php-invoker": "^6.0.0",
"phpunit/php-text-template": "^5.0.0",
@@ -6500,19 +8054,20 @@
"sebastian/diff": "^7.0.0",
"sebastian/environment": "^8.0.3",
"sebastian/exporter": "^7.0.0",
- "sebastian/global-state": "^8.0.0",
+ "sebastian/global-state": "^8.0.2",
"sebastian/object-enumerator": "^7.0.0",
"sebastian/type": "^6.0.3",
"sebastian/version": "^6.0.0",
"staabm/side-effects-detector": "^1.0.5"
},
+ "default-branch": true,
"bin": [
"phpunit"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "12.3-dev"
+ "dev-main": "12.4-dev"
}
},
"autoload": {
@@ -6544,7 +8099,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/12.3.7"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/main"
},
"funding": [
{
@@ -6564,145 +8119,40 @@
"type": "thanks_dev"
},
{
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-28T05:15:46+00:00"
- },
- {
- "name": "psr/http-client",
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-client.git",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
- "shasum": ""
- },
- "require": {
- "php": "^7.0 || ^8.0",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Client\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP clients",
- "homepage": "https://github.com/php-fig/http-client",
- "keywords": [
- "http",
- "http-client",
- "psr",
- "psr-18"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-client"
- },
- "time": "2023-09-23T14:17:50+00:00"
- },
- {
- "name": "psr/http-factory",
- "version": "1.1.0",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-factory.git",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "psr/http-message": "^1.0 || ^2.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
}
],
- "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories",
- "keywords": [
- "factory",
- "http",
- "message",
- "psr",
- "psr-17",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-factory"
- },
- "time": "2024-04-15T12:06:14+00:00"
+ "time": "2025-08-29T11:33:58+00:00"
},
{
- "name": "psr/http-message",
- "version": "2.0",
+ "name": "psr/http-client",
+ "version": "dev-master",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71"
+ "url": "https://github.com/php-fig/http-client.git",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71",
- "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71",
+ "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90",
+ "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.0 || ^8.0",
+ "psr/http-message": "^1.0 || ^2.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "1.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Http\\Message\\": "src/"
+ "Psr\\Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -6715,33 +8165,31 @@
"homepage": "https://www.php-fig.org/"
}
],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
+ "description": "Common interface for HTTP clients",
+ "homepage": "https://github.com/php-fig/http-client",
"keywords": [
"http",
- "http-message",
+ "http-client",
"psr",
- "psr-7",
- "request",
- "response"
+ "psr-18"
],
"support": {
- "source": "https://github.com/php-fig/http-message/tree/2.0"
+ "source": "https://github.com/php-fig/http-client"
},
- "time": "2023-04-04T09:54:51+00:00"
+ "time": "2023-09-23T14:17:50+00:00"
},
{
"name": "psy/psysh",
- "version": "v0.12.10",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/bobthecow/psysh.git",
- "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22"
+ "reference": "2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bobthecow/psysh/zipball/6e80abe6f2257121f1eb9a4c55bf29d921025b22",
- "reference": "6e80abe6f2257121f1eb9a4c55bf29d921025b22",
+ "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194",
+ "reference": "2f0a5bf8e3a4ffeb93fbf5182cb6a4b378ee6194",
"shasum": ""
},
"require": {
@@ -6763,6 +8211,7 @@
"ext-pdo-sqlite": "The doc command requires SQLite to work.",
"ext-posix": "If you have PCNTL, you'll want the POSIX extension as well."
},
+ "default-branch": true,
"bin": [
"bin/psysh"
],
@@ -6804,9 +8253,9 @@
],
"support": {
"issues": "https://github.com/bobthecow/psysh/issues",
- "source": "https://github.com/bobthecow/psysh/tree/v0.12.10"
+ "source": "https://github.com/bobthecow/psysh/tree/main"
},
- "time": "2025-08-04T12:39:37+00:00"
+ "time": "2025-08-23T23:30:16+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -6914,16 +8363,16 @@
},
{
"name": "sebastian/cli-parser",
- "version": "4.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c"
+ "reference": "9b9963bb4f869e2aae7d1483e0d9075b1f5cb436"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/6d584c727d9114bcdc14c86711cd1cad51778e7c",
- "reference": "6d584c727d9114bcdc14c86711cd1cad51778e7c",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/9b9963bb4f869e2aae7d1483e0d9075b1f5cb436",
+ "reference": "9b9963bb4f869e2aae7d1483e0d9075b1f5cb436",
"shasum": ""
},
"require": {
@@ -6932,6 +8381,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -6959,28 +8409,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
"security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.0.0"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:53:50+00:00"
+ "time": "2025-05-25T06:37:02+00:00"
},
{
"name": "sebastian/comparator",
- "version": "7.1.3",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148"
+ "reference": "812ce2426e84729afecd5f1647e39083b0ff158c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148",
- "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/812ce2426e84729afecd5f1647e39083b0ff158c",
+ "reference": "812ce2426e84729afecd5f1647e39083b0ff158c",
"shasum": ""
},
"require": {
@@ -6996,6 +8458,7 @@
"suggest": {
"ext-bcmath": "For comparing BcMath\\Number objects"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7039,7 +8502,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/7.1.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/main"
},
"funding": [
{
@@ -7059,20 +8522,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-20T11:27:00+00:00"
+ "time": "2025-08-23T11:55:05+00:00"
},
{
"name": "sebastian/complexity",
- "version": "5.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb"
+ "reference": "7f27b19d08f99a44041720b185cfdabfb4599adb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb",
- "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/7f27b19d08f99a44041720b185cfdabfb4599adb",
+ "reference": "7f27b19d08f99a44041720b185cfdabfb4599adb",
"shasum": ""
},
"require": {
@@ -7082,6 +8545,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7109,28 +8573,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
"security": "https://github.com/sebastianbergmann/complexity/security/policy",
- "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/complexity",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:55:25+00:00"
+ "time": "2025-05-25T06:38:26+00:00"
},
{
"name": "sebastian/diff",
- "version": "7.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f"
+ "reference": "98c299d8486b460efd667d0d64f1a32dd588971d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/98c299d8486b460efd667d0d64f1a32dd588971d",
+ "reference": "98c299d8486b460efd667d0d64f1a32dd588971d",
"shasum": ""
},
"require": {
@@ -7140,6 +8616,7 @@
"phpunit/phpunit": "^12.0",
"symfony/process": "^7.2"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7176,19 +8653,31 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/diff/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/diff",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:55:46+00:00"
+ "time": "2025-06-26T11:32:07+00:00"
},
{
"name": "sebastian/environment",
- "version": "8.0.3",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
@@ -7209,6 +8698,7 @@
"suggest": {
"ext-posix": "*"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7264,16 +8754,16 @@
},
{
"name": "sebastian/exporter",
- "version": "7.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "76432aafc58d50691a00d86d0632f1217a47b688"
+ "reference": "0ef7d66753a1282b23890c2d9a8c775607e8e07f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/76432aafc58d50691a00d86d0632f1217a47b688",
- "reference": "76432aafc58d50691a00d86d0632f1217a47b688",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0ef7d66753a1282b23890c2d9a8c775607e8e07f",
+ "reference": "0ef7d66753a1282b23890c2d9a8c775607e8e07f",
"shasum": ""
},
"require": {
@@ -7284,6 +8774,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7330,19 +8821,31 @@
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:56:42+00:00"
+ "time": "2025-05-25T06:40:56+00:00"
},
{
"name": "sebastian/global-state",
- "version": "8.0.2",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
@@ -7363,6 +8866,7 @@
"ext-dom": "*",
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7416,16 +8920,16 @@
},
{
"name": "sebastian/lines-of-code",
- "version": "4.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f"
+ "reference": "62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f",
- "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb",
+ "reference": "62b4d88ce107fb2a4d33a9e8b7e9b38f97c1b5cb",
"shasum": ""
},
"require": {
@@ -7435,6 +8939,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7462,28 +8967,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
"security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/lines-of-code",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:57:28+00:00"
+ "time": "2025-05-25T06:41:57+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "7.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894"
+ "reference": "5346e40be4f996fb6643214c754dc91fac81f66d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1effe8e9b8e068e9ae228e542d5d11b5d16db894",
- "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5346e40be4f996fb6643214c754dc91fac81f66d",
+ "reference": "5346e40be4f996fb6643214c754dc91fac81f66d",
"shasum": ""
},
"require": {
@@ -7494,6 +9011,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7520,28 +9038,40 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
"security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
- "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/object-enumerator",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:57:48+00:00"
+ "time": "2025-05-25T06:43:17+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "5.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a"
+ "reference": "20c26ab19b751ae8e0771bcff9e1581ea7db8817"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/4bfa827c969c98be1e527abd576533293c634f6a",
- "reference": "4bfa827c969c98be1e527abd576533293c634f6a",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/20c26ab19b751ae8e0771bcff9e1581ea7db8817",
+ "reference": "20c26ab19b751ae8e0771bcff9e1581ea7db8817",
"shasum": ""
},
"require": {
@@ -7550,6 +9080,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7576,19 +9107,31 @@
"support": {
"issues": "https://github.com/sebastianbergmann/object-reflector/issues",
"security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
- "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0"
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/object-reflector",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:58:17+00:00"
+ "time": "2025-05-25T06:44:27+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "7.0.1",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
@@ -7606,6 +9149,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7664,7 +9208,7 @@
},
{
"name": "sebastian/type",
- "version": "6.0.3",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
@@ -7682,6 +9226,7 @@
"require-dev": {
"phpunit/phpunit": "^12.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7733,21 +9278,22 @@
},
{
"name": "sebastian/version",
- "version": "6.0.0",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c"
+ "reference": "200159ecc0a10f655df0e5ce4d7cd0f0c3037784"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c",
- "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/200159ecc0a10f655df0e5ce4d7cd0f0c3037784",
+ "reference": "200159ecc0a10f655df0e5ce4d7cd0f0c3037784",
"shasum": ""
},
"require": {
"php": ">=8.3"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -7775,15 +9321,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/version/issues",
"security": "https://github.com/sebastianbergmann/version/security/policy",
- "source": "https://github.com/sebastianbergmann/version/tree/6.0.0"
+ "source": "https://github.com/sebastianbergmann/version/tree/main"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/version",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T05:00:38+00:00"
+ "time": "2025-05-25T06:50:56+00:00"
},
{
"name": "staabm/side-effects-detector",
@@ -7839,7 +9397,7 @@
},
{
"name": "symfony/browser-kit",
- "version": "v6.4.24",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
@@ -7887,7 +9445,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v6.4.24"
+ "source": "https://github.com/symfony/browser-kit/tree/6.4"
},
"funding": [
{
@@ -7898,10 +9456,6 @@
"url": "https://github.com/fabpot",
"type": "github"
},
- {
- "url": "https://github.com/nicolas-grekas",
- "type": "github"
- },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -7911,16 +9465,16 @@
},
{
"name": "symfony/css-selector",
- "version": "v7.3.0",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2"
+ "reference": "57500fef3e0e658cb3e188503f5a80d60cea866c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2",
- "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/57500fef3e0e658cb3e188503f5a80d60cea866c",
+ "reference": "57500fef3e0e658cb3e188503f5a80d60cea866c",
"shasum": ""
},
"require": {
@@ -7956,7 +9510,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v7.3.0"
+ "source": "https://github.com/symfony/css-selector/tree/7.4"
},
"funding": [
{
@@ -7967,35 +9521,40 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-25T14:21:43+00:00"
+ "time": "2025-08-09T22:28:14+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v7.3.3",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba"
+ "reference": "62e6c8883d8faa24d9815e1e4daf5ddeac0adde8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba",
- "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/62e6c8883d8faa24d9815e1e4daf5ddeac0adde8",
+ "reference": "62e6c8883d8faa24d9815e1e4daf5ddeac0adde8",
"shasum": ""
},
"require": {
"masterminds/html5": "^2.6",
"php": ">=8.2",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/css-selector": "^6.4|^7.0"
+ "symfony/css-selector": "^6.4|^7.0|^8.0"
},
"type": "library",
"autoload": {
@@ -8023,7 +9582,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3"
+ "source": "https://github.com/symfony/dom-crawler/tree/7.4"
},
"funding": [
{
@@ -8043,20 +9602,20 @@
"type": "tidelift"
}
],
- "time": "2025-08-06T20:13:54+00:00"
+ "time": "2025-08-21T08:46:20+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.3.3",
+ "version": "7.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f"
+ "reference": "2492ca878da0addda89d9edefc3e4bad973efca2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/34d8d4c4b9597347306d1ec8eb4e1319b1e6986f",
- "reference": "34d8d4c4b9597347306d1ec8eb4e1319b1e6986f",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2492ca878da0addda89d9edefc3e4bad973efca2",
+ "reference": "2492ca878da0addda89d9edefc3e4bad973efca2",
"shasum": ""
},
"require": {
@@ -8068,10 +9627,10 @@
"symfony/console": "<6.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4|^7.0",
- "symfony/process": "^6.4|^7.0",
- "symfony/uid": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0|^8.0",
+ "symfony/http-kernel": "^6.4|^7.0|^8.0",
+ "symfony/process": "^6.4|^7.0|^8.0",
+ "symfony/uid": "^6.4|^7.0|^8.0",
"twig/twig": "^3.12"
},
"bin": [
@@ -8110,83 +9669,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.3.3"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://github.com/nicolas-grekas",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2025-08-13T11:49:31+00:00"
- },
- {
- "name": "symfony/yaml",
- "version": "v7.3.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/yaml.git",
- "reference": "d4f4a66866fe2451f61296924767280ab5732d9d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/d4f4a66866fe2451f61296924767280ab5732d9d",
- "reference": "d4f4a66866fe2451f61296924767280ab5732d9d",
- "shasum": ""
- },
- "require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3.0",
- "symfony/polyfill-ctype": "^1.8"
- },
- "conflict": {
- "symfony/console": "<6.4"
- },
- "require-dev": {
- "symfony/console": "^6.4|^7.0"
- },
- "bin": [
- "Resources/bin/yaml-lint"
- ],
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Yaml\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Loads and dumps YAML files",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/yaml/tree/v7.3.3"
+ "source": "https://github.com/symfony/var-dumper/tree/7.4"
},
"funding": [
{
@@ -8206,7 +9689,7 @@
"type": "tidelift"
}
],
- "time": "2025-08-27T11:34:33+00:00"
+ "time": "2025-08-17T17:04:24+00:00"
},
{
"name": "symplify/easy-coding-standard",
@@ -8379,16 +9862,16 @@
},
{
"name": "webmozart/glob",
- "version": "4.7.0",
+ "version": "4.8.x-dev",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/glob.git",
- "reference": "8a2842112d6916e61e0e15e316465b611f3abc17"
+ "reference": "6712c9c4a8b0f6f629303bd1b26b9f88339d901e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17",
- "reference": "8a2842112d6916e61e0e15e316465b611f3abc17",
+ "url": "https://api.github.com/repos/webmozarts/glob/zipball/6712c9c4a8b0f6f629303bd1b26b9f88339d901e",
+ "reference": "6712c9c4a8b0f6f629303bd1b26b9f88339d901e",
"shasum": ""
},
"require": {
@@ -8398,6 +9881,7 @@
"phpunit/phpunit": "^9.5",
"symfony/filesystem": "^5.3"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -8422,9 +9906,9 @@
"description": "A PHP implementation of Ant's glob.",
"support": {
"issues": "https://github.com/webmozarts/glob/issues",
- "source": "https://github.com/webmozarts/glob/tree/4.7.0"
+ "source": "https://github.com/webmozarts/glob/tree/4.8.x"
},
- "time": "2024-03-07T20:33:40+00:00"
+ "time": "2024-08-06T15:56:59+00:00"
},
{
"name": "yii2-extensions/phpstan",
@@ -8490,6 +9974,66 @@
],
"time": "2025-08-16T14:57:16+00:00"
},
+ {
+ "name": "yii2-extensions/worker-debug",
+ "version": "0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/yii2-extensions/worker-debug.git",
+ "reference": "7abd154867016c123abaf6c25d6b0437a988ed22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/yii2-extensions/worker-debug/zipball/7abd154867016c123abaf6c25d6b0437a988ed22",
+ "reference": "7abd154867016c123abaf6c25d6b0437a988ed22",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "psr/http-factory": "^1.1",
+ "yiisoft/yii2": "^2.0.53|^22",
+ "yiisoft/yii2-debug": "^2.1.27"
+ },
+ "require-dev": {
+ "infection/infection": "^0.27|^0.31",
+ "maglnet/composer-require-checker": "^4.1",
+ "php-forge/support": "^0.1",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan-strict-rules": "^2.0.3",
+ "phpunit/phpunit": "^10.5",
+ "rector/rector": "^2.1",
+ "symplify/easy-coding-standard": "^12.5",
+ "xepozz/internal-mocker": "^1.4",
+ "yii2-extensions/phpstan": "^0.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "0.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "yii2\\extensions\\debug\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Debug toolbar for extension PSR Bridge.",
+ "keywords": [
+ "debug",
+ "psr-bridge",
+ "toolbar",
+ "yii2-extension"
+ ],
+ "support": {
+ "issues": "https://github.com/yii2-extensions/worker-debug/issues",
+ "source": "https://github.com/yii2-extensions/worker-debug/tree/0.1.1"
+ },
+ "time": "2025-08-17T12:29:53+00:00"
+ },
{
"name": "yiisoft/yii2-debug",
"version": "2.1.27",
@@ -8671,8 +10215,10 @@
}
],
"aliases": [],
- "minimum-stability": "stable",
- "stability-flags": {},
+ "minimum-stability": "dev",
+ "stability-flags": {
+ "yii2-extensions/road-runner": 20
+ },
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
diff --git a/config/web/app.php b/config/web/app.php
index fcd9a74..c7ea894 100644
--- a/config/web/app.php
+++ b/config/web/app.php
@@ -4,11 +4,13 @@
use app\usecase\site\SiteController;
-/** @phpstan-var string[] $components */
+/** @phpstan-var array $components */
$components = require __DIR__ . '/components.php';
-/** @phpstan-var string[] $modules */
+/** @phpstan-var array $container */
+$container = require __DIR__ . '/container.php';
+/** @phpstan-var array $modules */
$modules = require __DIR__ . '/modules.php';
-/** @phpstan-var string[] $params */
+/** @phpstan-var array $params */
$params = require dirname(__DIR__) . '/params-web.php';
$rootDir = dirname(__DIR__, 2);
@@ -25,6 +27,7 @@
'basePath' => $rootDir,
'bootstrap' => ['log'],
'components' => $components,
+ 'container' => $container,
'controllerMap' => [
'site' => ['class' => SiteController::class],
],
diff --git a/config/web/container.php b/config/web/container.php
new file mode 100644
index 0000000..d64bdb5
--- /dev/null
+++ b/config/web/container.php
@@ -0,0 +1,37 @@
+ [
+ PSR7WorkerInterface::class => [
+ 'class' => PSR7Worker::class,
+ '__construct()' => [
+ Worker::create(),
+ Instance::of(ServerRequestFactoryInterface::class),
+ Instance::of(StreamFactoryInterface::class),
+ Instance::of(UploadedFileFactoryInterface::class),
+ ],
+ ],
+ ResponseFactoryInterface::class => ResponseFactory::class,
+ ServerRequestFactoryInterface::class => ServerRequestFactory::class,
+ StreamFactoryInterface::class => StreamFactory::class,
+ UploadedFileFactoryInterface::class => UploadedFileFactory::class,
+ ],
+];
diff --git a/config/web/modules.php b/config/web/modules.php
index f970647..451f3b8 100644
--- a/config/web/modules.php
+++ b/config/web/modules.php
@@ -2,14 +2,17 @@
declare(strict_types=1);
+use yii2\extensions\debug\WorkerDebugModule;
+use yii\gii\Module;
+
$config = [
'debug' => [
- 'class' => yii\debug\Module::class,
+ 'class' => WorkerDebugModule::class,
// uncomment the following to add your IP if you aren't connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
],
'gii' => [
- 'class' => yii\gii\Module::class,
+ 'class' => Module::class,
// uncomment the following to add your IP if you aren't connecting from localhost.
//'allowedIPs' => ['127.0.0.1', '::1'],
],
diff --git a/docker-compose.caddy.yml b/docker-compose.caddy.yml
deleted file mode 100644
index 5b6c32a..0000000
--- a/docker-compose.caddy.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-services:
- yii2-caddy:
- build:
- args:
- USER_ID: ${USER_ID:-1000}
- GROUP_ID: ${GROUP_ID:-1000}
- USER_NAME: ${USER_NAME:-www-data}
- GROUP_NAME: ${GROUP_NAME:-www-data}
- context: .
- dockerfile: docker/caddy/Dockerfile
- container_name: yii2-caddy
- env_file:
- - .env
- environment:
- TZ: "UTC"
- YII_DEBUG: "${YII_DEBUG:-false}"
- YII_ENV: "${YII_ENV:-prod}"
- ports:
- - '8081:80'
- - '8444:443'
- - '8444:443/udp'
- restart: always
- tty: true
- volumes:
- - ./:/app
- - caddy_config:/config
- - caddy_data:/data
- - composer_cache:/var/www/.composer/cache
- working_dir: /app
-
-volumes:
- caddy_data:
- caddy_config:
- composer_cache:
diff --git a/docker-compose.frankenphp.yml b/docker-compose.frankenphp.yml
deleted file mode 100644
index bfda61b..0000000
--- a/docker-compose.frankenphp.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-services:
- yii2-frankenphp:
- build:
- args:
- USER_ID: ${USER_ID:-1000}
- GROUP_ID: ${GROUP_ID:-1000}
- USER_NAME: ${USER_NAME:-www-data}
- GROUP_NAME: ${GROUP_NAME:-www-data}
- context: .
- dockerfile: docker/frankenphp/Dockerfile
- container_name: yii2-frankenphp
- entrypoint: ["/usr/local/bin/entrypoint.sh"]
- env_file:
- - .env
- environment:
- TZ: "UTC"
- YII_DEBUG: "${YII_DEBUG:-false}"
- YII_ENV: "${YII_ENV:-prod}"
- ports:
- - '8082:80'
- - '8445:443'
- - '8445:443/udp'
- restart: always
- tty: true
- volumes:
- - ./:/app
- - caddy_config:/config
- - caddy_data:/data
- - composer_cache:/var/www/.composer/cache
- working_dir: /app
-
-volumes:
- caddy_data:
- caddy_config:
- composer_cache:
diff --git a/docker-compose.nginx.yml b/docker-compose.nginx.yml
deleted file mode 100644
index 375858a..0000000
--- a/docker-compose.nginx.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-services:
- yii2-nginx:
- build:
- args:
- USER_ID: ${USER_ID:-1000}
- GROUP_ID: ${GROUP_ID:-1000}
- USER_NAME: ${USER_NAME:-www-data}
- GROUP_NAME: ${GROUP_NAME:-www-data}
- context: .
- dockerfile: docker/nginx/Dockerfile
- container_name: yii2-nginx
- entrypoint: ["/usr/local/bin/entrypoint.sh"]
- env_file:
- - .env
- environment:
- TZ: "UTC"
- YII_DEBUG: "${YII_DEBUG:-false}"
- YII_ENV: "${YII_ENV:-prod}"
- ports:
- - '8083:80'
- - '8446:443'
- restart: always
- tty: true
- volumes:
- - ./:/app
- - composer_cache:/var/www/.composer/cache
- working_dir: /app
-
-volumes:
- composer_cache:
diff --git a/docker-compose.yml b/docker-compose.yml
deleted file mode 100644
index dbd5a19..0000000
--- a/docker-compose.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-services:
- yii2-apache:
- build:
- args:
- USER_ID: ${USER_ID:-1000}
- GROUP_ID: ${GROUP_ID:-1000}
- USER_NAME: ${USER_NAME:-www-data}
- GROUP_NAME: ${GROUP_NAME:-www-data}
- context: .
- dockerfile: docker/apache/Dockerfile
- container_name: yii2-apache
- entrypoint: ["/usr/local/bin/entrypoint.sh"]
- env_file:
- - .env
- environment:
- TZ: "UTC"
- YII_DEBUG: "${YII_DEBUG:-false}"
- YII_ENV: "${YII_ENV:-prod}"
- ports:
- - '8080:80'
- - '8443:443'
- restart: always
- tty: true
- volumes:
- - ./:/app
- - composer_cache:/var/www/.composer/cache
- working_dir: /app
-
-volumes:
- composer_cache:
diff --git a/docker/apache/Dockerfile b/docker/apache/Dockerfile
deleted file mode 100644
index dcef247..0000000
--- a/docker/apache/Dockerfile
+++ /dev/null
@@ -1,64 +0,0 @@
-FROM yiisoftware/yii2-php:8.4-apache
-
-# Build arguments for user/group
-ARG USER_ID=1000
-ARG GROUP_ID=1000
-ARG USER_NAME=www-data
-ARG GROUP_NAME=www-data
-
-# Enable SSL modules and configure ports before copying config
-RUN a2enmod ssl rewrite headers mime \
- && echo "Listen 80" > /etc/apache2/ports.conf \
- && echo "Listen 443 ssl" >> /etc/apache2/ports.conf
-
-# Change web server config
-COPY docker/apache/apache.conf /etc/apache2/apache2.conf
-COPY docker/apache/vhost.conf /etc/apache2/sites-available/000-default.conf
-
-# Change PHP config
-COPY docker/php/php.ini /usr/local/etc/php/conf.d/base.ini
-
-# Set document root to /app/public (Yii2 structure)
-WORKDIR /app
-
-# Set composer environment
-ENV COMPOSER_ALLOW_SUPERUSER=1
-
-# Install supervisor, gosu, and Node.js (version simple)
-RUN apt-get update && apt-get install -y --no-install-recommends \
- supervisor \
- curl \
- gosu \
- && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
- && apt-get install -y nodejs \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Apply the user/group IDs to www-data
-RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data
-
-# Create composer and npm cache directories with proper ownership
-RUN mkdir -p /var/www/.composer/cache /var/www/.npm && \
- chown -R www-data:www-data /var/www/.composer /var/www/.npm
-
-# Copy supervisor program configs
-COPY docker/supervisor/conf.d/apache2.conf /etc/supervisor/conf.d/apache2.conf
-
-# Copy queue worker config uncommented for use with yii2-queue
-#COPY docker/supervisor/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf
-
-# Copy scripts
-COPY docker/init.sh /usr/local/bin/init.sh
-COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
-
-# Make scripts executable and validate
-RUN chmod +x /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Convert any Windows line endings
- sed -i 's/\r$//' /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Test that scripts have valid syntax
- bash -n /usr/local/bin/init.sh && \
- bash -n /usr/local/bin/entrypoint.sh && \
- echo "✓ Scripts validated successfully..."
-
-# Use ENTRYPOINT to guarantee execution
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/docker/apache/apache.conf b/docker/apache/apache.conf
deleted file mode 100644
index 413858f..0000000
--- a/docker/apache/apache.conf
+++ /dev/null
@@ -1,234 +0,0 @@
-# This is the main Apache server configuration file. It contains the
-# configuration directives that give the server its instructions.
-# See http://httpd.apache.org/docs/2.4/ for detailed information about
-# the directives and /usr/share/doc/apache2/README.Debian about Debian specific
-# hints.
-#
-#
-# Summary of how the Apache 2 configuration works in Debian:
-# The Apache 2 web server configuration in Debian is quite different to
-# upstream's suggested way to configure the web server. This is because Debian's
-# default Apache2 installation attempts to make adding and removing modules,
-# virtual hosts, and extra configuration directives as flexible as possible, in
-# order to make automating the changes and administering the server as easy as
-# possible.
-
-# It is split into several files forming the configuration hierarchy outlined
-# below, all located in the /etc/apache2/ directory:
-#
-# /etc/apache2/
-# |-- apache2.conf
-# | `-- ports.conf
-# |-- mods-enabled
-# | |-- *.load
-# | `-- *.conf
-# |-- conf-enabled
-# | `-- *.conf
-# `-- sites-enabled
-# `-- *.conf
-#
-#
-# * apache2.conf is the main configuration file (this file). It puts the pieces
-# together by including all remaining configuration files when starting up the
-# web server.
-#
-# * ports.conf is always included from the main configuration file. It is
-# supposed to determine listening ports for incoming connections which can be
-# customized anytime.
-#
-# * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/
-# directories contain particular configuration snippets which manage modules,
-# global configuration fragments, or virtual host configurations,
-# respectively.
-#
-# They are activated by symlinking available configuration files from their
-# respective *-available/ counterparts. These should be managed by using our
-# helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See
-# their respective man pages for detailed information.
-#
-# * The binary is called apache2. Due to the use of environment variables, in
-# the default configuration, apache2 needs to be started/stopped with
-# /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not
-# work with the default configuration.
-
-
-# Global configuration
-#
-
-#
-# ServerRoot: The top of the directory tree under which the server's
-# configuration, error, and log files are kept.
-#
-# NOTE! If you intend to place this on an NFS (or otherwise network)
-# mounted filesystem then please read the Mutex documentation (available
-# at );
-# you will save yourself a lot of trouble.
-#
-# Do NOT add a slash at the end of the directory path.
-#
-#ServerRoot "/etc/apache2"
-
-#
-# The accept serialization lock file MUST BE STORED ON A LOCAL DISK.
-#
-#Mutex file:${APACHE_LOCK_DIR} default
-
-#
-# The directory where shm and other runtime files will be stored.
-#
-
-DefaultRuntimeDir ${APACHE_RUN_DIR}
-
-#
-# PidFile: The file in which the server should record its process
-# identification number when it starts.
-# This needs to be set in /etc/apache2/envvars
-#
-PidFile ${APACHE_PID_FILE}
-
-#
-# Timeout: The number of seconds before receives and sends time out.
-#
-Timeout 500
-
-#
-# KeepAlive: Whether or not to allow persistent connections (more than
-# one request per connection). Set to "Off" to deactivate.
-#
-KeepAlive On
-
-#
-# MaxKeepAliveRequests: The maximum number of requests to allow
-# during a persistent connection. Set to 0 to allow an unlimited amount.
-# We recommend you leave this number high, for maximum performance.
-#
-MaxKeepAliveRequests 100
-
-#
-# KeepAliveTimeout: Number of seconds to wait for the next request from the
-# same client on the same connection.
-#
-KeepAliveTimeout 5
-
-
-# These need to be set in /etc/apache2/envvars
-User ${APACHE_RUN_USER}
-Group ${APACHE_RUN_GROUP}
-
-#
-# HostnameLookups: Log the names of clients or just their IP addresses
-# e.g., www.apache.org (on) or 204.62.129.132 (off).
-# The default is off because it'd be overall better for the net if people
-# had to knowingly turn this feature on, since enabling it means that
-# each client request will result in AT LEAST one lookup request to the
-# nameserver.
-#
-HostnameLookups Off
-
-# ErrorLog: The location of the error log file.
-# If you do not specify an ErrorLog directive within a
-# container, error messages relating to that virtual host will be
-# logged here. If you *do* define an error logfile for a
-# container, that host's errors will be logged there and not here.
-#
-ErrorLog ${APACHE_LOG_DIR}/error.log
-
-#
-# LogLevel: Control the severity of messages logged to the error_log.
-# Available values: trace8, ..., trace1, debug, info, notice, warn,
-# error, crit, alert, emerg.
-# It is also possible to configure the log level for particular modules, e.g.
-# "LogLevel info ssl:warn"
-#
-LogLevel warn
-
-# Include module configuration:
-IncludeOptional mods-enabled/*.load
-IncludeOptional mods-enabled/*.conf
-
-# Include list of ports to listen on
-Include ports.conf
-
-
-# Sets the default security model of the Apache2 HTTPD server. It does
-# not allow access to the root filesystem outside of /usr/share and /var/www.
-# The former is used by web applications packaged in Debian,
-# the latter may be used for local directories served by the web server. If
-# your system is serving content from a sub-directory in /srv you must allow
-# access here, or in any related virtual host.
-
- Options FollowSymLinks
- AllowOverride None
- Require all denied
-
-
-
- AllowOverride None
- Require all granted
-
-
-
- Options Indexes FollowSymLinks
- AllowOverride None
- Require all granted
-
-
-#
-# Options Indexes FollowSymLinks
-# AllowOverride None
-# Require all granted
-#
-
-
-# AccessFileName: The name of the file to look for in each directory
-# for additional configuration directives. See also the AllowOverride
-# directive.
-#
-AccessFileName .htaccess
-
-#
-# The following lines prevent .htaccess and .htpasswd files from being
-# viewed by Web clients.
-#
-
- Require all denied
-
-
-
-#
-# The following directives define some format nicknames for use with
-# a CustomLog directive.
-#
-# These deviate from the Common Log Format definitions in that they use %O
-# (the actual bytes sent including headers) instead of %b (the size of the
-# requested file), because the latter makes it impossible to detect partial
-# requests.
-#
-# Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.
-# Use mod_remoteip instead.
-#
-LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
-LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
-LogFormat "%h %l %u %t \"%r\" %>s %O" common
-LogFormat "%{Referer}i -> %U" referer
-LogFormat "%{User-agent}i" agent
-
-# Include of directories ignores editors' and dpkg's backup files,
-# see README.Debian for details.
-
-# Include generic snippets of statements
-IncludeOptional conf-enabled/*.conf
-
-# Include the virtual host configurations:
-IncludeOptional sites-enabled/*.conf
-
-# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
-
-ServerTokens ProductOnly
-ServerSignature Off
-
-TraceEnable Off
-
-
- Require all denied
-
\ No newline at end of file
diff --git a/docker/apache/vhost.conf b/docker/apache/vhost.conf
deleted file mode 100644
index 943a9f9..0000000
--- a/docker/apache/vhost.conf
+++ /dev/null
@@ -1,71 +0,0 @@
-# Global configuration for the public directory
-
- Options FollowSymLinks
- AllowOverride All
- Require all granted
-
- # Ensure Apache serves static files directly
-
- Header unset ETag
- FileETag None
-
- # Completely disable PHP processing for these files
- RemoveHandler .php
- SetHandler default-handler
-
-
-
-# HTTP Virtual Host - Redirect to HTTPS
-
- ServerAdmin webmaster@localhost
- DocumentRoot /app/public
-
- # Redirect all HTTP to HTTPS
- RewriteEngine On
- RewriteCond %{HTTPS} off
- RewriteRule ^(.*)$ https://localhost:8443%{REQUEST_URI} [R=301,L]
-
- # Logging configuration
- ErrorLog ${APACHE_LOG_DIR}/error.log
- CustomLog ${APACHE_LOG_DIR}/access.log combined
-
-
-# HTTPS Virtual Host
-
- # ServerName directive, which sets the request scheme, hostname and port that
- ServerName localhost
- ServerAdmin webmaster@localhost
- DocumentRoot /app/public
-
- # SSL Configuration
- SSLEngine on
- SSLCertificateFile /app/docker/ssl/localhost.pem
- SSLCertificateKeyFile /app/docker/ssl/localhost-key.pem
-
- # Enable rewrite logging for debugging (remove in production)
- LogLevel warn rewrite:trace6
-
- # Yii2 URL Rewriting Configuration
- RewriteEngine On
-
- # Step 1: Exclude static files by extension completely
- RewriteRule \.(css|js|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot|map)$ - [L,QSA]
-
- # Step 2: Exclude specific asset directories by path
- RewriteRule ^(assets|image|images|css|js|fonts|media)/ - [L,QSA]
-
- # Step 3: If it's an existing file, serve it directly
- RewriteCond %{REQUEST_FILENAME} -f
- RewriteRule ^ - [L]
-
- # Step 4: If it's an existing directory, serve it directly
- RewriteCond %{REQUEST_FILENAME} -d
- RewriteRule ^ - [L]
-
- # Step 5: Only if none of the above apply, send to index.php
- RewriteRule ^(.*)$ index.php [L,QSA]
-
- # Logging configuration for SSL
- ErrorLog ${APACHE_LOG_DIR}/ssl_error.log
- CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
-
diff --git a/docker/caddy/Caddyfile b/docker/caddy/Caddyfile
deleted file mode 100644
index 508997c..0000000
--- a/docker/caddy/Caddyfile
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- # Global options
- auto_https off
-}
-
-# HTTPS server block using mkcert certificates
-https://localhost:443 {
- # Specify mkcert certificates
- tls /app/docker/ssl/localhost.pem /app/docker/ssl/localhost-key.pem
-
- # Document root
- root * /app/public
-
- # Using TCP socket for improved compatibility across environments
- php_fastcgi 127.0.0.1:9000 {
- index index.php
- try_files {path} {path}/index.php =404
- }
-
- # Security headers
- header {
- X-Frame-Options "SAMEORIGIN"
- X-XSS-Protection "1; mode=block"
- X-Content-Type-Options "nosniff"
- Strict-Transport-Security "max-age=31536000; includeSubDomains"
- -Server
- }
-
- # Logging
- log {
- output stdout
- format console
- }
-
- # Handle static files
- @static {
- file
- path *.css *.js *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
- }
- handle @static {
- header Cache-Control "public, max-age=31536000"
- file_server
- }
-
- # Block access to sensitive directories
- @forbidden {
- path /.git/* /vendor/* /runtime/* /.env*
- }
- respond @forbidden 404
-
- # Deny PHP execution in assets directory (Yii2 security)
- @assets_php {
- path /assets/*.php
- }
- respond @assets_php 403
-
- # Try files for Yii2 URL rewriting
- try_files {path} {path}/ /index.php?{query}
-}
-
-# HTTP server block - redirect to HTTPS
-http://localhost:80 {
- # Redirect all HTTP traffic to HTTPS
- redir https://localhost:8444{uri} permanent
-}
diff --git a/docker/caddy/Dockerfile b/docker/caddy/Dockerfile
deleted file mode 100644
index 57f376c..0000000
--- a/docker/caddy/Dockerfile
+++ /dev/null
@@ -1,85 +0,0 @@
-FROM php:8.4-fpm
-
-# Build arguments for user/group
-ARG USER_ID=1000
-ARG GROUP_ID=1000
-ARG USER_NAME=www-data
-ARG GROUP_NAME=www-data
-
-# Set document root to /app/public (Yii2 structure)
-WORKDIR /app
-
-# Install required system packages for PHP extensions for Yii 2.0 Framework
-COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
-RUN install-php-extensions \
- bcmath \
- @composer \
- exif \
- gd \
- imagick \
- intl \
- opcache \
- pdo_mysql \
- pdo_pgsql \
- soap \
- xdebug \
- zip
-
-# Set composer environment
-ENV COMPOSER_ALLOW_SUPERUSER=1
-
-# Change PHP config
-COPY docker/php/php.ini /usr/local/etc/php/conf.d/base.ini
-
-# Install supervisor, gosu, and Node.js (version simple)
-RUN apt-get update && apt-get install -y --no-install-recommends \
- supervisor \
- curl \
- gosu \
- debian-keyring \
- debian-archive-keyring \
- apt-transport-https \
- && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
- && apt-get install -y nodejs \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Install Caddy (standalone)
-RUN curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg \
- && curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | tee /etc/apt/sources.list.d/caddy-stable.list \
- && apt-get update \
- && apt-get install -y caddy \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Change web server config
-COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
-
-# Apply the user/group IDs to www-data
-RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data
-
-# Create composer and npm cache directories with proper ownership
-RUN mkdir -p /var/www/.composer/cache /var/www/.npm && \
- chown -R www-data:www-data /var/www/.composer /var/www/.npm
-
-# Copy supervisor program configs
-COPY docker/supervisor/conf.d/caddy-php-fpm.conf /etc/supervisor/conf.d/caddy-php-fpm.conf
-
-# Copy queue worker config uncommented for use with yii2-queue
-#COPY docker/supervisor/config.d/queue.conf /etc/supervisor/available/queue.conf
-
-# Copy scripts
-COPY docker/init.sh /usr/local/bin/init.sh
-COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
-
-# Make scripts executable and validate
-RUN chmod +x /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Convert any Windows line endings
- sed -i 's/\r$//' /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Test that scripts have valid syntax
- bash -n /usr/local/bin/init.sh && \
- bash -n /usr/local/bin/entrypoint.sh && \
- echo "✓ Scripts validated successfully..."
-
-# Use ENTRYPOINT to guarantee execution
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
deleted file mode 100644
index 7ce7385..0000000
--- a/docker/entrypoint.sh
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/bash
-set -euo pipefail
-
-echo "=== Container Starting ==="
-echo "Running initialization script..."
-
-# Ensure init script is executable
-chmod +x /usr/local/bin/init.sh
-
-# Execute init script; replace the PID 1 shell
-exec /usr/local/bin/init.sh
-
-# If we get here, everything went well
-echo "=== Container ready ==="
diff --git a/docker/frankenphp/Caddyfile b/docker/frankenphp/Caddyfile
deleted file mode 100644
index 9f83f5f..0000000
--- a/docker/frankenphp/Caddyfile
+++ /dev/null
@@ -1,62 +0,0 @@
-{
- # Global options
- auto_https off
-}
-
-# HTTPS server block using mkcert certificates
-https://localhost:443 {
- # Specify mkcert certificates
- tls /app/docker/ssl/localhost.pem /app/docker/ssl/localhost-key.pem
-
- # Document root
- root * /app/public
-
- # Enable PHP processing with FrankenPHP
- php_server
-
- # Security headers
- header {
- X-Frame-Options "SAMEORIGIN"
- X-XSS-Protection "1; mode=block"
- X-Content-Type-Options "nosniff"
- Strict-Transport-Security "max-age=31536000; includeSubDomains"
- -Server
- }
-
- # Logging
- log {
- output stdout
- format console
- }
-
- # Handle static files
- @static {
- file
- path *.css *.js *.png *.jpg *.jpeg *.gif *.ico *.svg *.woff *.woff2 *.ttf *.eot
- }
- handle @static {
- header Cache-Control "public, max-age=31536000"
- file_server
- }
-
- # Block access to sensitive directories
- @forbidden {
- path /.git/* /vendor/* /runtime/* /.env*
- }
- respond @forbidden 404
-
- # Deny PHP execution in assets directory (Yii2 security)
- @assets_php {
- path /assets/*.php
- }
- respond @assets_php 403
-
- # Try files for Yii2 URL rewriting
- try_files {path} {path}/ /index.php?{query}
-}
-
-# HTTP server block - redirect to HTTPS
-http://localhost:80 {
- # Redirect all HTTP traffic to HTTPS
- redir https://localhost:8444{uri} permanent
-}
diff --git a/docker/frankenphp/Dockerfile b/docker/frankenphp/Dockerfile
deleted file mode 100644
index 95efe2a..0000000
--- a/docker/frankenphp/Dockerfile
+++ /dev/null
@@ -1,74 +0,0 @@
-FROM dunglas/frankenphp:1.8-php8.4
-
-# Build arguments for user/group
-ARG USER_ID=1000
-ARG GROUP_ID=1000
-ARG USER_NAME=www-data
-ARG GROUP_NAME=www-data
-
-# Change web server config
-COPY docker/frankenphp/Caddyfile /etc/caddy/Caddyfile
-
-# Set document root to /app/public (Yii2 structure)
-WORKDIR /app
-
-# Install required system packages for PHP extensions for Yii 2.0 Framework
-COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/
-RUN install-php-extensions \
- bcmath \
- @composer \
- exif \
- gd \
- imagick \
- intl \
- opcache \
- pdo_mysql \
- pdo_pgsql \
- soap \
- xdebug \
- zip
-
-# Set composer environment
-ENV COMPOSER_ALLOW_SUPERUSER=1
-
-# Change PHP config
-COPY docker/php/php.ini /usr/local/etc/php/conf.d/base.ini
-
-# Install supervisor, gosu, and Node.js (version simple)
-RUN apt-get update && apt-get install -y --no-install-recommends \
- supervisor \
- curl \
- gosu \
- && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
- && apt-get install -y nodejs \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Apply the user/group IDs to www-data
-RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data
-
-# Create composer and npm cache directories with proper ownership
-RUN mkdir -p /var/www/.composer/cache /var/www/.npm && \
- chown -R www-data:www-data /var/www/.composer /var/www/.npm
-
-# Copy supervisor program configs
-COPY docker/supervisor/conf.d/frankenphp.conf /etc/supervisor/conf.d/frankenphp.conf
-
-# Copy queue worker config uncommented for use with yii2-queue
-#COPY docker/supervisor/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf
-
-# Copy scripts
-COPY docker/init.sh /usr/local/bin/init.sh
-COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
-
-# Make scripts executable and validate
-RUN chmod +x /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Convert any Windows line endings
- sed -i 's/\r$//' /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Test that scripts have valid syntax
- bash -n /usr/local/bin/init.sh && \
- bash -n /usr/local/bin/entrypoint.sh && \
- echo "✓ Scripts validated successfully..."
-
-# Use ENTRYPOINT to guarantee execution
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/docker/init.sh b/docker/init.sh
deleted file mode 100644
index 2d00904..0000000
--- a/docker/init.sh
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/bash
-
-# Colors for output
-RED='\033[0;31m'
-GREEN='\033[0;32m'
-YELLOW='\033[1;33m'
-NC='\033[0m'
-
-echo -e "${GREEN}Starting container setup...${NC}"
-
-# Create necessary Caddy directories with proper permissions
-echo -e "${YELLOW}Creating Caddy directories...${NC}"
-mkdir -p /data/caddy/locks /config/caddy
-chown -R www-data:www-data /data /config
-chmod -R 755 /data /config
-
-# Create PHP-FPM socket directory with proper permissions
-echo -e "${YELLOW}Creating PHP-FPM socket directory...${NC}"
-mkdir -p /var/run/php
-chown www-data:www-data /var/run/php
-chmod 755 /var/run/php
-
-# Create necessary Yii2 directories if they don't exist
-echo -e "${YELLOW}Creating Yii2 directories...${NC}"
-mkdir -p /app/runtime/cache
-mkdir -p /app/runtime/logs
-mkdir -p /app/public/assets
-
-# Configure permissions for Yii2 directories
-echo -e "${YELLOW}Setting up permissions...${NC}"
-
-# Try to set permissions and ownership - handle both mounted volumes and container-only scenarios
-if chown -R www-data:www-data /app/runtime 2>/dev/null; then
- chmod -R 775 /app/runtime
- echo -e "${GREEN}✓ Runtime directory configured correctly${NC}"
-else
- # If chown fails (mounted volume), try chmod only
- if chmod -R 777 /app/runtime 2>/dev/null; then
- echo -e "${YELLOW}⚠ Runtime directory permissions set to 777 (mounted volume)${NC}"
- else
- echo -e "${RED}✗ Error: Could not configure runtime directory${NC}"
- fi
-fi
-
-if chown -R www-data:www-data /app/public/assets 2>/dev/null; then
- chmod -R 775 /app/public/assets
- echo -e "${GREEN}✓ Assets directory configured correctly${NC}"
-else
- # If chown fails (mounted volume), try chmod only
- if chmod -R 777 /app/public/assets 2>/dev/null; then
- echo -e "${YELLOW}⚠ Assets directory permissions set to 777 (mounted volume)${NC}"
- else
- echo -e "${RED}✗ Error: Could not configure assets directory${NC}"
- fi
-fi
-
-echo -e "${GREEN}Setup completed.${NC}"
-
-# Check if composer.json exists and vendor directory doesn't exist
-if [ -f "/app/composer.json" ] && [ ! -d "/app/vendor" ]; then
- echo -e "${YELLOW}Installing Composer dependencies...${NC}"
-
- # Give www-data write access without exposing the tree to everyone
- chown -R www-data:www-data /app && \
- chmod -R u+rwX,g+rwX /app
-
- # Create and configure npm cache directory for www-data
- mkdir -p /var/www/.npm
- chown -R www-data:www-data /var/www/.npm
-
- # Install dependencies with proper environment variables
- if [ "$YII_ENV" = "prod" ]; then
- # Production: exclude dev dependencies and optimize autoloader
- gosu www-data env \
- HOME=/var/www \
- COMPOSER_HOME=/var/www/.composer \
- COMPOSER_CACHE_DIR=/var/www/.composer/cache \
- npm_config_cache=/var/www/.npm \
- composer install --no-dev --optimize-autoloader --no-interaction
- else
- # Development: include dev dependencies
- gosu www-data env \
- HOME=/var/www \
- COMPOSER_HOME=/var/www/.composer \
- COMPOSER_CACHE_DIR=/var/www/.composer/cache \
- npm_config_cache=/var/www/.npm \
- composer install --optimize-autoloader --no-interaction
- fi
-
- echo -e "${GREEN}✓ Composer dependencies installed successfully${NC}"
-fi
-
-# Copy supervisor configuration
-echo -e "${YELLOW}Configuring supervisor...${NC}"
-
-if [ -f "/app/docker/supervisor/supervisord.conf" ]; then
- cp /app/docker/supervisor/supervisord.conf /etc/supervisor/supervisord.conf
- echo -e "${GREEN}✓ Supervisor configuration copied successfully${NC}"
-else
- echo -e "${RED}✗ Error: Supervisor configuration file not found${NC}"
- exit 1
-fi
-
-echo -e "${GREEN}Starting supervisor daemon...${NC}"
-
-# Start supervisor daemon
-exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
diff --git a/docker/nginx/Dockerfile b/docker/nginx/Dockerfile
deleted file mode 100644
index 71c426b..0000000
--- a/docker/nginx/Dockerfile
+++ /dev/null
@@ -1,60 +0,0 @@
-FROM yiisoftware/yii2-php:8.4-fpm-nginx
-
-# Build arguments for user/group
-ARG USER_ID=1000
-ARG GROUP_ID=1000
-ARG USER_NAME=www-data
-ARG GROUP_NAME=www-data
-
-# Change nginx config
-COPY docker/nginx/nginx.conf /etc/nginx/nginx.conf
-COPY docker/nginx/default.conf /etc/nginx/conf.d/default.conf
-
-# Change PHP config
-COPY docker/php/php.ini /usr/local/etc/php/conf.d/base.ini
-
-# Set document root to /app/public (Yii2 structure)
-WORKDIR /app
-
-# Set composer environment
-ENV COMPOSER_ALLOW_SUPERUSER=1
-
-# Install supervisor, gosu, and Node.js (version simple)
-RUN apt-get update && apt-get install -y --no-install-recommends \
- supervisor \
- curl \
- gosu \
- && curl -fsSL https://deb.nodesource.com/setup_lts.x | bash - \
- && apt-get install -y nodejs \
- && apt-get clean \
- && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-
-# Apply the user/group IDs to www-data
-RUN usermod -u ${USER_ID} www-data && groupmod -g ${GROUP_ID} www-data
-
-# Create composer and npm cache directories with proper ownership
-RUN mkdir -p /var/www/.composer/cache /var/www/.npm && \
- chown -R www-data:www-data /var/www/.composer /var/www/.npm
-
-# Copy supervisor program configs
-COPY docker/supervisor/conf.d/nginx.conf /etc/supervisor/conf.d/nginx.conf
-COPY docker/supervisor/conf.d/php-fpm.conf /etc/supervisor/conf.d/php-fpm.conf
-
-# Copy queue worker config uncommented for use with yii2-queue
-#COPY docker/supervisor/conf.d/queue.conf /etc/supervisor/conf.d/queue.conf
-
-# Copy scripts
-COPY docker/init.sh /usr/local/bin/init.sh
-COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh
-
-# Make scripts executable and validate
-RUN chmod +x /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Convert any Windows line endings
- sed -i 's/\r$//' /usr/local/bin/init.sh /usr/local/bin/entrypoint.sh && \
- # Test that scripts have valid syntax
- bash -n /usr/local/bin/init.sh && \
- bash -n /usr/local/bin/entrypoint.sh && \
- echo "✓ Scripts validated successfully..."
-
-# Use ENTRYPOINT to guarantee execution
-ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
diff --git a/docker/nginx/default.conf b/docker/nginx/default.conf
deleted file mode 100644
index 995d710..0000000
--- a/docker/nginx/default.conf
+++ /dev/null
@@ -1,94 +0,0 @@
-# HTTP server - Redirect to HTTPS
-server {
- listen 80;
- server_name localhost;
-
- # Redirect all HTTP to HTTPS
- return 301 https://localhost:8445$request_uri;
-}
-
-# HTTPS server
-server {
- charset utf-8;
- client_max_body_size 128M;
- listen 443 ssl http2;
- server_name localhost;
-
- # SSL Configuration
- ssl_certificate /app/docker/ssl/localhost.pem;
- ssl_certificate_key /app/docker/ssl/localhost-key.pem;
-
- # SSL Security Settings
- ssl_protocols TLSv1.2 TLSv1.3;
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384;
- ssl_prefer_server_ciphers off;
- ssl_session_cache shared:SSL:10m;
- ssl_session_timeout 10m;
-
- # Document root and index file
- root /app/public;
- index index.php;
-
- # Security headers
- add_header X-Frame-Options "SAMEORIGIN" always;
- add_header X-XSS-Protection "1; mode=block" always;
- add_header X-Content-Type-Options "nosniff" always;
- add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
-
- # Logging
- access_log /var/log/nginx/ssl_access.log;
- error_log /var/log/nginx/ssl_error.log;
-
- # Yii URL rewriting (CRITICAL for Yii2)
- location / {
- try_files $uri $uri/ /index.php$is_args$args;
- }
-
- # Deny PHP execution in /assets before the generic handler (Yii2 security)
- location ~ ^/assets/.*\.php$ {
- deny all;
- return 403;
- }
-
- # PHP handling via PHP-FPM
- location ~ \.php$ {
- include fastcgi_params;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param HTTPS on;
- fastcgi_pass 127.0.0.1:9000;
- try_files $uri =404;
-
- # PHP execution settings
- fastcgi_read_timeout 300;
- fastcgi_buffer_size 128k;
- fastcgi_buffers 4 256k;
- fastcgi_busy_buffers_size 256k;
- }
-
- # Block access to sensitive files
- location ~ /\.git {
- deny all;
- }
-
- location ~ /\.ht {
- deny all;
- }
-
- # Block access to hidden files/directories
- location ~* /\. {
- deny all;
- }
-
- # Static files handling with caching
- location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
- expires 1y;
- add_header Cache-Control "public, immutable";
- try_files $uri =404;
- }
-
- # Deny access to PHP files in specific directories
- location ~ ^/(vendor|runtime)/.+\.php$ {
- deny all;
- return 404;
- }
-}
diff --git a/docker/nginx/nginx.conf b/docker/nginx/nginx.conf
deleted file mode 100644
index 8a6b419..0000000
--- a/docker/nginx/nginx.conf
+++ /dev/null
@@ -1,58 +0,0 @@
-user www-data;
-worker_processes auto;
-pid /run/nginx.pid;
-include /etc/nginx/modules-enabled/*.conf;
-
-events {
- worker_connections 768;
- multi_accept on;
- use epoll;
-}
-
-http {
- # Basic Settings
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
-
- # Security headers
- server_tokens off;
-
- include /etc/nginx/mime.types;
- default_type application/octet-stream;
-
- # SSL Settings
- ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM';
- ssl_ecdh_curve X25519:P-256;
- ssl_prefer_server_ciphers on;
-
- # Logging Settings
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
-
- access_log /var/log/nginx/access.log main;
- error_log /var/log/nginx/error.log warn;
-
- # Gzip Settings
- gzip on;
- gzip_vary on;
- gzip_proxied any;
- gzip_comp_level 6;
- gzip_types
- text/plain
- text/css
- text/xml
- text/javascript
- application/json
- application/javascript
- application/xml+rss
- application/atom+xml
- image/svg+xml;
-
- # Virtual Host Configs
- include /etc/nginx/conf.d/*.conf;
- include /etc/nginx/sites-enabled/*;
-}
diff --git a/docker/php/php.ini b/docker/php/php.ini
deleted file mode 100644
index 92fe1f7..0000000
--- a/docker/php/php.ini
+++ /dev/null
@@ -1,23 +0,0 @@
-# Global PHP configuration for the Docker container
-date.timezone = UTC
-display_errors = Off
-expose_php = Off
-memory_limit = 512M
-post_max_size = 150M
-session.auto_start = Off
-short_open_tag = Off
-upload_max_filesize = 15M
-
-# https://symfony.com/doc/current/performance.html
-# OPcache optimizations
-opcache.enable = 1
-opcache.enable_cli = 1
-opcache.interned_strings_buffer = 16
-opcache.jit = tracing
-opcache.jit_buffer_size = 64M
-opcache.max_accelerated_files = 20000
-opcache.memory_consumption = 256
-opcache.revalidate_freq = 2
-opcache.validate_timestamps = 1
-realpath_cache_size = 4096K
-realpath_cache_ttl = 120
diff --git a/docker/ssl/localhost-key.pem b/docker/ssl/localhost-key.pem
deleted file mode 100644
index 4677e62..0000000
--- a/docker/ssl/localhost-key.pem
+++ /dev/null
@@ -1,28 +0,0 @@
------BEGIN PRIVATE KEY-----
-MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDJXRl0fj4a5Myo
-WpAN8jevuPIlvS19Yk2243GIXf9rNt7/th4ujMYa7DyGmFE4UiXz/gj5y9vq6/3d
-JNrVPqfcBHKgDdGt4V+c6bauzxhs+QilYzft/9/y/Mglt6Z9ibsvIGnRn6R8gc6W
-dV2KPRUNDTdb83R0Y7CFRydTkTEYl1/mldAz5MNrlIYrr55PbQTG2fZlMXcfmJOh
-TzGvux3skPRD4igTV8rxd0x5RDvcVdSCOx3vpI2ZJ3Vh28Bp934mTNo4Ihsmkn4A
-nzUJsyRNAcXp//8xz9upvmy4FfqXhhR5/oOit4INMjFxkEA2CrX7CYz/EiRhyxWt
-jGmxKXSVAgMBAAECggEARIxC7BtFvRYCbZVW0MiSGGnXVO2PnM1oM0g+D/QfzTnC
-tD4lDCe0ENo2yIL1szyT2vmxyIeTd+eaZjvzmwBXWFjTRJUvuges6tfM7rllUUN9
-o/+gvI6MiEVxRRW9waKvbB2WqFu2PQRbdXDCxRqCHg1PuSepjy2Ym+ZbBuG4Wuwh
-q9vbbqe0isp0YZr8oCeNTbR2Mi2q2DPUTP+WdA0TXulx+IwlIlYnIk0a2IGcdGpX
-io9Mt3/aspZhx7uQf3yBoVMiOWRx/04t4Yc0oxuwLP4atGd7jhKZ2dfgCo6jPPet
-ojIpJgN7vW3o4xRnrv0UuTq9vm2W0ZtV5Zfx4sp/gQKBgQDMBGV5s5itMXSdqoXg
-4xtELye0oMYEd1ih8+ql+VP08nUeflV7vD6+Ci8/x++Azqpr9SU1KBG/9Cj2jK8k
-uLdeKcEuac8DjU1eELGmDnIk4m0supEP3JyrTQCVQYw9Pwvv+jGNz2zi0xppIzoP
-eObU/ftoV3Ue32c9tjMMvzlpBQKBgQD8q57knuAqTVJiIqo1LsRj+j5XQ3IpCYY7
-bVHHi607JywBE8JyerkycYCs6BU4AyZNe8Wp6YJM6qINHgvD13j7CjzSg/YEQVla
-O196Ka08Latvu6D3BqR9oKy+5vto/QNxD0hGToWySZCVjbsc5QRxCbq77GZ05EpI
-owj0Wz9yUQKBgEpFJ3Pgj6otINjs5QPzaU+vIvM8vBmQIPIES93UIF5BjaVmNFRx
-OR4RsxWzAVuQ4LWgbsUlKyEID4mBuZjSrd5XsP3mgvg2Dn458ZIUHDWVQE1SNdDi
-bR5nT9kGHbmGJCBeon+PjYIde7XenxpW1yGevFFF1VtB1OHAXGE9k/bJAoGBAJDa
-wylGfDVERurD/NioiybWHE9i91vXfgEr1yqTRSkYd/3WGjAPc4Ub1S1LkH6gL6FU
-SCn1GSKHkYf7pbsNGOqzH9OAm9YssNEuILqkkhBiDlrsMofsYvky2FZJjfDOvN5g
-aIsGEVf5HM7ghlk2Yql7bna2PLbe+kdSUJvmhCVBAoGBAMY9+yNm9zpHYDLfgmeG
-mUjUrw73G7j+ucRQI6/owgaqJWKlfULG2CQ18XhcpjJcI7R1gADwNwlJN7AjGDtg
-gskDn8yoAGBvaBgkkkv3Z8rKTCGR8mh4bY6G89agY9NphigsaUJrn+4iX59K2/eK
-DNFgybL+X7Mh7P8tmBt1Adua
------END PRIVATE KEY-----
diff --git a/docker/ssl/localhost.pem b/docker/ssl/localhost.pem
deleted file mode 100644
index 7338a1f..0000000
--- a/docker/ssl/localhost.pem
+++ /dev/null
@@ -1,26 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEYjCCAsqgAwIBAgIRAMJ3dsZ62GwPUcMuKwB/pBQwDQYJKoZIhvcNAQELBQAw
-gYcxHjAcBgNVBAoTFW1rY2VydCBkZXZlbG9wbWVudCBDQTEuMCwGA1UECwwlVGVy
-YWJ5dGVzb2Z0d1xkZXZlbG9wZXJAVGVyYWJ5dGVzb2Z0dzE1MDMGA1UEAwwsbWtj
-ZXJ0IFRlcmFieXRlc29mdHdcZGV2ZWxvcGVyQFRlcmFieXRlc29mdHcwHhcNMjUw
-NzEwMjIxNjI2WhcNMjcxMDEwMjExNjI2WjBZMScwJQYDVQQKEx5ta2NlcnQgZGV2
-ZWxvcG1lbnQgY2VydGlmaWNhdGUxLjAsBgNVBAsMJVRlcmFieXRlc29mdHdcZGV2
-ZWxvcGVyQFRlcmFieXRlc29mdHcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
-AoIBAQDJXRl0fj4a5MyoWpAN8jevuPIlvS19Yk2243GIXf9rNt7/th4ujMYa7DyG
-mFE4UiXz/gj5y9vq6/3dJNrVPqfcBHKgDdGt4V+c6bauzxhs+QilYzft/9/y/Mgl
-t6Z9ibsvIGnRn6R8gc6WdV2KPRUNDTdb83R0Y7CFRydTkTEYl1/mldAz5MNrlIYr
-r55PbQTG2fZlMXcfmJOhTzGvux3skPRD4igTV8rxd0x5RDvcVdSCOx3vpI2ZJ3Vh
-28Bp934mTNo4Ihsmkn4AnzUJsyRNAcXp//8xz9upvmy4FfqXhhR5/oOit4INMjFx
-kEA2CrX7CYz/EiRhyxWtjGmxKXSVAgMBAAGjdjB0MA4GA1UdDwEB/wQEAwIFoDAT
-BgNVHSUEDDAKBggrBgEFBQcDATAfBgNVHSMEGDAWgBRlhRQpnl7nIy6O/r3UOcaY
-LgXBSzAsBgNVHREEJTAjgglsb2NhbGhvc3SHBH8AAAGHEAAAAAAAAAAAAAAAAAAA
-AAEwDQYJKoZIhvcNAQELBQADggGBAIR0dkwyUST+W8TATCZbYThwiYuTSLYyQvyX
-7ieIYWW31nAfcL/WvMt5d80p67mLPvGoGLZSayId7uf6j0LVY2Y94G1z7HOdRd7s
-D7InIrLI0G7pKSXI8mSCczgpx2FD2yIkHaDCdZIYXpkkAhJ6I4hghSG2KZoJ0vhA
-JPTd9VW8ydYykfE619wjZ68RUlve4wtNkmQCrJAWOZMWCNl8O/iz5cWafTr0p4kD
-6qdE/gKvfyWQdc1XgPpZJkpYNw+CGVcpfE7i/++FfspTTY+XyYZClbQjMD1hNGq/
-ATsl8DR4xH5ztUaAkLBRDXpXGal7VyNoBpBot9scDR71YMsTTKf/1NdIt8gPLF4P
-ULwW7UvaHQAj3klPcanEaTv/bgQxor6b8tSwMLqHcU+SdQBjYnWLuAzKTCvL9m73
-MQRRt/N+Z9McSApps0F82eSR3a1HaU5lyH6Es6dLkVnY/ksmzqwi5FADsORSH95M
-GvP9WbrnCQvIW/n3T3pvmuV/BeRkVg==
------END CERTIFICATE-----
diff --git a/docker/supervisor/conf.d/apache2.conf b/docker/supervisor/conf.d/apache2.conf
deleted file mode 100644
index 780bf67..0000000
--- a/docker/supervisor/conf.d/apache2.conf
+++ /dev/null
@@ -1,8 +0,0 @@
-[program:apache2]
-command=/bin/bash -c "source /etc/apache2/envvars && exec /usr/sbin/apache2 -DFOREGROUND"
-autorestart=true
-autostart=true
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
diff --git a/docker/supervisor/conf.d/caddy-php-fpm.conf b/docker/supervisor/conf.d/caddy-php-fpm.conf
deleted file mode 100644
index eaea1f5..0000000
--- a/docker/supervisor/conf.d/caddy-php-fpm.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-[program:php-fpm]
-command=/usr/local/sbin/php-fpm --nodaemonize
-autorestart=true
-autostart=true
-priority=5
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-user=root
-
-[program:caddy]
-command=/usr/bin/caddy run --config /etc/caddy/Caddyfile
-autorestart=true
-autostart=true
-priority=10
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-user=www-data
diff --git a/docker/supervisor/conf.d/frankenphp.conf b/docker/supervisor/conf.d/frankenphp.conf
deleted file mode 100644
index d7958ce..0000000
--- a/docker/supervisor/conf.d/frankenphp.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-[program:frankenphp]
-command=/usr/local/bin/frankenphp run --config /etc/caddy/Caddyfile
-autorestart=true
-autostart=true
-killasgroup=true
-priority=10
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-stopasgroup=true
-stopsignal=QUIT
-user=www-data
diff --git a/docker/supervisor/conf.d/nginx.conf b/docker/supervisor/conf.d/nginx.conf
deleted file mode 100644
index 3df5802..0000000
--- a/docker/supervisor/conf.d/nginx.conf
+++ /dev/null
@@ -1,12 +0,0 @@
-[program:nginx]
-command=/usr/sbin/nginx -g "daemon off;"
-autostart=true
-autorestart=true
-priority=10
-killasgroup=true
-stopasgroup=true
-stopsignal=QUIT
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
diff --git a/docker/supervisor/conf.d/php-fpm.conf b/docker/supervisor/conf.d/php-fpm.conf
deleted file mode 100644
index 39399ab..0000000
--- a/docker/supervisor/conf.d/php-fpm.conf
+++ /dev/null
@@ -1,13 +0,0 @@
-
-[program:php-fpm]
-command=/usr/local/sbin/php-fpm --nodaemonize
-autorestart=true
-autostart=true
-killasgroup=true
-priority=5
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-stopasgroup=true
-stopsignal=QUIT
diff --git a/docker/supervisor/conf.d/queue.conf b/docker/supervisor/conf.d/queue.conf
deleted file mode 100644
index b8eba53..0000000
--- a/docker/supervisor/conf.d/queue.conf
+++ /dev/null
@@ -1,11 +0,0 @@
-[program:yii-queue-worker]
-process_name=%(program_name)s_%(process_num)02d
-command=/usr/local/bin/php /app/yii queue/listen --verbose=1 --color=0
-autorestart=true
-autostart=true
-numprocs=4
-stderr_logfile=/dev/stderr
-stderr_logfile_maxbytes=0
-stdout_logfile=/dev/stdout
-stdout_logfile_maxbytes=0
-user=www-data
diff --git a/docker/supervisor/supervisord.conf b/docker/supervisor/supervisord.conf
deleted file mode 100644
index d209121..0000000
--- a/docker/supervisor/supervisord.conf
+++ /dev/null
@@ -1,14 +0,0 @@
-[supervisord]
-logfile = /proc/self/fd/1
-logfile_maxbytes = 0
-loglevel = info
-nodaemon = true
-pidfile = /var/run/supervisord.pid
-silent = true
-user = root
-
-[include]
-files = /etc/supervisor/conf.d/*.conf
-
-[supervisorctl]
-serverurl = unix:///var/run/supervisor.sock
diff --git a/web/index.php b/web/index.php
index 7d8b560..32ec6eb 100644
--- a/web/index.php
+++ b/web/index.php
@@ -2,26 +2,18 @@
declare(strict_types=1);
-require_once dirname(__DIR__) . '/vendor/autoload.php';
+require __DIR__ . '/../vendor/autoload.php';
-// Load environment variables from .env file
-$dotenv = Dotenv\Dotenv::createImmutable(dirname(__DIR__));
-$dotenv->safeLoad();
+use yii2\extensions\psrbridge\http\StatelessApplication;
+use yii2\extensions\roadrunner\RoadRunner;
-define('YII_DEBUG', $_ENV['YII_DEBUG'] ?? false);
-define('YII_ENV', $_ENV['YII_ENV'] ?? 'prod');
+define('YII_DEBUG', getenv('YII_DEBUG') ?? false);
+define('YII_ENV', getenv('YII_ENV') ?? 'prod');
-require_once dirname(__DIR__) . '/vendor/yiisoft/yii2/Yii.php';
-
-if (getenv('YII_C3')) {
- $c3 = dirname(__DIR__) . '/c3.php';
-
- if (file_exists($c3)) {
- require_once $c3;
- }
-}
+require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
$config = require dirname(__DIR__) . '/config/web/app.php';
-$app = new yii\web\Application($config);
-$app->run();
+$runner = new RoadRunner(new StatelessApplication($config));
+
+$runner->run();
From 35a88ffb033ccb71aabbb1c0c749bcb619347389 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:14:57 -0400
Subject: [PATCH 02/22] chore: Remove Docker CI workflow file to streamline CI
configuration.
---
.github/workflows/docker.yml | 126 -----------------------------------
1 file changed, 126 deletions(-)
delete mode 100644 .github/workflows/docker.yml
diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml
deleted file mode 100644
index e017cc0..0000000
--- a/.github/workflows/docker.yml
+++ /dev/null
@@ -1,126 +0,0 @@
-name: Docker CI
-
-on:
- pull_request:
- paths:
- - 'docker/**'
- - 'docker-compose*.yml'
- - '.github/workflows/docker.yml'
- push:
- paths:
- - 'docker/**'
- - 'docker-compose*.yml'
- - '.github/workflows/docker.yml'
-
-jobs:
- test-apache:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout.
- uses: actions/checkout@v4
-
- - name: Install docker compose.
- run: |
- sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- docker-compose --version
-
- - name: Build and start containers.
- run: docker-compose up -d --build
-
- - name: Wait for container to be ready.
- run: |
- echo "Waiting 30 seconds for container initialization..."
- sleep 30
- docker logs yii2-apache
-
- - name: Codeceptcion build.
- run: docker exec yii2-apache vendor/bin/codecept build
-
- - name: Run codeception tests.
- run: docker exec yii2-apache vendor/bin/codecept run --env dockerized
-
- test-caddy:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout.
- uses: actions/checkout@v4
-
- - name: Install docker compose.
- run: |
- sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- docker-compose --version
-
- - name: Build and start containers.
- run: docker-compose -f docker-compose.caddy.yml up -d --build
-
- - name: Wait for container to be ready.
- run: |
- echo "Waiting 30 seconds for container initialization..."
- sleep 30
- docker logs yii2-caddy
-
- - name: Codeception build.
- run: docker exec yii2-caddy vendor/bin/codecept build
-
- - name: Run codeception tests.
- run: docker exec yii2-caddy vendor/bin/codecept run --env dockerized
-
- test-frankenphp:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout.
- uses: actions/checkout@v4
-
- - name: Install docker compose.
- run: |
- sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- docker-compose --version
-
- - name: Build and start containers.
- run: docker-compose -f docker-compose.frankenphp.yml up -d --build
-
- - name: Wait for container to be ready.
- run: |
- echo "Waiting 30 seconds for container initialization..."
- sleep 30
- docker logs yii2-frankenphp
-
- - name: Codeception build.
- run: docker exec yii2-frankenphp vendor/bin/codecept build
-
- - name: Run codeception tests.
- run: docker exec yii2-frankenphp vendor/bin/codecept run --env dockerized
-
- test-nginx:
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout.
- uses: actions/checkout@v4
-
- - name: Install docker Compose.
- run: |
- sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- sudo chmod +x /usr/local/bin/docker-compose
- docker-compose --version
-
- - name: Build and start containers.
- run: docker-compose -f docker-compose.nginx.yml up -d --build
-
- - name: Wait for container to be ready.
- run: |
- echo "Waiting 30 seconds for container initialization..."
- sleep 30
- docker logs yii2-nginx
-
- - name: Codeception build.
- run: docker exec yii2-nginx vendor/bin/codecept build
-
- - name: Run codeception tests.
- run: docker exec yii2-nginx vendor/bin/codecept run --env dockerized
From 6e8b813d359b42d008232c565f31b85e481c537c Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:21:49 -0400
Subject: [PATCH 03/22] refactor: Update build configuration and remove unused
environment files.
---
.github/workflows/build.yml | 5 ++++-
codeception.yml | 1 -
tests/_envs/dockerized.yml | 4 ----
tests/_envs/php-builtin.yml | 9 ---------
4 files changed, 4 insertions(+), 15 deletions(-)
delete mode 100644 tests/_envs/dockerized.yml
delete mode 100644 tests/_envs/php-builtin.yml
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 0c908e6..9c1b31d 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,6 +24,9 @@ jobs:
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
- codeception-command: vendor/bin/codecept run --env php-builtin --coverage-xml
+ before-hook: |
+ vendor/bin/rr get-binary
+ ./rr serve > /dev/null 2>&1 &
+ codeception-command: vendor/bin/codecept run --coverage-xml
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov
diff --git a/codeception.yml b/codeception.yml
index 9c300d2..bb00d71 100644
--- a/codeception.yml
+++ b/codeception.yml
@@ -6,7 +6,6 @@ paths:
output: runtime/output
data: tests/Support/data
support: tests/Support
- envs: tests/_envs
actor_suffix: Tester
settings:
memory_limit: 1024M
diff --git a/tests/_envs/dockerized.yml b/tests/_envs/dockerized.yml
deleted file mode 100644
index 546f0cc..0000000
--- a/tests/_envs/dockerized.yml
+++ /dev/null
@@ -1,4 +0,0 @@
-modules:
- config:
- PhpBrowser:
- url: https://localhost:443
diff --git a/tests/_envs/php-builtin.yml b/tests/_envs/php-builtin.yml
deleted file mode 100644
index ce9c804..0000000
--- a/tests/_envs/php-builtin.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-extensions:
- enabled:
- - Codeception\Extension\RunProcess:
- 0: php -d variables_order=EGPCS -S localhost:8085 -t web
- sleep: 1
-modules:
- config:
- PhpBrowser:
- url: http://localhost:8085
From f0cda2604abc8dd7728124b6d302f41612c0237a Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:23:56 -0400
Subject: [PATCH 04/22] fix: Correct indentation in `build.yml` for codeception
command execution.
---
.github/workflows/build.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9c1b31d..8e73156 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,9 +24,9 @@ jobs:
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
- before-hook: |
+ codeception-command: |
vendor/bin/rr get-binary
./rr serve > /dev/null 2>&1 &
- codeception-command: vendor/bin/codecept run --coverage-xml
+ vendor/bin/codecept run --coverage-xml
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov
From 1515889d87e14f8ac48775852938fd346a3ffd07 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:26:33 -0400
Subject: [PATCH 05/22] fix: Correct command syntax in `build.yml` for `rr
serve` execution.
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 8e73156..48032f4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -26,7 +26,7 @@ jobs:
with:
codeception-command: |
vendor/bin/rr get-binary
- ./rr serve > /dev/null 2>&1 &
+ ./rr serve /dev/null 2>&1 &
vendor/bin/codecept run --coverage-xml
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov
From fcd887b6ae163231e9176566148ec538fc7c8ac4 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:32:11 -0400
Subject: [PATCH 06/22] fix: Correct command syntax in `build.yml` and add
conditional loading for `c3.php` in `index.php`.
---
.github/workflows/build.yml | 4 ++--
web/index.php | 8 ++++++++
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 48032f4..026084c 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -26,7 +26,7 @@ jobs:
with:
codeception-command: |
vendor/bin/rr get-binary
- ./rr serve /dev/null 2>&1 &
+ ./rr serve > /dev/null 2>&1 &
vendor/bin/codecept run --coverage-xml
coverage-file: runtime/output/coverage.xml
- extensions: gd, intl, pcov
+ extensions: gd, intl, pcov, sockets
diff --git a/web/index.php b/web/index.php
index 32ec6eb..c84afc0 100644
--- a/web/index.php
+++ b/web/index.php
@@ -12,6 +12,14 @@
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
+if (getenv('YII_C3')) {
+ $c3 = dirname(__DIR__) . '/c3.php';
+
+ if (file_exists($c3)) {
+ require_once $c3;
+ }
+}
+
$config = require dirname(__DIR__) . '/config/web/app.php';
$runner = new RoadRunner(new StatelessApplication($config));
From abc102143d9329c0fe272f360efb049804f26547 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:37:59 -0400
Subject: [PATCH 07/22] fix: Add `YII_C3` environment variable to server
configuration in `.rr.yaml`.
---
.rr.yaml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.rr.yaml b/.rr.yaml
index d8ed716..94e419d 100644
--- a/.rr.yaml
+++ b/.rr.yaml
@@ -5,6 +5,7 @@ server:
command: 'php web/index.php'
relay: pipes
env:
+ YII_C3: true
YII_DEBUG: true
YII_ENV: dev
http:
From 4612e54015ad340dc600bf4f0bee215d01427a10 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:45:36 -0400
Subject: [PATCH 08/22] fix: Remove `--coverage-xml` option from codecept run
command in build.yml
---
.github/workflows/build.yml | 2 +-
composer.json | 2 --
composer.lock | 59 +------------------------------------
web/index.php | 8 -----
4 files changed, 2 insertions(+), 69 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 026084c..2810223 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -27,6 +27,6 @@ jobs:
codeception-command: |
vendor/bin/rr get-binary
./rr serve > /dev/null 2>&1 &
- vendor/bin/codecept run --coverage-xml
+ vendor/bin/codecept run
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov, sockets
diff --git a/composer.json b/composer.json
index 63ce1e8..da6ddd4 100644
--- a/composer.json
+++ b/composer.json
@@ -23,7 +23,6 @@
"yii2-extensions/road-runner": "^0.1.0@dev"
},
"require-dev": {
- "codeception/c3": "^2.8",
"codeception/codeception": "^5.0.0",
"codeception/lib-innerbrowser": "^4.0",
"codeception/module-asserts": "^3.0",
@@ -66,7 +65,6 @@
},
"config": {
"allow-plugins": {
- "codeception/c3": true,
"yiisoft/yii2-composer": true,
"composer/installers": true,
"php-forge/foxy": true,
diff --git a/composer.lock b/composer.lock
index cf9c854..761f122 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": "30d51f9fb22622acb6c5e3f4ddb0d2bd",
+ "content-hash": "4358e8618ef44797732fd78d261a0e56",
"packages": [
{
"name": "cebe/markdown",
@@ -6043,63 +6043,6 @@
},
"time": "2025-08-19T15:39:32+00:00"
},
- {
- "name": "codeception/c3",
- "version": "2.9.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Codeception/c3.git",
- "reference": "e23298a1cd5e7745973ea26a53572a3d9b013439"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Codeception/c3/zipball/e23298a1cd5e7745973ea26a53572a3d9b013439",
- "reference": "e23298a1cd5e7745973ea26a53572a3d9b013439",
- "shasum": ""
- },
- "require": {
- "composer-plugin-api": "^1.0 || ^2.0",
- "php": ">=5.5.0"
- },
- "require-dev": {
- "composer/composer": "^1.0 || ^2.0"
- },
- "type": "composer-plugin",
- "extra": {
- "class": "Codeception\\c3\\Installer"
- },
- "autoload": {
- "psr-4": {
- "Codeception\\c3\\": "."
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Tiger Seo",
- "email": "tiger.seo@gmail.com"
- },
- {
- "name": "Michael Bodnarchuk",
- "email": "davert.php@codegyre.com",
- "homepage": "http://codegyre.com"
- }
- ],
- "description": "CodeCoverage collector for Codeception",
- "homepage": "http://codeception.com/",
- "keywords": [
- "code coverage",
- "codecoverage"
- ],
- "support": {
- "issues": "https://github.com/Codeception/c3/issues",
- "source": "https://github.com/Codeception/c3/tree/2.9.0"
- },
- "time": "2023-10-15T17:57:07+00:00"
- },
{
"name": "codeception/codeception",
"version": "5.3.2",
diff --git a/web/index.php b/web/index.php
index c84afc0..32ec6eb 100644
--- a/web/index.php
+++ b/web/index.php
@@ -12,14 +12,6 @@
require __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
-if (getenv('YII_C3')) {
- $c3 = dirname(__DIR__) . '/c3.php';
-
- if (file_exists($c3)) {
- require_once $c3;
- }
-}
-
$config = require dirname(__DIR__) . '/config/web/app.php';
$runner = new RoadRunner(new StatelessApplication($config));
From f9ddfe9f8a985e003cfc49da6d829a3f870ba6a1 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:47:55 -0400
Subject: [PATCH 09/22] fix: Remove coverage configuration from codeception.yml
and update PhpBrowser URL in `Acceptance.suite.yml`.
---
codeception.yml | 4 ----
tests/Acceptance.suite.yml | 2 +-
2 files changed, 1 insertion(+), 5 deletions(-)
diff --git a/codeception.yml b/codeception.yml
index bb00d71..395a935 100644
--- a/codeception.yml
+++ b/codeception.yml
@@ -17,7 +17,3 @@ modules:
extensions:
enabled:
- Codeception\Extension\RunFailed
-coverage:
- enabled: true
- include:
- - src/*
diff --git a/tests/Acceptance.suite.yml b/tests/Acceptance.suite.yml
index 03e52e8..3c919ea 100644
--- a/tests/Acceptance.suite.yml
+++ b/tests/Acceptance.suite.yml
@@ -7,5 +7,5 @@ actor: AcceptanceTester
modules:
enabled:
- PhpBrowser:
- url: localhost:8080
+ url: http://127.0.0.1:8080
step_decorators: ~
From a6a45bacd69b310b49d8793077732e226850da51 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 19:51:54 -0400
Subject: [PATCH 10/22] fix: Update HTTP address configuration in `.rr.yaml` to
allow binding on all interfaces.
---
.rr.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.rr.yaml b/.rr.yaml
index 94e419d..363e5b7 100644
--- a/.rr.yaml
+++ b/.rr.yaml
@@ -9,7 +9,7 @@ server:
YII_DEBUG: true
YII_ENV: dev
http:
- address: '0.0.0.0:8080'
+ address: :8080
headers:
response:
From 77ff4a51a469947e53722354a3de8e01a1eb2f56 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:06:09 -0400
Subject: [PATCH 11/22] fix: Refactor codeception command in build.yml to
separate execution and hook setup.
---
.github/workflows/build.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 2810223..5076808 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,9 +24,9 @@ jobs:
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
- codeception-command: |
- vendor/bin/rr get-binary
- ./rr serve > /dev/null 2>&1 &
- vendor/bin/codecept run
+ codeception-command: vendor/bin/codecept run
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov, sockets
+ hook: |
+ vendor/bin/rr get-binary
+ ./rr serve > /dev/null 2>&1 &
From 61558daaac309b8442a1ea84a92a7038f36d916f Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:11:38 -0400
Subject: [PATCH 12/22] fix: Replace `ArrayHelper::merge` with native
`array_merge` in SiteController.
---
src/usecase/site/SiteController.php | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/src/usecase/site/SiteController.php b/src/usecase/site/SiteController.php
index f63c45d..07897b3 100644
--- a/src/usecase/site/SiteController.php
+++ b/src/usecase/site/SiteController.php
@@ -5,9 +5,10 @@
namespace app\usecase\site;
use app\usecase\Controller;
-use yii\helpers\ArrayHelper;
use yii\web\ErrorAction;
+use function array_merge;
+
final class SiteController extends Controller
{
public function actionIndex(): string
@@ -17,11 +18,11 @@ public function actionIndex(): string
public function actions(): array
{
- return ArrayHelper::merge(
+ return array_merge(
[
- '404' => ['class' => ErrorAction::class],
+ '404' => ['class' => ErrorAction::class],
],
- parent::actions(),
+ parent::actions()
);
}
From 3439c4e9a83bf9fd7d9b2458514594b80225a276 Mon Sep 17 00:00:00 2001
From: StyleCI Bot
Date: Sun, 31 Aug 2025 00:12:05 +0000
Subject: [PATCH 13/22] Apply fixes from StyleCI
---
src/usecase/site/SiteController.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/usecase/site/SiteController.php b/src/usecase/site/SiteController.php
index 07897b3..b032ec1 100644
--- a/src/usecase/site/SiteController.php
+++ b/src/usecase/site/SiteController.php
@@ -20,7 +20,7 @@ public function actions(): array
{
return array_merge(
[
- '404' => ['class' => ErrorAction::class],
+ '404' => ['class' => ErrorAction::class],
],
parent::actions()
);
From c8032def468bde72cebac0f271c34d609ffeaaf7 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:15:45 -0400
Subject: [PATCH 14/22] fix: Add Codeception `C3` configuration to
composer.json and include `C3` file in index.php if `YII_C3` is set.
---
composer.json | 6 ++++--
src/usecase/site/SiteController.php | 2 +-
web/index.php | 8 ++++++++
3 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/composer.json b/composer.json
index da6ddd4..493bcaa 100644
--- a/composer.json
+++ b/composer.json
@@ -23,6 +23,7 @@
"yii2-extensions/road-runner": "^0.1.0@dev"
},
"require-dev": {
+ "codeception/c3": "^2.8",
"codeception/codeception": "^5.0.0",
"codeception/lib-innerbrowser": "^4.0",
"codeception/module-asserts": "^3.0",
@@ -65,10 +66,11 @@
},
"config": {
"allow-plugins": {
- "yiisoft/yii2-composer": true,
+ "codeception/c3": true,
"composer/installers": true,
"php-forge/foxy": true,
- "phpstan/extension-installer": true
+ "phpstan/extension-installer": true,
+ "yiisoft/yii2-composer": true
}
},
"scripts": {
diff --git a/src/usecase/site/SiteController.php b/src/usecase/site/SiteController.php
index b032ec1..6ab2095 100644
--- a/src/usecase/site/SiteController.php
+++ b/src/usecase/site/SiteController.php
@@ -22,7 +22,7 @@ public function actions(): array
[
'404' => ['class' => ErrorAction::class],
],
- parent::actions()
+ parent::actions(),
);
}
diff --git a/web/index.php b/web/index.php
index 32ec6eb..52b9e8a 100644
--- a/web/index.php
+++ b/web/index.php
@@ -14,6 +14,14 @@
$config = require dirname(__DIR__) . '/config/web/app.php';
+if (getenv('YII_C3')) {
+ $c3 = dirname(__DIR__) . '/c3.php';
+
+ if (file_exists($c3)) {
+ require_once $c3;
+ }
+}
+
$runner = new RoadRunner(new StatelessApplication($config));
$runner->run();
From d3a920d048bb0c0e317fae08ff465283570c657d Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:17:54 -0400
Subject: [PATCH 15/22] fix: Update Codeception command in build.yml to include
coverage generation.
---
.github/workflows/build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5076808..490c6ae 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,7 +24,7 @@ jobs:
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
- codeception-command: vendor/bin/codecept run
+ codeception-command: vendor/bin/codecept run --coverage-xml
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov, sockets
hook: |
From 5a791793fe8077c2014dff6ace5d6514251df31c Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:21:02 -0400
Subject: [PATCH 16/22] fix: Enable coverage reporting in `codeception.yml` and
include source files.
---
codeception.yml | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/codeception.yml b/codeception.yml
index 395a935..bb00d71 100644
--- a/codeception.yml
+++ b/codeception.yml
@@ -17,3 +17,7 @@ modules:
extensions:
enabled:
- Codeception\Extension\RunFailed
+coverage:
+ enabled: true
+ include:
+ - src/*
From 2db6c7306761c496a40397f1b069f26d809c5f7f Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:27:24 -0400
Subject: [PATCH 17/22] fix: Remove Codeception coverage configuration and
related conditions from build files.
---
.github/workflows/build.yml | 2 +-
codeception.yml | 4 ----
composer.json | 2 --
web/index.php | 8 --------
4 files changed, 1 insertion(+), 15 deletions(-)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 490c6ae..5076808 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -24,7 +24,7 @@ jobs:
AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
- codeception-command: vendor/bin/codecept run --coverage-xml
+ codeception-command: vendor/bin/codecept run
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov, sockets
hook: |
diff --git a/codeception.yml b/codeception.yml
index bb00d71..395a935 100644
--- a/codeception.yml
+++ b/codeception.yml
@@ -17,7 +17,3 @@ modules:
extensions:
enabled:
- Codeception\Extension\RunFailed
-coverage:
- enabled: true
- include:
- - src/*
diff --git a/composer.json b/composer.json
index 493bcaa..29f9ac1 100644
--- a/composer.json
+++ b/composer.json
@@ -23,7 +23,6 @@
"yii2-extensions/road-runner": "^0.1.0@dev"
},
"require-dev": {
- "codeception/c3": "^2.8",
"codeception/codeception": "^5.0.0",
"codeception/lib-innerbrowser": "^4.0",
"codeception/module-asserts": "^3.0",
@@ -66,7 +65,6 @@
},
"config": {
"allow-plugins": {
- "codeception/c3": true,
"composer/installers": true,
"php-forge/foxy": true,
"phpstan/extension-installer": true,
diff --git a/web/index.php b/web/index.php
index 52b9e8a..32ec6eb 100644
--- a/web/index.php
+++ b/web/index.php
@@ -14,14 +14,6 @@
$config = require dirname(__DIR__) . '/config/web/app.php';
-if (getenv('YII_C3')) {
- $c3 = dirname(__DIR__) . '/c3.php';
-
- if (file_exists($c3)) {
- require_once $c3;
- }
-}
-
$runner = new RoadRunner(new StatelessApplication($config));
$runner->run();
From 8e0af6b92c918d4b78cc7ba7470cb38aa62442d4 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:36:32 -0400
Subject: [PATCH 18/22] fix: Remove coverage driver configuration from
`build.yml`.
---
.github/workflows/build.yml | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 5076808..0327606 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -25,6 +25,7 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
codeception-command: vendor/bin/codecept run
+ coverage-driver: none
coverage-file: runtime/output/coverage.xml
extensions: gd, intl, pcov, sockets
hook: |
From e98721f87a7fe22a77730bd6f24e6bc086579964 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 20:47:00 -0400
Subject: [PATCH 19/22] fix: Update `README.md` to include `RoadRunner` badge
and remove unsupported web server section.
---
README.md | 56 +++----------------------------------------------------
1 file changed, 3 insertions(+), 53 deletions(-)
diff --git a/README.md b/README.md
index b36248b..20add20 100644
--- a/README.md
+++ b/README.md
@@ -6,6 +6,9 @@
+
+
+
@@ -41,13 +44,6 @@ A modern, Bootstrap 5-powered Yii2 application template designed for rapid web-a
- ✅ **SSL Support** - Configured for secure HTTPS connections with SSL (mkcert).
- ✅ **Testing Ready** - Codeception test suite with examples for functional and unit testing.
-## Supported web servers
-
-[](docker-compose.yml)
-[](docker-compose.caddy.yml)
-[](docker-compose.frankenphp.yml)
-[](docker-compose.nginx.yml)
-
## Quick start
### How it works
@@ -87,43 +83,6 @@ php -S localhost:8080 -t web
./yii serve
```
-**Start Apache or Nginx server**
-
-```bash
-# For Apache
-docker-compose up -d
-
-# For Caddy
-docker-compose -f docker-compose.caddy.yml up -d
-
-# For FrankenPHP
-docker-compose -f docker-compose.frankenphp.yml up -d
-
-# For Nginx
-docker-compose -f docker-compose.nginx.yml up -d
-```
-
-### Access your application
-
-After starting the server, you can access your application in your web browser.
-
-```bash
-# For built-in PHP server
-http://localhost:8080/
-
-# For Apache
-https://localhost:8443/
-
-# For Caddy
-https://localhost:8444/
-
-# For FrankenPHP
-https://localhost:8445/
-
-# For Nginx
-https://localhost:8446/
-```
-
### Basic usage
#### Directory structure
@@ -135,14 +94,6 @@ root/
│ ├── console/ Console configuration
│ ├── web/ Web configuration
│ └── messages.php Translation config
-├── docker/ Docker configuration files
-│ ├── apache/ Apache configuration
-│ ├── caddy/ Caddy configuration
-│ ├── frankenphp/ FrankenPHP configuration
-│ ├── nginx/ Nginx configuration
-│ ├── php/ PHP configuration
-│ ├── ssl/ SSL certificates
-│ └── supervisor/ Supervisor configuration
├── src/
│ ├── framework/ Framework assets & resources
│ │ ├── asset/ Asset bundles
@@ -193,7 +144,6 @@ class SiteController extends Controller
[](https://packagist.org/packages/yii2-extensions/app-basic)
[](https://packagist.org/packages/yii2-extensions/app-basic)
-[](https://codecov.io/github/yii2-extensions/app-basic)
[](https://github.com/yii2-extensions/app-basic/actions/workflows/static.yml)
[](https://github.styleci.io/repos/698621511?branch=main)
From a75352f30118ec040d4e6046a8a814db48e421f1 Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sat, 30 Aug 2025 21:00:20 -0400
Subject: [PATCH 20/22] fix: Update `README.md` to change `RoadRunner` badge
link and remove SSL support mention.
---
README.md | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)
diff --git a/README.md b/README.md
index 20add20..16f2d3b 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
-
+
@@ -41,7 +41,6 @@ A modern, Bootstrap 5-powered Yii2 application template designed for rapid web-a
- ✅ **Console Commands** - Example console commands for background tasks and maintenance.
- ✅ **Developer Tools** - Debugging tools, logging, and development-friendly configurations.
- ✅ **Modern Bootstrap 5 UI** - Responsive, mobile-first design with latest Bootstrap components.
-- ✅ **SSL Support** - Configured for secure HTTPS connections with SSL (mkcert).
- ✅ **Testing Ready** - Codeception test suite with examples for functional and unit testing.
## Quick start
@@ -69,18 +68,22 @@ The Yii2 Web Application Basic template provides a complete foundation for build
**Quick start**
```bash
-composer create-project --prefer-dist --stability=dev yii2-extensions/app-basic myapp
-cd myapp
+composer create-project --prefer-dist --stability=dev yii2-extensions/app-basic:dev-road-runner app-basic
+cd app-basic
```
**Start development server**
+Download and install [RoadRunner](https://docs.roadrunner.dev/docs/general/install) first.
+
```bash
-# Using built-in PHP server
-php -S localhost:8080 -t web
+./vendor/bin/rr get-binary
+```
-# Or using Yii console command
-./yii serve
+Run the server in daemon mode.
+
+```bash
+./rr serve -d
```
### Basic usage
@@ -119,7 +122,7 @@ namespace app\usecase\site;
use yii\web\Controller;
-class SiteController extends Controller
+final class SiteController extends Controller
{
public function actionIndex(): string
{
From f408e1797e8d0ab01a8e0b767fee592196a49cab Mon Sep 17 00:00:00 2001
From: StyleCI Bot
Date: Sun, 31 Aug 2025 14:07:37 +0000
Subject: [PATCH 21/22] Apply fixes from StyleCI
---
src/usecase/site/SiteController.php | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/usecase/site/SiteController.php b/src/usecase/site/SiteController.php
index 2ecc81e..2436e5a 100644
--- a/src/usecase/site/SiteController.php
+++ b/src/usecase/site/SiteController.php
@@ -7,8 +7,6 @@
use app\usecase\Controller;
use yii\web\ErrorAction;
-use function array_merge;
-
final class SiteController extends Controller
{
public function actionIndex(): string
From a6fcad3ff76659d30df007d46113768d6492686a Mon Sep 17 00:00:00 2001
From: Wilmer Arambula
Date: Sun, 31 Aug 2025 10:32:47 -0400
Subject: [PATCH 22/22] fix: Update badge links in `README.md` to reflect the
'road-runner' branch.
---
README.md | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
index 2c41fd3..1c13da5 100644
--- a/README.md
+++ b/README.md
@@ -7,7 +7,7 @@
-
+
@@ -18,11 +18,11 @@
-
-
+
+
-
-
+
+
@@ -144,11 +144,10 @@ final class SiteController extends Controller
```
## Quality code
-[](https://packagist.org/packages/yii2-extensions/app-basic)
-[](https://packagist.org/packages/yii2-extensions/app-basic)
-[](https://codecov.io/github/yii2-extensions/app-basic)
-[](https://github.com/yii2-extensions/app-basic/actions/workflows/static.yml)
-[](https://github.styleci.io/repos/165419144?branch=main)
+[](https://packagist.org/packages/yii2-extensions/app-basic#dev-road-runner)
+[](https://app.codecov.io/github/yii2-extensions/app-basic/tree/road-runner)
+[](https://github.com/yii2-extensions/app-basic/actions/workflows/static.yml?query=branch%3Aroad-runner)
+[](https://github.styleci.io/repos/165419144?branch=road-runner)
## Documentation