diff --git a/.env.example b/.env.example index 4499f8a..3189c76 100644 --- a/.env.example +++ b/.env.example @@ -1,68 +1,9 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://localhost - -APP_FORCE_HTTPS=false - -APP_DEMO_MODE=false -APP_DEMO_EMAIL= -APP_DEMO_PASSWORD= - -APP_DEFAULT_USER_TIMEZONE=UTC -# Valid languages: ru | en -APP_DEFAULT_LOCALE=ru - -LOG_CHANNEL=daily -LOG_DEPRECATIONS_CHANNEL=deprecations -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laravel -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -FILESYSTEM_DISK=local -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@example.com" -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_USE_PATH_STYLE_ENDPOINT=false - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_HOST= -PUSHER_PORT=443 -PUSHER_SCHEME=https -PUSHER_APP_CLUSTER=mt1 - -VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -VITE_PUSHER_HOST="${PUSHER_HOST}" -VITE_PUSHER_PORT="${PUSHER_PORT}" -VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" -VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" +DOCKER_NGINX_PORT=8080 +DOCKER_WEBSOCKET_PORT=8081 +DOCKER_DB_PORT=3306 +MYSQL_ROOT_PASSWORD=root_pass +DB_DATABASE=captcha +DB_USERNAME=captcha +DB_PASSWORD=captcha_pass +UID=1000 +GID=1000 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 7fe978f..48a9e44 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,6 @@ -/.phpunit.cache -/node_modules -/public/build -/public/hot -/public/storage -/storage/*.key -/vendor .env -.env.backup -.env.production -.phpunit.result.cache -Homestead.json Homestead.yaml -auth.json -npm-debug.log -yarn-error.log -/.fleet -/.idea -/.vscode +Homestead.json +/.vagrant +.phpunit.result.cache + diff --git a/LICENSE.md b/LICENSE.md index 3f3a98e..7b16ba5 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2023 Leonid Nikitin (kor-elf) +Copyright (c) 2023 - 2024 Leonid Nikitin (kor-elf) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/README.md b/README.md index 4238d43..2175294 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ Захотелось написать свой независимый сервис защиты от роботов. Сервис каптча написан на фреймворке Laravel. Вдохновлялся, а так же брал картинки с проекта Go Captcha. +[Сайт проекта](https://service-captcha.projects.kor-elf.net/) + ## Зависимости -php 8.2 (модули: redis, gd) +php 8.3 (модули: redis, gd) redis @@ -26,7 +28,7 @@ https://captcha-admin-demo.tut-site.net/api-docs/ https://git.kor-elf.net/kor-elf/service-captcha-gui ## Как проверять со стороны бэкенда -Для Laravel 10 есть готовый пакет: https://git.kor-elf.net/kor-elf/captcha-rule-for-laravel +Для Laravel 10, 11 есть готовый пакет: https://git.kor-elf.net/kor-elf/captcha-rule-for-laravel Можно установить этот пакет так: composer require kor-elf/captcha-rule-for-laravel diff --git a/app/Http/Controllers/Private/DashboardController.php b/app/Http/Controllers/Private/DashboardController.php deleted file mode 100644 index 8d1cade..0000000 --- a/app/Http/Controllers/Private/DashboardController.php +++ /dev/null @@ -1,13 +0,0 @@ -when($captchaId, function (Builder $query, int $captchaId) { - $query->where('captcha_id', $captchaId); - }) - ->where('type', '=', $type) - ->count(); - } - - public function getCaptchaLogsByTypes(array $types, ?int $captchaId = null, ?int $limit = null): Collection - { - return CaptchaLog::query() - ->when($captchaId, function (Builder $query, int $captchaId) { - $query->where('captcha_id', $captchaId); - }) - ->when($limit, function (Builder $query, int $limit) { - $query->limit($limit); - }) - ->whereIn('type', $types) - ->latest() - ->get(); - } -} diff --git a/.editorconfig b/app/application/.editorconfig similarity index 100% rename from .editorconfig rename to app/application/.editorconfig diff --git a/app/application/.env.example b/app/application/.env.example new file mode 100644 index 0000000..161d775 --- /dev/null +++ b/app/application/.env.example @@ -0,0 +1,92 @@ +APP_NAME=Laravel +APP_ENV=local +APP_KEY= +APP_DEBUG=true +APP_URL=http://localhost + +APP_FORCE_HTTPS=false + +APP_CAPTCHA=false +CAPTCHA_API_DOMAIN=http://your-domain-captcha-or-IP:8081 +CAPTCHA_PRIVATE_TOKEN= +CAPTCHA_STATIC_PATH=http://your-domain-captcha-or-IP:8081/captcha +CAPTCHA_PUBLIC_TOKEN= + +APP_DEMO_MODE=false +APP_DEMO_EMAIL= +APP_DEMO_PASSWORD= + +APP_DEFAULT_USER_TIMEZONE=UTC +# Valid languages: ru | en +APP_DEFAULT_LOCALE=ru + +LOG_CHANNEL=daily +LOG_DEPRECATIONS_CHANNEL=deprecations +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=db +DB_PORT=3306 +DB_DATABASE=captcha +DB_USERNAME=captcha +DB_PASSWORD=captcha_pass + +BROADCAST_DRIVER=reverb +CACHE_DRIVER=redis +FILESYSTEM_DISK=local +QUEUE_CONNECTION=redis +SESSION_DRIVER=redis +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=redis +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="hello@example.com" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +REVERB_APP_ID= +REVERB_APP_KEY= +REVERB_APP_SECRET= +REVERB_HOST="reverb" +REVERB_PORT=9000 +REVERB_SCHEME=http +# * or localhost.com or localhost.com, localhost.net +REVERB_ALLOWED_ORIGINS="*" + +REVERB_HOST_CLIENT="localhost" +REVERB_PORT_CLIENT=8081 +REVERB_SCHEME_CLIENT=http + +VITE_REVERB_APP_KEY="${REVERB_APP_KEY}" +VITE_REVERB_HOST="${REVERB_HOST}" +VITE_REVERB_PORT="${REVERB_PORT}" +VITE_REVERB_SCHEME="${REVERB_SCHEME}" diff --git a/.gitattributes b/app/application/.gitattributes similarity index 100% rename from .gitattributes rename to app/application/.gitattributes diff --git a/app/application/.gitignore b/app/application/.gitignore new file mode 100644 index 0000000..7fe978f --- /dev/null +++ b/app/application/.gitignore @@ -0,0 +1,19 @@ +/.phpunit.cache +/node_modules +/public/build +/public/hot +/public/storage +/storage/*.key +/vendor +.env +.env.backup +.env.production +.phpunit.result.cache +Homestead.json +Homestead.yaml +auth.json +npm-debug.log +yarn-error.log +/.fleet +/.idea +/.vscode diff --git a/app/application/app/Broadcasting/CreatedCaptchaLog.php b/app/application/app/Broadcasting/CreatedCaptchaLog.php new file mode 100644 index 0000000..fa8f7ec --- /dev/null +++ b/app/application/app/Broadcasting/CreatedCaptchaLog.php @@ -0,0 +1,17 @@ +can('viewAny', CaptchaToken::class); + } +} diff --git a/app/Captcha/Config/ImageBody.php b/app/application/app/Captcha/Config/ImageBody.php similarity index 100% rename from app/Captcha/Config/ImageBody.php rename to app/application/app/Captcha/Config/ImageBody.php diff --git a/app/Captcha/Config/ImageHead.php b/app/application/app/Captcha/Config/ImageHead.php similarity index 100% rename from app/Captcha/Config/ImageHead.php rename to app/application/app/Captcha/Config/ImageHead.php diff --git a/app/Captcha/Contracts/Image.php b/app/application/app/Captcha/Contracts/Image.php similarity index 100% rename from app/Captcha/Contracts/Image.php rename to app/application/app/Captcha/Contracts/Image.php diff --git a/app/Captcha/Contracts/ImageBody.php b/app/application/app/Captcha/Contracts/ImageBody.php similarity index 100% rename from app/Captcha/Contracts/ImageBody.php rename to app/application/app/Captcha/Contracts/ImageBody.php diff --git a/app/Captcha/Contracts/ImageHead.php b/app/application/app/Captcha/Contracts/ImageHead.php similarity index 100% rename from app/Captcha/Contracts/ImageHead.php rename to app/application/app/Captcha/Contracts/ImageHead.php diff --git a/app/Captcha/Contracts/ImageLines.php b/app/application/app/Captcha/Contracts/ImageLines.php similarity index 100% rename from app/Captcha/Contracts/ImageLines.php rename to app/application/app/Captcha/Contracts/ImageLines.php diff --git a/app/Captcha/Contracts/ImageManager.php b/app/application/app/Captcha/Contracts/ImageManager.php similarity index 100% rename from app/Captcha/Contracts/ImageManager.php rename to app/application/app/Captcha/Contracts/ImageManager.php diff --git a/app/Captcha/Contracts/Type.php b/app/application/app/Captcha/Contracts/Type.php similarity index 100% rename from app/Captcha/Contracts/Type.php rename to app/application/app/Captcha/Contracts/Type.php diff --git a/app/Captcha/Dto/Coordinators.php b/app/application/app/Captcha/Dto/Coordinators.php similarity index 100% rename from app/Captcha/Dto/Coordinators.php rename to app/application/app/Captcha/Dto/Coordinators.php diff --git a/app/Captcha/Dto/Image.php b/app/application/app/Captcha/Dto/Image.php similarity index 100% rename from app/Captcha/Dto/Image.php rename to app/application/app/Captcha/Dto/Image.php diff --git a/app/Captcha/Dto/ImageBody.php b/app/application/app/Captcha/Dto/ImageBody.php similarity index 100% rename from app/Captcha/Dto/ImageBody.php rename to app/application/app/Captcha/Dto/ImageBody.php diff --git a/app/Captcha/Dto/ImageHead.php b/app/application/app/Captcha/Dto/ImageHead.php similarity index 100% rename from app/Captcha/Dto/ImageHead.php rename to app/application/app/Captcha/Dto/ImageHead.php diff --git a/app/Captcha/Dto/Sector.php b/app/application/app/Captcha/Dto/Sector.php similarity index 100% rename from app/Captcha/Dto/Sector.php rename to app/application/app/Captcha/Dto/Sector.php diff --git a/app/Captcha/Dto/Sectors.php b/app/application/app/Captcha/Dto/Sectors.php similarity index 100% rename from app/Captcha/Dto/Sectors.php rename to app/application/app/Captcha/Dto/Sectors.php diff --git a/app/Captcha/Dto/Symbols.php b/app/application/app/Captcha/Dto/Symbols.php similarity index 100% rename from app/Captcha/Dto/Symbols.php rename to app/application/app/Captcha/Dto/Symbols.php diff --git a/app/Captcha/Enums/SymbolType.php b/app/application/app/Captcha/Enums/SymbolType.php similarity index 100% rename from app/Captcha/Enums/SymbolType.php rename to app/application/app/Captcha/Enums/SymbolType.php diff --git a/app/Captcha/Exceptions/CaptchaException.php b/app/application/app/Captcha/Exceptions/CaptchaException.php similarity index 100% rename from app/Captcha/Exceptions/CaptchaException.php rename to app/application/app/Captcha/Exceptions/CaptchaException.php diff --git a/app/Captcha/Images/Body.php b/app/application/app/Captcha/Images/Body.php similarity index 100% rename from app/Captcha/Images/Body.php rename to app/application/app/Captcha/Images/Body.php diff --git a/app/Captcha/Images/Head.php b/app/application/app/Captcha/Images/Head.php similarity index 100% rename from app/Captcha/Images/Head.php rename to app/application/app/Captcha/Images/Head.php diff --git a/app/Captcha/Images/Image.php b/app/application/app/Captcha/Images/Image.php similarity index 100% rename from app/Captcha/Images/Image.php rename to app/application/app/Captcha/Images/Image.php diff --git a/app/Captcha/Images/ImageManager.php b/app/application/app/Captcha/Images/ImageManager.php similarity index 100% rename from app/Captcha/Images/ImageManager.php rename to app/application/app/Captcha/Images/ImageManager.php diff --git a/app/Captcha/Images/Lines.php b/app/application/app/Captcha/Images/Lines.php similarity index 100% rename from app/Captcha/Images/Lines.php rename to app/application/app/Captcha/Images/Lines.php diff --git a/app/Captcha/Type.php b/app/application/app/Captcha/Type.php similarity index 100% rename from app/Captcha/Type.php rename to app/application/app/Captcha/Type.php diff --git a/app/Captcha/Types/StringType.php b/app/application/app/Captcha/Types/StringType.php similarity index 100% rename from app/Captcha/Types/StringType.php rename to app/application/app/Captcha/Types/StringType.php diff --git a/app/Console/Commands/CreateUserAdmin.php b/app/application/app/Console/Commands/CreateUserAdmin.php similarity index 100% rename from app/Console/Commands/CreateUserAdmin.php rename to app/application/app/Console/Commands/CreateUserAdmin.php diff --git a/app/Console/Kernel.php b/app/application/app/Console/Kernel.php similarity index 100% rename from app/Console/Kernel.php rename to app/application/app/Console/Kernel.php diff --git a/app/Contracts/CryptographyContract.php b/app/application/app/Contracts/CryptographyContract.php similarity index 100% rename from app/Contracts/CryptographyContract.php rename to app/application/app/Contracts/CryptographyContract.php diff --git a/app/Contracts/FormRequestDto.php b/app/application/app/Contracts/FormRequestDto.php similarity index 100% rename from app/Contracts/FormRequestDto.php rename to app/application/app/Contracts/FormRequestDto.php diff --git a/app/Contracts/GenerateTokenCommand.php b/app/application/app/Contracts/GenerateTokenCommand.php similarity index 100% rename from app/Contracts/GenerateTokenCommand.php rename to app/application/app/Contracts/GenerateTokenCommand.php diff --git a/app/Contracts/Search.php b/app/application/app/Contracts/Search.php similarity index 100% rename from app/Contracts/Search.php rename to app/application/app/Contracts/Search.php diff --git a/app/Contracts/ServiceResult.php b/app/application/app/Contracts/ServiceResult.php similarity index 100% rename from app/Contracts/ServiceResult.php rename to app/application/app/Contracts/ServiceResult.php diff --git a/app/Contracts/ServiceResultError.php b/app/application/app/Contracts/ServiceResultError.php similarity index 100% rename from app/Contracts/ServiceResultError.php rename to app/application/app/Contracts/ServiceResultError.php diff --git a/app/Dto/Builder/CaptchaToken.php b/app/application/app/Dto/Builder/CaptchaToken.php similarity index 100% rename from app/Dto/Builder/CaptchaToken.php rename to app/application/app/Dto/Builder/CaptchaToken.php diff --git a/app/Dto/Builder/Role.php b/app/application/app/Dto/Builder/Role.php similarity index 100% rename from app/Dto/Builder/Role.php rename to app/application/app/Dto/Builder/Role.php diff --git a/app/Dto/Builder/User.php b/app/application/app/Dto/Builder/User.php similarity index 100% rename from app/Dto/Builder/User.php rename to app/application/app/Dto/Builder/User.php diff --git a/app/Dto/HttpUserData.php b/app/application/app/Dto/HttpUserData.php similarity index 100% rename from app/Dto/HttpUserData.php rename to app/application/app/Dto/HttpUserData.php diff --git a/app/Dto/QuerySettingsDto.php b/app/application/app/Dto/QuerySettingsDto.php similarity index 100% rename from app/Dto/QuerySettingsDto.php rename to app/application/app/Dto/QuerySettingsDto.php diff --git a/app/application/app/Dto/Repository/CaptchaLogRepository/QuantityByDays.php b/app/application/app/Dto/Repository/CaptchaLogRepository/QuantityByDays.php new file mode 100644 index 0000000..27fd89a --- /dev/null +++ b/app/application/app/Dto/Repository/CaptchaLogRepository/QuantityByDays.php @@ -0,0 +1,38 @@ +days[$day])) { + $this->days[$day] = []; + } + $this->days[$day][$type->value] = $count; + } + + /** + * @param string $day ("Y-m-d") + * @return array + */ + public function getDay(string $day): array + { + return $this->days[$day] ?? []; + } + + public function getDays(): array + { + return $this->days; + } +} diff --git a/app/Dto/Repository/DataCaptchaRepository/DataCaptcha.php b/app/application/app/Dto/Repository/DataCaptchaRepository/DataCaptcha.php similarity index 100% rename from app/Dto/Repository/DataCaptchaRepository/DataCaptcha.php rename to app/application/app/Dto/Repository/DataCaptchaRepository/DataCaptcha.php diff --git a/app/Dto/Request/Api/V1/Captcha/CaptchaPublicToken.php b/app/application/app/Dto/Request/Api/V1/Captcha/CaptchaPublicToken.php similarity index 100% rename from app/Dto/Request/Api/V1/Captcha/CaptchaPublicToken.php rename to app/application/app/Dto/Request/Api/V1/Captcha/CaptchaPublicToken.php diff --git a/app/Dto/Request/Api/V1/Captcha/CheckingDto.php b/app/application/app/Dto/Request/Api/V1/Captcha/CheckingDto.php similarity index 100% rename from app/Dto/Request/Api/V1/Captcha/CheckingDto.php rename to app/application/app/Dto/Request/Api/V1/Captcha/CheckingDto.php diff --git a/app/Dto/Request/Api/V1/Captcha/VerificationInformationDto.php b/app/application/app/Dto/Request/Api/V1/Captcha/VerificationInformationDto.php similarity index 100% rename from app/Dto/Request/Api/V1/Captcha/VerificationInformationDto.php rename to app/application/app/Dto/Request/Api/V1/Captcha/VerificationInformationDto.php diff --git a/app/Dto/Request/Authorization.php b/app/application/app/Dto/Request/Authorization.php similarity index 100% rename from app/Dto/Request/Authorization.php rename to app/application/app/Dto/Request/Authorization.php diff --git a/app/Dto/Request/Dto.php b/app/application/app/Dto/Request/Dto.php similarity index 100% rename from app/Dto/Request/Dto.php rename to app/application/app/Dto/Request/Dto.php diff --git a/app/Dto/Request/Private/CaptchaToken/Index.php b/app/application/app/Dto/Request/Private/CaptchaToken/Index.php similarity index 100% rename from app/Dto/Request/Private/CaptchaToken/Index.php rename to app/application/app/Dto/Request/Private/CaptchaToken/Index.php diff --git a/app/Dto/Request/Private/CaptchaToken/StoreUpdate.php b/app/application/app/Dto/Request/Private/CaptchaToken/StoreUpdate.php similarity index 100% rename from app/Dto/Request/Private/CaptchaToken/StoreUpdate.php rename to app/application/app/Dto/Request/Private/CaptchaToken/StoreUpdate.php diff --git a/app/Dto/Request/Private/Profile/Update.php b/app/application/app/Dto/Request/Private/Profile/Update.php similarity index 100% rename from app/Dto/Request/Private/Profile/Update.php rename to app/application/app/Dto/Request/Private/Profile/Update.php diff --git a/app/Dto/Request/Private/Profile/UpdateSettings.php b/app/application/app/Dto/Request/Private/Profile/UpdateSettings.php similarity index 100% rename from app/Dto/Request/Private/Profile/UpdateSettings.php rename to app/application/app/Dto/Request/Private/Profile/UpdateSettings.php diff --git a/app/Dto/Request/Private/Role/Index.php b/app/application/app/Dto/Request/Private/Role/Index.php similarity index 100% rename from app/Dto/Request/Private/Role/Index.php rename to app/application/app/Dto/Request/Private/Role/Index.php diff --git a/app/Dto/Request/Private/Role/StoreUpdate.php b/app/application/app/Dto/Request/Private/Role/StoreUpdate.php similarity index 100% rename from app/Dto/Request/Private/Role/StoreUpdate.php rename to app/application/app/Dto/Request/Private/Role/StoreUpdate.php diff --git a/app/Dto/Request/Private/User/Index.php b/app/application/app/Dto/Request/Private/User/Index.php similarity index 100% rename from app/Dto/Request/Private/User/Index.php rename to app/application/app/Dto/Request/Private/User/Index.php diff --git a/app/Dto/Request/Private/User/StoreUpdate.php b/app/application/app/Dto/Request/Private/User/StoreUpdate.php similarity index 100% rename from app/Dto/Request/Private/User/StoreUpdate.php rename to app/application/app/Dto/Request/Private/User/StoreUpdate.php diff --git a/app/Dto/Request/Private/User/UpdatePassword.php b/app/application/app/Dto/Request/Private/User/UpdatePassword.php similarity index 100% rename from app/Dto/Request/Private/User/UpdatePassword.php rename to app/application/app/Dto/Request/Private/User/UpdatePassword.php diff --git a/app/Dto/User/ManyRoleDto.php b/app/application/app/Dto/User/ManyRoleDto.php similarity index 100% rename from app/Dto/User/ManyRoleDto.php rename to app/application/app/Dto/User/ManyRoleDto.php diff --git a/app/Enums/CaptchaLogType.php b/app/application/app/Enums/CaptchaLogType.php similarity index 62% rename from app/Enums/CaptchaLogType.php rename to app/application/app/Enums/CaptchaLogType.php index 8d9147d..3e4c678 100644 --- a/app/Enums/CaptchaLogType.php +++ b/app/application/app/Enums/CaptchaLogType.php @@ -8,4 +8,9 @@ enum CaptchaLogType: int case Error = 2; case Verified = 3; case ReadVerified = 4; + + public function getTitle(): string + { + return __('captcha_log_type.' . $this->name); + } } diff --git a/app/Enums/Lang.php b/app/application/app/Enums/Lang.php similarity index 100% rename from app/Enums/Lang.php rename to app/application/app/Enums/Lang.php diff --git a/app/Enums/Permission.php b/app/application/app/Enums/Permission.php similarity index 100% rename from app/Enums/Permission.php rename to app/application/app/Enums/Permission.php diff --git a/app/Enums/SystemRole.php b/app/application/app/Enums/SystemRole.php similarity index 100% rename from app/Enums/SystemRole.php rename to app/application/app/Enums/SystemRole.php diff --git a/app/application/app/Events/CreatedCaptchaLog.php b/app/application/app/Events/CreatedCaptchaLog.php new file mode 100644 index 0000000..cbdc7e6 --- /dev/null +++ b/app/application/app/Events/CreatedCaptchaLog.php @@ -0,0 +1,55 @@ +chartCaptchaActivity = [ + 'date' => $captchaLog->created_at->format('Y-m-d'), + 'meta' => $captchaLog->type->getTitle(), + 'type' => $captchaLog->type->value, + ]; + $link = ''; + $title = ''; + if ($captchaLog->captcha && $captchaLog->captcha->captchaToken) { + $link = route('captcha-tokens.edit', ['captcha_token' => $captchaLog->captcha->captcha_token_id], false); + $title = $captchaLog->captcha->captchaToken->title; + } + + $ip = $captchaLog->ip; + $userAgent = $captchaLog->user_agent; + if (Helpers::isDemoMode()) { + $ip = __('Demo Mode'); + $userAgent = __('Demo Mode'); + } + + $this->captchaLog = [ + 'created_at' => $captchaLog->created_at->format("d.m.Y H:i:s"), + 'link' => $link, + 'title' => $title, + 'type' => $captchaLog->type->getTitle(), + 'ip' => $ip, + 'user_agent' => $userAgent, + 'referer' => $captchaLog->referer, + ]; + } + + public function broadcastOn(): Channel + { + return new PrivateChannel('chart-captcha-activity'); + } +} diff --git a/app/Exceptions/Dto/User/ManyRoleDtoException.php b/app/application/app/Exceptions/Dto/User/ManyRoleDtoException.php similarity index 100% rename from app/Exceptions/Dto/User/ManyRoleDtoException.php rename to app/application/app/Exceptions/Dto/User/ManyRoleDtoException.php diff --git a/app/Exceptions/Handler.php b/app/application/app/Exceptions/Handler.php similarity index 100% rename from app/Exceptions/Handler.php rename to app/application/app/Exceptions/Handler.php diff --git a/app/Exceptions/Repositories/DataCaptchaRepositoryException.php b/app/application/app/Exceptions/Repositories/DataCaptchaRepositoryException.php similarity index 100% rename from app/Exceptions/Repositories/DataCaptchaRepositoryException.php rename to app/application/app/Exceptions/Repositories/DataCaptchaRepositoryException.php diff --git a/app/Exceptions/Rule/RoleSyncPermissionsCommandHandlerException.php b/app/application/app/Exceptions/Rule/RoleSyncPermissionsCommandHandlerException.php similarity index 100% rename from app/Exceptions/Rule/RoleSyncPermissionsCommandHandlerException.php rename to app/application/app/Exceptions/Rule/RoleSyncPermissionsCommandHandlerException.php diff --git a/app/Exceptions/Service/GenerateTokenCommandException.php b/app/application/app/Exceptions/Service/GenerateTokenCommandException.php similarity index 100% rename from app/Exceptions/Service/GenerateTokenCommandException.php rename to app/application/app/Exceptions/Service/GenerateTokenCommandException.php diff --git a/app/Helpers/Helpers.php b/app/application/app/Helpers/Helpers.php similarity index 100% rename from app/Helpers/Helpers.php rename to app/application/app/Helpers/Helpers.php diff --git a/app/Http/Controllers/Api/V1/CaptchaController.php b/app/application/app/Http/Controllers/Api/V1/CaptchaController.php similarity index 100% rename from app/Http/Controllers/Api/V1/CaptchaController.php rename to app/application/app/Http/Controllers/Api/V1/CaptchaController.php diff --git a/app/Http/Controllers/Api/V1/Controller.php b/app/application/app/Http/Controllers/Api/V1/Controller.php similarity index 100% rename from app/Http/Controllers/Api/V1/Controller.php rename to app/application/app/Http/Controllers/Api/V1/Controller.php diff --git a/app/Http/Controllers/AuthController.php b/app/application/app/Http/Controllers/AuthController.php similarity index 93% rename from app/Http/Controllers/AuthController.php rename to app/application/app/Http/Controllers/AuthController.php index 096f082..b32e1de 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/application/app/Http/Controllers/AuthController.php @@ -19,7 +19,9 @@ public function __construct( public function login(): View { - return view('public/login'); + return view('public/login', [ + 'captcha' => config('app.captcha', false) + ]); } public function authorization(AuthorizationRequest $request): RedirectResponse diff --git a/app/Http/Controllers/Controller.php b/app/application/app/Http/Controllers/Controller.php similarity index 100% rename from app/Http/Controllers/Controller.php rename to app/application/app/Http/Controllers/Controller.php diff --git a/app/Http/Controllers/Private/CaptchaTokensController.php b/app/application/app/Http/Controllers/Private/CaptchaTokensController.php similarity index 100% rename from app/Http/Controllers/Private/CaptchaTokensController.php rename to app/application/app/Http/Controllers/Private/CaptchaTokensController.php diff --git a/app/Http/Controllers/Private/Controller.php b/app/application/app/Http/Controllers/Private/Controller.php similarity index 100% rename from app/Http/Controllers/Private/Controller.php rename to app/application/app/Http/Controllers/Private/Controller.php diff --git a/app/application/app/Http/Controllers/Private/DashboardController.php b/app/application/app/Http/Controllers/Private/DashboardController.php new file mode 100644 index 0000000..508a25c --- /dev/null +++ b/app/application/app/Http/Controllers/Private/DashboardController.php @@ -0,0 +1,43 @@ +user(); + $limit = 30; + $with = ['captcha', 'captcha.captchaToken']; + $result = $this->dashboardService->captchaLog($user, $limit, $with); + if ($result->isError()) { + $this->errors($result); + } + + return view('private/dashboard/index', $result->getData()); + } + + public function chartCaptchaActivity(Request $request): JsonResponse + { + $user = $request->user(); + $from = Carbon::now()->subDays(7); + $to = Carbon::now(); + $result = $this->dashboardService->chartCaptchaActivity($user, $from, $to); + if (!$result->isSuccess()) { + return response()->json($result->getData())->setStatusCode($result->getCode()); + } + + return response()->json(new ChartCaptchaActivity($result)); + } +} diff --git a/app/Http/Controllers/Private/ProfileController.php b/app/application/app/Http/Controllers/Private/ProfileController.php similarity index 100% rename from app/Http/Controllers/Private/ProfileController.php rename to app/application/app/Http/Controllers/Private/ProfileController.php diff --git a/app/Http/Controllers/Private/RolesController.php b/app/application/app/Http/Controllers/Private/RolesController.php similarity index 100% rename from app/Http/Controllers/Private/RolesController.php rename to app/application/app/Http/Controllers/Private/RolesController.php diff --git a/app/Http/Controllers/Private/UsersController.php b/app/application/app/Http/Controllers/Private/UsersController.php similarity index 98% rename from app/Http/Controllers/Private/UsersController.php rename to app/application/app/Http/Controllers/Private/UsersController.php index a5c7d3f..aee9150 100644 --- a/app/Http/Controllers/Private/UsersController.php +++ b/app/application/app/Http/Controllers/Private/UsersController.php @@ -11,7 +11,7 @@ use Illuminate\Http\Request; use Illuminate\View\View; -class UsersController extends Controller +final class UsersController extends Controller { public function __construct( private readonly UserService $userService diff --git a/app/application/app/Http/Controllers/Private/WebsocketsController.php b/app/application/app/Http/Controllers/Private/WebsocketsController.php new file mode 100644 index 0000000..d49e825 --- /dev/null +++ b/app/application/app/Http/Controllers/Private/WebsocketsController.php @@ -0,0 +1,24 @@ +websocketService->settings(); + if (!$result->isSuccess()) { + return response()->json($result->getData())->setStatusCode($result->getCode()); + } + + return response()->json(new Setting($result)); + } +} diff --git a/app/Http/Kernel.php b/app/application/app/Http/Kernel.php similarity index 100% rename from app/Http/Kernel.php rename to app/application/app/Http/Kernel.php diff --git a/app/Http/Middleware/Authenticate.php b/app/application/app/Http/Middleware/Authenticate.php similarity index 100% rename from app/Http/Middleware/Authenticate.php rename to app/application/app/Http/Middleware/Authenticate.php diff --git a/app/Http/Middleware/EncryptCookies.php b/app/application/app/Http/Middleware/EncryptCookies.php similarity index 100% rename from app/Http/Middleware/EncryptCookies.php rename to app/application/app/Http/Middleware/EncryptCookies.php diff --git a/app/Http/Middleware/EnsureUserIsVerified.php b/app/application/app/Http/Middleware/EnsureUserIsVerified.php similarity index 100% rename from app/Http/Middleware/EnsureUserIsVerified.php rename to app/application/app/Http/Middleware/EnsureUserIsVerified.php diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/application/app/Http/Middleware/PreventRequestsDuringMaintenance.php similarity index 100% rename from app/Http/Middleware/PreventRequestsDuringMaintenance.php rename to app/application/app/Http/Middleware/PreventRequestsDuringMaintenance.php diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/application/app/Http/Middleware/RedirectIfAuthenticated.php similarity index 100% rename from app/Http/Middleware/RedirectIfAuthenticated.php rename to app/application/app/Http/Middleware/RedirectIfAuthenticated.php diff --git a/app/Http/Middleware/TrimStrings.php b/app/application/app/Http/Middleware/TrimStrings.php similarity index 100% rename from app/Http/Middleware/TrimStrings.php rename to app/application/app/Http/Middleware/TrimStrings.php diff --git a/app/Http/Middleware/TrustHosts.php b/app/application/app/Http/Middleware/TrustHosts.php similarity index 100% rename from app/Http/Middleware/TrustHosts.php rename to app/application/app/Http/Middleware/TrustHosts.php diff --git a/app/Http/Middleware/TrustProxies.php b/app/application/app/Http/Middleware/TrustProxies.php similarity index 100% rename from app/Http/Middleware/TrustProxies.php rename to app/application/app/Http/Middleware/TrustProxies.php diff --git a/app/Http/Middleware/UserLocale.php b/app/application/app/Http/Middleware/UserLocale.php similarity index 100% rename from app/Http/Middleware/UserLocale.php rename to app/application/app/Http/Middleware/UserLocale.php diff --git a/app/Http/Middleware/ValidateSignature.php b/app/application/app/Http/Middleware/ValidateSignature.php similarity index 100% rename from app/Http/Middleware/ValidateSignature.php rename to app/application/app/Http/Middleware/ValidateSignature.php diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/application/app/Http/Middleware/VerifyCsrfToken.php similarity index 100% rename from app/Http/Middleware/VerifyCsrfToken.php rename to app/application/app/Http/Middleware/VerifyCsrfToken.php diff --git a/app/Http/Requests/Api/V1/Captcha/CaptchaRequest.php b/app/application/app/Http/Requests/Api/V1/Captcha/CaptchaRequest.php similarity index 100% rename from app/Http/Requests/Api/V1/Captcha/CaptchaRequest.php rename to app/application/app/Http/Requests/Api/V1/Captcha/CaptchaRequest.php diff --git a/app/Http/Requests/Api/V1/Captcha/CheckingRequest.php b/app/application/app/Http/Requests/Api/V1/Captcha/CheckingRequest.php similarity index 100% rename from app/Http/Requests/Api/V1/Captcha/CheckingRequest.php rename to app/application/app/Http/Requests/Api/V1/Captcha/CheckingRequest.php diff --git a/app/Http/Requests/Api/V1/Captcha/VerificationInformationRequest.php b/app/application/app/Http/Requests/Api/V1/Captcha/VerificationInformationRequest.php similarity index 100% rename from app/Http/Requests/Api/V1/Captcha/VerificationInformationRequest.php rename to app/application/app/Http/Requests/Api/V1/Captcha/VerificationInformationRequest.php diff --git a/app/Http/Requests/AuthorizationRequest.php b/app/application/app/Http/Requests/AuthorizationRequest.php similarity index 84% rename from app/Http/Requests/AuthorizationRequest.php rename to app/application/app/Http/Requests/AuthorizationRequest.php index f4ed7af..c7dae76 100644 --- a/app/Http/Requests/AuthorizationRequest.php +++ b/app/application/app/Http/Requests/AuthorizationRequest.php @@ -13,11 +13,17 @@ final class AuthorizationRequest extends FormRequest implements FormRequestDto */ public function rules(): array { - return [ + $rules = [ 'email' => ['required', 'email', 'max:255'], 'password' => ['required', 'min:3'], 'remember' => ['nullable', 'boolean'], ]; + + if (config('app.captcha', false)) { + $rules['captcha-verified'] = ['captcha']; + } + + return $rules; } public function getDto(): Authorization diff --git a/app/Http/Requests/Private/CaptchaTokens/IndexRequest.php b/app/application/app/Http/Requests/Private/CaptchaTokens/IndexRequest.php similarity index 100% rename from app/Http/Requests/Private/CaptchaTokens/IndexRequest.php rename to app/application/app/Http/Requests/Private/CaptchaTokens/IndexRequest.php diff --git a/app/Http/Requests/Private/CaptchaTokens/StoreUpdateRequest.php b/app/application/app/Http/Requests/Private/CaptchaTokens/StoreUpdateRequest.php similarity index 100% rename from app/Http/Requests/Private/CaptchaTokens/StoreUpdateRequest.php rename to app/application/app/Http/Requests/Private/CaptchaTokens/StoreUpdateRequest.php diff --git a/app/Http/Requests/Private/Profile/UpdatePasswordRequest.php b/app/application/app/Http/Requests/Private/Profile/UpdatePasswordRequest.php similarity index 100% rename from app/Http/Requests/Private/Profile/UpdatePasswordRequest.php rename to app/application/app/Http/Requests/Private/Profile/UpdatePasswordRequest.php diff --git a/app/Http/Requests/Private/Profile/UpdateRequest.php b/app/application/app/Http/Requests/Private/Profile/UpdateRequest.php similarity index 100% rename from app/Http/Requests/Private/Profile/UpdateRequest.php rename to app/application/app/Http/Requests/Private/Profile/UpdateRequest.php diff --git a/app/Http/Requests/Private/Profile/UpdateSettingsRequest.php b/app/application/app/Http/Requests/Private/Profile/UpdateSettingsRequest.php similarity index 100% rename from app/Http/Requests/Private/Profile/UpdateSettingsRequest.php rename to app/application/app/Http/Requests/Private/Profile/UpdateSettingsRequest.php diff --git a/app/Http/Requests/Private/Roles/IndexRequest.php b/app/application/app/Http/Requests/Private/Roles/IndexRequest.php similarity index 100% rename from app/Http/Requests/Private/Roles/IndexRequest.php rename to app/application/app/Http/Requests/Private/Roles/IndexRequest.php diff --git a/app/Http/Requests/Private/Roles/StoreUpdateRequest.php b/app/application/app/Http/Requests/Private/Roles/StoreUpdateRequest.php similarity index 100% rename from app/Http/Requests/Private/Roles/StoreUpdateRequest.php rename to app/application/app/Http/Requests/Private/Roles/StoreUpdateRequest.php diff --git a/app/Http/Requests/Private/Users/IndexRequest.php b/app/application/app/Http/Requests/Private/Users/IndexRequest.php similarity index 100% rename from app/Http/Requests/Private/Users/IndexRequest.php rename to app/application/app/Http/Requests/Private/Users/IndexRequest.php diff --git a/app/Http/Requests/Private/Users/StoreUpdateRequest.php b/app/application/app/Http/Requests/Private/Users/StoreUpdateRequest.php similarity index 100% rename from app/Http/Requests/Private/Users/StoreUpdateRequest.php rename to app/application/app/Http/Requests/Private/Users/StoreUpdateRequest.php diff --git a/app/Http/Requests/Private/Users/UpdatePasswordRequest.php b/app/application/app/Http/Requests/Private/Users/UpdatePasswordRequest.php similarity index 100% rename from app/Http/Requests/Private/Users/UpdatePasswordRequest.php rename to app/application/app/Http/Requests/Private/Users/UpdatePasswordRequest.php diff --git a/app/Http/Resources/Api/V1/Captcha.php b/app/application/app/Http/Resources/Api/V1/Captcha.php similarity index 100% rename from app/Http/Resources/Api/V1/Captcha.php rename to app/application/app/Http/Resources/Api/V1/Captcha.php diff --git a/app/Http/Resources/Api/V1/CaptchaVerificationInformation.php b/app/application/app/Http/Resources/Api/V1/CaptchaVerificationInformation.php similarity index 100% rename from app/Http/Resources/Api/V1/CaptchaVerificationInformation.php rename to app/application/app/Http/Resources/Api/V1/CaptchaVerificationInformation.php diff --git a/app/Http/Resources/Api/V1/CaptchaVerified.php b/app/application/app/Http/Resources/Api/V1/CaptchaVerified.php similarity index 100% rename from app/Http/Resources/Api/V1/CaptchaVerified.php rename to app/application/app/Http/Resources/Api/V1/CaptchaVerified.php diff --git a/app/application/app/Http/Resources/Private/Dashboard/ChartCaptchaActivity.php b/app/application/app/Http/Resources/Private/Dashboard/ChartCaptchaActivity.php new file mode 100644 index 0000000..b4f6969 --- /dev/null +++ b/app/application/app/Http/Resources/Private/Dashboard/ChartCaptchaActivity.php @@ -0,0 +1,53 @@ +resource->getFrom()->diff($this->resource->getTo())->stepBy('day'); + $days = []; + $values = []; + $types = []; + foreach (CaptchaLogType::cases() as $type) { + $values[$type->value] = []; + $types[$type->value] = [ + 'meta' => $type->getTitle(), + 'value' => 0, + ]; + } + foreach ($period as $item) { + $day = $item->format('Y-m-d'); + $days[] = $day; + $quantity = $this->resource->getQuantityByDays()->getDay($day); + foreach (CaptchaLogType::cases() as $type) { + $values[$type->value][] = [ + 'meta' => $type->getTitle(), + 'value' => $quantity[$type->value] ?? 0, + ]; + } + } + + return [ + 'days' => $days, + 'values' => $values, + 'types' => $types, + ]; + } +} diff --git a/app/application/app/Http/Resources/Private/Websockets/Setting.php b/app/application/app/Http/Resources/Private/Websockets/Setting.php new file mode 100644 index 0000000..1050164 --- /dev/null +++ b/app/application/app/Http/Resources/Private/Websockets/Setting.php @@ -0,0 +1,31 @@ + $this->resource->getKey(), + 'wsHost' => $this->resource->getWsHost(), + 'wsPort' => $this->resource->getWsPort(), + 'wssPort' => $this->resource->getWssPort(), + 'forceTLS' => $this->resource->isForceTLS(), + ]; + } +} diff --git a/app/Models/Captcha.php b/app/application/app/Models/Captcha.php similarity index 80% rename from app/Models/Captcha.php rename to app/application/app/Models/Captcha.php index 37ed7a9..f173e4b 100644 --- a/app/Models/Captcha.php +++ b/app/application/app/Models/Captcha.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; final class Captcha extends Model @@ -34,4 +35,9 @@ public function captchaLogs(): HasMany { return $this->hasMany(CaptchaLog::class); } + + public function captchaToken(): BelongsTo + { + return $this->belongsTo(CaptchaToken::class); + } } diff --git a/app/Models/CaptchaLog.php b/app/application/app/Models/CaptchaLog.php similarity index 66% rename from app/Models/CaptchaLog.php rename to app/application/app/Models/CaptchaLog.php index 80c0bdf..86cd5bb 100644 --- a/app/Models/CaptchaLog.php +++ b/app/application/app/Models/CaptchaLog.php @@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\BelongsTo; final class CaptchaLog extends Model { @@ -29,16 +30,24 @@ final class CaptchaLog extends Model ]; /** - * The attributes that should be cast. + * Get the attributes that should be cast. * - * @var array + * @return array */ - protected $casts = [ - 'type' => CaptchaLogType::class, - ]; + protected function casts(): array + { + return [ + 'type' => CaptchaLogType::class, + ]; + } public function scopeLatest(Builder $query): Builder { return $query->orderBy('created_at', 'desc'); } + + public function captcha(): BelongsTo + { + return $this->belongsTo(Captcha::class); + } } diff --git a/app/Models/CaptchaToken.php b/app/application/app/Models/CaptchaToken.php similarity index 100% rename from app/Models/CaptchaToken.php rename to app/application/app/Models/CaptchaToken.php diff --git a/app/Models/Role.php b/app/application/app/Models/Role.php similarity index 100% rename from app/Models/Role.php rename to app/application/app/Models/Role.php diff --git a/app/Models/RolePermission.php b/app/application/app/Models/RolePermission.php similarity index 100% rename from app/Models/RolePermission.php rename to app/application/app/Models/RolePermission.php diff --git a/app/Models/User.php b/app/application/app/Models/User.php similarity index 88% rename from app/Models/User.php rename to app/application/app/Models/User.php index 2c0940f..77e6618 100644 --- a/app/Models/User.php +++ b/app/application/app/Models/User.php @@ -51,15 +51,18 @@ final class User extends Authenticatable ]; /** - * The attributes that should be cast. + * Get the attributes that should be cast. * - * @var array + * @return array */ - protected $casts = [ - 'email_verified_at' => 'datetime', - 'is_active' => 'boolean', - 'lang' => Lang::class, - ]; + protected function casts(): array + { + return [ + 'email_verified_at' => 'datetime', + 'is_active' => 'boolean', + 'lang' => Lang::class, + ]; + } /** * Return the user's roles diff --git a/app/Policies/CaptchaTokenPolicy.php b/app/application/app/Policies/CaptchaTokenPolicy.php similarity index 100% rename from app/Policies/CaptchaTokenPolicy.php rename to app/application/app/Policies/CaptchaTokenPolicy.php diff --git a/app/Policies/Policy.php b/app/application/app/Policies/Policy.php similarity index 100% rename from app/Policies/Policy.php rename to app/application/app/Policies/Policy.php diff --git a/app/Policies/RolePolicy.php b/app/application/app/Policies/RolePolicy.php similarity index 100% rename from app/Policies/RolePolicy.php rename to app/application/app/Policies/RolePolicy.php diff --git a/app/Policies/UserPolicy.php b/app/application/app/Policies/UserPolicy.php similarity index 100% rename from app/Policies/UserPolicy.php rename to app/application/app/Policies/UserPolicy.php diff --git a/app/Providers/AppServiceProvider.php b/app/application/app/Providers/AppServiceProvider.php similarity index 100% rename from app/Providers/AppServiceProvider.php rename to app/application/app/Providers/AppServiceProvider.php diff --git a/app/Providers/AuthServiceProvider.php b/app/application/app/Providers/AuthServiceProvider.php similarity index 100% rename from app/Providers/AuthServiceProvider.php rename to app/application/app/Providers/AuthServiceProvider.php diff --git a/app/Providers/BroadcastServiceProvider.php b/app/application/app/Providers/BroadcastServiceProvider.php similarity index 100% rename from app/Providers/BroadcastServiceProvider.php rename to app/application/app/Providers/BroadcastServiceProvider.php diff --git a/app/Providers/EventServiceProvider.php b/app/application/app/Providers/EventServiceProvider.php similarity index 100% rename from app/Providers/EventServiceProvider.php rename to app/application/app/Providers/EventServiceProvider.php diff --git a/app/Providers/RouteServiceProvider.php b/app/application/app/Providers/RouteServiceProvider.php similarity index 100% rename from app/Providers/RouteServiceProvider.php rename to app/application/app/Providers/RouteServiceProvider.php diff --git a/app/application/app/Repositories/CaptchaLogRepository.php b/app/application/app/Repositories/CaptchaLogRepository.php new file mode 100644 index 0000000..cc5d03e --- /dev/null +++ b/app/application/app/Repositories/CaptchaLogRepository.php @@ -0,0 +1,70 @@ +with($with) + ->latest(); + + return $this->createSearchInstanceCommand->execute($query); + } + + public function countByType(CaptchaLogType $type, ?int $captchaId = null): int + { + return CaptchaLog::query() + ->when($captchaId, function (Builder $query, int $captchaId) { + $query->where('captcha_id', $captchaId); + }) + ->where('type', '=', $type) + ->count(); + } + + public function getCaptchaLogsByTypes(array $types, ?int $captchaId = null, ?int $limit = null): Collection + { + return CaptchaLog::query() + ->when($captchaId, function (Builder $query, int $captchaId) { + $query->where('captcha_id', $captchaId); + }) + ->when($limit, function (Builder $query, int $limit) { + $query->limit($limit); + }) + ->whereIn('type', $types) + ->latest() + ->get(); + } + + public function countByDays(Carbon $from, Carbon $to): QuantityByDays + { + $count = CaptchaLog::query() + ->selectRaw('DATE_FORMAT(created_at, \'%Y-%m-%d\') AS date, type, COUNT(id) AS count') + ->where('created_at', '>=', $from) + ->where('created_at', '<=', $to) + ->groupBy('date', 'type') + ->orderBy('date', 'asc') + ->get(); + + $quantity = new QuantityByDays(); + foreach ($count as $item) { + $quantity->add($item->date, $item->type, $item->count); + } + + return $quantity; + } +} diff --git a/app/Repositories/CaptchaRepository.php b/app/application/app/Repositories/CaptchaRepository.php similarity index 100% rename from app/Repositories/CaptchaRepository.php rename to app/application/app/Repositories/CaptchaRepository.php diff --git a/app/Repositories/CaptchaTokenRepository.php b/app/application/app/Repositories/CaptchaTokenRepository.php similarity index 100% rename from app/Repositories/CaptchaTokenRepository.php rename to app/application/app/Repositories/CaptchaTokenRepository.php diff --git a/app/Repositories/DataCaptchaRepository.php b/app/application/app/Repositories/DataCaptchaRepository.php similarity index 100% rename from app/Repositories/DataCaptchaRepository.php rename to app/application/app/Repositories/DataCaptchaRepository.php diff --git a/app/Repositories/RoleRepository.php b/app/application/app/Repositories/RoleRepository.php similarity index 100% rename from app/Repositories/RoleRepository.php rename to app/application/app/Repositories/RoleRepository.php diff --git a/app/Repositories/UserRepository.php b/app/application/app/Repositories/UserRepository.php similarity index 100% rename from app/Repositories/UserRepository.php rename to app/application/app/Repositories/UserRepository.php diff --git a/app/Rules/Permission.php b/app/application/app/Rules/Permission.php similarity index 100% rename from app/Rules/Permission.php rename to app/application/app/Rules/Permission.php diff --git a/app/ServiceResults/Api/V1/CaptchaGenerateService/Captcha.php b/app/application/app/ServiceResults/Api/V1/CaptchaGenerateService/Captcha.php similarity index 100% rename from app/ServiceResults/Api/V1/CaptchaGenerateService/Captcha.php rename to app/application/app/ServiceResults/Api/V1/CaptchaGenerateService/Captcha.php diff --git a/app/ServiceResults/Api/V1/CaptchaService/Captcha.php b/app/application/app/ServiceResults/Api/V1/CaptchaService/Captcha.php similarity index 100% rename from app/ServiceResults/Api/V1/CaptchaService/Captcha.php rename to app/application/app/ServiceResults/Api/V1/CaptchaService/Captcha.php diff --git a/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerificationInformationResult.php b/app/application/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerificationInformationResult.php similarity index 100% rename from app/ServiceResults/Api/V1/CaptchaService/CaptchaVerificationInformationResult.php rename to app/application/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerificationInformationResult.php diff --git a/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerifiedResult.php b/app/application/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerifiedResult.php similarity index 100% rename from app/ServiceResults/Api/V1/CaptchaService/CaptchaVerifiedResult.php rename to app/application/app/ServiceResults/Api/V1/CaptchaService/CaptchaVerifiedResult.php diff --git a/app/application/app/ServiceResults/Private/Dashboard/ChartCaptchaActivity.php b/app/application/app/ServiceResults/Private/Dashboard/ChartCaptchaActivity.php new file mode 100644 index 0000000..6015d57 --- /dev/null +++ b/app/application/app/ServiceResults/Private/Dashboard/ChartCaptchaActivity.php @@ -0,0 +1,31 @@ +from; + } + + public function getTo(): Carbon + { + return $this->to; + } + + public function getQuantityByDays(): QuantityByDays + { + return $this->quantityByDays; + } +} diff --git a/app/application/app/ServiceResults/Private/Websocket/Setting.php b/app/application/app/ServiceResults/Private/Websocket/Setting.php new file mode 100644 index 0000000..bb21eea --- /dev/null +++ b/app/application/app/ServiceResults/Private/Websocket/Setting.php @@ -0,0 +1,41 @@ +key; + } + + public function getWsHost(): string + { + return $this->wsHost; + } + + public function getWsPort(): int + { + return $this->wsPort; + } + + public function getWssPort(): int + { + return $this->wssPort; + } + + public function isForceTLS(): bool + { + return $this->forceTLS; + } +} diff --git a/app/ServiceResults/ServiceResult.php b/app/application/app/ServiceResults/ServiceResult.php similarity index 100% rename from app/ServiceResults/ServiceResult.php rename to app/application/app/ServiceResults/ServiceResult.php diff --git a/app/ServiceResults/ServiceResultArray.php b/app/application/app/ServiceResults/ServiceResultArray.php similarity index 100% rename from app/ServiceResults/ServiceResultArray.php rename to app/application/app/ServiceResults/ServiceResultArray.php diff --git a/app/ServiceResults/ServiceResultError.php b/app/application/app/ServiceResults/ServiceResultError.php similarity index 100% rename from app/ServiceResults/ServiceResultError.php rename to app/application/app/ServiceResults/ServiceResultError.php diff --git a/app/ServiceResults/ServiceResultSuccess.php b/app/application/app/ServiceResults/ServiceResultSuccess.php similarity index 100% rename from app/ServiceResults/ServiceResultSuccess.php rename to app/application/app/ServiceResults/ServiceResultSuccess.php diff --git a/app/ServiceResults/StoreUpdateResult.php b/app/application/app/ServiceResults/StoreUpdateResult.php similarity index 100% rename from app/ServiceResults/StoreUpdateResult.php rename to app/application/app/ServiceResults/StoreUpdateResult.php diff --git a/app/Services/Api/V1/CaptchaGenerateService.php b/app/application/app/Services/Api/V1/CaptchaGenerateService.php similarity index 100% rename from app/Services/Api/V1/CaptchaGenerateService.php rename to app/application/app/Services/Api/V1/CaptchaGenerateService.php diff --git a/app/Services/Api/V1/CaptchaService.php b/app/application/app/Services/Api/V1/CaptchaService.php similarity index 100% rename from app/Services/Api/V1/CaptchaService.php rename to app/application/app/Services/Api/V1/CaptchaService.php diff --git a/app/Services/AuthService.php b/app/application/app/Services/AuthService.php similarity index 100% rename from app/Services/AuthService.php rename to app/application/app/Services/AuthService.php diff --git a/app/Services/Captcha/CaptchaHandler.php b/app/application/app/Services/Captcha/CaptchaHandler.php similarity index 100% rename from app/Services/Captcha/CaptchaHandler.php rename to app/application/app/Services/Captcha/CaptchaHandler.php diff --git a/app/Services/Captcha/CheckingCommand.php b/app/application/app/Services/Captcha/CheckingCommand.php similarity index 100% rename from app/Services/Captcha/CheckingCommand.php rename to app/application/app/Services/Captcha/CheckingCommand.php diff --git a/app/Services/CaptchaLog/CaptchaLogHandler.php b/app/application/app/Services/CaptchaLog/CaptchaLogHandler.php similarity index 85% rename from app/Services/CaptchaLog/CaptchaLogHandler.php rename to app/application/app/Services/CaptchaLog/CaptchaLogHandler.php index bba2f51..871cc7a 100644 --- a/app/Services/CaptchaLog/CaptchaLogHandler.php +++ b/app/application/app/Services/CaptchaLog/CaptchaLogHandler.php @@ -4,6 +4,7 @@ use App\Dto\HttpUserData; use App\Enums\CaptchaLogType; +use App\Events\CreatedCaptchaLog; use App\Models\Captcha; use App\Models\CaptchaLog; use Illuminate\Support\Str; @@ -22,12 +23,16 @@ public function handleStore(int $captchaId, CaptchaLogType $captchaLogType, Http $referer = Str::limit($referer, 10000, ''); } - return CaptchaLog::create([ + $captchaLog = CaptchaLog::create([ 'captcha_id' => $captchaId, 'type' => $captchaLogType, 'ip' => $httpUserData->getClientIp(), 'user_agent' => $userAgent, 'referer' => $referer, ]); + + CreatedCaptchaLog::dispatch($captchaLog); + + return $captchaLog; } } diff --git a/app/Services/CaptchaToken/BuilderCommand.php b/app/application/app/Services/CaptchaToken/BuilderCommand.php similarity index 100% rename from app/Services/CaptchaToken/BuilderCommand.php rename to app/application/app/Services/CaptchaToken/BuilderCommand.php diff --git a/app/Services/CaptchaToken/CaptchaTokenHandler.php b/app/application/app/Services/CaptchaToken/CaptchaTokenHandler.php similarity index 100% rename from app/Services/CaptchaToken/CaptchaTokenHandler.php rename to app/application/app/Services/CaptchaToken/CaptchaTokenHandler.php diff --git a/app/Services/CryptographyString.php b/app/application/app/Services/CryptographyString.php similarity index 100% rename from app/Services/CryptographyString.php rename to app/application/app/Services/CryptographyString.php diff --git a/app/Services/GenerateTokenCommand/GenerateTokenCommand.php b/app/application/app/Services/GenerateTokenCommand/GenerateTokenCommand.php similarity index 100% rename from app/Services/GenerateTokenCommand/GenerateTokenCommand.php rename to app/application/app/Services/GenerateTokenCommand/GenerateTokenCommand.php diff --git a/app/Services/GenerateTokenCommand/GenerateTokenUlidCommand.php b/app/application/app/Services/GenerateTokenCommand/GenerateTokenUlidCommand.php similarity index 100% rename from app/Services/GenerateTokenCommand/GenerateTokenUlidCommand.php rename to app/application/app/Services/GenerateTokenCommand/GenerateTokenUlidCommand.php diff --git a/app/Services/GenerateTokenCommand/GenerateTokenUuidCommand.php b/app/application/app/Services/GenerateTokenCommand/GenerateTokenUuidCommand.php similarity index 100% rename from app/Services/GenerateTokenCommand/GenerateTokenUuidCommand.php rename to app/application/app/Services/GenerateTokenCommand/GenerateTokenUuidCommand.php diff --git a/app/Services/Private/CaptchaTokenService.php b/app/application/app/Services/Private/CaptchaTokenService.php similarity index 100% rename from app/Services/Private/CaptchaTokenService.php rename to app/application/app/Services/Private/CaptchaTokenService.php diff --git a/app/application/app/Services/Private/DashboardService.php b/app/application/app/Services/Private/DashboardService.php new file mode 100644 index 0000000..d43ce26 --- /dev/null +++ b/app/application/app/Services/Private/DashboardService.php @@ -0,0 +1,54 @@ +cannot('viewAny', CaptchaToken::class)) { + return $this->result([ + 'items' => collect([]), + 'user' => $user, + ]); + } + + return $this->result([ + 'items' => $this->captchaLogRepository->getCaptchaLogs($with)->get($limit), + 'user' => $user, + ]); + } + + public function chartCaptchaActivity(User $user, Carbon $from, Carbon $to): ServiceResultError | ChartCaptchaActivity + { + if ($user->cannot('viewAny', CaptchaToken::class)) { + return $this->errFobidden(__('Access is denied')); + } + + if ($to < $from) { + return $this->errValidate(__('From cannot be greater than To')); + } + + $quantity = $this->captchaLogRepository->countByDays($from, $to); + + return new ChartCaptchaActivity( + from: $from, + to: $to, + quantityByDays: $quantity, + ); + } +} diff --git a/app/Services/Private/ProfileService.php b/app/application/app/Services/Private/ProfileService.php similarity index 100% rename from app/Services/Private/ProfileService.php rename to app/application/app/Services/Private/ProfileService.php diff --git a/app/Services/Private/RoleService.php b/app/application/app/Services/Private/RoleService.php similarity index 100% rename from app/Services/Private/RoleService.php rename to app/application/app/Services/Private/RoleService.php diff --git a/app/Services/Private/UserService.php b/app/application/app/Services/Private/UserService.php similarity index 100% rename from app/Services/Private/UserService.php rename to app/application/app/Services/Private/UserService.php diff --git a/app/application/app/Services/Private/WebsocketService.php b/app/application/app/Services/Private/WebsocketService.php new file mode 100644 index 0000000..e82fea5 --- /dev/null +++ b/app/application/app/Services/Private/WebsocketService.php @@ -0,0 +1,24 @@ +=5.0.0" + }, + "require-dev": { + "doctrine/dbal": "^4.0.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2024-02-09T16:56:22+00:00" + }, + { + "name": "clue/redis-protocol", + "version": "v0.3.1", + "source": { + "type": "git", + "url": "https://github.com/clue/php-redis-protocol.git", + "reference": "271b8009887209d930f613ad3b9518f94bd6b51c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/php-redis-protocol/zipball/271b8009887209d930f613ad3b9518f94bd6b51c", + "reference": "271b8009887209d930f613ad3b9518f94bd6b51c", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "autoload": { + "psr-0": { + "Clue\\Redis\\Protocol": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@lueck.tv" + } + ], + "description": "A streaming redis wire protocol parser and serializer implementation in PHP", + "homepage": "https://github.com/clue/php-redis-protocol", + "keywords": [ + "parser", + "protocol", + "redis", + "serializer", + "streaming" + ], + "support": { + "issues": "https://github.com/clue/php-redis-protocol/issues", + "source": "https://github.com/clue/php-redis-protocol/tree/v0.3.1" + }, + "time": "2017-06-06T16:07:10+00:00" + }, + { + "name": "clue/redis-react", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/clue/reactphp-redis.git", + "reference": "2283690f249e8d93342dd63b5285732d2654e077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/clue/reactphp-redis/zipball/2283690f249e8d93342dd63b5285732d2654e077", + "reference": "2283690f249e8d93342dd63b5285732d2654e077", + "shasum": "" + }, + "require": { + "clue/redis-protocol": "0.3.*", + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.0 || ^1.1", + "react/promise-timer": "^1.9", + "react/socket": "^1.12" + }, + "require-dev": { + "clue/block-react": "^1.5", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "Clue\\React\\Redis\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering" + } + ], + "description": "Async Redis client implementation, built on top of ReactPHP.", + "homepage": "https://github.com/clue/reactphp-redis", + "keywords": [ + "async", + "client", + "database", + "reactphp", + "redis" + ], + "support": { + "issues": "https://github.com/clue/reactphp-redis/issues", + "source": "https://github.com/clue/reactphp-redis/tree/v2.7.0" + }, + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2024-01-05T15:54:20+00:00" }, { "name": "dflydev/dot-access-data", @@ -139,28 +323,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -210,7 +394,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -226,31 +410,31 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/lexer", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -287,7 +471,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -303,20 +487,20 @@ "type": "tidelift" } ], - "time": "2022-12-15T16:57:16+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/782ca5968ab8b954773518e9e49a6f892a34b2a8", - "reference": "782ca5968ab8b954773518e9e49a6f892a34b2a8", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -356,7 +540,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.2" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -364,20 +548,20 @@ "type": "github" } ], - "time": "2022-09-10T18:51:20+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "4.0.1", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", - "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { @@ -386,8 +570,8 @@ "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^4.30" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -423,7 +607,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -431,25 +615,72 @@ "type": "github" } ], - "time": "2023-01-14T14:17:03+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { - "name": "fruitcake/php-cors", - "version": "v1.2.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6" + "symfony/http-foundation": "^4.4|^5.4|^6|^7" }, "require-dev": { "phpstan/phpstan": "^1.4", @@ -459,7 +690,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -490,7 +721,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" }, "funding": [ { @@ -502,28 +733,28 @@ "type": "github" } ], - "time": "2022-02-20T15:07:15+00:00" + "time": "2023-10-12T05:21:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.1", + "version": "v1.1.2", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", - "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.1" + "phpoption/phpoption": "^1.9.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "autoload": { @@ -552,7 +783,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.2" }, "funding": [ { @@ -564,26 +795,26 @@ "type": "tidelift" } ], - "time": "2023-02-25T20:23:15+00:00" + "time": "2023-11-12T22:16:48+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.5.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", - "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -592,10 +823,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -608,9 +840,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -676,7 +905,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.5.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -692,38 +921,37 @@ "type": "tidelift" } ], - "time": "2022-08-28T15:39:27+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -760,7 +988,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -776,26 +1004,26 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.3", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "67c26b443f348a51926030c83481b85718457d3d" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", - "reference": "67c26b443f348a51926030c83481b85718457d3d", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -803,9 +1031,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -815,9 +1043,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "2.4-dev" } }, "autoload": { @@ -879,7 +1104,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.3" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -895,34 +1120,36 @@ "type": "tidelift" } ], - "time": "2022-10-26T14:07:24+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "guzzlehttp/uri-template", - "version": "v1.0.1", + "version": "v1.0.3", "source": { "type": "git", "url": "https://github.com/guzzle/uri-template.git", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2" + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/uri-template/zipball/b945d74a55a25a949158444f09ec0d3c120d69e2", - "reference": "b945d74a55a25a949158444f09ec0d3c120d69e2", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "symfony/polyfill-php80": "^1.17" + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "uri-template/tests": "1.0.0" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -963,7 +1190,7 @@ ], "support": { "issues": "https://github.com/guzzle/uri-template/issues", - "source": "https://github.com/guzzle/uri-template/tree/v1.0.1" + "source": "https://github.com/guzzle/uri-template/tree/v1.0.3" }, "funding": [ { @@ -979,24 +1206,74 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+00:00" + }, + { + "name": "kor-elf/captcha-rule-for-laravel", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://git.kor-elf.net/kor-elf/captcha-rule-for-laravel", + "reference": "b2c9242d51059bcd4275da6544134d8f28f08750" + }, + "require": { + "guzzlehttp/guzzle": "^7.0.1", + "illuminate/support": "^10.0|^11.0", + "php": "^8.2" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "korElf\\CaptchaRuleForLaravel\\CaptchaProvider" + ] + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "korElf\\CaptchaRuleForLaravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Leonid Nikitin", + "email": "i@kor-elf.net", + "homepage": "https://git.kor-elf.net/kor-elf", + "role": "Developer" + } + ], + "description": "Validation Rule Captcha for Laravel", + "homepage": "https://git.kor-elf.net/kor-elf/captcha-rule-for-laravel", + "keywords": [ + "captcha", + "laravel", + "validation" + ], + "time": "2024-04-02T17:36:12+00:00" }, { "name": "laravel/framework", - "version": "v10.2.0", + "version": "v11.5.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e" + "reference": "e3c24268f1404805e15099b9f035fe310cb30753" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/3799f7f3118d57dc5d3dfaabde69a912fff65a7e", - "reference": "3799f7f3118d57dc5d3dfaabde69a912fff65a7e", + "url": "https://api.github.com/repos/laravel/framework/zipball/e3c24268f1404805e15099b9f035fe310cb30753", + "reference": "e3c24268f1404805e15099b9f035fe310cb30753", "shasum": "" }, "require": { - "brick/math": "^0.9.3|^0.10.2|^0.11", + "brick/math": "^0.9.3|^0.10.2|^0.11|^0.12", "composer-runtime-api": "^2.2", "doctrine/inflector": "^2.0.5", "dragonmantank/cron-expression": "^3.3.2", @@ -1008,35 +1285,39 @@ "ext-openssl": "*", "ext-session": "*", "ext-tokenizer": "*", - "fruitcake/php-cors": "^1.2", + "fruitcake/php-cors": "^1.3", + "guzzlehttp/guzzle": "^7.8", "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.18", "laravel/serializable-closure": "^1.3", "league/commonmark": "^2.2.1", "league/flysystem": "^3.8.0", "monolog/monolog": "^3.0", - "nesbot/carbon": "^2.62.1", - "nunomaduro/termwind": "^1.13", - "php": "^8.1", + "nesbot/carbon": "^2.72.2|^3.0", + "nunomaduro/termwind": "^2.0", + "php": "^8.2", "psr/container": "^1.1.1|^2.0.1", "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.7", - "symfony/console": "^6.2", - "symfony/error-handler": "^6.2", - "symfony/finder": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/process": "^6.2", - "symfony/routing": "^6.2", - "symfony/uid": "^6.2", - "symfony/var-dumper": "^6.2", + "symfony/console": "^7.0", + "symfony/error-handler": "^7.0", + "symfony/finder": "^7.0", + "symfony/http-foundation": "^7.0", + "symfony/http-kernel": "^7.0", + "symfony/mailer": "^7.0", + "symfony/mime": "^7.0", + "symfony/polyfill-php83": "^1.28", + "symfony/process": "^7.0", + "symfony/routing": "^7.0", + "symfony/uid": "^7.0", + "symfony/var-dumper": "^7.0", "tijsverkoyen/css-to-inline-styles": "^2.2.5", "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^2.0" }, "conflict": { + "mockery/mockery": "1.6.8", "tightenco/collect": "<5.5.33" }, "provide": { @@ -1076,35 +1357,35 @@ "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", - "illuminate/view": "self.version" + "illuminate/view": "self.version", + "spatie/once": "*" }, "require-dev": { "ably/ably-php": "^1.0", "aws/aws-sdk-php": "^3.235.5", - "doctrine/dbal": "^3.5.1", "ext-gmp": "*", - "fakerphp/faker": "^1.21", - "guzzlehttp/guzzle": "^7.5", + "fakerphp/faker": "^1.23", "league/flysystem-aws-s3-v3": "^3.0", "league/flysystem-ftp": "^3.0", "league/flysystem-path-prefixing": "^3.3", "league/flysystem-read-only": "^3.3", "league/flysystem-sftp-v3": "^3.0", - "mockery/mockery": "^1.5.1", - "orchestra/testbench-core": "^8.0", - "pda/pheanstalk": "^4.0", - "phpstan/phpdoc-parser": "^1.15", + "mockery/mockery": "^1.6", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^9.0.6", + "pda/pheanstalk": "^5.0", "phpstan/phpstan": "^1.4.7", - "phpunit/phpunit": "^10.0.7", + "phpunit/phpunit": "^10.5|^11.0", "predis/predis": "^2.0.2", - "symfony/cache": "^6.2", - "symfony/http-client": "^6.2.4" + "resend/resend-php": "^0.10.0", + "symfony/cache": "^7.0", + "symfony/http-client": "^7.0", + "symfony/psr-http-message-bridge": "^7.0" }, "suggest": { "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", - "brianium/paratest": "Required to run tests in parallel (^6.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "brianium/paratest": "Required to run tests in parallel (^7.0|^8.0).", "ext-apcu": "Required to use the APC cache driver.", "ext-fileinfo": "Required to use the Filesystem class.", "ext-ftp": "Required to use the Flysystem FTP driver.", @@ -1116,37 +1397,38 @@ "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "fakerphp/faker": "Required to use the eloquent factory builder (^1.9.1).", "filp/whoops": "Required for friendly error pages in development (^2.14.3).", - "guzzlehttp/guzzle": "Required to use the HTTP Client and the ping methods on schedules (^7.5).", "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^3.0).", "league/flysystem-ftp": "Required to use the Flysystem FTP driver (^3.0).", "league/flysystem-path-prefixing": "Required to use the scoped driver (^3.3).", "league/flysystem-read-only": "Required to use read-only disks (^3.3)", "league/flysystem-sftp-v3": "Required to use the Flysystem SFTP driver (^3.0).", - "mockery/mockery": "Required to use mocking (^1.5.1).", + "mockery/mockery": "Required to use mocking (^1.6).", "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "phpunit/phpunit": "Required to use assertions and run tests (^9.5.8|^10.0.7).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^5.0).", + "phpunit/phpunit": "Required to use assertions and run tests (^10.5|^11.0).", "predis/predis": "Required to use the predis connector (^2.0.2).", "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^6.0|^7.0).", - "symfony/cache": "Required to PSR-6 cache bridge (^6.2).", - "symfony/filesystem": "Required to enable support for relative symbolic links (^6.2).", - "symfony/http-client": "Required to enable support for the Symfony API mail transports (^6.2).", - "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^6.2).", - "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^6.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0)." + "resend/resend-php": "Required to enable support for the Resend mail transport (^0.10.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^7.0).", + "symfony/filesystem": "Required to enable support for relative symbolic links (^7.0).", + "symfony/http-client": "Required to enable support for the Symfony API mail transports (^7.0).", + "symfony/mailgun-mailer": "Required to enable support for the Mailgun mail transport (^7.0).", + "symfony/postmark-mailer": "Required to enable support for the Postmark mail transport (^7.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^7.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "10.x-dev" + "dev-master": "11.x-dev" } }, "autoload": { "files": [ "src/Illuminate/Collections/helpers.php", "src/Illuminate/Events/functions.php", + "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" ], @@ -1179,40 +1461,178 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-03-02T14:55:50+00:00" + "time": "2024-04-23T15:11:31+00:00" }, { - "name": "laravel/sanctum", - "version": "v3.2.1", + "name": "laravel/prompts", + "version": "v0.1.20", "source": { "type": "git", - "url": "https://github.com/laravel/sanctum.git", - "reference": "d09d69bac55708fcd4a3b305d760e673d888baf9" + "url": "https://github.com/laravel/prompts.git", + "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sanctum/zipball/d09d69bac55708fcd4a3b305d760e673d888baf9", - "reference": "d09d69bac55708fcd4a3b305d760e673d888baf9", + "url": "https://api.github.com/repos/laravel/prompts/zipball/bf9a360c484976692de0f3792f30066f4f4b34a2", + "reference": "bf9a360c484976692de0f3792f30066f4f4b34a2", "shasum": "" }, "require": { - "ext-json": "*", - "illuminate/console": "^9.21|^10.0", - "illuminate/contracts": "^9.21|^10.0", - "illuminate/database": "^9.21|^10.0", - "illuminate/support": "^9.21|^10.0", - "php": "^8.0.2" + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" }, "require-dev": { - "mockery/mockery": "^1.0", - "orchestra/testbench": "^7.0|^8.0", - "phpunit/phpunit": "^9.3" + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-main": "0.1.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Laravel\\Prompts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "support": { + "issues": "https://github.com/laravel/prompts/issues", + "source": "https://github.com/laravel/prompts/tree/v0.1.20" + }, + "time": "2024-04-18T00:45:25+00:00" + }, + { + "name": "laravel/reverb", + "version": "v1.0.0-beta9", + "source": { + "type": "git", + "url": "https://github.com/laravel/reverb.git", + "reference": "46d768c88755ba17224c3f3dcdddf24b0e4fe4f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/reverb/zipball/46d768c88755ba17224c3f3dcdddf24b0e4fe4f8", + "reference": "46d768c88755ba17224c3f3dcdddf24b0e4fe4f8", + "shasum": "" + }, + "require": { + "clue/redis-react": "^2.6", + "guzzlehttp/psr7": "^2.6", + "illuminate/console": "^10.47|^11.0", + "illuminate/contracts": "^10.47|^11.0", + "illuminate/http": "^10.47|^11.0", + "illuminate/support": "^10.47|^11.0", + "laravel/prompts": "^0.1.15", + "php": "^8.2", + "pusher/pusher-php-server": "^7.2", + "ratchet/rfc6455": "^0.3.1", + "react/promise-timer": "^1.10", + "react/socket": "^1.14", + "symfony/console": "^6.0|^7.0", + "symfony/http-foundation": "^6.3|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "ratchet/pawl": "^0.4.1", + "react/async": "^4.0", + "react/http": "^1.9" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Laravel\\Reverb\\ApplicationManagerServiceProvider", + "Laravel\\Reverb\\ReverbServiceProvider" + ], + "aliases": { + "Output": "Laravel\\Reverb\\Output" + } + } + }, + "autoload": { + "psr-4": { + "Laravel\\Reverb\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" }, + { + "name": "Joe Dixon", + "email": "joe@laravel.com" + } + ], + "description": "Laravel Reverb provides a real-time WebSocket communication backend for Laravel applications.", + "keywords": [ + "WebSockets", + "laravel", + "real-time", + "websocket" + ], + "support": { + "issues": "https://github.com/laravel/reverb/issues", + "source": "https://github.com/laravel/reverb/tree/v1.0.0-beta9" + }, + "time": "2024-04-25T07:20:24+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/9cfc0ce80cabad5334efff73ec856339e8ec1ac1", + "reference": "9cfc0ce80cabad5334efff73ec856339e8ec1ac1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^11.0", + "illuminate/contracts": "^11.0", + "illuminate/database": "^11.0", + "illuminate/support": "^11.0", + "php": "^8.2", + "symfony/console": "^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.6", + "orchestra/testbench": "^9.0", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5" + }, + "type": "library", + "extra": { "laravel": { "providers": [ "Laravel\\Sanctum\\SanctumServiceProvider" @@ -1244,20 +1664,20 @@ "issues": "https://github.com/laravel/sanctum/issues", "source": "https://github.com/laravel/sanctum" }, - "time": "2023-01-13T15:41:49+00:00" + "time": "2024-04-10T19:39:58+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.3", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", "shasum": "" }, "require": { @@ -1304,42 +1724,40 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2023-11-08T14:08:06+00:00" }, { "name": "laravel/tinker", - "version": "v2.8.1", + "version": "v2.9.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", - "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "url": "https://api.github.com/repos/laravel/tinker/zipball/502e0fe3f0415d06d5db1f83a472f0f3b754bafe", + "reference": "502e0fe3f0415d06d5db1f83a472f0f3b754bafe", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", - "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4|^0.11.1", - "symfony/var-dumper": "^4.3.4|^5.0|^6.0" + "psy/psysh": "^0.11.1|^0.12.0", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0)." }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - }, "laravel": { "providers": [ "Laravel\\Tinker\\TinkerServiceProvider" @@ -1370,22 +1788,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.8.1" + "source": "https://github.com/laravel/tinker/tree/v2.9.0" }, - "time": "2023-02-15T16:40:09+00:00" + "time": "2024-01-04T16:10:04+00:00" }, { "name": "league/commonmark", - "version": "2.3.9", + "version": "2.4.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5" + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/c1e114f74e518daca2729ea8c4bf1167038fa4b5", - "reference": "c1e114f74e518daca2729ea8c4bf1167038fa4b5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/91c24291965bd6d7c46c46a12ba7492f83b1cadf", + "reference": "91c24291965bd6d7c46c46a12ba7492f83b1cadf", "shasum": "" }, "require": { @@ -1398,7 +1816,7 @@ }, "require-dev": { "cebe/markdown": "^1.0", - "commonmark/cmark": "0.30.0", + "commonmark/cmark": "0.30.3", "commonmark/commonmark.js": "0.30.0", "composer/package-versions-deprecated": "^1.8", "embed/embed": "^4.4", @@ -1408,10 +1826,10 @@ "michelf/php-markdown": "^1.4 || ^2.0", "nyholm/psr7": "^1.5", "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.21", + "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "symfony/finder": "^5.3 | ^6.0 || ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -1421,7 +1839,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" } }, "autoload": { @@ -1478,7 +1896,7 @@ "type": "tidelift" } ], - "time": "2023-02-15T14:07:24+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -1564,23 +1982,26 @@ }, { "name": "league/flysystem", - "version": "3.12.3", + "version": "3.27.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce" + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/81e87e74dd5213795c7846d65089712d2dda90ce", - "reference": "81e87e74dd5213795c7846d65089712d2dda90ce", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4729745b1ab737908c7d055148c9a6b3e959832f", + "reference": "4729745b1ab737908c7d055148c9a6b3e959832f", "shasum": "" }, "require": { + "league/flysystem-local": "^3.0.0", "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -1588,9 +2009,9 @@ "symfony/http-client": "<5.2" }, "require-dev": { - "async-aws/s3": "^1.5", - "async-aws/simple-s3": "^1.1", - "aws/aws-sdk-php": "^3.220.0", + "async-aws/s3": "^1.5 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "aws/aws-sdk-php": "^3.295.10", "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", @@ -1598,10 +2019,10 @@ "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "microsoft/azure-storage-blob": "^1.1", - "phpseclib/phpseclib": "^3.0.14", - "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", - "sabre/dav": "^4.3.1" + "phpseclib/phpseclib": "^3.0.36", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5.11|^10.0", + "sabre/dav": "^4.6.0" }, "type": "library", "autoload": { @@ -1635,7 +2056,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.12.3" + "source": "https://github.com/thephpleague/flysystem/tree/3.27.0" }, "funding": [ { @@ -1645,36 +2066,91 @@ { "url": "https://github.com/frankdejonge", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" } ], - "time": "2023-02-18T15:32:41+00:00" + "time": "2024-04-07T19:17:50+00:00" }, { - "name": "league/mime-type-detection", - "version": "1.11.0", + "name": "league/flysystem-local", + "version": "3.25.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/61a6a90d6e999e4ddd9ce5adb356de0939060b92", + "reference": "61a6a90d6e999e4ddd9ce5adb356de0939060b92", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "league/flysystem": "^3.0.0", + "league/mime-type-detection": "^1.0.0", + "php": "^8.0.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\Local\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "Local filesystem adapter for Flysystem.", + "keywords": [ + "Flysystem", + "file", + "files", + "filesystem", + "local" + ], + "support": { + "source": "https://github.com/thephpleague/flysystem-local/tree/3.25.1" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2024-03-15T19:58:44+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.15.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -1695,7 +2171,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -1707,20 +2183,20 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "monolog/monolog", - "version": "3.3.1", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2" + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", "shasum": "" }, "require": { @@ -1735,7 +2211,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -1743,7 +2219,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^9.5.26", + "phpunit/phpunit": "^10.5.17", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -1796,7 +2272,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.3.1" + "source": "https://github.com/Seldaek/monolog/tree/3.6.0" }, "funding": [ { @@ -1808,41 +2284,45 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:46:10+00:00" + "time": "2024-04-12T21:02:21+00:00" }, { "name": "nesbot/carbon", - "version": "2.66.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "496712849902241f04902033b0441b269effe001" + "reference": "7219739c4e01d4680c980545821733b6ed8ee880" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/496712849902241f04902033b0441b269effe001", - "reference": "496712849902241f04902033b0441b269effe001", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7219739c4e01d4680c980545821733b6ed8ee880", + "reference": "7219739c4e01d4680c980545821733b6ed8ee880", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", - "php": "^7.1.8 || ^8.0", + "php": "^8.1", + "psr/clock": "^1.0", + "symfony/clock": "^6.3 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + }, + "provide": { + "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", - "friendsofphp/php-cs-fixer": "^3.0", - "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", - "phpmd/phpmd": "^2.9", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.99 || ^1.7.14", - "phpunit/php-file-iterator": "^2.0.5 || ^3.0.6", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "squizlabs/php_codesniffer": "^3.4" + "doctrine/dbal": "^3.6.3 || ^4.0", + "doctrine/orm": "^2.15.2 || ^3.0", + "friendsofphp/php-cs-fixer": "^3.52.1", + "kylekatarnls/multi-tester": "^2.5.3", + "ondrejmirtes/better-reflection": "^6.25.0.4", + "phpmd/phpmd": "^2.15.0", + "phpstan/extension-installer": "^1.3.1", + "phpstan/phpstan": "^1.10.65", + "phpunit/phpunit": "^10.5.15", + "squizlabs/php_codesniffer": "^3.9.0" }, "bin": [ "bin/carbon" @@ -1850,8 +2330,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-3.x": "3.x-dev", - "dev-master": "2.x-dev" + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev" }, "laravel": { "providers": [ @@ -1910,35 +2390,35 @@ "type": "tidelift" } ], - "time": "2023-01-29T18:53:47+00:00" + "time": "2024-04-18T16:35:06+00:00" }, { "name": "nette/schema", - "version": "v1.2.3", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f" + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", - "reference": "abbdbb70e0245d5f3bf77874cea1dfb0c930d06f", + "url": "https://api.github.com/repos/nette/schema/zipball/a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", + "reference": "a6d3a6d1f545f01ef38e60f375d1cf1f4de98188", "shasum": "" }, "require": { - "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", - "php": ">=7.1 <8.3" + "nette/utils": "^4.0", + "php": "8.1 - 8.3" }, "require-dev": { - "nette/tester": "^2.3 || ^2.4", + "nette/tester": "^2.4", "phpstan/phpstan-nette": "^1.0", - "tracy/tracy": "^2.7" + "tracy/tracy": "^2.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -1970,26 +2450,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.2.3" + "source": "https://github.com/nette/schema/tree/v1.3.0" }, - "time": "2022-10-13T01:24:26+00:00" + "time": "2023-12-11T11:54:22+00:00" }, { "name": "nette/utils", - "version": "v4.0.0", + "version": "v4.0.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e" + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/cacdbf5a91a657ede665c541eda28941d4b09c1e", - "reference": "cacdbf5a91a657ede665c541eda28941d4b09c1e", + "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", "shasum": "" }, "require": { - "php": ">=8.0 <8.3" + "php": ">=8.0 <8.4" }, "conflict": { "nette/finder": "<3", @@ -1997,7 +2477,7 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.4", + "nette/tester": "^2.5", "phpstan/phpstan": "^1.0", "tracy/tracy": "^2.9" }, @@ -2007,8 +2487,7 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", - "ext-xml": "to use Strings::length() etc. when mbstring is not available" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, "type": "library", "extra": { @@ -2057,31 +2536,33 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.0" + "source": "https://github.com/nette/utils/tree/v4.0.4" }, - "time": "2023-02-02T10:41:53+00:00" + "time": "2024-01-17T16:50:36+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.3", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", - "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2089,7 +2570,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2113,39 +2594,38 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2023-01-16T22:05:37+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.15.1", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/58c4c58cf23df7f498daeb97092e34f5259feb6a", + "reference": "58c4c58cf23df7f498daeb97092e34f5259feb6a", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" + "php": "^8.2", + "symfony/console": "^7.0.4" }, "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", + "ergebnis/phpstan-rules": "^2.2.0", + "illuminate/console": "^11.0.0", + "laravel/pint": "^1.14.0", + "mockery/mockery": "^1.6.7", + "pestphp/pest": "^2.34.1", + "phpstan/phpstan": "^1.10.59", + "phpstan/phpstan-strict-rules": "^1.5.2", + "symfony/var-dumper": "^7.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2154,6 +2634,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2185,7 +2668,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.0.1" }, "funding": [ { @@ -2201,20 +2684,156 @@ "type": "github" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2024-03-06T16:17:14+00:00" }, { - "name": "phpoption/phpoption", - "version": "1.9.1", + "name": "paragonie/random_compat", + "version": "v9.99.100", "source": { "type": "git", - "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v1.21.1", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/bb312875dcdd20680419564fe42ba1d9564b9e37", + "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.21.1" + }, + "time": "2024-04-22T22:05:04+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -2222,7 +2841,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "type": "library", "extra": { @@ -2264,7 +2883,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.2" }, "funding": [ { @@ -2276,7 +2895,55 @@ "type": "tidelift" } ], - "time": "2023-02-25T19:38:58+00:00" + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -2383,21 +3050,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "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" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2417,7 +3084,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -2429,27 +3096,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2469,7 +3136,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -2484,31 +3151,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2523,7 +3190,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -2537,9 +3204,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -2644,25 +3311,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.12", + "version": "v0.12.3", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7" + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/52cb7c47d403c31c0adc9bf7710fc355f93c20f7", - "reference": "52cb7c47d403c31c0adc9bf7710fc355f93c20f7", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", + "reference": "b6b6cce7d3ee8fbf31843edce5e8f5a72eff4a73", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -2673,8 +3340,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -2682,7 +3348,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.11.x-dev" + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false } }, "autoload": { @@ -2714,9 +3384,70 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.3" }, - "time": "2023-01-29T21:24:40+00:00" + "time": "2024-04-02T15:57:53+00:00" + }, + { + "name": "pusher/pusher-php-server", + "version": "7.2.4", + "source": { + "type": "git", + "url": "https://github.com/pusher/pusher-http-php.git", + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pusher/pusher-http-php/zipball/de2f72296808f9cafa6a4462b15a768ff130cddb", + "reference": "de2f72296808f9cafa6a4462b15a768ff130cddb", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.2", + "paragonie/sodium_compat": "^1.6", + "php": "^7.3|^8.0", + "psr/log": "^1.0|^2.0|^3.0" + }, + "require-dev": { + "overtrue/phplint": "^2.3", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Pusher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Library for interacting with the Pusher REST API", + "keywords": [ + "events", + "messaging", + "php-pusher-server", + "publish", + "push", + "pusher", + "real time", + "real-time", + "realtime", + "rest", + "trigger" + ], + "support": { + "issues": "https://github.com/pusher/pusher-http-php/issues", + "source": "https://github.com/pusher/pusher-http-php/tree/7.2.4" + }, + "time": "2023-12-15T10:58:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -2853,20 +3584,20 @@ }, { "name": "ramsey/uuid", - "version": "4.7.3", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "433b2014e3979047db08a17a205f410ba3869cf2" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/433b2014e3979047db08a17a205f410ba3869cf2", - "reference": "433b2014e3979047db08a17a205f410ba3869cf2", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" @@ -2929,7 +3660,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.3" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -2941,53 +3672,711 @@ "type": "tidelift" } ], - "time": "2023-01-12T18:13:24+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { - "name": "symfony/console", - "version": "v6.2.7", + "name": "ratchet/rfc6455", + "version": "v0.3.1", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" + "url": "https://github.com/ratchetphp/RFC6455.git", + "reference": "7c964514e93456a52a99a20fcfa0de242a43ccdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/7c964514e93456a52a99a20fcfa0de242a43ccdb", + "reference": "7c964514e93456a52a99a20fcfa0de242a43ccdb", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "guzzlehttp/psr7": "^2 || ^1.7", + "php": ">=5.4.2" + }, + "require-dev": { + "phpunit/phpunit": "^5.7", + "react/socket": "^1.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ratchet\\RFC6455\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "role": "Developer" + }, + { + "name": "Matt Bonneau", + "role": "Developer" + } + ], + "description": "RFC6455 WebSocket protocol handler", + "homepage": "http://socketo.me", + "keywords": [ + "WebSockets", + "rfc6455", + "websocket" + ], + "support": { + "chat": "https://gitter.im/reactphp/reactphp", + "issues": "https://github.com/ratchetphp/RFC6455/issues", + "source": "https://github.com/ratchetphp/RFC6455/tree/v0.3.1" + }, + "time": "2021-12-09T23:20:49+00:00" + }, + { + "name": "react/cache", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", + "keywords": [ + "cache", + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/dns", + "version": "v1.12.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "c134600642fa615b46b41237ef243daa65bb64ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/c134600642fa615b46b41237ef243daa65bb64ec", + "reference": "c134600642fa615b46b41237ef243daa65bb64ec", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-timer": "^1.9" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.12.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-29T12:41:06+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.1.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.1.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-16T16:21:57+00:00" + }, + { + "name": "react/promise-timer", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "4cb85c1c2125390748e3908120bb82feb99fe766" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/4cb85c1c2125390748e3908120bb82feb99fe766", + "reference": "4cb85c1c2125390748e3908120bb82feb99fe766", + "shasum": "" + }, + "require": { + "php": ">=5.3", + "react/event-loop": "^1.2", + "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\Timer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", + "homepage": "https://github.com/reactphp/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "support": { + "issues": "https://github.com/reactphp/promise-timer/issues", + "source": "https://github.com/reactphp/promise-timer/tree/v1.10.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-07-20T15:40:28+00:00" + }, + { + "name": "react/socket", + "version": "v1.15.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.11", + "react/event-loop": "^1.2", + "react/promise": "^3 || ^2.6 || ^1.2.1", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4 || ^3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" + ], + "support": { + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.15.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-12-15T11:02:10+00:00" + }, + { + "name": "react/stream", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-16T10:52:11+00:00" + }, + { + "name": "symfony/clock", + "version": "v7.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v7.0.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-03-02T12:46:12+00:00" + }, + { + "name": "symfony/console", + "version": "v7.0.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "reference": "fde915cd8e7eb99b3d531d3d5c09531429c3f9e5", + "shasum": "" + }, + "require": { + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^6.4|^7.0" }, "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/dotenv": "<6.4", + "symfony/event-dispatcher": "<6.4", + "symfony/lock": "<6.4", + "symfony/process": "<6.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "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" }, "type": "library", "autoload": { @@ -3016,12 +4405,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.7" + "source": "https://github.com/symfony/console/tree/v7.0.6" }, "funding": [ { @@ -3037,24 +4426,24 @@ "type": "tidelift" } ], - "time": "2023-02-25T17:00:03+00:00" + "time": "2024-04-01T11:04:53+00:00" }, { "name": "symfony/css-selector", - "version": "v6.2.7", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0" + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/aedf3cb0f5b929ec255d96bbb4909e9932c769e0", - "reference": "aedf3cb0f5b929ec255d96bbb4909e9932c769e0", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ec60a4edf94e63b0556b6a0888548bb400a3a3be", + "reference": "ec60a4edf94e63b0556b6a0888548bb400a3a3be", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -3086,7 +4475,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.2.7" + "source": "https://github.com/symfony/css-selector/tree/v7.0.3" }, "funding": [ { @@ -3102,20 +4491,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -3124,7 +4513,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3153,7 +4542,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -3169,31 +4558,35 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/error-handler", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "61e90f94eb014054000bc902257d2763fac09166" + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/61e90f94eb014054000bc902257d2763fac09166", - "reference": "61e90f94eb014054000bc902257d2763fac09166", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/46a4cc138f799886d4bd70477c55c699d3e9dfc8", + "reference": "46a4cc138f799886d4bd70477c55c699d3e9dfc8", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^5.4|^6.0" + "symfony/var-dumper": "^6.4|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -3224,7 +4617,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.7" + "source": "https://github.com/symfony/error-handler/tree/v7.0.6" }, "funding": [ { @@ -3240,28 +4633,29 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.2.7", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "404b307de426c1c488e5afad64403e5f145e82a5" + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/404b307de426c1c488e5afad64403e5f145e82a5", - "reference": "404b307de426c1c488e5afad64403e5f145e82a5", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", + "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<6.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -3269,17 +4663,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "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/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3307,7 +4697,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/v6.2.7" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" }, "funding": [ { @@ -3323,33 +4713,30 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" + "reference": "4e64b49bf370ade88e567de29465762e316e4224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/4e64b49bf370ade88e567de29465762e316e4224", + "reference": "4e64b49bf370ade88e567de29465762e316e4224", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3386,7 +4773,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.2" }, "funding": [ { @@ -3402,27 +4789,27 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.0" + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3450,7 +4837,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v7.0.0" }, "funding": [ { @@ -3466,41 +4853,40 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-10-31T17:59:56+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b" + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", - "reference": "5fc3038d4a594223f9ea42e4e985548f3fcc9a3b", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8789625dcf36e5fbf753014678a1e090f1bc759c", + "reference": "8789625dcf36e5fbf753014678a1e090f1bc759c", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=8.2", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "doctrine/dbal": "<3.6", + "symfony/cache": "<6.4" }, "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -3528,7 +4914,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.0.6" }, "funding": [ { @@ -3544,74 +4930,75 @@ "type": "tidelift" } ], - "time": "2023-02-21T10:54:55+00:00" + "time": "2024-03-19T11:46:48+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd" + "reference": "34c872391046d59af804af62d4573b829cfe4824" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", - "reference": "ca0680ad1e2d678536cc20e0ae33f9e4e5d2becd", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/34c872391046d59af804af62d4573b829cfe4824", + "reference": "34c872391046d59af804af62d4573b829cfe4824", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<5.4", - "twig/twig": "<2.13" + "symfony/browser-kit": "<6.4", + "symfony/cache": "<6.4", + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<6.4", + "symfony/form": "<6.4", + "symfony/http-client": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4", + "symfony/translation": "<6.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.4", + "twig/twig": "<3.0.4" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^6.1", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^5.4|^6.0", - "symfony/routing": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" + "symfony/browser-kit": "^6.4|^7.0", + "symfony/clock": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^6.4|^7.0", + "symfony/property-access": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0", + "symfony/serializer": "^6.4.4|^7.0.4", + "symfony/stopwatch": "^6.4|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^6.4|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "type": "library", "autoload": { @@ -3639,7 +5026,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.0.6" }, "funding": [ { @@ -3655,42 +5042,43 @@ "type": "tidelift" } ], - "time": "2023-02-28T13:26:41+00:00" + "time": "2024-04-03T06:12:25+00:00" }, { "name": "symfony/mailer", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e" + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/e4f84c633b72ec70efc50b8016871c3bc43e691e", - "reference": "e4f84c633b72ec70efc50b8016871c3bc43e691e", + "url": "https://api.github.com/repos/symfony/mailer/zipball/eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", + "reference": "eb0c3187c7ddfde12d8aa0e1fa5fb29e730a41e0", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.1", + "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/mime": "^6.2", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<5.4", - "symfony/messenger": "<6.2", - "symfony/mime": "<6.2", - "symfony/twig-bridge": "<6.2.1" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/messenger": "<6.4", + "symfony/mime": "<6.4", + "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/messenger": "^6.2", - "symfony/twig-bridge": "^6.2" + "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" }, "type": "library", "autoload": { @@ -3718,7 +5106,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.2.7" + "source": "https://github.com/symfony/mailer/tree/v7.0.6" }, "funding": [ { @@ -3734,24 +5122,24 @@ "type": "tidelift" } ], - "time": "2023-02-21T10:35:38+00:00" + "time": "2024-03-28T09:20:36+00:00" }, { "name": "symfony/mime", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "62e341f80699badb0ad70b31149c8df89a2d778e" + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/62e341f80699badb0ad70b31149c8df89a2d778e", - "reference": "62e341f80699badb0ad70b31149c8df89a2d778e", + "url": "https://api.github.com/repos/symfony/mime/zipball/99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", + "reference": "99362408c9abdf8c7cadcf0529b6fc8b16f5ace2", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -3759,17 +5147,18 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4", - "symfony/serializer": "<6.2" + "symfony/mailer": "<6.4", + "symfony/serializer": "<6.4" }, "require-dev": { "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": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^6.2" + "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|^7.0" }, "type": "library", "autoload": { @@ -3801,7 +5190,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.2.7" + "source": "https://github.com/symfony/mime/tree/v7.0.6" }, "funding": [ { @@ -3817,20 +5206,20 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2024-03-21T19:37:36+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -3844,9 +5233,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3883,7 +5269,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -3899,20 +5285,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -3923,9 +5309,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3964,7 +5347,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -3980,20 +5363,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -4006,9 +5389,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4051,7 +5431,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -4067,20 +5447,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -4091,9 +5471,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4135,7 +5512,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -4151,20 +5528,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -4178,9 +5555,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4218,7 +5592,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -4234,20 +5608,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/861391a8da9a04cbad2d232ddd9e4893220d6e25", + "reference": "861391a8da9a04cbad2d232ddd9e4893220d6e25", "shasum": "" }, "require": { @@ -4255,9 +5629,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4294,7 +5665,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.29.0" }, "funding": [ { @@ -4310,20 +5681,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -4331,9 +5702,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4377,7 +5745,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -4393,20 +5761,97 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-uuid", - "version": "v1.27.0", + "name": "symfony/polyfill-php83", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/f3cf1a645c2734236ed1e2e671e273eeb3586166", - "reference": "f3cf1a645c2734236ed1e2e671e273eeb3586166", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", + "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/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.29.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-01-29T20:11:03+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.29.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/3abdd21b0ceaa3000ee950097bc3cf9efc137853", + "reference": "3abdd21b0ceaa3000ee950097bc3cf9efc137853", "shasum": "" }, "require": { @@ -4420,9 +5865,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4459,7 +5901,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.29.0" }, "funding": [ { @@ -4475,24 +5917,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v6.2.7", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902" + "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902", + "url": "https://api.github.com/repos/symfony/process/zipball/0e7727191c3b71ebec6d529fa0e50a01ca5679e9", + "reference": "0e7727191c3b71ebec6d529fa0e50a01ca5679e9", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -4520,7 +5962,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.7" + "source": "https://github.com/symfony/process/tree/v7.0.4" }, "funding": [ { @@ -4536,45 +5978,38 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2024-02-22T20:27:20+00:00" }, { "name": "symfony/routing", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4" + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fa643fa4c56de161f8bc8c0492a76a60140b50e4", - "reference": "fa643fa4c56de161f8bc8c0492a76a60140b50e4", + "url": "https://api.github.com/repos/symfony/routing/zipball/cded64e5bbf9f31786f1055fcc76718fdd77519c", + "reference": "cded64e5bbf9f31786f1055fcc76718fdd77519c", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/annotations": "<1.12", - "symfony/config": "<6.2", - "symfony/dependency-injection": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/yaml": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^6.2", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4608,7 +6043,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.2.7" + "source": "https://github.com/symfony/routing/tree/v7.0.6" }, "funding": [ { @@ -4624,36 +6059,33 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:53:37+00:00" + "time": "2024-03-28T21:02:11+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/11bbf19a0fb7b36345861e85c5768844c552906e", + "reference": "11bbf19a0fb7b36345861e85c5768844c552906e", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4693,7 +6125,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.2" }, "funding": [ { @@ -4709,38 +6141,38 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-12-19T21:51:00+00:00" }, { "name": "symfony/string", - "version": "v6.2.7", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", + "url": "https://api.github.com/repos/symfony/string/zipball/f5832521b998b0bec40bee688ad5de98d4cf111b", + "reference": "f5832521b998b0bec40bee688ad5de98d4cf111b", "shasum": "" }, "require": { - "php": ">=8.1", + "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" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4779,7 +6211,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.7" + "source": "https://github.com/symfony/string/tree/v7.0.4" }, "funding": [ { @@ -4795,58 +6227,54 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2024-02-01T13:17:36+00:00" }, { "name": "symfony/translation", - "version": "v6.2.7", + "version": "v7.0.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73" + "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/90db1c6138c90527917671cd9ffa9e8b359e3a73", - "reference": "90db1c6138c90527917671cd9ffa9e8b359e3a73", + "url": "https://api.github.com/repos/symfony/translation/zipball/5b75e872f7d135d7abb4613809fadc8d9f3d30a0", + "reference": "5b75e872f7d135d7abb4613809fadc8d9f3d30a0", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" + "symfony/config": "<6.4", + "symfony/console": "<6.4", + "symfony/dependency-injection": "<6.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<6.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<6.4", + "symfony/yaml": "<6.4" }, "provide": { "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.13", + "nikic/php-parser": "^4.18|^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/finder": "^6.4|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "nikic/php-parser": "To use PhpAstExtractor", - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4877,7 +6305,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.2.7" + "source": "https://github.com/symfony/translation/tree/v7.0.4" }, "funding": [ { @@ -4893,32 +6321,29 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2024-02-22T20:27:20+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.2.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8" + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dfec258b9dd17a6b24420d464c43bffe347441c8", - "reference": "dfec258b9dd17a6b24420d464c43bffe347441c8", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", + "reference": "43810bdb2ddb5400e5c5e778e27b210a0ca83b6b", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4958,7 +6383,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.2" }, "funding": [ { @@ -4974,28 +6399,28 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/uid", - "version": "v6.2.7", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0" + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", - "reference": "d30c72a63897cfa043e1de4d4dd2ffa9ecefcdc0", + "url": "https://api.github.com/repos/symfony/uid/zipball/87cedaf3fabd7b733859d4d77aa4ca598259054b", + "reference": "87cedaf3fabd7b733859d4d77aa4ca598259054b", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^5.4|^6.0" + "symfony/console": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -5032,7 +6457,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v6.2.7" + "source": "https://github.com/symfony/uid/tree/v7.0.3" }, "funding": [ { @@ -5048,41 +6473,36 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.2.7", + "version": "v7.0.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e" + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", - "reference": "cf8d4ca1ddc1e3cc242375deb8fc23e54f5e2a1e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", + "reference": "66d13dc207d5dab6b4f4c2b5460efe1bea29dbfb", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" + "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", + "twig/twig": "^3.0.4" }, "bin": [ "Resources/bin/var-dump-server" @@ -5120,7 +6540,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.2.7" + "source": "https://github.com/symfony/var-dumper/tree/v7.0.6" }, "funding": [ { @@ -5136,27 +6556,27 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2024-03-19T11:57:22+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.6", + "version": "v2.2.7", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", - "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" @@ -5187,37 +6607,37 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" }, - "time": "2023-01-03T09:29:04+00:00" + "time": "2023-12-08T13:03:43+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.5.0", + "version": "v5.6.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", - "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.2", - "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.8", - "symfony/polyfill-ctype": "^1.23", - "symfony/polyfill-mbstring": "^1.23.1", - "symfony/polyfill-php80": "^1.23.1" + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" }, "suggest": { "ext-filter": "Required to use the boolean validator." @@ -5229,7 +6649,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -5261,7 +6681,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.0" }, "funding": [ { @@ -5273,7 +6693,7 @@ "type": "tidelift" } ], - "time": "2022-10-16T01:01:54+00:00" + "time": "2023-11-12T22:43:29+00:00" }, { "name": "voku/portable-ascii", @@ -5457,16 +6877,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -5516,9 +6936,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -5534,33 +6954,33 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "dragon-code/contracts", - "version": "v2.20.0", + "version": "2.23.0", "source": { "type": "git", "url": "https://github.com/TheDragonCode/contracts.git", - "reference": "410d35bec404f465a126bb1e672f3abe1150f5d7" + "reference": "44dbad923f152e0dc2699fbac2d33b65dd6a8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDragonCode/contracts/zipball/410d35bec404f465a126bb1e672f3abe1150f5d7", - "reference": "410d35bec404f465a126bb1e672f3abe1150f5d7", + "url": "https://api.github.com/repos/TheDragonCode/contracts/zipball/44dbad923f152e0dc2699fbac2d33b65dd6a8f7d", + "reference": "44dbad923f152e0dc2699fbac2d33b65dd6a8f7d", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-message": "^1.0.1 || ^2.0", - "symfony/http-kernel": "^4.0 || ^5.0 || ^6.0", + "symfony/http-kernel": "^4.0 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php80": "^1.23" }, "conflict": { "andrey-helldar/contracts": "*" }, "require-dev": { - "illuminate/database": "^10.0", + "illuminate/database": "^10.0 || ^11.0", "phpdocumentor/reflection-docblock": "^5.0" }, "type": "library", @@ -5577,7 +6997,7 @@ { "name": "Andrey Helldar", "email": "helldar@dragon-code.pro", - "homepage": "https://github.com/andrey-helldar" + "homepage": "https://dragon-code.pro" } ], "description": "A set of contracts for any project", @@ -5594,19 +7014,15 @@ "type": "boosty" }, { - "url": "https://github.com/sponsors/TheDragonCode", - "type": "github" - }, - { - "url": "https://opencollective.com/dragon-code", - "type": "open_collective" + "url": "https://www.donationalerts.com/r/dragon_code", + "type": "donationalerts" }, { "url": "https://yoomoney.ru/to/410012608840929", "type": "yoomoney" } ], - "time": "2023-06-02T11:06:31+00:00" + "time": "2024-03-11T20:15:12+00:00" }, { "name": "dragon-code/pretty-array", @@ -5687,26 +7103,26 @@ }, { "name": "dragon-code/support", - "version": "v6.11.2", + "version": "6.13.0", "source": { "type": "git", "url": "https://github.com/TheDragonCode/support.git", - "reference": "81b4432f35ee5d1d7a310669ccc698d78b3e83a6" + "reference": "a6f0468e32581efbccb23190b6d5c880cc519747" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/TheDragonCode/support/zipball/81b4432f35ee5d1d7a310669ccc698d78b3e83a6", - "reference": "81b4432f35ee5d1d7a310669ccc698d78b3e83a6", + "url": "https://api.github.com/repos/TheDragonCode/support/zipball/a6f0468e32581efbccb23190b6d5c880cc519747", + "reference": "a6f0468e32581efbccb23190b6d5c880cc519747", "shasum": "" }, "require": { - "dragon-code/contracts": "^2.19.1", + "dragon-code/contracts": "^2.22.0", "ext-bcmath": "*", "ext-ctype": "*", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": "^8.0", + "php": "^8.1", "psr/http-message": "^1.0.1 || ^2.0", "symfony/polyfill-php81": "^1.25", "voku/portable-ascii": "^1.4.8 || ^2.0.1" @@ -5715,9 +7131,9 @@ "andrey-helldar/support": "*" }, "require-dev": { - "illuminate/contracts": "^9.0 || ^10.0", - "phpunit/phpunit": "^9.6", - "symfony/var-dumper": "^6.0" + "illuminate/contracts": "^9.0 || ^10.0 || ^11.0", + "phpunit/phpunit": "^9.6 || ^11.0", + "symfony/var-dumper": "^6.0 || ^7.0" }, "suggest": { "dragon-code/laravel-support": "Various helper files for the Laravel and Lumen frameworks", @@ -5747,7 +7163,7 @@ { "name": "Andrey Helldar", "email": "helldar@dragon-code.pro", - "homepage": "https://github.com/andrey-helldar" + "homepage": "https://dragon-code.pro" } ], "description": "Support package is a collection of helpers and tools for any project.", @@ -5774,32 +7190,28 @@ "type": "boosty" }, { - "url": "https://github.com/sponsors/TheDragonCode", - "type": "github" - }, - { - "url": "https://opencollective.com/dragon-code", - "type": "open_collective" + "url": "https://www.donationalerts.com/r/dragon_code", + "type": "donationalerts" }, { "url": "https://yoomoney.ru/to/410012608840929", "type": "yoomoney" } ], - "time": "2023-04-19T08:29:55+00:00" + "time": "2024-03-12T20:45:00+00:00" }, { "name": "fakerphp/faker", - "version": "v1.21.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/92efad6a967f0b79c499705c69b662f738cc9e4d", - "reference": "92efad6a967f0b79c499705c69b662f738cc9e4d", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { @@ -5825,11 +7237,6 @@ "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.21-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -5852,22 +7259,22 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.21.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2022-12-13T13:54:32+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "filp/whoops", - "version": "2.15.0", + "version": "2.15.4", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "3e8aebbca9f0ae6f618962c4ad514077fd365ab3" + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/3e8aebbca9f0ae6f618962c4ad514077fd365ab3", - "reference": "3e8aebbca9f0ae6f618962c4ad514077fd365ab3", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", "shasum": "" }, "require": { @@ -5917,7 +7324,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.0" + "source": "https://github.com/filp/whoops/tree/2.15.4" }, "funding": [ { @@ -5925,7 +7332,7 @@ "type": "github" } ], - "time": "2023-03-03T12:00:00+00:00" + "time": "2023-11-03T12:00:00+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5980,27 +7387,27 @@ }, { "name": "laravel-lang/attributes", - "version": "v2.3.3", + "version": "2.10.3", "source": { "type": "git", "url": "https://github.com/Laravel-Lang/attributes.git", - "reference": "866473306491d9b84d37dfbb80193ce8099368ad" + "reference": "835ed5cab496d6017bbdd93bfdba66dea19c640a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Lang/attributes/zipball/866473306491d9b84d37dfbb80193ce8099368ad", - "reference": "866473306491d9b84d37dfbb80193ce8099368ad", + "url": "https://api.github.com/repos/Laravel-Lang/attributes/zipball/835ed5cab496d6017bbdd93bfdba66dea19c640a", + "reference": "835ed5cab496d6017bbdd93bfdba66dea19c640a", "shasum": "" }, "require": { "ext-json": "*", - "laravel-lang/publisher": "^14.0", + "laravel-lang/publisher": "^14.0 || ^15.0 || ^16.0", "php": "^8.1" }, "require-dev": { - "laravel-lang/status-generator": "^1.3", - "phpunit/phpunit": "^9.6", - "symfony/var-dumper": "^6.0" + "laravel-lang/status-generator": "^1.19 || ^2.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0 || ^7.0" }, "type": "library", "extra": { @@ -6012,7 +7419,7 @@ }, "autoload": { "psr-4": { - "LaravelLang\\Attributes\\": "src" + "LaravelLang\\Attributes\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6029,7 +7436,7 @@ "homepage": "https://github.com/Laravel-Lang" } ], - "description": "List of 78 languages for form field names", + "description": "List of 126 languages for form field names", "keywords": [ "attributes", "fields", @@ -6043,15 +7450,9 @@ ], "support": { "issues": "https://github.com/Laravel-Lang/attributes/issues", - "source": "https://github.com/Laravel-Lang/attributes/tree/v2.3.3" + "source": "https://github.com/Laravel-Lang/attributes/tree/2.10.3" }, - "funding": [ - { - "url": "https://opencollective.com/laravel-lang", - "type": "open_collective" - } - ], - "time": "2023-04-03T16:25:20+00:00" + "time": "2024-04-10T17:56:08+00:00" }, { "name": "laravel-lang/common", @@ -6128,30 +7529,27 @@ }, { "name": "laravel-lang/http-statuses", - "version": "v3.3.1", + "version": "3.8.2", "source": { "type": "git", "url": "https://github.com/Laravel-Lang/http-statuses.git", - "reference": "5d9770879bf279dfe10b4f50e370c615be65541a" + "reference": "b408ea74292df2e4fbec2be93858a3e697189b29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Lang/http-statuses/zipball/5d9770879bf279dfe10b4f50e370c615be65541a", - "reference": "5d9770879bf279dfe10b4f50e370c615be65541a", + "url": "https://api.github.com/repos/Laravel-Lang/http-statuses/zipball/b408ea74292df2e4fbec2be93858a3e697189b29", + "reference": "b408ea74292df2e4fbec2be93858a3e697189b29", "shasum": "" }, "require": { "ext-json": "*", - "laravel-lang/publisher": "^14.1", + "laravel-lang/publisher": "^14.1 || ^15.0 || ^16.0", "php": "^8.1" }, - "conflict": { - "laravel-lang/publisher": "<14.0" - }, "require-dev": { - "laravel-lang/status-generator": "^1.3.4", - "phpunit/phpunit": "^9.6", - "symfony/var-dumper": "^6.0" + "laravel-lang/status-generator": "^1.19 || ^2.0", + "phpunit/phpunit": "^10.0", + "symfony/var-dumper": "^6.0 || ^7.0" }, "type": "library", "extra": { @@ -6180,7 +7578,7 @@ "homepage": "https://github.com/Laravel-Lang" } ], - "description": "List of 78 languages for HTTP statuses", + "description": "List of 126 languages for HTTP statuses", "keywords": [ "http", "lang", @@ -6192,28 +7590,22 @@ ], "support": { "issues": "https://github.com/Laravel-Lang/http-statuses/issues", - "source": "https://github.com/Laravel-Lang/http-statuses/tree/v3.3.1" + "source": "https://github.com/Laravel-Lang/http-statuses/tree/3.8.2" }, - "funding": [ - { - "url": "https://opencollective.com/laravel-lang", - "type": "open_collective" - } - ], - "time": "2023-04-03T16:25:01+00:00" + "time": "2024-03-11T01:33:17+00:00" }, { "name": "laravel-lang/lang", - "version": "12.22.1", + "version": "12.24.2", "source": { "type": "git", "url": "https://github.com/Laravel-Lang/lang.git", - "reference": "b2d02fd28b57babf6fb26526b97b5742d5bf013f" + "reference": "5a6a3e7751a91dec3ee7d69c12db4690643d59a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/b2d02fd28b57babf6fb26526b97b5742d5bf013f", - "reference": "b2d02fd28b57babf6fb26526b97b5742d5bf013f", + "url": "https://api.github.com/repos/Laravel-Lang/lang/zipball/5a6a3e7751a91dec3ee7d69c12db4690643d59a0", + "reference": "5a6a3e7751a91dec3ee7d69c12db4690643d59a0", "shasum": "" }, "require": { @@ -6266,20 +7658,20 @@ "type": "open_collective" } ], - "time": "2023-06-23T10:49:52+00:00" + "time": "2023-07-25T22:28:42+00:00" }, { "name": "laravel-lang/publisher", - "version": "v14.6.4", + "version": "14.7.1", "source": { "type": "git", "url": "https://github.com/Laravel-Lang/publisher.git", - "reference": "a6df495f4c8bb7e8555cfbf82070bd417fbef9bb" + "reference": "946405e3d8c7105b0ae8cf8de34a3e6e98a70a84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Laravel-Lang/publisher/zipball/a6df495f4c8bb7e8555cfbf82070bd417fbef9bb", - "reference": "a6df495f4c8bb7e8555cfbf82070bd417fbef9bb", + "url": "https://api.github.com/repos/Laravel-Lang/publisher/zipball/946405e3d8c7105b0ae8cf8de34a3e6e98a70a84", + "reference": "946405e3d8c7105b0ae8cf8de34a3e6e98a70a84", "shasum": "" }, "require": { @@ -6288,8 +7680,8 @@ "dragon-code/pretty-array": "^4.0", "dragon-code/support": "^6.3", "ext-json": "*", - "illuminate/console": "^8.79 || ^9.18 || ^10.0", - "illuminate/support": "^8.79 || ^9.18 || ^10.0", + "illuminate/console": "^8.79 || ^9.18 || ^10.0 || ^11.0", + "illuminate/support": "^8.79 || ^9.18 || ^10.0 || ^11.0", "league/commonmark": "^2.3", "league/config": "^1.2", "php": "^8.1" @@ -6301,8 +7693,8 @@ }, "require-dev": { "laravel-lang/json-fallback-hotfix": "^1.0", - "orchestra/testbench": "^6.25 || ^7.22 || ^8.0", - "phpunit/phpunit": "^9.6", + "orchestra/testbench": "^6.25 || ^7.22 || ^8.0 || ^9.0", + "phpunit/phpunit": "^9.6 || ^10.0", "symfony/var-dumper": "^5.0 || ^6.0" }, "suggest": { @@ -6373,20 +7765,20 @@ "type": "open_collective" } ], - "time": "2023-03-31T14:18:17+00:00" + "time": "2023-10-29T21:03:27+00:00" }, { "name": "laravel/pint", - "version": "v1.6.0", + "version": "v1.15.2", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "e48e3fadd7863d6b7d03464f5c4f211a828b890f" + "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/e48e3fadd7863d6b7d03464f5c4f211a828b890f", - "reference": "e48e3fadd7863d6b7d03464f5c4f211a828b890f", + "url": "https://api.github.com/repos/laravel/pint/zipball/2c9f8004899815f3f0ee3cb28ef7281e2b589134", + "reference": "2c9f8004899815f3f0ee3cb28ef7281e2b589134", "shasum": "" }, "require": { @@ -6397,13 +7789,13 @@ "php": "^8.1.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.14.4", - "illuminate/view": "^10.0.0", - "laravel-zero/framework": "^10.0.0", - "mockery/mockery": "^1.5.1", - "nunomaduro/larastan": "^2.4.0", + "friendsofphp/php-cs-fixer": "^3.54.0", + "illuminate/view": "^10.48.8", + "larastan/larastan": "^2.9.5", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.11", "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^1.22.4" + "pestphp/pest": "^2.34.7" }, "bin": [ "builds/pint" @@ -6439,31 +7831,32 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2023-02-21T15:44:57+00:00" + "time": "2024-04-23T15:42:34+00:00" }, { "name": "laravel/sail", - "version": "v1.21.1", + "version": "v1.29.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "fd8d04bc546457b504aa2b3c2d541840551f836f" + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/fd8d04bc546457b504aa2b3c2d541840551f836f", - "reference": "fd8d04bc546457b504aa2b3c2d541840551f836f", + "url": "https://api.github.com/repos/laravel/sail/zipball/8be4a31150eab3b46af11a2e7b2c4632eefaad7e", + "reference": "8be4a31150eab3b46af11a2e7b2c4632eefaad7e", "shasum": "" }, "require": { - "illuminate/console": "^8.0|^9.0|^10.0", - "illuminate/contracts": "^8.0|^9.0|^10.0", - "illuminate/support": "^8.0|^9.0|^10.0", - "php": "^7.3|^8.0", - "symfony/yaml": "^6.0" + "illuminate/console": "^9.52.16|^10.0|^11.0", + "illuminate/contracts": "^9.52.16|^10.0|^11.0", + "illuminate/support": "^9.52.16|^10.0|^11.0", + "php": "^8.0", + "symfony/console": "^6.0|^7.0", + "symfony/yaml": "^6.0|^7.0" }, "require-dev": { - "orchestra/testbench": "^6.0|^7.0|^8.0", + "orchestra/testbench": "^7.0|^8.0|^9.0", "phpstan/phpstan": "^1.10" }, "bin": [ @@ -6471,9 +7864,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -6504,42 +7894,42 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-03-01T23:07:57+00:00" + "time": "2024-03-20T20:09:31+00:00" }, { "name": "mockery/mockery", - "version": "1.5.1", + "version": "1.6.11", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" + "reference": "81a161d0b135df89951abd52296adf97deb0723d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/81a161d0b135df89951abd52296adf97deb0723d", + "reference": "81a161d0b135df89951abd52296adf97deb0723d", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -6550,12 +7940,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -6573,23 +7971,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:32:08+00:00" + "time": "2024-03-21T18:34:15+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -6627,7 +8028,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -6635,41 +8036,42 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nunomaduro/collision", - "version": "v7.1.0", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90" + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/2b97fed4950cf0ff148c18b853975ec8ea135e90", - "reference": "2b97fed4950cf0ff148c18b853975ec8ea135e90", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/13e5d538b95a744d85f447a321ce10adb28e9af9", + "reference": "13e5d538b95a744d85f447a321ce10adb28e9af9", "shasum": "" }, "require": { - "filp/whoops": "^2.14.6", - "nunomaduro/termwind": "^1.15.1", - "php": "^8.1.0", - "symfony/console": "^6.2.7" + "filp/whoops": "^2.15.4", + "nunomaduro/termwind": "^2.0.1", + "php": "^8.2.0", + "symfony/console": "^7.0.4" + }, + "conflict": { + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "brianium/paratest": "^7.1.0", - "laravel/framework": "^10.2.0", - "laravel/pint": "^1.6.0", - "laravel/sail": "^1.21.1", - "laravel/sanctum": "^3.2.1", - "laravel/tinker": "^2.8.1", - "nunomaduro/larastan": "^2.4.1", - "orchestra/testbench-core": "^8.0.3", - "pestphp/pest": "^2.0.0", - "phpunit/phpunit": "^10.0.14", - "sebastian/environment": "^6.0.0", - "spatie/laravel-ignition": "^2.0.0" + "larastan/larastan": "^2.9.2", + "laravel/framework": "^11.0.0", + "laravel/pint": "^1.14.0", + "laravel/sail": "^1.28.2", + "laravel/sanctum": "^4.0.0", + "laravel/tinker": "^2.9.0", + "orchestra/testbench-core": "^9.0.0", + "pestphp/pest": "^2.34.1 || ^3.0.0", + "sebastian/environment": "^6.0.1 || ^7.0.0" }, "type": "library", "extra": { @@ -6677,6 +8079,9 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" } }, "autoload": { @@ -6728,24 +8133,25 @@ "type": "patreon" } ], - "time": "2023-03-03T10:00:22+00:00" + "time": "2024-03-06T16:20:09+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -6786,9 +8192,15 @@ "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.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -6843,23 +8255,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.0.1", + "version": "10.1.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "b9c21a93dd8c8eed79879374884ee733259475cc" + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b9c21a93dd8c8eed79879374884ee733259475cc", - "reference": "b9c21a93dd8c8eed79879374884ee733259475cc", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1", "phpunit/php-file-iterator": "^4.0", "phpunit/php-text-template": "^3.0", @@ -6871,16 +8283,16 @@ "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.1" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "10.0-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -6908,7 +8320,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.1" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, "funding": [ { @@ -6916,20 +8329,20 @@ "type": "github" } ], - "time": "2023-02-25T05:35:03+00:00" + "time": "2024-03-12T15:33:41+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/fd9329ab3368f59fe1fe808a189c51086bd4b6bd", - "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -6968,7 +8381,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -6976,7 +8390,7 @@ "type": "github" } ], - "time": "2023-02-10T16:53:14+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -7043,16 +8457,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -7090,7 +8504,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -7098,7 +8513,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -7161,16 +8576,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.0.14", + "version": "10.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169" + "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7065dbebcb0f66cf16a45fc9cfc28c2351e06169", - "reference": "7065dbebcb0f66cf16a45fc9cfc28c2351e06169", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", + "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", "shasum": "" }, "require": { @@ -7184,7 +8599,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.0", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -7194,15 +8609,15 @@ "sebastian/comparator": "^5.0", "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "*" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -7210,7 +8625,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.0-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -7241,7 +8656,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.14" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" }, "funding": [ { @@ -7257,20 +8673,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T05:37:49+00:00" + "time": "2024-04-24T06:32:35+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -7305,7 +8721,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -7313,7 +8730,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -7428,16 +8845,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -7448,7 +8865,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -7492,7 +8909,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -7500,24 +8918,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -7526,7 +8944,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -7549,7 +8967,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -7557,20 +8976,20 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "5.0.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "70dd1b20bc198da394ad542e988381b44e64e39f" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/70dd1b20bc198da394ad542e988381b44e64e39f", - "reference": "70dd1b20bc198da394ad542e988381b44e64e39f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -7578,12 +8997,12 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7615,7 +9034,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -7623,20 +9043,20 @@ "type": "github" } ], - "time": "2023-02-03T07:00:31+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "6.0.0", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/b6f3694c6386c7959915a0037652e0c40f6f69cc", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -7651,7 +9071,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -7678,7 +9098,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -7686,20 +9107,20 @@ "type": "github" } ], - "time": "2023-02-03T07:03:04+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -7713,7 +9134,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7755,7 +9176,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -7763,20 +9185,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -7810,13 +9232,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -7824,24 +9247,24 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.10", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=8.1" }, "require-dev": { @@ -7873,7 +9296,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -7881,7 +9305,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", @@ -8169,16 +9593,16 @@ }, { "name": "spatie/backtrace", - "version": "1.4.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/spatie/backtrace.git", - "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c" + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/backtrace/zipball/ec4dd16476b802dbdc6b4467f84032837e316b8c", - "reference": "ec4dd16476b802dbdc6b4467f84032837e316b8c", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/8373b9d51638292e3bfd736a9c19a654111b4a23", + "reference": "8373b9d51638292e3bfd736a9c19a654111b4a23", "shasum": "" }, "require": { @@ -8186,6 +9610,7 @@ }, "require-dev": { "ext-json": "*", + "laravel/serializable-closure": "^1.3", "phpunit/phpunit": "^9.3", "spatie/phpunit-snapshot-assertions": "^4.2", "symfony/var-dumper": "^5.1" @@ -8215,7 +9640,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/backtrace/tree/1.4.0" + "source": "https://github.com/spatie/backtrace/tree/1.6.1" }, "funding": [ { @@ -8227,43 +9652,43 @@ "type": "other" } ], - "time": "2023-03-04T08:57:24+00:00" + "time": "2024-04-24T13:22:11+00:00" }, { "name": "spatie/flare-client-php", - "version": "1.3.5", + "version": "1.4.4", "source": { "type": "git", "url": "https://github.com/spatie/flare-client-php.git", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42" + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", - "reference": "3e5dd5ac4928f3d2d036bd02de5eb83fd0ef1f42", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/17082e780752d346c2db12ef5d6bee8e835e399c", + "reference": "17082e780752d346c2db12ef5d6bee8e835e399c", "shasum": "" }, "require": { - "illuminate/pipeline": "^8.0|^9.0|^10.0", + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", "php": "^8.0", - "spatie/backtrace": "^1.2", - "symfony/http-foundation": "^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", - "symfony/process": "^5.2|^6.0", - "symfony/var-dumper": "^5.2|^6.0" + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" }, "require-dev": { - "dms/phpunit-arraysubset-asserts": "^0.3.0", - "pestphp/pest": "^1.20", + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "spatie/phpunit-snapshot-assertions": "^4.0" + "spatie/phpunit-snapshot-assertions": "^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1.x-dev" + "dev-main": "1.3.x-dev" } }, "autoload": { @@ -8288,7 +9713,7 @@ ], "support": { "issues": "https://github.com/spatie/flare-client-php/issues", - "source": "https://github.com/spatie/flare-client-php/tree/1.3.5" + "source": "https://github.com/spatie/flare-client-php/tree/1.4.4" }, "funding": [ { @@ -8296,42 +9721,51 @@ "type": "github" } ], - "time": "2023-01-23T15:58:46+00:00" + "time": "2024-01-31T14:18:45+00:00" }, { "name": "spatie/ignition", - "version": "1.4.5", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/spatie/ignition.git", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6" + "reference": "952798e239d9969e4e694b124c2cc222798dbb28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ignition/zipball/cc09114b7057bd217b676f047544b33f5b6247e6", - "reference": "cc09114b7057bd217b676f047544b33f5b6247e6", + "url": "https://api.github.com/repos/spatie/ignition/zipball/952798e239d9969e4e694b124c2cc222798dbb28", + "reference": "952798e239d9969e4e694b124c2cc222798dbb28", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", "php": "^8.0", - "spatie/flare-client-php": "^1.1", - "symfony/console": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", "mockery/mockery": "^1.4", - "pestphp/pest": "^1.20", + "pestphp/pest": "^1.20|^2.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "symfony/process": "^5.4|^6.0" + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.4.x-dev" + "dev-main": "1.5.x-dev" } }, "autoload": { @@ -8370,41 +9804,47 @@ "type": "github" } ], - "time": "2023-02-28T16:49:47+00:00" + "time": "2024-04-16T08:49:17+00:00" }, { "name": "spatie/laravel-ignition", - "version": "2.0.0", + "version": "2.5.2", "source": { "type": "git", "url": "https://github.com/spatie/laravel-ignition.git", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a" + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/70c0e2a22c5c4b691a34db8c98bd6d695660a97a", - "reference": "70c0e2a22c5c4b691a34db8c98bd6d695660a97a", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/c93fcadcc4629775c839ac9a90916f07a660266f", + "reference": "c93fcadcc4629775c839ac9a90916f07a660266f", "shasum": "" }, "require": { "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "illuminate/support": "^10.0", + "illuminate/support": "^10.0|^11.0", "php": "^8.1", "spatie/flare-client-php": "^1.3.5", - "spatie/ignition": "^1.4.3", - "symfony/console": "^6.2.3", - "symfony/var-dumper": "^6.2.3" + "spatie/ignition": "^1.13.2", + "symfony/console": "^6.2.3|^7.0", + "symfony/var-dumper": "^6.2.3|^7.0" }, "require-dev": { - "livewire/livewire": "^2.11", + "livewire/livewire": "^2.11|^3.3.5", "mockery/mockery": "^1.5.1", - "orchestra/testbench": "^8.0", - "pestphp/pest": "^1.22.3", + "openai-php/client": "^0.8.1", + "orchestra/testbench": "^8.0|^9.0", + "pestphp/pest": "^2.30", "phpstan/extension-installer": "^1.2", "phpstan/phpstan-deprecation-rules": "^1.1.1", - "phpstan/phpstan-phpunit": "^1.3.3" + "phpstan/phpstan-phpunit": "^1.3.3", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "psr/simple-cache-implementation": "Needed to cache solutions from OpenAI" }, "type": "library", "extra": { @@ -8415,9 +9855,6 @@ "aliases": { "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" } - }, - "branch-alias": { - "dev-main": "2.0-dev" } }, "autoload": { @@ -8459,20 +9896,20 @@ "type": "github" } ], - "time": "2023-01-24T07:20:39+00:00" + "time": "2024-04-16T08:57:16+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -8480,9 +9917,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -8522,7 +9956,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -8538,34 +9972,31 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/yaml", - "version": "v6.2.7", + "version": "v7.0.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57" + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e8e6a1d59e050525f27a1f530aa9703423cb7f57", - "reference": "e8e6a1d59e050525f27a1f530aa9703423cb7f57", + "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", + "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^5.4|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^6.4|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -8596,7 +10027,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.2.7" + "source": "https://github.com/symfony/yaml/tree/v7.0.3" }, "funding": [ { @@ -8612,20 +10043,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2024-01-23T15:02:46+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -8654,7 +10085,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -8662,17 +10093,19 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "laravel/reverb": 10 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^8.2" + "php": "^8.3" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/config/app.php b/app/application/config/app.php similarity index 96% rename from config/app.php rename to app/application/config/app.php index 6235015..4d51dad 100644 --- a/config/app.php +++ b/app/application/config/app.php @@ -42,6 +42,15 @@ 'demo_email' => env('APP_DEMO_EMAIL', false), 'demo_password' => env('APP_DEMO_PASSWORD', false), + /* + |-------------------------------------------------------------------------- + | Сaptcha + |-------------------------------------------------------------------------- + | + | Enables or disables captcha. + */ + 'captcha' => (bool) env('APP_CAPTCHA', false), + /* |-------------------------------------------------------------------------- | Application Debug Mode @@ -206,7 +215,7 @@ */ App\Providers\AppServiceProvider::class, App\Providers\AuthServiceProvider::class, - // App\Providers\BroadcastServiceProvider::class, + App\Providers\BroadcastServiceProvider::class, App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, diff --git a/config/auth.php b/app/application/config/auth.php similarity index 100% rename from config/auth.php rename to app/application/config/auth.php diff --git a/config/broadcasting.php b/app/application/config/broadcasting.php similarity index 100% rename from config/broadcasting.php rename to app/application/config/broadcasting.php diff --git a/config/cache.php b/app/application/config/cache.php similarity index 100% rename from config/cache.php rename to app/application/config/cache.php diff --git a/config/captcha.php b/app/application/config/captcha.php similarity index 100% rename from config/captcha.php rename to app/application/config/captcha.php diff --git a/config/cors.php b/app/application/config/cors.php similarity index 100% rename from config/cors.php rename to app/application/config/cors.php diff --git a/config/database.php b/app/application/config/database.php similarity index 100% rename from config/database.php rename to app/application/config/database.php diff --git a/config/filesystems.php b/app/application/config/filesystems.php similarity index 100% rename from config/filesystems.php rename to app/application/config/filesystems.php diff --git a/config/hashing.php b/app/application/config/hashing.php similarity index 100% rename from config/hashing.php rename to app/application/config/hashing.php diff --git a/config/logging.php b/app/application/config/logging.php similarity index 100% rename from config/logging.php rename to app/application/config/logging.php diff --git a/config/mail.php b/app/application/config/mail.php similarity index 100% rename from config/mail.php rename to app/application/config/mail.php diff --git a/config/queue.php b/app/application/config/queue.php similarity index 100% rename from config/queue.php rename to app/application/config/queue.php diff --git a/config/rate_limiting.php b/app/application/config/rate_limiting.php similarity index 100% rename from config/rate_limiting.php rename to app/application/config/rate_limiting.php diff --git a/app/application/config/reverb.php b/app/application/config/reverb.php new file mode 100644 index 0000000..bb00f80 --- /dev/null +++ b/app/application/config/reverb.php @@ -0,0 +1,97 @@ + env('REVERB_SERVER', 'reverb'), + + /* + |-------------------------------------------------------------------------- + | Reverb Servers + |-------------------------------------------------------------------------- + | + | Here you may define details for each of the supported Reverb servers. + | Each server has its own configuration options that are defined in + | the array below. You should ensure all the options are present. + | + */ + + 'servers' => [ + + 'reverb' => [ + 'host' => env('REVERB_SERVER_HOST', '0.0.0.0'), + 'port' => env('REVERB_SERVER_PORT', 8080), + 'hostname' => env('REVERB_HOST'), + 'options' => [ + 'tls' => [], + ], + 'max_request_size' => env('REVERB_MAX_REQUEST_SIZE', 10_000), + 'scaling' => [ + 'enabled' => env('REVERB_SCALING_ENABLED', false), + 'channel' => env('REVERB_SCALING_CHANNEL', 'reverb'), + 'server' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'port' => env('REDIS_PORT', '6379'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'database' => env('REDIS_DB', '0'), + ], + ], + 'pulse_ingest_interval' => env('REVERB_PULSE_INGEST_INTERVAL', 15), + 'telescope_ingest_interval' => env('REVERB_TELESCOPE_INGEST_INTERVAL', 15), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Reverb Applications + |-------------------------------------------------------------------------- + | + | Here you may define how Reverb applications are managed. If you choose + | to use the "config" provider, you may define an array of apps which + | your server will support, including their connection credentials. + | + */ + + 'apps' => [ + + 'provider' => 'config', + + 'apps' => [ + [ + 'key' => env('REVERB_APP_KEY'), + 'secret' => env('REVERB_APP_SECRET'), + 'app_id' => env('REVERB_APP_ID'), + 'options' => [ + 'host' => env('REVERB_HOST'), + 'port' => env('REVERB_PORT', 443), + 'scheme' => env('REVERB_SCHEME', 'https'), + 'useTLS' => env('REVERB_SCHEME', 'https') === 'https', + ], + 'allowed_origins' => explode(',', env('REVERB_ALLOWED_ORIGINS', '*')), + 'ping_interval' => env('REVERB_APP_PING_INTERVAL', 60), + 'max_message_size' => env('REVERB_APP_MAX_MESSAGE_SIZE', 10_000), + 'options_for_client' => [ + 'host' => env('REVERB_HOST_CLIENT'), + 'port' => env('REVERB_PORT_CLIENT', 443), + 'scheme' => env('REVERB_SCHEME_CLIENT', 'https'), + 'useTLS' => env('REVERB_SCHEME_CLIENT', 'https') === 'https', + ], + ], + ], + + ], + +]; diff --git a/config/sanctum.php b/app/application/config/sanctum.php similarity index 99% rename from config/sanctum.php rename to app/application/config/sanctum.php index 529cfdc..ab31435 100644 --- a/config/sanctum.php +++ b/app/application/config/sanctum.php @@ -63,5 +63,4 @@ 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, ], - ]; diff --git a/config/services.php b/app/application/config/services.php similarity index 100% rename from config/services.php rename to app/application/config/services.php diff --git a/config/session.php b/app/application/config/session.php similarity index 100% rename from config/session.php rename to app/application/config/session.php diff --git a/config/view.php b/app/application/config/view.php similarity index 100% rename from config/view.php rename to app/application/config/view.php diff --git a/database/.gitignore b/app/application/database/.gitignore similarity index 100% rename from database/.gitignore rename to app/application/database/.gitignore diff --git a/database/factories/UserFactory.php b/app/application/database/factories/UserFactory.php similarity index 100% rename from database/factories/UserFactory.php rename to app/application/database/factories/UserFactory.php diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/app/application/database/migrations/2014_10_12_000000_create_users_table.php similarity index 100% rename from database/migrations/2014_10_12_000000_create_users_table.php rename to app/application/database/migrations/2014_10_12_000000_create_users_table.php diff --git a/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/app/application/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php similarity index 100% rename from database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php rename to app/application/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/app/application/database/migrations/2019_08_19_000000_create_failed_jobs_table.php similarity index 100% rename from database/migrations/2019_08_19_000000_create_failed_jobs_table.php rename to app/application/database/migrations/2019_08_19_000000_create_failed_jobs_table.php diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/app/application/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php similarity index 100% rename from database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php rename to app/application/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php diff --git a/database/migrations/2023_06_28_155124_create_roles.php b/app/application/database/migrations/2023_06_28_155124_create_roles.php similarity index 100% rename from database/migrations/2023_06_28_155124_create_roles.php rename to app/application/database/migrations/2023_06_28_155124_create_roles.php diff --git a/database/migrations/2023_08_03_145020_create_captcha_tokens_table.php b/app/application/database/migrations/2023_08_03_145020_create_captcha_tokens_table.php similarity index 100% rename from database/migrations/2023_08_03_145020_create_captcha_tokens_table.php rename to app/application/database/migrations/2023_08_03_145020_create_captcha_tokens_table.php diff --git a/database/migrations/2023_08_27_163058_create_captcha.php b/app/application/database/migrations/2023_08_27_163058_create_captcha.php similarity index 100% rename from database/migrations/2023_08_27_163058_create_captcha.php rename to app/application/database/migrations/2023_08_27_163058_create_captcha.php diff --git a/database/seeders/DatabaseSeeder.php b/app/application/database/seeders/DatabaseSeeder.php similarity index 100% rename from database/seeders/DatabaseSeeder.php rename to app/application/database/seeders/DatabaseSeeder.php diff --git a/lang/en.json b/app/application/lang/en.json similarity index 97% rename from lang/en.json rename to app/application/lang/en.json index b1013aa..f90d423 100644 --- a/lang/en.json +++ b/app/application/lang/en.json @@ -73,5 +73,6 @@ "The time for captcha verification has passed": "The time for captcha verification has passed.", "Captcha does not pass verification": "Captcha does not pass verification.", "Add code to the site": "Add code to the site", - "Demo Mode": "!!! Demo Mode !!!" + "Demo Mode": "!!! Demo Mode !!!", + "From cannot be greater than To": "From cannot be greater than To." } diff --git a/lang/en/auth.php b/app/application/lang/en/auth.php similarity index 100% rename from lang/en/auth.php rename to app/application/lang/en/auth.php diff --git a/app/application/lang/en/captcha_log_type.php b/app/application/lang/en/captcha_log_type.php new file mode 100644 index 0000000..81d7e20 --- /dev/null +++ b/app/application/lang/en/captcha_log_type.php @@ -0,0 +1,7 @@ + 'Creating a captcha', + 'Error' => 'Error in captcha validation', + 'Verified' => 'Successfully verified', + 'ReadVerified' => 'Completed captcha verification', +]; diff --git a/lang/en/http-statuses.php b/app/application/lang/en/http-statuses.php similarity index 100% rename from lang/en/http-statuses.php rename to app/application/lang/en/http-statuses.php diff --git a/lang/en/pagination.php b/app/application/lang/en/pagination.php similarity index 100% rename from lang/en/pagination.php rename to app/application/lang/en/pagination.php diff --git a/lang/en/passwords.php b/app/application/lang/en/passwords.php similarity index 100% rename from lang/en/passwords.php rename to app/application/lang/en/passwords.php diff --git a/lang/en/permissions.php b/app/application/lang/en/permissions.php similarity index 100% rename from lang/en/permissions.php rename to app/application/lang/en/permissions.php diff --git a/lang/en/sections.php b/app/application/lang/en/sections.php similarity index 100% rename from lang/en/sections.php rename to app/application/lang/en/sections.php diff --git a/lang/en/validation.php b/app/application/lang/en/validation.php similarity index 99% rename from lang/en/validation.php rename to app/application/lang/en/validation.php index 0e251fb..ffd8e0b 100644 --- a/lang/en/validation.php +++ b/app/application/lang/en/validation.php @@ -142,6 +142,7 @@ 'url' => 'The :attribute format is invalid.', 'uuid' => 'The :attribute must be a valid UUID.', 'no_type' => 'The :attribute can only use: :type.', + 'captcha' => 'Failed to pass human verification.', 'attributes' => [ 'address' => 'address', 'age' => 'age', diff --git a/lang/ru.json b/app/application/lang/ru.json similarity index 97% rename from lang/ru.json rename to app/application/lang/ru.json index 04d4e89..b4be525 100644 --- a/lang/ru.json +++ b/app/application/lang/ru.json @@ -73,5 +73,6 @@ "The time for captcha verification has passed": "Время верификации капчи прошло.", "Captcha does not pass verification": "Капча не проходит проверку.", "Add code to the site": "Добавьте код на сайт", - "Demo Mode": "!!! Включён демо режим !!!" + "Demo Mode": "!!! Включён демо режим !!!", + "From cannot be greater than To": "From не может быть больше To." } diff --git a/lang/ru/auth.php b/app/application/lang/ru/auth.php similarity index 100% rename from lang/ru/auth.php rename to app/application/lang/ru/auth.php diff --git a/app/application/lang/ru/captcha_log_type.php b/app/application/lang/ru/captcha_log_type.php new file mode 100644 index 0000000..c8718ae --- /dev/null +++ b/app/application/lang/ru/captcha_log_type.php @@ -0,0 +1,7 @@ + 'Создание капчи', + 'Error' => 'Ошибка в валидации капчи', + 'Verified' => 'Успешно проверено', + 'ReadVerified' => 'Завершена проверка капчи', +]; diff --git a/lang/ru/http-statuses.php b/app/application/lang/ru/http-statuses.php similarity index 100% rename from lang/ru/http-statuses.php rename to app/application/lang/ru/http-statuses.php diff --git a/lang/ru/pagination.php b/app/application/lang/ru/pagination.php similarity index 100% rename from lang/ru/pagination.php rename to app/application/lang/ru/pagination.php diff --git a/lang/ru/passwords.php b/app/application/lang/ru/passwords.php similarity index 100% rename from lang/ru/passwords.php rename to app/application/lang/ru/passwords.php diff --git a/lang/ru/permissions.php b/app/application/lang/ru/permissions.php similarity index 100% rename from lang/ru/permissions.php rename to app/application/lang/ru/permissions.php diff --git a/lang/ru/sections.php b/app/application/lang/ru/sections.php similarity index 100% rename from lang/ru/sections.php rename to app/application/lang/ru/sections.php diff --git a/lang/ru/validation.php b/app/application/lang/ru/validation.php similarity index 99% rename from lang/ru/validation.php rename to app/application/lang/ru/validation.php index 3a75b75..dfe3ba2 100644 --- a/lang/ru/validation.php +++ b/app/application/lang/ru/validation.php @@ -142,6 +142,7 @@ 'url' => 'Значение поля :attribute имеет ошибочный формат URL.', 'uuid' => 'Значение поля :attribute должно быть корректным UUID.', 'no_type' => 'Значение поля :attribute может использовать только: :type.', + 'captcha' => 'Не удалось пройти проверку человеком.', 'attributes' => [ 'address' => 'адрес', 'age' => 'возраст', diff --git a/package-lock.json b/app/application/package-lock.json similarity index 98% rename from package-lock.json rename to app/application/package-lock.json index 02fc257..7ebded0 100644 --- a/package-lock.json +++ b/app/application/package-lock.json @@ -21,7 +21,9 @@ }, "devDependencies": { "axios": "^1.1.2", + "laravel-echo": "^1.16.1", "laravel-vite-plugin": "^0.7.2", + "pusher-js": "^8.4.0-rc2", "sass-loader": "^13.3.2", "vite": "^4.0.0" } @@ -1251,6 +1253,15 @@ "dev": true, "peer": true }, + "node_modules/laravel-echo": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.16.1.tgz", + "integrity": "sha512-++Ylb6M3ariC9Rk5WE5gZjj6wcEV5kvLF8b+geJ5/rRIfdoOA+eG6b9qJPrarMD9rY28Apx+l3eelIrCc2skVg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/laravel-vite-plugin": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz", @@ -1436,6 +1447,15 @@ "node": ">=6" } }, + "node_modules/pusher-js": { + "version": "8.4.0-rc2", + "resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.4.0-rc2.tgz", + "integrity": "sha512-d87GjOEEl9QgO5BWmViSqW0LOzPvybvX6WA9zLUstNdB57jVJuR27zHkRnrav2a3+zAMlHbP2Og8wug+rG8T+g==", + "dev": true, + "dependencies": { + "tweetnacl": "^1.0.3" + } + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -1723,6 +1743,12 @@ "node": ">=8.0" } }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, "node_modules/update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", @@ -2755,6 +2781,12 @@ "dev": true, "peer": true }, + "laravel-echo": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/laravel-echo/-/laravel-echo-1.16.1.tgz", + "integrity": "sha512-++Ylb6M3ariC9Rk5WE5gZjj6wcEV5kvLF8b+geJ5/rRIfdoOA+eG6b9qJPrarMD9rY28Apx+l3eelIrCc2skVg==", + "dev": true + }, "laravel-vite-plugin": { "version": "0.7.8", "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.7.8.tgz", @@ -2883,6 +2915,15 @@ "dev": true, "peer": true }, + "pusher-js": { + "version": "8.4.0-rc2", + "resolved": "https://registry.npmjs.org/pusher-js/-/pusher-js-8.4.0-rc2.tgz", + "integrity": "sha512-d87GjOEEl9QgO5BWmViSqW0LOzPvybvX6WA9zLUstNdB57jVJuR27zHkRnrav2a3+zAMlHbP2Og8wug+rG8T+g==", + "dev": true, + "requires": { + "tweetnacl": "^1.0.3" + } + }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -3056,6 +3097,12 @@ "is-number": "^7.0.0" } }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", diff --git a/package.json b/app/application/package.json similarity index 91% rename from package.json rename to app/application/package.json index 612ecc5..c446ebb 100644 --- a/package.json +++ b/app/application/package.json @@ -21,7 +21,9 @@ }, "devDependencies": { "axios": "^1.1.2", + "laravel-echo": "^1.16.1", "laravel-vite-plugin": "^0.7.2", + "pusher-js": "^8.4.0-rc2", "sass-loader": "^13.3.2", "vite": "^4.0.0" } diff --git a/phpunit.xml b/app/application/phpunit.xml similarity index 100% rename from phpunit.xml rename to app/application/phpunit.xml diff --git a/public/.htaccess b/app/application/public/.htaccess similarity index 100% rename from public/.htaccess rename to app/application/public/.htaccess diff --git a/public/captcha/images/refresh.png b/app/application/public/captcha/images/refresh.png similarity index 100% rename from public/captcha/images/refresh.png rename to app/application/public/captcha/images/refresh.png diff --git a/public/captcha/script.js b/app/application/public/captcha/script.js similarity index 100% rename from public/captcha/script.js rename to app/application/public/captcha/script.js diff --git a/public/captcha/style.css b/app/application/public/captcha/style.css similarity index 100% rename from public/captcha/style.css rename to app/application/public/captcha/style.css diff --git a/public/favicon.ico b/app/application/public/favicon.ico similarity index 100% rename from public/favicon.ico rename to app/application/public/favicon.ico diff --git a/public/index.php b/app/application/public/index.php similarity index 100% rename from public/index.php rename to app/application/public/index.php diff --git a/public/robots.txt b/app/application/public/robots.txt similarity index 100% rename from public/robots.txt rename to app/application/public/robots.txt diff --git a/public/swagger.json b/app/application/public/swagger.json similarity index 100% rename from public/swagger.json rename to app/application/public/swagger.json diff --git a/resources/captcha/backgrounds-body/1.jpg b/app/application/resources/captcha/backgrounds-body/1.jpg similarity index 100% rename from resources/captcha/backgrounds-body/1.jpg rename to app/application/resources/captcha/backgrounds-body/1.jpg diff --git a/resources/captcha/backgrounds-body/2.jpg b/app/application/resources/captcha/backgrounds-body/2.jpg similarity index 100% rename from resources/captcha/backgrounds-body/2.jpg rename to app/application/resources/captcha/backgrounds-body/2.jpg diff --git a/resources/captcha/backgrounds-body/3.jpg b/app/application/resources/captcha/backgrounds-body/3.jpg similarity index 100% rename from resources/captcha/backgrounds-body/3.jpg rename to app/application/resources/captcha/backgrounds-body/3.jpg diff --git a/resources/captcha/backgrounds-body/4.jpg b/app/application/resources/captcha/backgrounds-body/4.jpg similarity index 100% rename from resources/captcha/backgrounds-body/4.jpg rename to app/application/resources/captcha/backgrounds-body/4.jpg diff --git a/resources/captcha/backgrounds-body/5.jpg b/app/application/resources/captcha/backgrounds-body/5.jpg similarity index 100% rename from resources/captcha/backgrounds-body/5.jpg rename to app/application/resources/captcha/backgrounds-body/5.jpg diff --git a/resources/captcha/backgrounds-body/license/license.txt b/app/application/resources/captcha/backgrounds-body/license/license.txt similarity index 100% rename from resources/captcha/backgrounds-body/license/license.txt rename to app/application/resources/captcha/backgrounds-body/license/license.txt diff --git a/resources/captcha/backgrounds-head/01.png b/app/application/resources/captcha/backgrounds-head/01.png similarity index 100% rename from resources/captcha/backgrounds-head/01.png rename to app/application/resources/captcha/backgrounds-head/01.png diff --git a/resources/captcha/backgrounds-head/02.png b/app/application/resources/captcha/backgrounds-head/02.png similarity index 100% rename from resources/captcha/backgrounds-head/02.png rename to app/application/resources/captcha/backgrounds-head/02.png diff --git a/resources/captcha/backgrounds-head/03.png b/app/application/resources/captcha/backgrounds-head/03.png similarity index 100% rename from resources/captcha/backgrounds-head/03.png rename to app/application/resources/captcha/backgrounds-head/03.png diff --git a/resources/captcha/backgrounds-head/04.png b/app/application/resources/captcha/backgrounds-head/04.png similarity index 100% rename from resources/captcha/backgrounds-head/04.png rename to app/application/resources/captcha/backgrounds-head/04.png diff --git a/resources/captcha/backgrounds-head/05.png b/app/application/resources/captcha/backgrounds-head/05.png similarity index 100% rename from resources/captcha/backgrounds-head/05.png rename to app/application/resources/captcha/backgrounds-head/05.png diff --git a/resources/captcha/backgrounds-head/06.png b/app/application/resources/captcha/backgrounds-head/06.png similarity index 100% rename from resources/captcha/backgrounds-head/06.png rename to app/application/resources/captcha/backgrounds-head/06.png diff --git a/resources/captcha/backgrounds-head/07.png b/app/application/resources/captcha/backgrounds-head/07.png similarity index 100% rename from resources/captcha/backgrounds-head/07.png rename to app/application/resources/captcha/backgrounds-head/07.png diff --git a/resources/captcha/backgrounds-head/08.png b/app/application/resources/captcha/backgrounds-head/08.png similarity index 100% rename from resources/captcha/backgrounds-head/08.png rename to app/application/resources/captcha/backgrounds-head/08.png diff --git a/resources/captcha/backgrounds-head/09.png b/app/application/resources/captcha/backgrounds-head/09.png similarity index 100% rename from resources/captcha/backgrounds-head/09.png rename to app/application/resources/captcha/backgrounds-head/09.png diff --git a/resources/captcha/backgrounds-head/10.png b/app/application/resources/captcha/backgrounds-head/10.png similarity index 100% rename from resources/captcha/backgrounds-head/10.png rename to app/application/resources/captcha/backgrounds-head/10.png diff --git a/resources/captcha/backgrounds-head/11.png b/app/application/resources/captcha/backgrounds-head/11.png similarity index 100% rename from resources/captcha/backgrounds-head/11.png rename to app/application/resources/captcha/backgrounds-head/11.png diff --git a/resources/captcha/backgrounds-head/12.png b/app/application/resources/captcha/backgrounds-head/12.png similarity index 100% rename from resources/captcha/backgrounds-head/12.png rename to app/application/resources/captcha/backgrounds-head/12.png diff --git a/resources/captcha/backgrounds-head/r1.jpg b/app/application/resources/captcha/backgrounds-head/r1.jpg similarity index 100% rename from resources/captcha/backgrounds-head/r1.jpg rename to app/application/resources/captcha/backgrounds-head/r1.jpg diff --git a/resources/captcha/backgrounds-head/r2.jpg b/app/application/resources/captcha/backgrounds-head/r2.jpg similarity index 100% rename from resources/captcha/backgrounds-head/r2.jpg rename to app/application/resources/captcha/backgrounds-head/r2.jpg diff --git a/resources/captcha/backgrounds-head/r3.jpg b/app/application/resources/captcha/backgrounds-head/r3.jpg similarity index 100% rename from resources/captcha/backgrounds-head/r3.jpg rename to app/application/resources/captcha/backgrounds-head/r3.jpg diff --git a/resources/captcha/backgrounds-head/r4.jpg b/app/application/resources/captcha/backgrounds-head/r4.jpg similarity index 100% rename from resources/captcha/backgrounds-head/r4.jpg rename to app/application/resources/captcha/backgrounds-head/r4.jpg diff --git a/resources/captcha/backgrounds-head/r5.jpg b/app/application/resources/captcha/backgrounds-head/r5.jpg similarity index 100% rename from resources/captcha/backgrounds-head/r5.jpg rename to app/application/resources/captcha/backgrounds-head/r5.jpg diff --git a/resources/captcha/fonts/ABeeZee_regular.ttf b/app/application/resources/captcha/fonts/ABeeZee_regular.ttf similarity index 100% rename from resources/captcha/fonts/ABeeZee_regular.ttf rename to app/application/resources/captcha/fonts/ABeeZee_regular.ttf diff --git a/resources/captcha/fonts/Asap_700.ttf b/app/application/resources/captcha/fonts/Asap_700.ttf similarity index 100% rename from resources/captcha/fonts/Asap_700.ttf rename to app/application/resources/captcha/fonts/Asap_700.ttf diff --git a/resources/captcha/fonts/Khand_500.ttf b/app/application/resources/captcha/fonts/Khand_500.ttf similarity index 100% rename from resources/captcha/fonts/Khand_500.ttf rename to app/application/resources/captcha/fonts/Khand_500.ttf diff --git a/resources/captcha/fonts/Open_Sans_regular.ttf b/app/application/resources/captcha/fonts/Open_Sans_regular.ttf similarity index 100% rename from resources/captcha/fonts/Open_Sans_regular.ttf rename to app/application/resources/captcha/fonts/Open_Sans_regular.ttf diff --git a/resources/captcha/fonts/Roboto_regular.ttf b/app/application/resources/captcha/fonts/Roboto_regular.ttf similarity index 100% rename from resources/captcha/fonts/Roboto_regular.ttf rename to app/application/resources/captcha/fonts/Roboto_regular.ttf diff --git a/resources/captcha/fonts/Ubuntu_regular.ttf b/app/application/resources/captcha/fonts/Ubuntu_regular.ttf similarity index 100% rename from resources/captcha/fonts/Ubuntu_regular.ttf rename to app/application/resources/captcha/fonts/Ubuntu_regular.ttf diff --git a/resources/captcha/fonts/license/LICENSE-2.0.txt b/app/application/resources/captcha/fonts/license/LICENSE-2.0.txt similarity index 100% rename from resources/captcha/fonts/license/LICENSE-2.0.txt rename to app/application/resources/captcha/fonts/license/LICENSE-2.0.txt diff --git a/resources/captcha/fonts/license/OFL.txt b/app/application/resources/captcha/fonts/license/OFL.txt similarity index 100% rename from resources/captcha/fonts/license/OFL.txt rename to app/application/resources/captcha/fonts/license/OFL.txt diff --git a/resources/captcha/fonts/license/ubuntu-font-licence-1.0.txt b/app/application/resources/captcha/fonts/license/ubuntu-font-licence-1.0.txt similarity index 100% rename from resources/captcha/fonts/license/ubuntu-font-licence-1.0.txt rename to app/application/resources/captcha/fonts/license/ubuntu-font-licence-1.0.txt diff --git a/resources/views/private/_scripts/_click-confirm.blade.php b/app/application/resources/views/private/_scripts/_click-confirm.blade.php similarity index 100% rename from resources/views/private/_scripts/_click-confirm.blade.php rename to app/application/resources/views/private/_scripts/_click-confirm.blade.php diff --git a/resources/views/private/captcha_tokens/_from.blade.php b/app/application/resources/views/private/captcha_tokens/_from.blade.php similarity index 100% rename from resources/views/private/captcha_tokens/_from.blade.php rename to app/application/resources/views/private/captcha_tokens/_from.blade.php diff --git a/resources/views/private/captcha_tokens/_top.blade.php b/app/application/resources/views/private/captcha_tokens/_top.blade.php similarity index 100% rename from resources/views/private/captcha_tokens/_top.blade.php rename to app/application/resources/views/private/captcha_tokens/_top.blade.php diff --git a/resources/views/private/captcha_tokens/create.blade.php b/app/application/resources/views/private/captcha_tokens/create.blade.php similarity index 100% rename from resources/views/private/captcha_tokens/create.blade.php rename to app/application/resources/views/private/captcha_tokens/create.blade.php diff --git a/resources/views/private/captcha_tokens/edit.blade.php b/app/application/resources/views/private/captcha_tokens/edit.blade.php similarity index 100% rename from resources/views/private/captcha_tokens/edit.blade.php rename to app/application/resources/views/private/captcha_tokens/edit.blade.php diff --git a/resources/views/private/captcha_tokens/index.blade.php b/app/application/resources/views/private/captcha_tokens/index.blade.php similarity index 100% rename from resources/views/private/captcha_tokens/index.blade.php rename to app/application/resources/views/private/captcha_tokens/index.blade.php diff --git a/resources/views/private/components/forms/checkbox.blade.php b/app/application/resources/views/private/components/forms/checkbox.blade.php similarity index 100% rename from resources/views/private/components/forms/checkbox.blade.php rename to app/application/resources/views/private/components/forms/checkbox.blade.php diff --git a/resources/views/private/components/forms/input.blade.php b/app/application/resources/views/private/components/forms/input.blade.php similarity index 100% rename from resources/views/private/components/forms/input.blade.php rename to app/application/resources/views/private/components/forms/input.blade.php diff --git a/resources/views/private/components/forms/multi_checkbox.blade.php b/app/application/resources/views/private/components/forms/multi_checkbox.blade.php similarity index 100% rename from resources/views/private/components/forms/multi_checkbox.blade.php rename to app/application/resources/views/private/components/forms/multi_checkbox.blade.php diff --git a/resources/views/private/components/forms/permissions_for_role.blade.php b/app/application/resources/views/private/components/forms/permissions_for_role.blade.php similarity index 100% rename from resources/views/private/components/forms/permissions_for_role.blade.php rename to app/application/resources/views/private/components/forms/permissions_for_role.blade.php diff --git a/resources/views/private/components/forms/select.blade.php b/app/application/resources/views/private/components/forms/select.blade.php similarity index 100% rename from resources/views/private/components/forms/select.blade.php rename to app/application/resources/views/private/components/forms/select.blade.php diff --git a/app/application/resources/views/private/dashboard/index.blade.php b/app/application/resources/views/private/dashboard/index.blade.php new file mode 100644 index 0000000..39cde16 --- /dev/null +++ b/app/application/resources/views/private/dashboard/index.blade.php @@ -0,0 +1,52 @@ +@section('meta_title', __('sections.Dashboard')) +@section('h1', __('sections.Dashboard')) + +
+
+ @can('viewAny', \App\Models\CaptchaToken::class) +
+
+ + + + + + + + + + @foreach($items as $item) + + + + + + @endforeach + +
{{ __('validation.attributes.date') }}Capctha
{{ $item->created_at->timezone(\App\Helpers\Helpers::getUserTimeZone())->format("d.m.Y H:i:s") }} + @if($item->captcha && $item->captcha->captchaToken) + {{ $item->captcha->captchaToken->title }} + @endif +

{{ $item->type->getTitle() }}

+
+

IP: + @demo + {{ __('Demo Mode') }} + @else + {{ $item->ip }} + @endif +

+

User Agent: + @demo + {{ __('Demo Mode') }} + @else + {{ $item->user_agent }} + @endif +

+

referer: {{ $item->referer }}

+
+
+ @endcan +
+
+
diff --git a/resources/views/private/layout/_errors.blade.php b/app/application/resources/views/private/layout/_errors.blade.php similarity index 100% rename from resources/views/private/layout/_errors.blade.php rename to app/application/resources/views/private/layout/_errors.blade.php diff --git a/resources/views/private/layout/_navigation.blade.php b/app/application/resources/views/private/layout/_navigation.blade.php similarity index 100% rename from resources/views/private/layout/_navigation.blade.php rename to app/application/resources/views/private/layout/_navigation.blade.php diff --git a/resources/views/private/layout/_success.blade.php b/app/application/resources/views/private/layout/_success.blade.php similarity index 100% rename from resources/views/private/layout/_success.blade.php rename to app/application/resources/views/private/layout/_success.blade.php diff --git a/resources/views/private/layout/app.blade.php b/app/application/resources/views/private/layout/app.blade.php similarity index 100% rename from resources/views/private/layout/app.blade.php rename to app/application/resources/views/private/layout/app.blade.php diff --git a/resources/views/private/profile/profile.blade.php b/app/application/resources/views/private/profile/profile.blade.php similarity index 100% rename from resources/views/private/profile/profile.blade.php rename to app/application/resources/views/private/profile/profile.blade.php diff --git a/resources/views/private/profile/settings.blade.php b/app/application/resources/views/private/profile/settings.blade.php similarity index 100% rename from resources/views/private/profile/settings.blade.php rename to app/application/resources/views/private/profile/settings.blade.php diff --git a/resources/views/private/roles/_from.blade.php b/app/application/resources/views/private/roles/_from.blade.php similarity index 100% rename from resources/views/private/roles/_from.blade.php rename to app/application/resources/views/private/roles/_from.blade.php diff --git a/resources/views/private/roles/_top.blade.php b/app/application/resources/views/private/roles/_top.blade.php similarity index 100% rename from resources/views/private/roles/_top.blade.php rename to app/application/resources/views/private/roles/_top.blade.php diff --git a/resources/views/private/roles/create.blade.php b/app/application/resources/views/private/roles/create.blade.php similarity index 100% rename from resources/views/private/roles/create.blade.php rename to app/application/resources/views/private/roles/create.blade.php diff --git a/resources/views/private/roles/edit.blade.php b/app/application/resources/views/private/roles/edit.blade.php similarity index 100% rename from resources/views/private/roles/edit.blade.php rename to app/application/resources/views/private/roles/edit.blade.php diff --git a/resources/views/private/roles/index.blade.php b/app/application/resources/views/private/roles/index.blade.php similarity index 100% rename from resources/views/private/roles/index.blade.php rename to app/application/resources/views/private/roles/index.blade.php diff --git a/resources/views/private/users/_from.blade.php b/app/application/resources/views/private/users/_from.blade.php similarity index 100% rename from resources/views/private/users/_from.blade.php rename to app/application/resources/views/private/users/_from.blade.php diff --git a/resources/views/private/users/_top.blade.php b/app/application/resources/views/private/users/_top.blade.php similarity index 100% rename from resources/views/private/users/_top.blade.php rename to app/application/resources/views/private/users/_top.blade.php diff --git a/resources/views/private/users/create.blade.php b/app/application/resources/views/private/users/create.blade.php similarity index 100% rename from resources/views/private/users/create.blade.php rename to app/application/resources/views/private/users/create.blade.php diff --git a/resources/views/private/users/edit.blade.php b/app/application/resources/views/private/users/edit.blade.php similarity index 100% rename from resources/views/private/users/edit.blade.php rename to app/application/resources/views/private/users/edit.blade.php diff --git a/resources/views/private/users/index.blade.php b/app/application/resources/views/private/users/index.blade.php similarity index 100% rename from resources/views/private/users/index.blade.php rename to app/application/resources/views/private/users/index.blade.php diff --git a/resources/views/public/layout/app.blade.php b/app/application/resources/views/public/layout/app.blade.php similarity index 100% rename from resources/views/public/layout/app.blade.php rename to app/application/resources/views/public/layout/app.blade.php diff --git a/resources/views/public/login.blade.php b/app/application/resources/views/public/login.blade.php similarity index 95% rename from resources/views/public/login.blade.php rename to app/application/resources/views/public/login.blade.php index 472f602..d7f7f77 100644 --- a/resources/views/public/login.blade.php +++ b/app/application/resources/views/public/login.blade.php @@ -50,6 +50,11 @@ + @if($captcha) +
+ @captcha +
+ @endif
diff --git a/resources/volt/LICENSE.md b/app/application/resources/volt/LICENSE.md similarity index 100% rename from resources/volt/LICENSE.md rename to app/application/resources/volt/LICENSE.md diff --git a/resources/volt/images/brand/dark.png b/app/application/resources/volt/images/brand/dark.png similarity index 100% rename from resources/volt/images/brand/dark.png rename to app/application/resources/volt/images/brand/dark.png diff --git a/resources/volt/images/brand/light.png b/app/application/resources/volt/images/brand/light.png similarity index 100% rename from resources/volt/images/brand/light.png rename to app/application/resources/volt/images/brand/light.png diff --git a/resources/volt/images/illustrations/signin.svg b/app/application/resources/volt/images/illustrations/signin.svg similarity index 100% rename from resources/volt/images/illustrations/signin.svg rename to app/application/resources/volt/images/illustrations/signin.svg diff --git a/resources/volt/js/app.js b/app/application/resources/volt/js/app.js similarity index 54% rename from resources/volt/js/app.js rename to app/application/resources/volt/js/app.js index daaea29..6e6246c 100644 --- a/resources/volt/js/app.js +++ b/app/application/resources/volt/js/app.js @@ -2,4 +2,6 @@ import.meta.glob([ '../images/**', ]); import './bootstrap'; -import './volt.js'; +import './echo'; +import './volt'; +import './dashboard' diff --git a/resources/volt/js/bootstrap.js b/app/application/resources/volt/js/bootstrap.js similarity index 100% rename from resources/volt/js/bootstrap.js rename to app/application/resources/volt/js/bootstrap.js diff --git a/app/application/resources/volt/js/dashboard.js b/app/application/resources/volt/js/dashboard.js new file mode 100644 index 0000000..1bede54 --- /dev/null +++ b/app/application/resources/volt/js/dashboard.js @@ -0,0 +1,80 @@ +"use strict"; + +import Chartist from "chartist"; +import 'chartist-plugin-tooltips'; + +if(document.querySelector('#chart-сaptcha-activity')) { + let chartCaptchaActivity = null; + axios.get('/dashboard/chart-captcha-activity') + .then(response => { + chartCaptchaActivity = new Chartist.Line('#chart-сaptcha-activity', { + labels: response.data.days, + series: response.data.values, + }, { + low: 0, + showArea: true, + fullWidth: true, + plugins: [ + Chartist.plugins.tooltip() + ], + axisX: { + // On the x-axis start means top and end means bottom + position: 'end', + showGrid: true, + }, + axisY: { + // On the y-axis start means left and end means right + showGrid: true, + showLabel: true, + } + }); + + let currentDate = response.data.days[response.data.days.length - 1]; + + window.websocket.add(function (echo) { + echo.private('chart-captcha-activity') + .listen('CreatedCaptchaLog', (e) => { + let options = chartCaptchaActivity.data; + + if (currentDate !== e.chartCaptchaActivity.date) { + currentDate = e.chartCaptchaActivity.date; + + options['labels'].push(currentDate); + options['series'].forEach(function(series, i) { + series.push(response.data.types[i]); + options['series'].push(series); + }); + } + let values = options['series'][e.chartCaptchaActivity['type'] - 1]; + options['series'][e.chartCaptchaActivity['type'] - 1][values.length - 1]['value']++; + chartCaptchaActivity.update(options); + + let captchaLog = document.querySelector('#captcha-log'); + if (captchaLog) { + let tr = document.createElement("tr"); + let link = ''; + if (e.captchaLog.link !== '' && e.captchaLog.title !== '') { + link = `${e.captchaLog.title}`; + } + tr.innerHTML = ` + ${e.captchaLog.created_at} + + ${link} +

${e.captchaLog.type}

+ + +

IP: ${e.captchaLog.ip}

+

User Agent: ${e.captchaLog.user_agent}

+

referer: ${e.captchaLog.referer}

+ + `; + + captchaLog.prepend(tr); + } + }); + }); + }) + .catch(error => { + + }); +} diff --git a/app/application/resources/volt/js/echo.js b/app/application/resources/volt/js/echo.js new file mode 100644 index 0000000..1ea3e4a --- /dev/null +++ b/app/application/resources/volt/js/echo.js @@ -0,0 +1,49 @@ +"use strict"; + +import Echo from 'laravel-echo'; +import Pusher from 'pusher-js'; + +class websocket { + _echo = null; + pusher = Pusher; + + callbacks = [] + + constructor() { + let _this = this; + axios.get('/websockets/settings') + .then(response => { + _this._echo = new Echo({ + broadcaster: 'reverb', + key: response.data.key, + wsHost: response.data.wsHost, + wsPort: response.data.wsPort, + wssPort: response.data.wssPort, + forceTLS: response.data.forceTLS, + enabledTransports: ['ws', 'wss'], + }); + _this.startCallbacks(); + }) + .catch(error => { + + }); + } + + add(callback) { + if (this._echo !== null) { + callback(this._echo) + return ; + } + + this.callbacks.push(callback); + } + + startCallbacks() { + let _this = this; + this.callbacks.forEach(function(callback) { + callback(_this._echo) + }); + } +} + +window.websocket = new websocket(); diff --git a/resources/volt/js/volt.js b/app/application/resources/volt/js/volt.js similarity index 74% rename from resources/volt/js/volt.js rename to app/application/resources/volt/js/volt.js index 6a9ba93..483167e 100644 --- a/resources/volt/js/volt.js +++ b/app/application/resources/volt/js/volt.js @@ -21,8 +21,6 @@ const d = document; import * as bootstrap from 'bootstrap'; import Swal from 'sweetalert2'; import SmoothScroll from 'smooth-scroll'; -import Chartist from 'chartist'; -import 'chartist-plugin-tooltips'; d.addEventListener("DOMContentLoaded", function(event) { @@ -176,102 +174,6 @@ d.addEventListener("DOMContentLoaded", function(event) { }); } - //Chartist - - if(d.querySelector('.ct-chart-sales-value')) { - //Chart 5 - new Chartist.Line('.ct-chart-sales-value', { - labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'], - series: [ - [0, 10, 30, 40, 80, 60, 100] - ] - }, { - low: 0, - showArea: true, - fullWidth: true, - plugins: [ - Chartist.plugins.tooltip() - ], - axisX: { - // On the x-axis start means top and end means bottom - position: 'end', - showGrid: true - }, - axisY: { - // On the y-axis start means left and end means right - showGrid: false, - showLabel: false, - labelInterpolationFnc: function(value) { - return '$' + (value / 1) + 'k'; - } - } - }); - } - - if(d.querySelector('.ct-chart-ranking')) { - var chart = new Chartist.Bar('.ct-chart-ranking', { - labels: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], - series: [ - [1, 5, 2, 5, 4, 3], - [2, 3, 4, 8, 1, 2], - ] - }, { - low: 0, - showArea: true, - plugins: [ - Chartist.plugins.tooltip() - ], - axisX: { - // On the x-axis start means top and end means bottom - position: 'end' - }, - axisY: { - // On the y-axis start means left and end means right - showGrid: false, - showLabel: false, - offset: 0 - } - }); - - chart.on('draw', function(data) { - if(data.type === 'line' || data.type === 'area') { - data.element.animate({ - d: { - begin: 2000 * data.index, - dur: 2000, - from: data.path.clone().scale(1, 0).translate(0, data.chartRect.height()).stringify(), - to: data.path.clone().stringify(), - easing: Chartist.Svg.Easing.easeOutQuint - } - }); - } - }); - } - - if(d.querySelector('.ct-chart-traffic-share')) { - var data = { - series: [70, 20, 10] - }; - - var sum = function(a, b) { return a + b }; - - new Chartist.Pie('.ct-chart-traffic-share', data, { - labelInterpolationFnc: function(value) { - return Math.round(value / data.series.reduce(sum) * 100) + '%'; - }, - low: 0, - high: 8, - donut: true, - donutWidth: 20, - donutSolid: true, - fullWidth: false, - showLabel: false, - plugins: [ - Chartist.plugins.tooltip() - ], - }); - } - if (d.getElementById('loadOnClick')) { d.getElementById('loadOnClick').addEventListener('click', function () { var button = this; diff --git a/resources/volt/scss/_variables.scss b/app/application/resources/volt/scss/_variables.scss similarity index 100% rename from resources/volt/scss/_variables.scss rename to app/application/resources/volt/scss/_variables.scss diff --git a/resources/volt/scss/app.scss b/app/application/resources/volt/scss/app.scss similarity index 100% rename from resources/volt/scss/app.scss rename to app/application/resources/volt/scss/app.scss diff --git a/resources/volt/scss/volt/_components.scss b/app/application/resources/volt/scss/volt/_components.scss similarity index 100% rename from resources/volt/scss/volt/_components.scss rename to app/application/resources/volt/scss/volt/_components.scss diff --git a/resources/volt/scss/volt/_forms.scss b/app/application/resources/volt/scss/volt/_forms.scss similarity index 100% rename from resources/volt/scss/volt/_forms.scss rename to app/application/resources/volt/scss/volt/_forms.scss diff --git a/resources/volt/scss/volt/_functions.scss b/app/application/resources/volt/scss/volt/_functions.scss similarity index 100% rename from resources/volt/scss/volt/_functions.scss rename to app/application/resources/volt/scss/volt/_functions.scss diff --git a/resources/volt/scss/volt/_layout.scss b/app/application/resources/volt/scss/volt/_layout.scss similarity index 100% rename from resources/volt/scss/volt/_layout.scss rename to app/application/resources/volt/scss/volt/_layout.scss diff --git a/resources/volt/scss/volt/_mixins.scss b/app/application/resources/volt/scss/volt/_mixins.scss similarity index 100% rename from resources/volt/scss/volt/_mixins.scss rename to app/application/resources/volt/scss/volt/_mixins.scss diff --git a/resources/volt/scss/volt/_utilities.scss b/app/application/resources/volt/scss/volt/_utilities.scss similarity index 100% rename from resources/volt/scss/volt/_utilities.scss rename to app/application/resources/volt/scss/volt/_utilities.scss diff --git a/resources/volt/scss/volt/_variables.scss b/app/application/resources/volt/scss/volt/_variables.scss similarity index 100% rename from resources/volt/scss/volt/_variables.scss rename to app/application/resources/volt/scss/volt/_variables.scss diff --git a/resources/volt/scss/volt/_vendor.scss b/app/application/resources/volt/scss/volt/_vendor.scss similarity index 100% rename from resources/volt/scss/volt/_vendor.scss rename to app/application/resources/volt/scss/volt/_vendor.scss diff --git a/resources/volt/scss/volt/components/_accordions.scss b/app/application/resources/volt/scss/volt/components/_accordions.scss similarity index 100% rename from resources/volt/scss/volt/components/_accordions.scss rename to app/application/resources/volt/scss/volt/components/_accordions.scss diff --git a/resources/volt/scss/volt/components/_alerts.scss b/app/application/resources/volt/scss/volt/components/_alerts.scss similarity index 100% rename from resources/volt/scss/volt/components/_alerts.scss rename to app/application/resources/volt/scss/volt/components/_alerts.scss diff --git a/resources/volt/scss/volt/components/_animations.scss b/app/application/resources/volt/scss/volt/components/_animations.scss similarity index 100% rename from resources/volt/scss/volt/components/_animations.scss rename to app/application/resources/volt/scss/volt/components/_animations.scss diff --git a/resources/volt/scss/volt/components/_avatars.scss b/app/application/resources/volt/scss/volt/components/_avatars.scss similarity index 100% rename from resources/volt/scss/volt/components/_avatars.scss rename to app/application/resources/volt/scss/volt/components/_avatars.scss diff --git a/resources/volt/scss/volt/components/_badge.scss b/app/application/resources/volt/scss/volt/components/_badge.scss similarity index 100% rename from resources/volt/scss/volt/components/_badge.scss rename to app/application/resources/volt/scss/volt/components/_badge.scss diff --git a/resources/volt/scss/volt/components/_body.scss b/app/application/resources/volt/scss/volt/components/_body.scss similarity index 100% rename from resources/volt/scss/volt/components/_body.scss rename to app/application/resources/volt/scss/volt/components/_body.scss diff --git a/resources/volt/scss/volt/components/_breadcrumb.scss b/app/application/resources/volt/scss/volt/components/_breadcrumb.scss similarity index 100% rename from resources/volt/scss/volt/components/_breadcrumb.scss rename to app/application/resources/volt/scss/volt/components/_breadcrumb.scss diff --git a/resources/volt/scss/volt/components/_buttons.scss b/app/application/resources/volt/scss/volt/components/_buttons.scss similarity index 100% rename from resources/volt/scss/volt/components/_buttons.scss rename to app/application/resources/volt/scss/volt/components/_buttons.scss diff --git a/resources/volt/scss/volt/components/_card.scss b/app/application/resources/volt/scss/volt/components/_card.scss similarity index 100% rename from resources/volt/scss/volt/components/_card.scss rename to app/application/resources/volt/scss/volt/components/_card.scss diff --git a/resources/volt/scss/volt/components/_carousel.scss b/app/application/resources/volt/scss/volt/components/_carousel.scss similarity index 100% rename from resources/volt/scss/volt/components/_carousel.scss rename to app/application/resources/volt/scss/volt/components/_carousel.scss diff --git a/resources/volt/scss/volt/components/_charts.scss b/app/application/resources/volt/scss/volt/components/_charts.scss similarity index 100% rename from resources/volt/scss/volt/components/_charts.scss rename to app/application/resources/volt/scss/volt/components/_charts.scss diff --git a/resources/volt/scss/volt/components/_close.scss b/app/application/resources/volt/scss/volt/components/_close.scss similarity index 100% rename from resources/volt/scss/volt/components/_close.scss rename to app/application/resources/volt/scss/volt/components/_close.scss diff --git a/resources/volt/scss/volt/components/_custom-forms.scss b/app/application/resources/volt/scss/volt/components/_custom-forms.scss similarity index 100% rename from resources/volt/scss/volt/components/_custom-forms.scss rename to app/application/resources/volt/scss/volt/components/_custom-forms.scss diff --git a/resources/volt/scss/volt/components/_datepicker.scss b/app/application/resources/volt/scss/volt/components/_datepicker.scss similarity index 100% rename from resources/volt/scss/volt/components/_datepicker.scss rename to app/application/resources/volt/scss/volt/components/_datepicker.scss diff --git a/resources/volt/scss/volt/components/_dropdown.scss b/app/application/resources/volt/scss/volt/components/_dropdown.scss similarity index 100% rename from resources/volt/scss/volt/components/_dropdown.scss rename to app/application/resources/volt/scss/volt/components/_dropdown.scss diff --git a/resources/volt/scss/volt/components/_icons.scss b/app/application/resources/volt/scss/volt/components/_icons.scss similarity index 100% rename from resources/volt/scss/volt/components/_icons.scss rename to app/application/resources/volt/scss/volt/components/_icons.scss diff --git a/resources/volt/scss/volt/components/_images.scss b/app/application/resources/volt/scss/volt/components/_images.scss similarity index 100% rename from resources/volt/scss/volt/components/_images.scss rename to app/application/resources/volt/scss/volt/components/_images.scss diff --git a/resources/volt/scss/volt/components/_list-group.scss b/app/application/resources/volt/scss/volt/components/_list-group.scss similarity index 100% rename from resources/volt/scss/volt/components/_list-group.scss rename to app/application/resources/volt/scss/volt/components/_list-group.scss diff --git a/resources/volt/scss/volt/components/_modal.scss b/app/application/resources/volt/scss/volt/components/_modal.scss similarity index 100% rename from resources/volt/scss/volt/components/_modal.scss rename to app/application/resources/volt/scss/volt/components/_modal.scss diff --git a/resources/volt/scss/volt/components/_nav.scss b/app/application/resources/volt/scss/volt/components/_nav.scss similarity index 100% rename from resources/volt/scss/volt/components/_nav.scss rename to app/application/resources/volt/scss/volt/components/_nav.scss diff --git a/resources/volt/scss/volt/components/_pagination.scss b/app/application/resources/volt/scss/volt/components/_pagination.scss similarity index 100% rename from resources/volt/scss/volt/components/_pagination.scss rename to app/application/resources/volt/scss/volt/components/_pagination.scss diff --git a/resources/volt/scss/volt/components/_popover.scss b/app/application/resources/volt/scss/volt/components/_popover.scss similarity index 100% rename from resources/volt/scss/volt/components/_popover.scss rename to app/application/resources/volt/scss/volt/components/_popover.scss diff --git a/resources/volt/scss/volt/components/_progress.scss b/app/application/resources/volt/scss/volt/components/_progress.scss similarity index 100% rename from resources/volt/scss/volt/components/_progress.scss rename to app/application/resources/volt/scss/volt/components/_progress.scss diff --git a/resources/volt/scss/volt/components/_scrollbar.scss b/app/application/resources/volt/scss/volt/components/_scrollbar.scss similarity index 100% rename from resources/volt/scss/volt/components/_scrollbar.scss rename to app/application/resources/volt/scss/volt/components/_scrollbar.scss diff --git a/resources/volt/scss/volt/components/_shapes.scss b/app/application/resources/volt/scss/volt/components/_shapes.scss similarity index 100% rename from resources/volt/scss/volt/components/_shapes.scss rename to app/application/resources/volt/scss/volt/components/_shapes.scss diff --git a/resources/volt/scss/volt/components/_steps.scss b/app/application/resources/volt/scss/volt/components/_steps.scss similarity index 100% rename from resources/volt/scss/volt/components/_steps.scss rename to app/application/resources/volt/scss/volt/components/_steps.scss diff --git a/resources/volt/scss/volt/components/_tables.scss b/app/application/resources/volt/scss/volt/components/_tables.scss similarity index 100% rename from resources/volt/scss/volt/components/_tables.scss rename to app/application/resources/volt/scss/volt/components/_tables.scss diff --git a/resources/volt/scss/volt/components/_timelines.scss b/app/application/resources/volt/scss/volt/components/_timelines.scss similarity index 100% rename from resources/volt/scss/volt/components/_timelines.scss rename to app/application/resources/volt/scss/volt/components/_timelines.scss diff --git a/resources/volt/scss/volt/components/_tooltip.scss b/app/application/resources/volt/scss/volt/components/_tooltip.scss similarity index 100% rename from resources/volt/scss/volt/components/_tooltip.scss rename to app/application/resources/volt/scss/volt/components/_tooltip.scss diff --git a/resources/volt/scss/volt/components/_type.scss b/app/application/resources/volt/scss/volt/components/_type.scss similarity index 100% rename from resources/volt/scss/volt/components/_type.scss rename to app/application/resources/volt/scss/volt/components/_type.scss diff --git a/resources/volt/scss/volt/forms/_form-check.scss b/app/application/resources/volt/scss/volt/forms/_form-check.scss similarity index 100% rename from resources/volt/scss/volt/forms/_form-check.scss rename to app/application/resources/volt/scss/volt/forms/_form-check.scss diff --git a/resources/volt/scss/volt/forms/_form-control.scss b/app/application/resources/volt/scss/volt/forms/_form-control.scss similarity index 100% rename from resources/volt/scss/volt/forms/_form-control.scss rename to app/application/resources/volt/scss/volt/forms/_form-control.scss diff --git a/resources/volt/scss/volt/forms/_form-select.scss b/app/application/resources/volt/scss/volt/forms/_form-select.scss similarity index 100% rename from resources/volt/scss/volt/forms/_form-select.scss rename to app/application/resources/volt/scss/volt/forms/_form-select.scss diff --git a/resources/volt/scss/volt/forms/_input-group.scss b/app/application/resources/volt/scss/volt/forms/_input-group.scss similarity index 100% rename from resources/volt/scss/volt/forms/_input-group.scss rename to app/application/resources/volt/scss/volt/forms/_input-group.scss diff --git a/resources/volt/scss/volt/layout/_footer.scss b/app/application/resources/volt/scss/volt/layout/_footer.scss similarity index 100% rename from resources/volt/scss/volt/layout/_footer.scss rename to app/application/resources/volt/scss/volt/layout/_footer.scss diff --git a/resources/volt/scss/volt/layout/_navbar.scss b/app/application/resources/volt/scss/volt/layout/_navbar.scss similarity index 100% rename from resources/volt/scss/volt/layout/_navbar.scss rename to app/application/resources/volt/scss/volt/layout/_navbar.scss diff --git a/resources/volt/scss/volt/layout/_section.scss b/app/application/resources/volt/scss/volt/layout/_section.scss similarity index 100% rename from resources/volt/scss/volt/layout/_section.scss rename to app/application/resources/volt/scss/volt/layout/_section.scss diff --git a/resources/volt/scss/volt/layout/_sidebar.scss b/app/application/resources/volt/scss/volt/layout/_sidebar.scss similarity index 100% rename from resources/volt/scss/volt/layout/_sidebar.scss rename to app/application/resources/volt/scss/volt/layout/_sidebar.scss diff --git a/resources/volt/scss/volt/layout/_sidenav.scss b/app/application/resources/volt/scss/volt/layout/_sidenav.scss similarity index 100% rename from resources/volt/scss/volt/layout/_sidenav.scss rename to app/application/resources/volt/scss/volt/layout/_sidenav.scss diff --git a/resources/volt/scss/volt/mixins/_animations.scss b/app/application/resources/volt/scss/volt/mixins/_animations.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_animations.scss rename to app/application/resources/volt/scss/volt/mixins/_animations.scss diff --git a/resources/volt/scss/volt/mixins/_background-variant.scss b/app/application/resources/volt/scss/volt/mixins/_background-variant.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_background-variant.scss rename to app/application/resources/volt/scss/volt/mixins/_background-variant.scss diff --git a/resources/volt/scss/volt/mixins/_icon.scss b/app/application/resources/volt/scss/volt/mixins/_icon.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_icon.scss rename to app/application/resources/volt/scss/volt/mixins/_icon.scss diff --git a/resources/volt/scss/volt/mixins/_modals.scss b/app/application/resources/volt/scss/volt/mixins/_modals.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_modals.scss rename to app/application/resources/volt/scss/volt/mixins/_modals.scss diff --git a/resources/volt/scss/volt/mixins/_popover.scss b/app/application/resources/volt/scss/volt/mixins/_popover.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_popover.scss rename to app/application/resources/volt/scss/volt/mixins/_popover.scss diff --git a/resources/volt/scss/volt/mixins/_transform.scss b/app/application/resources/volt/scss/volt/mixins/_transform.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_transform.scss rename to app/application/resources/volt/scss/volt/mixins/_transform.scss diff --git a/resources/volt/scss/volt/mixins/_utilities.scss b/app/application/resources/volt/scss/volt/mixins/_utilities.scss similarity index 100% rename from resources/volt/scss/volt/mixins/_utilities.scss rename to app/application/resources/volt/scss/volt/mixins/_utilities.scss diff --git a/routes/api-v1.php b/app/application/routes/api-v1.php similarity index 100% rename from routes/api-v1.php rename to app/application/routes/api-v1.php diff --git a/routes/channels.php b/app/application/routes/channels.php similarity index 82% rename from routes/channels.php rename to app/application/routes/channels.php index 409c335..f76d0ab 100644 --- a/routes/channels.php +++ b/app/application/routes/channels.php @@ -12,3 +12,5 @@ | used to check if an authenticated user can listen to the channel. | */ + +Broadcast::channel('chart-captcha-activity', \App\Broadcasting\CreatedCaptchaLog::class); diff --git a/routes/console.php b/app/application/routes/console.php similarity index 100% rename from routes/console.php rename to app/application/routes/console.php diff --git a/routes/web.php b/app/application/routes/web.php similarity index 90% rename from routes/web.php rename to app/application/routes/web.php index a2afbc3..3a7c842 100644 --- a/routes/web.php +++ b/app/application/routes/web.php @@ -20,6 +20,7 @@ Route::middleware(['auth', 'verified', 'user.locale'])->group(function () { Route::post('logout', [\App\Http\Controllers\AuthController::class, 'logout'])->name('logout'); Route::get('/', [\App\Http\Controllers\Private\DashboardController::class, 'index'])->name('home'); + Route::get('/dashboard/chart-captcha-activity', [\App\Http\Controllers\Private\DashboardController::class, 'chartCaptchaActivity']); Route::prefix('profile')->as('profile.') ->group(function () { Route::get('/', [\App\Http\Controllers\Private\ProfileController::class, 'profile'])->name('edit'); @@ -34,4 +35,6 @@ Route::resource('roles', \App\Http\Controllers\Private\RolesController::class)->only(['index', 'create', 'store', 'edit', 'update', 'destroy'])->where(['role' => '[0-9]+']); Route::resource('captcha-tokens', \App\Http\Controllers\Private\CaptchaTokensController::class)->only(['index', 'create', 'store', 'edit', 'update', 'destroy'])->where(['captcha_token' => '[0-9]+']); + + Route::get('websockets/settings', [\App\Http\Controllers\Private\WebsocketsController::class, 'settings']); }); diff --git a/storage/app/.gitignore b/app/application/storage/app/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/app/.gitignore rename to app/application/storage/app/.gitignore diff --git a/storage/app/public/.gitignore b/app/application/storage/app/public/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/app/public/.gitignore rename to app/application/storage/app/public/.gitignore diff --git a/storage/framework/.gitignore b/app/application/storage/framework/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/.gitignore rename to app/application/storage/framework/.gitignore diff --git a/storage/framework/cache/.gitignore b/app/application/storage/framework/cache/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/cache/.gitignore rename to app/application/storage/framework/cache/.gitignore diff --git a/storage/framework/cache/data/.gitignore b/app/application/storage/framework/cache/data/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/cache/data/.gitignore rename to app/application/storage/framework/cache/data/.gitignore diff --git a/storage/framework/sessions/.gitignore b/app/application/storage/framework/sessions/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/sessions/.gitignore rename to app/application/storage/framework/sessions/.gitignore diff --git a/storage/framework/testing/.gitignore b/app/application/storage/framework/testing/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/testing/.gitignore rename to app/application/storage/framework/testing/.gitignore diff --git a/storage/framework/views/.gitignore b/app/application/storage/framework/views/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/framework/views/.gitignore rename to app/application/storage/framework/views/.gitignore diff --git a/storage/logs/.gitignore b/app/application/storage/logs/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from storage/logs/.gitignore rename to app/application/storage/logs/.gitignore diff --git a/tests/CreatesApplication.php b/app/application/tests/CreatesApplication.php similarity index 100% rename from tests/CreatesApplication.php rename to app/application/tests/CreatesApplication.php diff --git a/tests/Feature/ExampleTest.php b/app/application/tests/Feature/ExampleTest.php similarity index 100% rename from tests/Feature/ExampleTest.php rename to app/application/tests/Feature/ExampleTest.php diff --git a/tests/TestCase.php b/app/application/tests/TestCase.php similarity index 100% rename from tests/TestCase.php rename to app/application/tests/TestCase.php diff --git a/tests/Unit/ExampleTest.php b/app/application/tests/Unit/ExampleTest.php similarity index 100% rename from tests/Unit/ExampleTest.php rename to app/application/tests/Unit/ExampleTest.php diff --git a/vite.config.js b/app/application/vite.config.js similarity index 100% rename from vite.config.js rename to app/application/vite.config.js diff --git a/app/docker/.dockerignore b/app/docker/.dockerignore new file mode 100644 index 0000000..c286cf9 --- /dev/null +++ b/app/docker/.dockerignore @@ -0,0 +1,8 @@ +**/*.env +**/*.env.example +application/bootstrap/cache/* +application/storage/** +application/vendor/** +application/node_modules/** +application/public/build/** +application/public/storage diff --git a/docker/app/Dockerfile b/app/docker/Dockerfile similarity index 65% rename from docker/app/Dockerfile rename to app/docker/Dockerfile index 7ce2f40..72772c5 100644 --- a/docker/app/Dockerfile +++ b/app/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/php:8.2-zts-alpine3.18 AS UNIT_BUILDER +FROM docker.io/php:8.3-zts-alpine3.18 AS UNIT_BUILDER ARG UNIT_VERSION=1.31.1 @@ -12,13 +12,12 @@ RUN apk --no-cache add pcre2-dev gcc git musl-dev make && \ make && \ make install -FROM docker.io/php:8.2-zts-alpine3.18 as BUILD +FROM docker.io/php:8.3-zts-alpine3.18 as BUILD COPY --from=UNIT_BUILDER /var/sbin/unitd /usr/sbin/unitd COPY --from=UNIT_BUILDER /var/lib/unit/ /var/lib/unit/ -COPY docker-entrypoint.sh /home/unit/docker-entrypoint.sh -COPY unit-config.json /docker-entrypoint.d/config.json +COPY docker/unit-config.json /docker-entrypoint.d/config.json RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freetype oniguruma libzip \ && apk add --no-cache --virtual .phpize-deps icu-dev libpng-dev bzip2-dev libwebp-dev libjpeg-turbo-dev freetype-dev oniguruma-dev libzip-dev pcre2-dev ${PHPIZE_DEPS} \ @@ -47,41 +46,75 @@ RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freety && mkdir -p /tmp/php/session \ && chown -R www-data:www-data /tmp/php \ && ln -sf /dev/stdout /var/log/unit.log \ - && addgroup -S unit && adduser -S unit -G unit \ - && chmod 755 /home/unit/docker-entrypoint.sh + && addgroup -S unit && adduser -S unit -G unit FROM BUILD as APP_BUILD_FOR_PRODUCTION WORKDIR /home/app + +COPY application /home/app + RUN apk --no-cache add git nodejs npm \ && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ - && git clone https://git.kor-elf.net/kor-elf/service-captcha.git . \ && composer install --optimize-autoloader --no-dev \ && npm install && npm run build \ - && rm -rf /home/app/node_modules /home/app/.git /home/app/docker + && rm -rf /home/app/node_modules /home/app/.env + -# FROM BUILD AS PRODUCTION COPY --from=APP_BUILD_FOR_PRODUCTION /home/app /var/www/html +COPY docker/docker-entrypoint_prod.sh /home/unit/docker-entrypoint.sh WORKDIR /var/www/html +RUN chmod 755 /home/unit/docker-entrypoint.sh + STOPSIGNAL SIGTERM ENTRYPOINT ["/home/unit/docker-entrypoint.sh"] EXPOSE 9000 -CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock", "--user", "unit", "--group", "unit"] +COPY docker/start_prod.sh /usr/local/bin/start +CMD ["/usr/local/bin/start"] -# FROM BUILD AS DEVELOP WORKDIR /var/www/html +COPY docker/docker-entrypoint_dev.sh /home/unit/docker-entrypoint.sh + STOPSIGNAL SIGTERM -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer +RUN chmod 755 /home/unit/docker-entrypoint.sh \ + && apk --no-cache add git nodejs npm \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer ENTRYPOINT ["/home/unit/docker-entrypoint.sh"] + EXPOSE 9000 -CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock", "--user", "unit", "--group", "unit"] + +COPY docker/start_dev.sh /usr/local/bin/start +CMD ["/usr/local/bin/start"] + +FROM BUILD AS ARTISAN +WORKDIR /var/www/html +STOPSIGNAL SIGTERM +ENTRYPOINT ["php", "/var/www/html/artisan"] + + +FROM BUILD AS COMPOSER +WORKDIR /var/www/html +STOPSIGNAL SIGTERM +RUN apk --no-cache add git \ + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + && mkdir /.composer && chmod 0777 /.composer +ENTRYPOINT ["composer"] + + + +FROM BUILD AS NPM +RUN mkdir "/.npm" && chmod -R 0777 "/.npm" +WORKDIR /var/www/html +STOPSIGNAL SIGTERM +RUN apk --no-cache add nodejs npm +ENTRYPOINT ["npm"] diff --git a/app/docker/docker-entrypoint_dev.sh b/app/docker/docker-entrypoint_dev.sh new file mode 100644 index 0000000..a885fa2 --- /dev/null +++ b/app/docker/docker-entrypoint_dev.sh @@ -0,0 +1,103 @@ +#!/bin/sh + +set -euo pipefail + +WAITLOOPS=5 +SLEEPSEC=1 +unitd="unitd" + +curl_put() +{ + RET=$(/usr/bin/curl -s -w '%{http_code}' -X PUT --data-binary @$1 --unix-socket /var/run/control.unit.sock http://localhost/$2) + RET_BODY=$(echo $RET | /bin/sed '$ s/...$//') + RET_STATUS=$(echo $RET | /usr/bin/tail -c 4) + if [ "$RET_STATUS" -ne "200" ]; then + echo "$0: Error: HTTP response status code is '$RET_STATUS'" + echo "$RET_BODY" + return 1 + else + echo "$0: OK: HTTP response status code is '$RET_STATUS'" + echo "$RET_BODY" + fi + return 0 +} + +if [ "$unitd" = "unitd" ] || [ "$unitd" = "unitd-debug" ]; then + echo "$0: Launching Unit daemon to perform initial configuration..." + /usr/sbin/$unitd --control unix:/var/run/control.unit.sock + for i in $(/usr/bin/seq $WAITLOOPS); do + if [ ! -S /var/run/control.unit.sock ]; then + echo "$0: Waiting for control socket to be created..." + /bin/sleep $SLEEPSEC + else + break + fi + done + + # even when the control socket exists, it does not mean unit has finished initialisation + # this curl call will get a reply once unit is fully launched + /usr/bin/curl -s -X GET --unix-socket /var/run/control.unit.sock http://localhost/ + + if /usr/bin/find "/docker-entrypoint.d/" -mindepth 1 -print -quit 2>/dev/null | /bin/grep -q .; then + echo "$0: /docker-entrypoint.d/ is not empty, applying initial configuration..." + + echo "$0: Looking for certificate bundles in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.pem"); do + echo "$0: Uploading certificates bundle: $f" + curl_put $f "certificates/$(basename $f .pem)" + done + + echo "$0: Looking for JavaScript modules in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.js"); do + echo "$0: Uploading JavaScript module: $f" + curl_put $f "js_modules/$(basename $f .js)" + done + + echo "$0: Looking for configuration snippets in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.json"); do + echo "$0: Applying configuration $f"; + curl_put $f "config" + done + + if [ ! -z ${UNIT_SOURCE+x} ] + then + echo "[${UNIT_SOURCE}]" > /docker-entrypoint.d/unit_source.json + curl_put "/docker-entrypoint.d/unit_source.json" "config/listeners/*:9000/forwarded/source" + fi + + echo "$0: Looking for shell scripts in /docker-entrypoint.d/..." + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -name "*.sh"); do + echo "$0: Launching $f"; + "$f" + done + + # warn on filetypes we don't know what to do with + for f in $(/usr/bin/find /docker-entrypoint.d/ -type f -not -name "*.sh" -not -name "*.json" -not -name "*.pem" -not -name "*.js"); do + echo "$0: Ignoring $f"; + done + fi + + echo "$0: Stopping Unit daemon after initial configuration..." + kill -TERM $(/bin/cat /var/run/unit.pid) + + for i in $(/usr/bin/seq $WAITLOOPS); do + if [ -S /var/run/control.unit.sock ]; then + echo "$0: Waiting for control socket to be removed..." + /bin/sleep $SLEEPSEC + else + break + fi + done + if [ -S /var/run/control.unit.sock ]; then + kill -KILL $(/bin/cat /var/run/unit.pid) + rm -f /var/run/control.unit.sock + fi + + echo + echo "$0: Unit initial configuration complete; ready for start up..." + echo +fi + +chmod -R 777 /var/www/html/storage /var/www/html/bootstrap/cache + +exec "$@" diff --git a/docker/app/docker-entrypoint.sh b/app/docker/docker-entrypoint_prod.sh similarity index 100% rename from docker/app/docker-entrypoint.sh rename to app/docker/docker-entrypoint_prod.sh diff --git a/docker/dev/php/start.sh b/app/docker/start_dev.sh similarity index 74% rename from docker/dev/php/start.sh rename to app/docker/start_dev.sh index 91c0f3e..007ea47 100755 --- a/docker/dev/php/start.sh +++ b/app/docker/start_dev.sh @@ -1,15 +1,14 @@ -#!/usr/bin/env bash +#!/usr/bin/env sh set -e role=${CONTAINER_ROLE:-app} if [ "$role" = "app" ]; then - exec php-fpm + exec unitd --no-daemon --control unix:/var/run/control.unit.sock --user unit --group unit elif [ "$role" = "queue" ]; then echo "Running the queue..." -# php /var/www/html/artisan queue:work --verbose --sleep=5 --tries=10 --max-time=3600 php /var/www/html/artisan queue:work --verbose --sleep=5 --tries=10 elif [ "$role" = "websockets" ]; then echo "Running the websockets..." - php /var/www/html/artisan websockets:serve + php /var/www/html/artisan reverb:start --port=9000 elif [ "$role" = "scheduler" ]; then while [ true ] do diff --git a/app/docker/start_prod.sh b/app/docker/start_prod.sh new file mode 100755 index 0000000..e4d2379 --- /dev/null +++ b/app/docker/start_prod.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env sh +set -e +role=${CONTAINER_ROLE:-app} +if [ "$role" = "app" ]; then + exec unitd --no-daemon --control unix:/var/run/control.unit.sock --user unit --group unit +elif [ "$role" = "queue" ]; then + echo "Running the queue..." + php /var/www/html/artisan queue:work --verbose --sleep=5 --tries=10 --max-time=3600 +elif [ "$role" = "websockets" ]; then + echo "Running the websockets..." + php /var/www/html/artisan reverb:start --port=9000 +elif [ "$role" = "scheduler" ]; then + while [ true ] + do + php /var/www/html/artisan schedule:run --verbose --no-interaction & + sleep 60 + done +else + echo "Could not match the container role \"$role\"" + exit 1 +fi diff --git a/docker/app/unit-config.json b/app/docker/unit-config.json similarity index 100% rename from docker/app/unit-config.json rename to app/docker/unit-config.json diff --git a/db/.gitignore b/db/.gitignore new file mode 100644 index 0000000..adbb97d --- /dev/null +++ b/db/.gitignore @@ -0,0 +1 @@ +data/ \ No newline at end of file diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index 4e28f7c..a4bb96c 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -2,41 +2,94 @@ version: '3.7' services: nginx: build: - context: ./docker/nginx + context: ./nginx dockerfile: Dockerfile + # restart: always depends_on: - app - swagger ports: - - ${DOCKER_CAPTCHA_NGINX_PORT}:80 + - ${DOCKER_NGINX_PORT}:80 app: - depends_on: - - redis build: - context: ./docker/app - dockerfile: Dockerfile + context: app + dockerfile: docker/Dockerfile target: PRODUCTION -# restart: always - cap_drop: - - ALL - cap_add: - - SETGID - - SETUID - - CHOWN - - FOWNER - ports: - - "9000" - env_file: .env + # restart: always +# cap_drop: +# - ALL +# cap_add: +# - SETGID +# - SETUID +# - CHOWN +# - FOWNER + depends_on: + - db + - redis + - reverb + env_file: app/application/.env + queue: + build: + context: app + dockerfile: docker/Dockerfile + target: PRODUCTION + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: queue volumes: - - /etc/localtime:/etc/localtime:ro + - ./app/application:/var/www/html + reverb: + build: + context: app + dockerfile: docker/Dockerfile + target: PRODUCTION + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: websockets + ports: + - ${DOCKER_WEBSOCKET_PORT}:9000 + volumes: + - ./app/application:/var/www/html + scheduler: + build: + context: app + dockerfile: docker/Dockerfile + target: PRODUCTION + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: scheduler + volumes: + - ./app/application:/var/www/html swagger: image: swaggerapi/swagger-ui + # restart: always depends_on: - app environment: URLS: "[ { url: '/swagger.json', name: '/swagger.json' } ]" BASE_URL: /api-docs - ports: - - "8080" redis: image: redis:3.0-alpine + # restart: always + db: + image: docker.io/mysql:8.0.33 + command: --default-authentication-plugin=mysql_native_password + #restart: always + ports: + - ${DOCKER_DB_PORT}:3306 + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} + volumes: + - ./db/data:/var/lib/mysql diff --git a/docker-compose-prod_docker-hub.yml b/docker-compose-prod_docker-hub.yml new file mode 100644 index 0000000..003bbf7 --- /dev/null +++ b/docker-compose-prod_docker-hub.yml @@ -0,0 +1,73 @@ +version: '3.7' +services: + nginx: + build: + context: ./nginx + dockerfile: Dockerfile + # restart: always + depends_on: + - app + - swagger + ports: + - ${DOCKER_NGINX_PORT}:80 + app: + image: korelf/service-captcha:0.8.0 + # restart: always + depends_on: + - db + - redis + - reverb + env_file: app/.env + queue: + image: korelf/service-captcha:0.8.0 + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: queue + env_file: app/.env + reverb: + image: korelf/service-captcha:0.8.0 + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: websockets + env_file: app/.env + ports: + - ${DOCKER_WEBSOCKET_PORT}:9000 + scheduler: + image: korelf/service-captcha:0.8.0 + # restart: always + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: scheduler + env_file: app/.env + redis: + image: redis:3.0-alpine + # restart: always + swagger: + image: swaggerapi/swagger-ui + depends_on: + - app + environment: + URLS: "[ { url: '/swagger.json', name: '/swagger.json' } ]" + BASE_URL: /api-docs + + db: + image: docker.io/mysql:8.0.33 + command: --default-authentication-plugin=mysql_native_password + #restart: always + ports: + - ${DOCKER_DB_PORT}:3306 + environment: + MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} + MYSQL_DATABASE: ${DB_DATABASE} + MYSQL_USER: ${DB_USERNAME} + MYSQL_PASSWORD: ${DB_PASSWORD} + volumes: + - ./db/data:/var/lib/mysql diff --git a/docker-compose.yml b/docker-compose.yml index af15a79..b098d3c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,35 +1,70 @@ -version: '3' +version: '3.7' services: web: - image: docker.angie.software/angie + image: nginx:alpine3.18-slim volumes: - - ./docker/dev/angie/config/default.conf:/etc/angie/http.d/default.conf - - ./:/var/www/html + - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf ports: - - ${DOCKER_ANGIE_PORT}:80 - #restart: always + - ${DOCKER_NGINX_PORT}:80 depends_on: - db - redis - app + - reverb app: - image: service-captcha-laravel - container_name: service-captcha-laravel-www - build: ./docker/dev/php - #restart: always - user: 1000:1000 + build: + context: app + dockerfile: docker/Dockerfile + target: DEVELOP + depends_on: + - db + - redis + - reverb volumes: - - ./docker/dev/php/config/php.ini:/usr/local/etc/php/conf.d/php.ini - - ./docker/dev/php/config/xdebug.ini:/usr/local/etc/php/conf.d/xdebug.ini - - ./:/var/www/html - expose: - - "9000" + - ./app/application:/var/www/html + queue: + build: + context: app + dockerfile: docker/Dockerfile + target: DEVELOP + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: queue + volumes: + - ./app/application:/var/www/html + reverb: + build: + context: app + dockerfile: docker/Dockerfile + target: DEVELOP + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: websockets + ports: + - ${DOCKER_WEBSOCKET_PORT}:9000 + volumes: + - ./app/application:/var/www/html + scheduler: + build: + context: app + dockerfile: docker/Dockerfile + target: DEVELOP + depends_on: + - db + - redis + environment: + CONTAINER_ROLE: scheduler + volumes: + - ./app/application:/var/www/html redis: image: redis:3.0-alpine db: image: mysql:8.0.33 command: --default-authentication-plugin=mysql_native_password - #restart: always ports: - ${DOCKER_DB_PORT}:3306 environment: @@ -38,17 +73,36 @@ services: MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} volumes: - - ./docker/dev/db:/var/lib/mysql - - ./docker/dev/my.cnf:/etc/mysql/conf.d/my.cnf + - ./db/data:/var/lib/mysql swagger: image: swaggerapi/swagger-ui environment: URLS: "[ { url: '/swagger.json', name: '/swagger.json' } ]" BASE_URL: /api-docs - ports: - - "8080" - adminer: - image: adminer - #restart: always - ports: - - ${DOCKER_ADMINER_PORT}:8080 + + artisan: + build: + context: app + dockerfile: docker/Dockerfile + target: ARTISAN + user: "${UID}:${GID}" + volumes: + - ./app/application:/var/www/html + + composer: + build: + context: app + dockerfile: docker/Dockerfile + target: COMPOSER + user: "${UID}:${GID}" + volumes: + - ./app/application:/var/www/html + + npm: + build: + context: app + dockerfile: docker/Dockerfile + target: NPM + user: "${UID}:${GID}" + volumes: + - ./app/application:/var/www/html diff --git a/docker/dev/.gitignore b/docker/dev/.gitignore deleted file mode 100644 index 2f526f2..0000000 --- a/docker/dev/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -db/* -!db/.gitignore diff --git a/docker/dev/angie/config/default.conf b/docker/dev/angie/config/default.conf deleted file mode 100644 index 3063a8a..0000000 --- a/docker/dev/angie/config/default.conf +++ /dev/null @@ -1,44 +0,0 @@ -server { - listen 80 default_server; - listen [::]:80 default_server; - server_name localhost; - - client_max_body_size 1024M; - - root /var/www/html/public; - - location / { - location /api-docs { - proxy_pass http://swagger:8080; - proxy_set_header Host $host; - proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; - proxy_set_header X-Real-IP $remote_addr; - } - location / { - # try to serve file directly, fallback to index.php - try_files $uri /index.php$is_args$args; - } - } - - location ~ ^/index\.php(/|$) { - fastcgi_pass app:9000; - fastcgi_split_path_info ^(.+\.php)(/.*)$; - include fastcgi_params; - - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - fastcgi_param DOCUMENT_ROOT $realpath_root; - # Prevents URIs that include the front controller. This will 404: - # http://domain.tld/index.php/some-path - # Remove the internal directive to allow URIs like this - internal; - } - - # return 404 for all other php files not matching the front controller - # this prevents access to other php files you don't want to be accessible. - location ~ \.php$ { - return 404; - } - - error_log /var/log/angie/project_error.log; - access_log /var/log/angie/project_access.log; -} diff --git a/docker/dev/my.cnf b/docker/dev/my.cnf deleted file mode 100644 index c56e049..0000000 --- a/docker/dev/my.cnf +++ /dev/null @@ -1,9 +0,0 @@ -[mysqld] -innodb_lru_scan_depth=100 # from 1024 to conserve 90% CPU cycles used for function -innodb_io_capacity=1900 # from 200 to allow more IOPSecond to your storage device -innodb_flush_neighbors=2 # from 0 to expedite writing to current extent -innodb_max_dirty_pages_pct_lwm=1 # from 10 percent to expedite writes -innodb_max_dirty_pages_pct=1 # from 90 percent to reduce innodb_buffer_pool_pages_dirty count -innodb_change_buffer_max_size=50 # from 25 percent to expedite your high volume activity -innodb_flush_log_at_trx_commit=0 -skip_log_bin=1 diff --git a/docker/dev/php/Dockerfile b/docker/dev/php/Dockerfile deleted file mode 100644 index f30b0b2..0000000 --- a/docker/dev/php/Dockerfile +++ /dev/null @@ -1,85 +0,0 @@ -FROM php:8.2-fpm - -# Set working directory -WORKDIR /var/www/html - -# Install dependencies -RUN apt-get update \ - && apt-get install -y \ - apt-utils \ - man \ - curl \ - git \ - bash \ - vim \ - zip unzip \ - acl \ - iproute2 \ - dnsutils \ - fonts-freefont-ttf \ - fontconfig \ - dbus \ - openssh-client \ - sendmail \ - libfreetype6-dev \ - libjpeg62-turbo-dev \ - icu-devtools \ - libicu-dev \ - libmcrypt4 \ - libmcrypt-dev \ - libpng-dev \ - zlib1g-dev \ - libxml2-dev \ - libzip-dev \ - libonig-dev \ - graphviz \ - libcurl4-openssl-dev \ - pkg-config \ - libldap2-dev \ - libpq-dev \ - libbz2-dev \ - libwebp-dev - -RUN curl -sL https://deb.nodesource.com/setup_20.x | bash - -RUN apt-get -y install nodejs - -# Clear cache -RUN apt-get clean && rm -rf /var/lib/apt/lists/* - -# Install extensions -RUN docker-php-ext-configure intl --enable-intl && \ - docker-php-ext-configure bcmath --enable-bcmath && \ - docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp && \ - docker-php-ext-install -j$(nproc) gd && \ - docker-php-ext-install bcmath &&\ - docker-php-ext-install pdo \ - pgsql pdo_pgsql \ - mysqli pdo_mysql \ - intl iconv mbstring \ - zip pcntl \ - exif opcache bz2 \ - calendar \ - && pecl install -o -f redis \ - && rm -rf /tmp/pear \ - && docker-php-ext-enable redis \ - && docker-php-source delete - -# Install composer -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer - -# Add user for laravel application -RUN groupadd -g 1000 www -RUN useradd -u 1000 -ms /bin/bash -g www www - -# Copy existing application directory contents -#COPY . /var/www - -# Copy existing application directory permissions -#COPY --chown=www:www . /var/www - -# Change current user to www -USER www - -COPY start.sh /usr/local/bin/start - -CMD ["/usr/local/bin/start"] diff --git a/docker/dev/php/config/php.ini b/docker/dev/php/config/php.ini deleted file mode 100644 index d528b29..0000000 --- a/docker/dev/php/config/php.ini +++ /dev/null @@ -1,8 +0,0 @@ -date.timezone = Asia/Almaty - -display_errors = 1 -error_reporting = E_ALL -post_max_size = 1024m -upload_max_filesize = 1024m -memory_limit = 512M - diff --git a/docker/dev/php/config/xdebug.ini b/docker/dev/php/config/xdebug.ini deleted file mode 100644 index 9013d57..0000000 --- a/docker/dev/php/config/xdebug.ini +++ /dev/null @@ -1,4 +0,0 @@ -xdebug.remote_enable = 1 -xdebug.remote_autostart = 1 -xdebug.remote_connect_back = 1 -xdebug.remote_idekey = PHPSTORM \ No newline at end of file diff --git a/docker/nginx/Dockerfile b/nginx/Dockerfile similarity index 100% rename from docker/nginx/Dockerfile rename to nginx/Dockerfile diff --git a/docker/nginx/nginx.conf b/nginx/nginx.conf similarity index 100% rename from docker/nginx/nginx.conf rename to nginx/nginx.conf diff --git a/resources/views/private/dashboard/index.blade.php b/resources/views/private/dashboard/index.blade.php deleted file mode 100644 index 057ac8b..0000000 --- a/resources/views/private/dashboard/index.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@section('meta_title', __('sections.Dashboard')) -@section('h1', __('sections.Dashboard')) - - -