From 85e181e51c55f27ad82e56f71ba344b49f7eb07e Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Thu, 25 Apr 2024 19:56:34 +0500 Subject: [PATCH 1/8] Changed the project structure. --- .env.example | 76 ++----------- .gitignore | 21 +--- .../application/.editorconfig | 0 app/application/.env.example | 68 ++++++++++++ .../application/.gitattributes | 0 app/application/.gitignore | 19 ++++ LICENSE.md => app/application/LICENSE.md | 2 +- .../app}/Captcha/Config/ImageBody.php | 0 .../app}/Captcha/Config/ImageHead.php | 0 .../app}/Captcha/Contracts/Image.php | 0 .../app}/Captcha/Contracts/ImageBody.php | 0 .../app}/Captcha/Contracts/ImageHead.php | 0 .../app}/Captcha/Contracts/ImageLines.php | 0 .../app}/Captcha/Contracts/ImageManager.php | 0 .../app}/Captcha/Contracts/Type.php | 0 .../app}/Captcha/Dto/Coordinators.php | 0 .../app}/Captcha/Dto/Image.php | 0 .../app}/Captcha/Dto/ImageBody.php | 0 .../app}/Captcha/Dto/ImageHead.php | 0 .../app}/Captcha/Dto/Sector.php | 0 .../app}/Captcha/Dto/Sectors.php | 0 .../app}/Captcha/Dto/Symbols.php | 0 .../app}/Captcha/Enums/SymbolType.php | 0 .../Captcha/Exceptions/CaptchaException.php | 0 .../app}/Captcha/Images/Body.php | 0 .../app}/Captcha/Images/Head.php | 0 .../app}/Captcha/Images/Image.php | 0 .../app}/Captcha/Images/ImageManager.php | 0 .../app}/Captcha/Images/Lines.php | 0 app/{ => application/app}/Captcha/Type.php | 0 .../app}/Captcha/Types/StringType.php | 0 .../app}/Console/Commands/CreateUserAdmin.php | 0 app/{ => application/app}/Console/Kernel.php | 0 .../app}/Contracts/CryptographyContract.php | 0 .../app}/Contracts/FormRequestDto.php | 0 .../app}/Contracts/GenerateTokenCommand.php | 0 .../app}/Contracts/Search.php | 0 .../app}/Contracts/ServiceResult.php | 0 .../app}/Contracts/ServiceResultError.php | 0 .../app}/Dto/Builder/CaptchaToken.php | 0 .../app}/Dto/Builder/Role.php | 0 .../app}/Dto/Builder/User.php | 0 .../app}/Dto/HttpUserData.php | 0 .../app}/Dto/QuerySettingsDto.php | 0 .../DataCaptchaRepository/DataCaptcha.php | 0 .../Api/V1/Captcha/CaptchaPublicToken.php | 0 .../Request/Api/V1/Captcha/CheckingDto.php | 0 .../V1/Captcha/VerificationInformationDto.php | 0 .../app}/Dto/Request/Authorization.php | 0 app/{ => application/app}/Dto/Request/Dto.php | 0 .../Request/Private/CaptchaToken/Index.php | 0 .../Private/CaptchaToken/StoreUpdate.php | 0 .../Dto/Request/Private/Profile/Update.php | 0 .../Private/Profile/UpdateSettings.php | 0 .../app}/Dto/Request/Private/Role/Index.php | 0 .../Dto/Request/Private/Role/StoreUpdate.php | 0 .../app}/Dto/Request/Private/User/Index.php | 0 .../Dto/Request/Private/User/StoreUpdate.php | 0 .../Request/Private/User/UpdatePassword.php | 0 .../app}/Dto/User/ManyRoleDto.php | 0 .../app}/Enums/CaptchaLogType.php | 0 app/{ => application/app}/Enums/Lang.php | 0 .../app}/Enums/Permission.php | 0 .../app}/Enums/SystemRole.php | 0 .../Dto/User/ManyRoleDtoException.php | 0 .../app}/Exceptions/Handler.php | 0 .../DataCaptchaRepositoryException.php | 0 ...SyncPermissionsCommandHandlerException.php | 0 .../Service/GenerateTokenCommandException.php | 0 app/{ => application/app}/Helpers/Helpers.php | 0 .../Controllers/Api/V1/CaptchaController.php | 0 .../Http/Controllers/Api/V1/Controller.php | 0 .../app}/Http/Controllers/AuthController.php | 0 .../app}/Http/Controllers/Controller.php | 0 .../Private/CaptchaTokensController.php | 0 .../Http/Controllers/Private/Controller.php | 0 .../Private/DashboardController.php | 0 .../Controllers/Private/ProfileController.php | 0 .../Controllers/Private/RolesController.php | 0 .../Controllers/Private/UsersController.php | 0 app/{ => application/app}/Http/Kernel.php | 0 .../app}/Http/Middleware/Authenticate.php | 0 .../app}/Http/Middleware/EncryptCookies.php | 0 .../Http/Middleware/EnsureUserIsVerified.php | 0 .../PreventRequestsDuringMaintenance.php | 0 .../Middleware/RedirectIfAuthenticated.php | 0 .../app}/Http/Middleware/TrimStrings.php | 0 .../app}/Http/Middleware/TrustHosts.php | 0 .../app}/Http/Middleware/TrustProxies.php | 0 .../app}/Http/Middleware/UserLocale.php | 0 .../Http/Middleware/ValidateSignature.php | 0 .../app}/Http/Middleware/VerifyCsrfToken.php | 0 .../Api/V1/Captcha/CaptchaRequest.php | 0 .../Api/V1/Captcha/CheckingRequest.php | 0 .../VerificationInformationRequest.php | 0 .../Http/Requests/AuthorizationRequest.php | 0 .../Private/CaptchaTokens/IndexRequest.php | 0 .../CaptchaTokens/StoreUpdateRequest.php | 0 .../Private/Profile/UpdatePasswordRequest.php | 0 .../Private/Profile/UpdateRequest.php | 0 .../Private/Profile/UpdateSettingsRequest.php | 0 .../Requests/Private/Roles/IndexRequest.php | 0 .../Private/Roles/StoreUpdateRequest.php | 0 .../Requests/Private/Users/IndexRequest.php | 0 .../Private/Users/StoreUpdateRequest.php | 0 .../Private/Users/UpdatePasswordRequest.php | 0 .../app}/Http/Resources/Api/V1/Captcha.php | 0 .../Api/V1/CaptchaVerificationInformation.php | 0 .../Http/Resources/Api/V1/CaptchaVerified.php | 0 app/{ => application/app}/Models/Captcha.php | 0 .../app}/Models/CaptchaLog.php | 0 .../app}/Models/CaptchaToken.php | 0 app/{ => application/app}/Models/Role.php | 0 .../app}/Models/RolePermission.php | 0 app/{ => application/app}/Models/User.php | 0 .../app}/Policies/CaptchaTokenPolicy.php | 0 app/{ => application/app}/Policies/Policy.php | 0 .../app}/Policies/RolePolicy.php | 0 .../app}/Policies/UserPolicy.php | 0 .../app}/Providers/AppServiceProvider.php | 0 .../app}/Providers/AuthServiceProvider.php | 0 .../Providers/BroadcastServiceProvider.php | 0 .../app}/Providers/EventServiceProvider.php | 0 .../app}/Providers/RouteServiceProvider.php | 0 .../Repositories/CaptchaLogRepository.php | 0 .../app}/Repositories/CaptchaRepository.php | 0 .../Repositories/CaptchaTokenRepository.php | 0 .../Repositories/DataCaptchaRepository.php | 0 .../app}/Repositories/RoleRepository.php | 0 .../app}/Repositories/UserRepository.php | 0 .../app}/Rules/Permission.php | 0 .../Api/V1/CaptchaGenerateService/Captcha.php | 0 .../Api/V1/CaptchaService/Captcha.php | 0 .../CaptchaVerificationInformationResult.php | 0 .../CaptchaService/CaptchaVerifiedResult.php | 0 .../app}/ServiceResults/ServiceResult.php | 0 .../ServiceResults/ServiceResultArray.php | 0 .../ServiceResults/ServiceResultError.php | 0 .../ServiceResults/ServiceResultSuccess.php | 0 .../app}/ServiceResults/StoreUpdateResult.php | 0 .../Api/V1/CaptchaGenerateService.php | 0 .../app}/Services/Api/V1/CaptchaService.php | 0 .../app}/Services/AuthService.php | 0 .../app}/Services/Captcha/CaptchaHandler.php | 0 .../app}/Services/Captcha/CheckingCommand.php | 0 .../Services/CaptchaLog/CaptchaLogHandler.php | 0 .../Services/CaptchaToken/BuilderCommand.php | 0 .../CaptchaToken/CaptchaTokenHandler.php | 0 .../app}/Services/CryptographyString.php | 0 .../GenerateTokenCommand.php | 0 .../GenerateTokenUlidCommand.php | 0 .../GenerateTokenUuidCommand.php | 0 .../Services/Private/CaptchaTokenService.php | 0 .../app}/Services/Private/ProfileService.php | 0 .../app}/Services/Private/RoleService.php | 0 .../app}/Services/Private/UserService.php | 0 .../app}/Services/Role/BuilderCommand.php | 0 .../app}/Services/Role/RoleCommandHandler.php | 0 .../RoleSyncPermissionsCommandHandler.php | 0 .../Search/CreateSearchInstanceCommand.php | 0 .../app}/Services/Search/Search.php | 0 .../app}/Services/Service.php | 0 .../app}/Services/User/BuilderCommand.php | 0 .../app}/Services/User/UserCommandHandler.php | 0 .../Components/Private/Forms/Checkbox.php | 0 .../View/Components/Private/Forms/Form.php | 0 .../View/Components/Private/Forms/Input.php | 0 .../Private/Forms/MultiCheckbox.php | 0 .../Private/Forms/PermissionsForRole.php | 0 .../View/Components/Private/Forms/Select.php | 0 .../app}/View/Components/Private/Layout.php | 0 .../app}/View/Components/Public/Layout.php | 0 artisan => app/application/artisan | 0 .../application/bootstrap}/app.php | 0 .../application/bootstrap}/cache/.gitignore | 0 .../application/composer.json | 0 .../application/composer.lock | 0 {config => app/application/config}/app.php | 0 {config => app/application/config}/auth.php | 0 .../application/config}/broadcasting.php | 0 {config => app/application/config}/cache.php | 0 .../application/config}/captcha.php | 0 {config => app/application/config}/cors.php | 0 .../application/config}/database.php | 0 .../application/config}/filesystems.php | 0 .../application/config}/hashing.php | 0 .../application/config}/logging.php | 0 {config => app/application/config}/mail.php | 0 {config => app/application/config}/queue.php | 0 .../application/config}/rate_limiting.php | 0 .../application/config}/sanctum.php | 0 .../application/config}/services.php | 0 .../application/config}/session.php | 0 {config => app/application/config}/view.php | 0 .../application/database}/.gitignore | 0 .../database}/factories/UserFactory.php | 0 .../2014_10_12_000000_create_users_table.php | 0 ...000_create_password_reset_tokens_table.php | 0 ..._08_19_000000_create_failed_jobs_table.php | 0 ...01_create_personal_access_tokens_table.php | 0 .../2023_06_28_155124_create_roles.php | 0 ..._03_145020_create_captcha_tokens_table.php | 0 .../2023_08_27_163058_create_captcha.php | 0 .../database}/seeders/DatabaseSeeder.php | 0 {lang => app/application/lang}/en.json | 0 {lang => app/application/lang}/en/auth.php | 0 .../application/lang}/en/http-statuses.php | 0 .../application/lang}/en/pagination.php | 0 .../application/lang}/en/passwords.php | 0 .../application/lang}/en/permissions.php | 0 .../application/lang}/en/sections.php | 0 .../application/lang}/en/validation.php | 0 {lang => app/application/lang}/ru.json | 0 {lang => app/application/lang}/ru/auth.php | 0 .../application/lang}/ru/http-statuses.php | 0 .../application/lang}/ru/pagination.php | 0 .../application/lang}/ru/passwords.php | 0 .../application/lang}/ru/permissions.php | 0 .../application/lang}/ru/sections.php | 0 .../application/lang}/ru/validation.php | 0 .../application/package-lock.json | 0 package.json => app/application/package.json | 0 phpunit.xml => app/application/phpunit.xml | 0 {public => app/application/public}/.htaccess | 0 .../public}/captcha/images/refresh.png | Bin .../application/public}/captcha/script.js | 0 .../application/public}/captcha/style.css | 0 .../application/public}/favicon.ico | 0 {public => app/application/public}/index.php | 0 {public => app/application/public}/robots.txt | 0 .../application/public}/swagger.json | 0 .../resources}/captcha/backgrounds-body/1.jpg | Bin .../resources}/captcha/backgrounds-body/2.jpg | Bin .../resources}/captcha/backgrounds-body/3.jpg | Bin .../resources}/captcha/backgrounds-body/4.jpg | Bin .../resources}/captcha/backgrounds-body/5.jpg | Bin .../backgrounds-body/license/license.txt | 0 .../captcha/backgrounds-head/01.png | Bin .../captcha/backgrounds-head/02.png | Bin .../captcha/backgrounds-head/03.png | Bin .../captcha/backgrounds-head/04.png | Bin .../captcha/backgrounds-head/05.png | Bin .../captcha/backgrounds-head/06.png | Bin .../captcha/backgrounds-head/07.png | Bin .../captcha/backgrounds-head/08.png | Bin .../captcha/backgrounds-head/09.png | Bin .../captcha/backgrounds-head/10.png | Bin .../captcha/backgrounds-head/11.png | Bin .../captcha/backgrounds-head/12.png | Bin .../captcha/backgrounds-head/r1.jpg | Bin .../captcha/backgrounds-head/r2.jpg | Bin .../captcha/backgrounds-head/r3.jpg | Bin .../captcha/backgrounds-head/r4.jpg | Bin .../captcha/backgrounds-head/r5.jpg | Bin .../captcha/fonts/ABeeZee_regular.ttf | Bin .../resources}/captcha/fonts/Asap_700.ttf | Bin .../resources}/captcha/fonts/Khand_500.ttf | Bin .../captcha/fonts/Open_Sans_regular.ttf | Bin .../captcha/fonts/Roboto_regular.ttf | Bin .../captcha/fonts/Ubuntu_regular.ttf | Bin .../captcha/fonts/license/LICENSE-2.0.txt | 0 .../resources}/captcha/fonts/license/OFL.txt | 0 .../fonts/license/ubuntu-font-licence-1.0.txt | 0 .../private/_scripts/_click-confirm.blade.php | 0 .../private/captcha_tokens/_from.blade.php | 0 .../private/captcha_tokens/_top.blade.php | 0 .../private/captcha_tokens/create.blade.php | 0 .../private/captcha_tokens/edit.blade.php | 0 .../private/captcha_tokens/index.blade.php | 0 .../components/forms/checkbox.blade.php | 0 .../private/components/forms/input.blade.php | 0 .../components/forms/multi_checkbox.blade.php | 0 .../forms/permissions_for_role.blade.php | 0 .../private/components/forms/select.blade.php | 0 .../views/private/dashboard/index.blade.php | 0 .../views/private/layout/_errors.blade.php | 0 .../private/layout/_navigation.blade.php | 0 .../views/private/layout/_success.blade.php | 0 .../views/private/layout/app.blade.php | 0 .../views/private/profile/profile.blade.php | 0 .../views/private/profile/settings.blade.php | 0 .../views/private/roles/_from.blade.php | 0 .../views/private/roles/_top.blade.php | 0 .../views/private/roles/create.blade.php | 0 .../views/private/roles/edit.blade.php | 0 .../views/private/roles/index.blade.php | 0 .../views/private/users/_from.blade.php | 0 .../views/private/users/_top.blade.php | 0 .../views/private/users/create.blade.php | 0 .../views/private/users/edit.blade.php | 0 .../views/private/users/index.blade.php | 0 .../views/public/layout/app.blade.php | 0 .../resources}/views/public/login.blade.php | 0 .../application/resources}/volt/LICENSE.md | 0 .../resources}/volt/images/brand/dark.png | Bin .../resources}/volt/images/brand/light.png | Bin .../volt/images/illustrations/signin.svg | 0 .../application/resources}/volt/js/app.js | 0 .../resources}/volt/js/bootstrap.js | 0 .../application/resources}/volt/js/volt.js | 0 .../resources}/volt/scss/_variables.scss | 0 .../application/resources}/volt/scss/app.scss | 0 .../volt/scss/volt/_components.scss | 0 .../resources}/volt/scss/volt/_forms.scss | 0 .../resources}/volt/scss/volt/_functions.scss | 0 .../resources}/volt/scss/volt/_layout.scss | 0 .../resources}/volt/scss/volt/_mixins.scss | 0 .../resources}/volt/scss/volt/_utilities.scss | 0 .../resources}/volt/scss/volt/_variables.scss | 0 .../resources}/volt/scss/volt/_vendor.scss | 0 .../scss/volt/components/_accordions.scss | 0 .../volt/scss/volt/components/_alerts.scss | 0 .../scss/volt/components/_animations.scss | 0 .../volt/scss/volt/components/_avatars.scss | 0 .../volt/scss/volt/components/_badge.scss | 0 .../volt/scss/volt/components/_body.scss | 0 .../scss/volt/components/_breadcrumb.scss | 0 .../volt/scss/volt/components/_buttons.scss | 0 .../volt/scss/volt/components/_card.scss | 0 .../volt/scss/volt/components/_carousel.scss | 0 .../volt/scss/volt/components/_charts.scss | 0 .../volt/scss/volt/components/_close.scss | 0 .../scss/volt/components/_custom-forms.scss | 0 .../scss/volt/components/_datepicker.scss | 0 .../volt/scss/volt/components/_dropdown.scss | 0 .../volt/scss/volt/components/_icons.scss | 0 .../volt/scss/volt/components/_images.scss | 0 .../scss/volt/components/_list-group.scss | 0 .../volt/scss/volt/components/_modal.scss | 0 .../volt/scss/volt/components/_nav.scss | 0 .../scss/volt/components/_pagination.scss | 0 .../volt/scss/volt/components/_popover.scss | 0 .../volt/scss/volt/components/_progress.scss | 0 .../volt/scss/volt/components/_scrollbar.scss | 0 .../volt/scss/volt/components/_shapes.scss | 0 .../volt/scss/volt/components/_steps.scss | 0 .../volt/scss/volt/components/_tables.scss | 0 .../volt/scss/volt/components/_timelines.scss | 0 .../volt/scss/volt/components/_tooltip.scss | 0 .../volt/scss/volt/components/_type.scss | 0 .../volt/scss/volt/forms/_form-check.scss | 0 .../volt/scss/volt/forms/_form-control.scss | 0 .../volt/scss/volt/forms/_form-select.scss | 0 .../volt/scss/volt/forms/_input-group.scss | 0 .../volt/scss/volt/layout/_footer.scss | 0 .../volt/scss/volt/layout/_navbar.scss | 0 .../volt/scss/volt/layout/_section.scss | 0 .../volt/scss/volt/layout/_sidebar.scss | 0 .../volt/scss/volt/layout/_sidenav.scss | 0 .../volt/scss/volt/mixins/_animations.scss | 0 .../scss/volt/mixins/_background-variant.scss | 0 .../volt/scss/volt/mixins/_icon.scss | 0 .../volt/scss/volt/mixins/_modals.scss | 0 .../volt/scss/volt/mixins/_popover.scss | 0 .../volt/scss/volt/mixins/_transform.scss | 0 .../volt/scss/volt/mixins/_utilities.scss | 0 {routes => app/application/routes}/api-v1.php | 0 .../application/routes}/channels.php | 0 .../application/routes}/console.php | 0 {routes => app/application/routes}/web.php | 0 .../application/storage}/app/.gitignore | 0 .../storage}/app/public/.gitignore | 0 .../application/storage}/framework/.gitignore | 0 .../storage}/framework/cache/.gitignore | 0 .../storage}/framework/cache/data/.gitignore | 0 .../storage}/framework/sessions/.gitignore | 0 .../storage}/framework/testing/.gitignore | 0 .../storage}/framework/views/.gitignore | 0 .../application/storage}/logs/.gitignore | 0 .../application/tests}/CreatesApplication.php | 0 .../tests}/Feature/ExampleTest.php | 0 {tests => app/application/tests}/TestCase.php | 0 .../application/tests}/Unit/ExampleTest.php | 0 .../application/vite.config.js | 0 app/docker/.dockerignore | 8 ++ {docker/app => app/docker}/Dockerfile | 49 +++++++-- app/docker/docker-entrypoint_dev.sh | 103 ++++++++++++++++++ .../docker/docker-entrypoint_prod.sh | 0 {docker/app => app/docker}/unit-config.json | 0 db/.gitignore | 1 + docker-compose-prod.yml | 51 +++++---- docker-compose-prod_docker-hub.yml | 43 ++++++++ docker-compose.yml | 63 ++++++----- docker/dev/.gitignore | 2 - docker/dev/angie/config/default.conf | 44 -------- docker/dev/my.cnf | 9 -- docker/dev/php/Dockerfile | 85 --------------- docker/dev/php/config/php.ini | 8 -- docker/dev/php/config/xdebug.ini | 4 - docker/dev/php/start.sh | 22 ---- {docker/nginx => nginx}/Dockerfile | 0 {docker/nginx => nginx}/nginx.conf | 0 392 files changed, 362 insertions(+), 316 deletions(-) rename .editorconfig => app/application/.editorconfig (100%) create mode 100644 app/application/.env.example rename .gitattributes => app/application/.gitattributes (100%) create mode 100644 app/application/.gitignore rename LICENSE.md => app/application/LICENSE.md (95%) rename app/{ => application/app}/Captcha/Config/ImageBody.php (100%) rename app/{ => application/app}/Captcha/Config/ImageHead.php (100%) rename app/{ => application/app}/Captcha/Contracts/Image.php (100%) rename app/{ => application/app}/Captcha/Contracts/ImageBody.php (100%) rename app/{ => application/app}/Captcha/Contracts/ImageHead.php (100%) rename app/{ => application/app}/Captcha/Contracts/ImageLines.php (100%) rename app/{ => application/app}/Captcha/Contracts/ImageManager.php (100%) rename app/{ => application/app}/Captcha/Contracts/Type.php (100%) rename app/{ => application/app}/Captcha/Dto/Coordinators.php (100%) rename app/{ => application/app}/Captcha/Dto/Image.php (100%) rename app/{ => application/app}/Captcha/Dto/ImageBody.php (100%) rename app/{ => application/app}/Captcha/Dto/ImageHead.php (100%) rename app/{ => application/app}/Captcha/Dto/Sector.php (100%) rename app/{ => application/app}/Captcha/Dto/Sectors.php (100%) rename app/{ => application/app}/Captcha/Dto/Symbols.php (100%) rename app/{ => application/app}/Captcha/Enums/SymbolType.php (100%) rename app/{ => application/app}/Captcha/Exceptions/CaptchaException.php (100%) rename app/{ => application/app}/Captcha/Images/Body.php (100%) rename app/{ => application/app}/Captcha/Images/Head.php (100%) rename app/{ => application/app}/Captcha/Images/Image.php (100%) rename app/{ => application/app}/Captcha/Images/ImageManager.php (100%) rename app/{ => application/app}/Captcha/Images/Lines.php (100%) rename app/{ => application/app}/Captcha/Type.php (100%) rename app/{ => application/app}/Captcha/Types/StringType.php (100%) rename app/{ => application/app}/Console/Commands/CreateUserAdmin.php (100%) rename app/{ => application/app}/Console/Kernel.php (100%) rename app/{ => application/app}/Contracts/CryptographyContract.php (100%) rename app/{ => application/app}/Contracts/FormRequestDto.php (100%) rename app/{ => application/app}/Contracts/GenerateTokenCommand.php (100%) rename app/{ => application/app}/Contracts/Search.php (100%) rename app/{ => application/app}/Contracts/ServiceResult.php (100%) rename app/{ => application/app}/Contracts/ServiceResultError.php (100%) rename app/{ => application/app}/Dto/Builder/CaptchaToken.php (100%) rename app/{ => application/app}/Dto/Builder/Role.php (100%) rename app/{ => application/app}/Dto/Builder/User.php (100%) rename app/{ => application/app}/Dto/HttpUserData.php (100%) rename app/{ => application/app}/Dto/QuerySettingsDto.php (100%) rename app/{ => application/app}/Dto/Repository/DataCaptchaRepository/DataCaptcha.php (100%) rename app/{ => application/app}/Dto/Request/Api/V1/Captcha/CaptchaPublicToken.php (100%) rename app/{ => application/app}/Dto/Request/Api/V1/Captcha/CheckingDto.php (100%) rename app/{ => application/app}/Dto/Request/Api/V1/Captcha/VerificationInformationDto.php (100%) rename app/{ => application/app}/Dto/Request/Authorization.php (100%) rename app/{ => application/app}/Dto/Request/Dto.php (100%) rename app/{ => application/app}/Dto/Request/Private/CaptchaToken/Index.php (100%) rename app/{ => application/app}/Dto/Request/Private/CaptchaToken/StoreUpdate.php (100%) rename app/{ => application/app}/Dto/Request/Private/Profile/Update.php (100%) rename app/{ => application/app}/Dto/Request/Private/Profile/UpdateSettings.php (100%) rename app/{ => application/app}/Dto/Request/Private/Role/Index.php (100%) rename app/{ => application/app}/Dto/Request/Private/Role/StoreUpdate.php (100%) rename app/{ => application/app}/Dto/Request/Private/User/Index.php (100%) rename app/{ => application/app}/Dto/Request/Private/User/StoreUpdate.php (100%) rename app/{ => application/app}/Dto/Request/Private/User/UpdatePassword.php (100%) rename app/{ => application/app}/Dto/User/ManyRoleDto.php (100%) rename app/{ => application/app}/Enums/CaptchaLogType.php (100%) rename app/{ => application/app}/Enums/Lang.php (100%) rename app/{ => application/app}/Enums/Permission.php (100%) rename app/{ => application/app}/Enums/SystemRole.php (100%) rename app/{ => application/app}/Exceptions/Dto/User/ManyRoleDtoException.php (100%) rename app/{ => application/app}/Exceptions/Handler.php (100%) rename app/{ => application/app}/Exceptions/Repositories/DataCaptchaRepositoryException.php (100%) rename app/{ => application/app}/Exceptions/Rule/RoleSyncPermissionsCommandHandlerException.php (100%) rename app/{ => application/app}/Exceptions/Service/GenerateTokenCommandException.php (100%) rename app/{ => application/app}/Helpers/Helpers.php (100%) rename app/{ => application/app}/Http/Controllers/Api/V1/CaptchaController.php (100%) rename app/{ => application/app}/Http/Controllers/Api/V1/Controller.php (100%) rename app/{ => application/app}/Http/Controllers/AuthController.php (100%) rename app/{ => application/app}/Http/Controllers/Controller.php (100%) rename app/{ => application/app}/Http/Controllers/Private/CaptchaTokensController.php (100%) rename app/{ => application/app}/Http/Controllers/Private/Controller.php (100%) rename app/{ => application/app}/Http/Controllers/Private/DashboardController.php (100%) rename app/{ => application/app}/Http/Controllers/Private/ProfileController.php (100%) rename app/{ => application/app}/Http/Controllers/Private/RolesController.php (100%) rename app/{ => application/app}/Http/Controllers/Private/UsersController.php (100%) rename app/{ => application/app}/Http/Kernel.php (100%) rename app/{ => application/app}/Http/Middleware/Authenticate.php (100%) rename app/{ => application/app}/Http/Middleware/EncryptCookies.php (100%) rename app/{ => application/app}/Http/Middleware/EnsureUserIsVerified.php (100%) rename app/{ => application/app}/Http/Middleware/PreventRequestsDuringMaintenance.php (100%) rename app/{ => application/app}/Http/Middleware/RedirectIfAuthenticated.php (100%) rename app/{ => application/app}/Http/Middleware/TrimStrings.php (100%) rename app/{ => application/app}/Http/Middleware/TrustHosts.php (100%) rename app/{ => application/app}/Http/Middleware/TrustProxies.php (100%) rename app/{ => application/app}/Http/Middleware/UserLocale.php (100%) rename app/{ => application/app}/Http/Middleware/ValidateSignature.php (100%) rename app/{ => application/app}/Http/Middleware/VerifyCsrfToken.php (100%) rename app/{ => application/app}/Http/Requests/Api/V1/Captcha/CaptchaRequest.php (100%) rename app/{ => application/app}/Http/Requests/Api/V1/Captcha/CheckingRequest.php (100%) rename app/{ => application/app}/Http/Requests/Api/V1/Captcha/VerificationInformationRequest.php (100%) rename app/{ => application/app}/Http/Requests/AuthorizationRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/CaptchaTokens/IndexRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/CaptchaTokens/StoreUpdateRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Profile/UpdatePasswordRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Profile/UpdateRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Profile/UpdateSettingsRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Roles/IndexRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Roles/StoreUpdateRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Users/IndexRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Users/StoreUpdateRequest.php (100%) rename app/{ => application/app}/Http/Requests/Private/Users/UpdatePasswordRequest.php (100%) rename app/{ => application/app}/Http/Resources/Api/V1/Captcha.php (100%) rename app/{ => application/app}/Http/Resources/Api/V1/CaptchaVerificationInformation.php (100%) rename app/{ => application/app}/Http/Resources/Api/V1/CaptchaVerified.php (100%) rename app/{ => application/app}/Models/Captcha.php (100%) rename app/{ => application/app}/Models/CaptchaLog.php (100%) rename app/{ => application/app}/Models/CaptchaToken.php (100%) rename app/{ => application/app}/Models/Role.php (100%) rename app/{ => application/app}/Models/RolePermission.php (100%) rename app/{ => application/app}/Models/User.php (100%) rename app/{ => application/app}/Policies/CaptchaTokenPolicy.php (100%) rename app/{ => application/app}/Policies/Policy.php (100%) rename app/{ => application/app}/Policies/RolePolicy.php (100%) rename app/{ => application/app}/Policies/UserPolicy.php (100%) rename app/{ => application/app}/Providers/AppServiceProvider.php (100%) rename app/{ => application/app}/Providers/AuthServiceProvider.php (100%) rename app/{ => application/app}/Providers/BroadcastServiceProvider.php (100%) rename app/{ => application/app}/Providers/EventServiceProvider.php (100%) rename app/{ => application/app}/Providers/RouteServiceProvider.php (100%) rename app/{ => application/app}/Repositories/CaptchaLogRepository.php (100%) rename app/{ => application/app}/Repositories/CaptchaRepository.php (100%) rename app/{ => application/app}/Repositories/CaptchaTokenRepository.php (100%) rename app/{ => application/app}/Repositories/DataCaptchaRepository.php (100%) rename app/{ => application/app}/Repositories/RoleRepository.php (100%) rename app/{ => application/app}/Repositories/UserRepository.php (100%) rename app/{ => application/app}/Rules/Permission.php (100%) rename app/{ => application/app}/ServiceResults/Api/V1/CaptchaGenerateService/Captcha.php (100%) rename app/{ => application/app}/ServiceResults/Api/V1/CaptchaService/Captcha.php (100%) rename app/{ => application/app}/ServiceResults/Api/V1/CaptchaService/CaptchaVerificationInformationResult.php (100%) rename app/{ => application/app}/ServiceResults/Api/V1/CaptchaService/CaptchaVerifiedResult.php (100%) rename app/{ => application/app}/ServiceResults/ServiceResult.php (100%) rename app/{ => application/app}/ServiceResults/ServiceResultArray.php (100%) rename app/{ => application/app}/ServiceResults/ServiceResultError.php (100%) rename app/{ => application/app}/ServiceResults/ServiceResultSuccess.php (100%) rename app/{ => application/app}/ServiceResults/StoreUpdateResult.php (100%) rename app/{ => application/app}/Services/Api/V1/CaptchaGenerateService.php (100%) rename app/{ => application/app}/Services/Api/V1/CaptchaService.php (100%) rename app/{ => application/app}/Services/AuthService.php (100%) rename app/{ => application/app}/Services/Captcha/CaptchaHandler.php (100%) rename app/{ => application/app}/Services/Captcha/CheckingCommand.php (100%) rename app/{ => application/app}/Services/CaptchaLog/CaptchaLogHandler.php (100%) rename app/{ => application/app}/Services/CaptchaToken/BuilderCommand.php (100%) rename app/{ => application/app}/Services/CaptchaToken/CaptchaTokenHandler.php (100%) rename app/{ => application/app}/Services/CryptographyString.php (100%) rename app/{ => application/app}/Services/GenerateTokenCommand/GenerateTokenCommand.php (100%) rename app/{ => application/app}/Services/GenerateTokenCommand/GenerateTokenUlidCommand.php (100%) rename app/{ => application/app}/Services/GenerateTokenCommand/GenerateTokenUuidCommand.php (100%) rename app/{ => application/app}/Services/Private/CaptchaTokenService.php (100%) rename app/{ => application/app}/Services/Private/ProfileService.php (100%) rename app/{ => application/app}/Services/Private/RoleService.php (100%) rename app/{ => application/app}/Services/Private/UserService.php (100%) rename app/{ => application/app}/Services/Role/BuilderCommand.php (100%) rename app/{ => application/app}/Services/Role/RoleCommandHandler.php (100%) rename app/{ => application/app}/Services/Role/RoleSyncPermissionsCommandHandler.php (100%) rename app/{ => application/app}/Services/Search/CreateSearchInstanceCommand.php (100%) rename app/{ => application/app}/Services/Search/Search.php (100%) rename app/{ => application/app}/Services/Service.php (100%) rename app/{ => application/app}/Services/User/BuilderCommand.php (100%) rename app/{ => application/app}/Services/User/UserCommandHandler.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/Checkbox.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/Form.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/Input.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/MultiCheckbox.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/PermissionsForRole.php (100%) rename app/{ => application/app}/View/Components/Private/Forms/Select.php (100%) rename app/{ => application/app}/View/Components/Private/Layout.php (100%) rename app/{ => application/app}/View/Components/Public/Layout.php (100%) rename artisan => app/application/artisan (100%) rename {bootstrap => app/application/bootstrap}/app.php (100%) rename {bootstrap => app/application/bootstrap}/cache/.gitignore (100%) mode change 100644 => 100755 rename composer.json => app/application/composer.json (100%) rename composer.lock => app/application/composer.lock (100%) rename {config => app/application/config}/app.php (100%) rename {config => app/application/config}/auth.php (100%) rename {config => app/application/config}/broadcasting.php (100%) rename {config => app/application/config}/cache.php (100%) rename {config => app/application/config}/captcha.php (100%) rename {config => app/application/config}/cors.php (100%) rename {config => app/application/config}/database.php (100%) rename {config => app/application/config}/filesystems.php (100%) rename {config => app/application/config}/hashing.php (100%) rename {config => app/application/config}/logging.php (100%) rename {config => app/application/config}/mail.php (100%) rename {config => app/application/config}/queue.php (100%) rename {config => app/application/config}/rate_limiting.php (100%) rename {config => app/application/config}/sanctum.php (100%) rename {config => app/application/config}/services.php (100%) rename {config => app/application/config}/session.php (100%) rename {config => app/application/config}/view.php (100%) rename {database => app/application/database}/.gitignore (100%) rename {database => app/application/database}/factories/UserFactory.php (100%) rename {database => app/application/database}/migrations/2014_10_12_000000_create_users_table.php (100%) rename {database => app/application/database}/migrations/2014_10_12_100000_create_password_reset_tokens_table.php (100%) rename {database => app/application/database}/migrations/2019_08_19_000000_create_failed_jobs_table.php (100%) rename {database => app/application/database}/migrations/2019_12_14_000001_create_personal_access_tokens_table.php (100%) rename {database => app/application/database}/migrations/2023_06_28_155124_create_roles.php (100%) rename {database => app/application/database}/migrations/2023_08_03_145020_create_captcha_tokens_table.php (100%) rename {database => app/application/database}/migrations/2023_08_27_163058_create_captcha.php (100%) rename {database => app/application/database}/seeders/DatabaseSeeder.php (100%) rename {lang => app/application/lang}/en.json (100%) rename {lang => app/application/lang}/en/auth.php (100%) rename {lang => app/application/lang}/en/http-statuses.php (100%) rename {lang => app/application/lang}/en/pagination.php (100%) rename {lang => app/application/lang}/en/passwords.php (100%) rename {lang => app/application/lang}/en/permissions.php (100%) rename {lang => app/application/lang}/en/sections.php (100%) rename {lang => app/application/lang}/en/validation.php (100%) rename {lang => app/application/lang}/ru.json (100%) rename {lang => app/application/lang}/ru/auth.php (100%) rename {lang => app/application/lang}/ru/http-statuses.php (100%) rename {lang => app/application/lang}/ru/pagination.php (100%) rename {lang => app/application/lang}/ru/passwords.php (100%) rename {lang => app/application/lang}/ru/permissions.php (100%) rename {lang => app/application/lang}/ru/sections.php (100%) rename {lang => app/application/lang}/ru/validation.php (100%) rename package-lock.json => app/application/package-lock.json (100%) rename package.json => app/application/package.json (100%) rename phpunit.xml => app/application/phpunit.xml (100%) rename {public => app/application/public}/.htaccess (100%) rename {public => app/application/public}/captcha/images/refresh.png (100%) rename {public => app/application/public}/captcha/script.js (100%) rename {public => app/application/public}/captcha/style.css (100%) rename {public => app/application/public}/favicon.ico (100%) rename {public => app/application/public}/index.php (100%) rename {public => app/application/public}/robots.txt (100%) rename {public => app/application/public}/swagger.json (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/1.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/2.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/3.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/4.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/5.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-body/license/license.txt (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/01.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/02.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/03.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/04.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/05.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/06.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/07.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/08.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/09.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/10.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/11.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/12.png (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/r1.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/r2.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/r3.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/r4.jpg (100%) rename {resources => app/application/resources}/captcha/backgrounds-head/r5.jpg (100%) rename {resources => app/application/resources}/captcha/fonts/ABeeZee_regular.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/Asap_700.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/Khand_500.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/Open_Sans_regular.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/Roboto_regular.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/Ubuntu_regular.ttf (100%) rename {resources => app/application/resources}/captcha/fonts/license/LICENSE-2.0.txt (100%) rename {resources => app/application/resources}/captcha/fonts/license/OFL.txt (100%) rename {resources => app/application/resources}/captcha/fonts/license/ubuntu-font-licence-1.0.txt (100%) rename {resources => app/application/resources}/views/private/_scripts/_click-confirm.blade.php (100%) rename {resources => app/application/resources}/views/private/captcha_tokens/_from.blade.php (100%) rename {resources => app/application/resources}/views/private/captcha_tokens/_top.blade.php (100%) rename {resources => app/application/resources}/views/private/captcha_tokens/create.blade.php (100%) rename {resources => app/application/resources}/views/private/captcha_tokens/edit.blade.php (100%) rename {resources => app/application/resources}/views/private/captcha_tokens/index.blade.php (100%) rename {resources => app/application/resources}/views/private/components/forms/checkbox.blade.php (100%) rename {resources => app/application/resources}/views/private/components/forms/input.blade.php (100%) rename {resources => app/application/resources}/views/private/components/forms/multi_checkbox.blade.php (100%) rename {resources => app/application/resources}/views/private/components/forms/permissions_for_role.blade.php (100%) rename {resources => app/application/resources}/views/private/components/forms/select.blade.php (100%) rename {resources => app/application/resources}/views/private/dashboard/index.blade.php (100%) rename {resources => app/application/resources}/views/private/layout/_errors.blade.php (100%) rename {resources => app/application/resources}/views/private/layout/_navigation.blade.php (100%) rename {resources => app/application/resources}/views/private/layout/_success.blade.php (100%) rename {resources => app/application/resources}/views/private/layout/app.blade.php (100%) rename {resources => app/application/resources}/views/private/profile/profile.blade.php (100%) rename {resources => app/application/resources}/views/private/profile/settings.blade.php (100%) rename {resources => app/application/resources}/views/private/roles/_from.blade.php (100%) rename {resources => app/application/resources}/views/private/roles/_top.blade.php (100%) rename {resources => app/application/resources}/views/private/roles/create.blade.php (100%) rename {resources => app/application/resources}/views/private/roles/edit.blade.php (100%) rename {resources => app/application/resources}/views/private/roles/index.blade.php (100%) rename {resources => app/application/resources}/views/private/users/_from.blade.php (100%) rename {resources => app/application/resources}/views/private/users/_top.blade.php (100%) rename {resources => app/application/resources}/views/private/users/create.blade.php (100%) rename {resources => app/application/resources}/views/private/users/edit.blade.php (100%) rename {resources => app/application/resources}/views/private/users/index.blade.php (100%) rename {resources => app/application/resources}/views/public/layout/app.blade.php (100%) rename {resources => app/application/resources}/views/public/login.blade.php (100%) rename {resources => app/application/resources}/volt/LICENSE.md (100%) rename {resources => app/application/resources}/volt/images/brand/dark.png (100%) rename {resources => app/application/resources}/volt/images/brand/light.png (100%) rename {resources => app/application/resources}/volt/images/illustrations/signin.svg (100%) rename {resources => app/application/resources}/volt/js/app.js (100%) rename {resources => app/application/resources}/volt/js/bootstrap.js (100%) rename {resources => app/application/resources}/volt/js/volt.js (100%) rename {resources => app/application/resources}/volt/scss/_variables.scss (100%) rename {resources => app/application/resources}/volt/scss/app.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_components.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_forms.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_functions.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_layout.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_mixins.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_utilities.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_variables.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/_vendor.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_accordions.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_alerts.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_animations.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_avatars.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_badge.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_body.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_breadcrumb.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_buttons.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_card.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_carousel.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_charts.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_close.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_custom-forms.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_datepicker.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_dropdown.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_icons.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_images.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_list-group.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_modal.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_nav.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_pagination.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_popover.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_progress.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_scrollbar.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_shapes.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_steps.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_tables.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_timelines.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_tooltip.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/components/_type.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/forms/_form-check.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/forms/_form-control.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/forms/_form-select.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/forms/_input-group.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/layout/_footer.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/layout/_navbar.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/layout/_section.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/layout/_sidebar.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/layout/_sidenav.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_animations.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_background-variant.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_icon.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_modals.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_popover.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_transform.scss (100%) rename {resources => app/application/resources}/volt/scss/volt/mixins/_utilities.scss (100%) rename {routes => app/application/routes}/api-v1.php (100%) rename {routes => app/application/routes}/channels.php (100%) rename {routes => app/application/routes}/console.php (100%) rename {routes => app/application/routes}/web.php (100%) rename {storage => app/application/storage}/app/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/app/public/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/cache/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/cache/data/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/sessions/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/testing/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/framework/views/.gitignore (100%) mode change 100644 => 100755 rename {storage => app/application/storage}/logs/.gitignore (100%) mode change 100644 => 100755 rename {tests => app/application/tests}/CreatesApplication.php (100%) rename {tests => app/application/tests}/Feature/ExampleTest.php (100%) rename {tests => app/application/tests}/TestCase.php (100%) rename {tests => app/application/tests}/Unit/ExampleTest.php (100%) rename vite.config.js => app/application/vite.config.js (100%) create mode 100644 app/docker/.dockerignore rename {docker/app => app/docker}/Dockerfile (72%) create mode 100644 app/docker/docker-entrypoint_dev.sh rename docker/app/docker-entrypoint.sh => app/docker/docker-entrypoint_prod.sh (100%) rename {docker/app => app/docker}/unit-config.json (100%) create mode 100644 db/.gitignore create mode 100644 docker-compose-prod_docker-hub.yml delete mode 100644 docker/dev/.gitignore delete mode 100644 docker/dev/angie/config/default.conf delete mode 100644 docker/dev/my.cnf delete mode 100644 docker/dev/php/Dockerfile delete mode 100644 docker/dev/php/config/php.ini delete mode 100644 docker/dev/php/config/xdebug.ini delete mode 100755 docker/dev/php/start.sh rename {docker/nginx => nginx}/Dockerfile (100%) rename {docker/nginx => nginx}/nginx.conf (100%) diff --git a/.env.example b/.env.example index 4499f8a..bbe856a 100644 --- a/.env.example +++ b/.env.example @@ -1,68 +1,8 @@ -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_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/.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..e77cefd --- /dev/null +++ b/app/application/.env.example @@ -0,0 +1,68 @@ +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=db +DB_PORT=3306 +DB_DATABASE=captcha +DB_USERNAME=captcha +DB_PASSWORD=captcha_pass + +BROADCAST_DRIVER=log +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}" 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/LICENSE.md b/app/application/LICENSE.md similarity index 95% rename from LICENSE.md rename to app/application/LICENSE.md index 3f3a98e..7b16ba5 100644 --- a/LICENSE.md +++ b/app/application/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/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/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 100% rename from app/Enums/CaptchaLogType.php rename to app/application/app/Enums/CaptchaLogType.php 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/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 100% rename from app/Http/Controllers/AuthController.php rename to app/application/app/Http/Controllers/AuthController.php 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/Http/Controllers/Private/DashboardController.php b/app/application/app/Http/Controllers/Private/DashboardController.php similarity index 100% rename from app/Http/Controllers/Private/DashboardController.php rename to app/application/app/Http/Controllers/Private/DashboardController.php 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 100% rename from app/Http/Controllers/Private/UsersController.php rename to app/application/app/Http/Controllers/Private/UsersController.php 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 100% rename from app/Http/Requests/AuthorizationRequest.php rename to app/application/app/Http/Requests/AuthorizationRequest.php 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/Models/Captcha.php b/app/application/app/Models/Captcha.php similarity index 100% rename from app/Models/Captcha.php rename to app/application/app/Models/Captcha.php diff --git a/app/Models/CaptchaLog.php b/app/application/app/Models/CaptchaLog.php similarity index 100% rename from app/Models/CaptchaLog.php rename to app/application/app/Models/CaptchaLog.php 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 100% rename from app/Models/User.php rename to app/application/app/Models/User.php 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/Repositories/CaptchaLogRepository.php b/app/application/app/Repositories/CaptchaLogRepository.php similarity index 100% rename from app/Repositories/CaptchaLogRepository.php rename to app/application/app/Repositories/CaptchaLogRepository.php 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/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 100% rename from app/Services/CaptchaLog/CaptchaLogHandler.php rename to app/application/app/Services/CaptchaLog/CaptchaLogHandler.php 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/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/Services/Role/BuilderCommand.php b/app/application/app/Services/Role/BuilderCommand.php similarity index 100% rename from app/Services/Role/BuilderCommand.php rename to app/application/app/Services/Role/BuilderCommand.php diff --git a/app/Services/Role/RoleCommandHandler.php b/app/application/app/Services/Role/RoleCommandHandler.php similarity index 100% rename from app/Services/Role/RoleCommandHandler.php rename to app/application/app/Services/Role/RoleCommandHandler.php diff --git a/app/Services/Role/RoleSyncPermissionsCommandHandler.php b/app/application/app/Services/Role/RoleSyncPermissionsCommandHandler.php similarity index 100% rename from app/Services/Role/RoleSyncPermissionsCommandHandler.php rename to app/application/app/Services/Role/RoleSyncPermissionsCommandHandler.php diff --git a/app/Services/Search/CreateSearchInstanceCommand.php b/app/application/app/Services/Search/CreateSearchInstanceCommand.php similarity index 100% rename from app/Services/Search/CreateSearchInstanceCommand.php rename to app/application/app/Services/Search/CreateSearchInstanceCommand.php diff --git a/app/Services/Search/Search.php b/app/application/app/Services/Search/Search.php similarity index 100% rename from app/Services/Search/Search.php rename to app/application/app/Services/Search/Search.php diff --git a/app/Services/Service.php b/app/application/app/Services/Service.php similarity index 100% rename from app/Services/Service.php rename to app/application/app/Services/Service.php diff --git a/app/Services/User/BuilderCommand.php b/app/application/app/Services/User/BuilderCommand.php similarity index 100% rename from app/Services/User/BuilderCommand.php rename to app/application/app/Services/User/BuilderCommand.php diff --git a/app/Services/User/UserCommandHandler.php b/app/application/app/Services/User/UserCommandHandler.php similarity index 100% rename from app/Services/User/UserCommandHandler.php rename to app/application/app/Services/User/UserCommandHandler.php diff --git a/app/View/Components/Private/Forms/Checkbox.php b/app/application/app/View/Components/Private/Forms/Checkbox.php similarity index 100% rename from app/View/Components/Private/Forms/Checkbox.php rename to app/application/app/View/Components/Private/Forms/Checkbox.php diff --git a/app/View/Components/Private/Forms/Form.php b/app/application/app/View/Components/Private/Forms/Form.php similarity index 100% rename from app/View/Components/Private/Forms/Form.php rename to app/application/app/View/Components/Private/Forms/Form.php diff --git a/app/View/Components/Private/Forms/Input.php b/app/application/app/View/Components/Private/Forms/Input.php similarity index 100% rename from app/View/Components/Private/Forms/Input.php rename to app/application/app/View/Components/Private/Forms/Input.php diff --git a/app/View/Components/Private/Forms/MultiCheckbox.php b/app/application/app/View/Components/Private/Forms/MultiCheckbox.php similarity index 100% rename from app/View/Components/Private/Forms/MultiCheckbox.php rename to app/application/app/View/Components/Private/Forms/MultiCheckbox.php diff --git a/app/View/Components/Private/Forms/PermissionsForRole.php b/app/application/app/View/Components/Private/Forms/PermissionsForRole.php similarity index 100% rename from app/View/Components/Private/Forms/PermissionsForRole.php rename to app/application/app/View/Components/Private/Forms/PermissionsForRole.php diff --git a/app/View/Components/Private/Forms/Select.php b/app/application/app/View/Components/Private/Forms/Select.php similarity index 100% rename from app/View/Components/Private/Forms/Select.php rename to app/application/app/View/Components/Private/Forms/Select.php diff --git a/app/View/Components/Private/Layout.php b/app/application/app/View/Components/Private/Layout.php similarity index 100% rename from app/View/Components/Private/Layout.php rename to app/application/app/View/Components/Private/Layout.php diff --git a/app/View/Components/Public/Layout.php b/app/application/app/View/Components/Public/Layout.php similarity index 100% rename from app/View/Components/Public/Layout.php rename to app/application/app/View/Components/Public/Layout.php diff --git a/artisan b/app/application/artisan similarity index 100% rename from artisan rename to app/application/artisan diff --git a/bootstrap/app.php b/app/application/bootstrap/app.php similarity index 100% rename from bootstrap/app.php rename to app/application/bootstrap/app.php diff --git a/bootstrap/cache/.gitignore b/app/application/bootstrap/cache/.gitignore old mode 100644 new mode 100755 similarity index 100% rename from bootstrap/cache/.gitignore rename to app/application/bootstrap/cache/.gitignore diff --git a/composer.json b/app/application/composer.json similarity index 100% rename from composer.json rename to app/application/composer.json diff --git a/composer.lock b/app/application/composer.lock similarity index 100% rename from composer.lock rename to app/application/composer.lock diff --git a/config/app.php b/app/application/config/app.php similarity index 100% rename from config/app.php rename to app/application/config/app.php 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/config/sanctum.php b/app/application/config/sanctum.php similarity index 100% rename from config/sanctum.php rename to app/application/config/sanctum.php 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 100% rename from lang/en.json rename to app/application/lang/en.json 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/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 100% rename from lang/en/validation.php rename to app/application/lang/en/validation.php diff --git a/lang/ru.json b/app/application/lang/ru.json similarity index 100% rename from lang/ru.json rename to app/application/lang/ru.json 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/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 100% rename from lang/ru/validation.php rename to app/application/lang/ru/validation.php diff --git a/package-lock.json b/app/application/package-lock.json similarity index 100% rename from package-lock.json rename to app/application/package-lock.json diff --git a/package.json b/app/application/package.json similarity index 100% rename from package.json rename to app/application/package.json 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/resources/views/private/dashboard/index.blade.php b/app/application/resources/views/private/dashboard/index.blade.php similarity index 100% rename from resources/views/private/dashboard/index.blade.php rename to app/application/resources/views/private/dashboard/index.blade.php 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 100% rename from resources/views/public/login.blade.php rename to app/application/resources/views/public/login.blade.php 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 100% rename from resources/volt/js/app.js rename to app/application/resources/volt/js/app.js 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/resources/volt/js/volt.js b/app/application/resources/volt/js/volt.js similarity index 100% rename from resources/volt/js/volt.js rename to app/application/resources/volt/js/volt.js 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 100% rename from routes/channels.php rename to app/application/routes/channels.php 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 100% rename from routes/web.php rename to app/application/routes/web.php 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 72% rename from docker/app/Dockerfile rename to app/docker/Dockerfile index 7ce2f40..04d1c80 100644 --- a/docker/app/Dockerfile +++ b/app/docker/Dockerfile @@ -17,8 +17,7 @@ FROM docker.io/php:8.2-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,25 +46,29 @@ 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"] @@ -73,15 +76,43 @@ EXPOSE 9000 CMD ["unitd", "--no-daemon", "--control", "unix:/var/run/control.unit.sock", "--user", "unit", "--group", "unit"] -# 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"] + + + +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 +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/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..7814104 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -2,33 +2,31 @@ 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 - volumes: - - /etc/localtime:/etc/localtime:ro + # restart: always +# cap_drop: +# - ALL +# cap_add: +# - SETGID +# - SETUID +# - CHOWN +# - FOWNER + depends_on: + - db + - redis + env_file: app/application/.env swagger: image: swaggerapi/swagger-ui depends_on: @@ -36,7 +34,18 @@ services: environment: URLS: "[ { url: '/swagger.json', name: '/swagger.json' } ]" BASE_URL: /api-docs - ports: - - "8080" redis: image: redis:3.0-alpine + 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..0524d65 --- /dev/null +++ b/docker-compose-prod_docker-hub.yml @@ -0,0 +1,43 @@ +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.7.1 + # restart: always + depends_on: + - db + - redis + 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..ca45a50 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,35 +1,27 @@ -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 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 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 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 +30,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/dev/php/start.sh b/docker/dev/php/start.sh deleted file mode 100755 index 91c0f3e..0000000 --- a/docker/dev/php/start.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env bash -set -e -role=${CONTAINER_ROLE:-app} -if [ "$role" = "app" ]; then - exec php-fpm -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 -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/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 -- 2.45.2 From 8794b8af4e9af4ba88b3d4a3792d7c7276f78670 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Thu, 25 Apr 2024 20:07:13 +0500 Subject: [PATCH 2/8] I returned the LICENSE.md file back. --- app/application/LICENSE.md => LICENSE.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/application/LICENSE.md => LICENSE.md (100%) diff --git a/app/application/LICENSE.md b/LICENSE.md similarity index 100% rename from app/application/LICENSE.md rename to LICENSE.md -- 2.45.2 From e059f09e2fe574e8094c8232ba5b5ae731aa9aca Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Thu, 25 Apr 2024 20:58:52 +0500 Subject: [PATCH 3/8] Updated Laravel to 11. --- README.md | 6 +- app/application/app/Models/CaptchaLog.php | 13 +- app/application/app/Models/User.php | 17 +- app/application/composer.json | 10 +- app/application/composer.lock | 2580 ++++++++++++--------- app/application/config/sanctum.php | 1 - app/docker/Dockerfile | 56 +- 7 files changed, 1521 insertions(+), 1162 deletions(-) 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/application/app/Models/CaptchaLog.php b/app/application/app/Models/CaptchaLog.php index 80c0bdf..ce5df82 100644 --- a/app/application/app/Models/CaptchaLog.php +++ b/app/application/app/Models/CaptchaLog.php @@ -29,13 +29,16 @@ 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 { diff --git a/app/application/app/Models/User.php b/app/application/app/Models/User.php index 2c0940f..77e6618 100644 --- a/app/application/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/application/composer.json b/app/application/composer.json index b30e8f1..2365235 100644 --- a/app/application/composer.json +++ b/app/application/composer.json @@ -5,10 +5,10 @@ "keywords": ["framework", "laravel"], "license": "MIT", "require": { - "php": "^8.2", + "php": "^8.3", "guzzlehttp/guzzle": "^7.2", - "laravel/framework": "^10.0", - "laravel/sanctum": "^3.2", + "laravel/framework": "^11.0", + "laravel/sanctum": "^4.0", "laravel/tinker": "^2.8" }, "require-dev": { @@ -17,8 +17,8 @@ "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", - "nunomaduro/collision": "^7.0", - "phpunit/phpunit": "^10.0", + "nunomaduro/collision": "^8.1", + "phpunit/phpunit": "^10.5", "spatie/laravel-ignition": "^2.0" }, "autoload": { diff --git a/app/application/composer.lock b/app/application/composer.lock index dabd871..0ba478a 100644 --- a/app/application/composer.lock +++ b/app/application/composer.lock @@ -4,30 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "e0b02ec003503b320831a9a9a4f8a9d2", + "content-hash": "680bb583053c6714b7b932ef1d099191", "packages": [ { "name": "brick/math", - "version": "0.10.2", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/459f2781e1a08d52ee56b0b1444086e038561e3f", - "reference": "459f2781e1a08d52ee56b0b1444086e038561e3f", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.4 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^9.0", - "vimeo/psalm": "4.25.0" + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -52,7 +51,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.10.2" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { @@ -60,7 +59,76 @@ "type": "github" } ], - "time": "2022-08-10T22:54:19+00:00" + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/dbal": "<4.0.0 || >=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": "dflydev/dot-access-data", @@ -139,28 +207,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 +278,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 +294,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 +355,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 +371,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 +424,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 +432,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 +454,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 +491,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 +499,25 @@ "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", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", - "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "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 +527,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-master": "1.2-dev" } }, "autoload": { @@ -490,7 +558,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 +570,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 +620,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 +632,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 +660,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 +677,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "7.5-dev" } }, "autoload": { @@ -676,7 +742,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 +758,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 +825,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 +841,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 +868,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 +880,6 @@ "bamarni-bin": { "bin-links": true, "forward-command": false - }, - "branch-alias": { - "dev-master": "2.4-dev" } }, "autoload": { @@ -879,7 +941,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 +957,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 +1027,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 +1043,24 @@ "type": "tidelift" } ], - "time": "2021-10-07T12:57:01+00:00" + "time": "2023-12-03T19:50:20+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 +1072,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 +1144,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 +1184,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 +1248,96 @@ "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/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 +1369,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 +1429,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 +1493,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 +1521,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 +1531,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 +1544,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.4-dev" + "dev-main": "2.5-dev" } }, "autoload": { @@ -1478,7 +1601,7 @@ "type": "tidelift" } ], - "time": "2023-02-15T14:07:24+00:00" + "time": "2024-02-02T11:59:32+00:00" }, { "name": "league/config", @@ -1564,23 +1687,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 +1714,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 +1724,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 +1761,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 +1771,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 +1876,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 +1888,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 +1916,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 +1924,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 +1977,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 +1989,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 +2035,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 +2095,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 +2155,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 +2182,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 +2192,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 +2241,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 +2275,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2113,39 +2299,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 +2339,9 @@ "providers": [ "Termwind\\Laravel\\TermwindServiceProvider" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev" } }, "autoload": { @@ -2185,7 +2373,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 +2389,20 @@ "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", + "version": "1.9.2", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", - "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", "shasum": "" }, "require": { @@ -2222,7 +2410,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 +2452,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 +2464,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 +2619,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 +2653,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 +2665,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 +2705,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 +2720,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 +2759,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 +2773,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 +2880,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 +2909,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 +2917,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 +2953,9 @@ ], "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": "ralouphie/getallheaders", @@ -2853,20 +3092,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 +3168,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 +3180,124 @@ "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": "symfony/clock", + "version": "v7.0.5", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" + "url": "https://github.com/symfony/clock.git", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "url": "https://api.github.com/repos/symfony/clock/zipball/8b9d08887353d627d5f6c3bf3373b398b49051c2", + "reference": "8b9d08887353d627d5f6c3bf3373b398b49051c2", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "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 +3326,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 +3347,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 +3396,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 +3412,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 +3434,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3153,7 +3463,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 +3479,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 +3538,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 +3554,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 +3584,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 +3618,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 +3634,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 +3694,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 +3710,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 +3758,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 +3774,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 +3835,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 +3851,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 +3947,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 +3963,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 +4027,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 +4043,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 +4068,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 +4111,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 +4127,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 +4154,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3883,7 +4190,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 +4206,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 +4230,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -3964,7 +4268,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 +4284,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 +4310,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4051,7 +4352,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 +4368,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 +4392,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4135,7 +4433,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 +4449,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 +4476,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4218,7 +4513,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 +4529,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 +4550,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4294,7 +4586,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 +4602,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 +4623,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4377,7 +4666,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 +4682,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 +4786,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4459,7 +4822,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 +4838,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 +4883,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 +4899,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 +4964,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 +4980,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 +5046,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 +5062,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 +5132,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 +5148,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 +5226,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 +5242,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 +5304,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 +5320,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 +5378,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 +5394,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 +5461,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 +5477,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 +5528,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 +5570,7 @@ "forward-command": true }, "branch-alias": { - "dev-master": "5.5-dev" + "dev-master": "5.6-dev" } }, "autoload": { @@ -5261,7 +5602,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 +5614,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 +5798,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 +5857,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 +5875,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 +5918,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 +5935,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 +6024,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 +6052,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 +6084,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 +6111,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 +6158,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 +6180,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 +6245,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 +6253,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 +6308,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 +6340,7 @@ }, "autoload": { "psr-4": { - "LaravelLang\\Attributes\\": "src" + "LaravelLang\\Attributes\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6029,7 +6357,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 +6371,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 +6450,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 +6499,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 +6511,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 +6579,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 +6601,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 +6614,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 +6686,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 +6710,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 +6752,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 +6785,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, "laravel": { "providers": [ "Laravel\\Sail\\SailServiceProvider" @@ -6504,42 +6815,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 +6861,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 +6892,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 +6949,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 +6957,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 +7000,9 @@ "providers": [ "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" ] + }, + "branch-alias": { + "dev-8.x": "8.x-dev" } }, "autoload": { @@ -6728,24 +7054,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 +7113,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 +7176,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 +7204,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 +7241,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 +7250,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 +7302,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 +7311,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 +7378,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 +7425,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 +7434,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 +7497,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 +7520,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 +7530,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 +7546,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.0-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -7241,7 +7577,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 +7594,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 +7642,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 +7651,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 +7766,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 +7786,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -7492,7 +7830,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 +7839,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 +7865,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -7549,7 +7888,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 +7897,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 +7918,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 +7955,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 +7964,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 +7992,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -7678,7 +8019,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 +8028,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 +8055,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -7755,7 +8097,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 +8106,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 +8153,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 +8168,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 +8217,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 +8226,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 +8514,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 +8531,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 +8561,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 +8573,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 +8634,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 +8642,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 +8725,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 +8776,6 @@ "aliases": { "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" } - }, - "branch-alias": { - "dev-main": "2.0-dev" } }, "autoload": { @@ -8459,20 +8817,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 +8838,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -8522,7 +8877,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 +8893,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 +8948,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 +8964,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 +9006,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,7 +9014,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], @@ -8671,8 +9023,8 @@ "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/app/application/config/sanctum.php b/app/application/config/sanctum.php index 529cfdc..ab31435 100644 --- a/app/application/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/app/docker/Dockerfile b/app/docker/Dockerfile index 04d1c80..6b7bcc1 100644 --- a/app/docker/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,7 +12,7 @@ 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/ @@ -48,32 +48,32 @@ RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freety && ln -sf /dev/stdout /var/log/unit.log \ && 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 \ - && composer install --optimize-autoloader --no-dev \ - && npm install && npm run build \ - && 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"] +#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 \ +# && composer install --optimize-autoloader --no-dev \ +# && npm install && npm run build \ +# && 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"] FROM BUILD AS DEVELOP -- 2.45.2 From 20ed4860dae7f9046ee166e8cad46493874ce729 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Thu, 25 Apr 2024 23:45:07 +0500 Subject: [PATCH 4/8] Added the ability to enable captcha when logging in. --- app/application/.env.example | 6 ++ .../app/Http/Controllers/AuthController.php | 4 +- .../Http/Requests/AuthorizationRequest.php | 8 ++- app/application/composer.json | 1 + app/application/composer.lock | 52 +++++++++++++++++- app/application/config/app.php | 9 +++ app/application/lang/en/validation.php | 1 + app/application/lang/ru/validation.php | 1 + .../resources/views/public/login.blade.php | 5 ++ app/docker/Dockerfile | 55 ++++++++++--------- 10 files changed, 112 insertions(+), 30 deletions(-) diff --git a/app/application/.env.example b/app/application/.env.example index e77cefd..78bdd22 100644 --- a/app/application/.env.example +++ b/app/application/.env.example @@ -6,6 +6,12 @@ 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= diff --git a/app/application/app/Http/Controllers/AuthController.php b/app/application/app/Http/Controllers/AuthController.php index 096f082..b32e1de 100644 --- a/app/application/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/application/app/Http/Requests/AuthorizationRequest.php b/app/application/app/Http/Requests/AuthorizationRequest.php index f4ed7af..c7dae76 100644 --- a/app/application/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/application/composer.json b/app/application/composer.json index 2365235..104ec0e 100644 --- a/app/application/composer.json +++ b/app/application/composer.json @@ -7,6 +7,7 @@ "require": { "php": "^8.3", "guzzlehttp/guzzle": "^7.2", + "kor-elf/captcha-rule-for-laravel": "^1.0", "laravel/framework": "^11.0", "laravel/sanctum": "^4.0", "laravel/tinker": "^2.8" diff --git a/app/application/composer.lock b/app/application/composer.lock index 0ba478a..f015161 100644 --- a/app/application/composer.lock +++ b/app/application/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "680bb583053c6714b7b932ef1d099191", + "content-hash": "94e26ab4b33fa6f72cca1475dace5690", "packages": [ { "name": "brick/math", @@ -1045,6 +1045,56 @@ ], "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": "v11.5.0", diff --git a/app/application/config/app.php b/app/application/config/app.php index 6235015..c9dcca0 100644 --- a/app/application/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 diff --git a/app/application/lang/en/validation.php b/app/application/lang/en/validation.php index 0e251fb..ffd8e0b 100644 --- a/app/application/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/app/application/lang/ru/validation.php b/app/application/lang/ru/validation.php index 3a75b75..dfe3ba2 100644 --- a/app/application/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/app/application/resources/views/public/login.blade.php b/app/application/resources/views/public/login.blade.php index 472f602..d7f7f77 100644 --- a/app/application/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/app/docker/Dockerfile b/app/docker/Dockerfile index 6b7bcc1..e0c8fc1 100644 --- a/app/docker/Dockerfile +++ b/app/docker/Dockerfile @@ -48,32 +48,32 @@ RUN apk --no-cache add pcre2 libbz2 libpng libwebp libjpeg-turbo icu-libs freety && ln -sf /dev/stdout /var/log/unit.log \ && 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 \ -# && composer install --optimize-autoloader --no-dev \ -# && npm install && npm run build \ -# && 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"] +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 \ + && composer install --optimize-autoloader --no-dev \ + && npm install && npm run build \ + && 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"] FROM BUILD AS DEVELOP @@ -105,7 +105,8 @@ 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 + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ + && mkdir /.composer && chmod 0777 /.composer ENTRYPOINT ["composer"] -- 2.45.2 From 4bc170ed00ba869800250ef2f8783fdcd0075257 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Fri, 26 Apr 2024 20:36:32 +0500 Subject: [PATCH 5/8] Added final to UsersController. --- .../app/Http/Controllers/Private/UsersController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/application/app/Http/Controllers/Private/UsersController.php b/app/application/app/Http/Controllers/Private/UsersController.php index a5c7d3f..aee9150 100644 --- a/app/application/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 -- 2.45.2 From 57030158741eea7068c15ee6a95dc25825f0a950 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sun, 28 Apr 2024 01:26:30 +0500 Subject: [PATCH 6/8] Revived the dashboard. --- .env.example | 1 + app/application/.env.example | 18 + .../app/Broadcasting/CreatedCaptchaLog.php | 17 + .../CaptchaLogRepository/QuantityByDays.php | 38 + app/application/app/Enums/CaptchaLogType.php | 5 + .../app/Events/CreatedCaptchaLog.php | 47 + .../Private/DashboardController.php | 34 +- .../Private/WebsocketsController.php | 24 + .../Dashboard/ChartCaptchaActivity.php | 53 + .../Resources/Private/Websockets/Setting.php | 31 + app/application/app/Models/Captcha.php | 6 + app/application/app/Models/CaptchaLog.php | 6 + .../app/Repositories/CaptchaLogRepository.php | 35 + .../Dashboard/ChartCaptchaActivity.php | 31 + .../Private/Websocket/Setting.php | 41 + .../Services/CaptchaLog/CaptchaLogHandler.php | 7 +- .../app/Services/Private/DashboardService.php | 54 + .../app/Services/Private/WebsocketService.php | 24 + app/application/composer.json | 1 + app/application/composer.lock | 1035 ++++++++++++++++- app/application/config/app.php | 2 +- app/application/config/reverb.php | 97 ++ app/application/lang/en.json | 3 +- app/application/lang/en/captcha_log_type.php | 7 + app/application/lang/ru.json | 3 +- app/application/lang/ru/captcha_log_type.php | 7 + app/application/package-lock.json | 47 + app/application/package.json | 2 + .../views/private/dashboard/index.blade.php | 37 +- app/application/resources/volt/js/app.js | 4 +- .../resources/volt/js/dashboard.js | 80 ++ app/application/resources/volt/js/echo.js | 49 + app/application/resources/volt/js/volt.js | 98 -- app/application/routes/channels.php | 2 + app/application/routes/web.php | 3 + app/docker/Dockerfile | 7 +- app/docker/start_dev.sh | 21 + app/docker/start_prod.sh | 21 + docker-compose-prod.yml | 44 + docker-compose-prod_docker-hub.yml | 32 +- docker-compose.yml | 43 + 41 files changed, 2005 insertions(+), 112 deletions(-) create mode 100644 app/application/app/Broadcasting/CreatedCaptchaLog.php create mode 100644 app/application/app/Dto/Repository/CaptchaLogRepository/QuantityByDays.php create mode 100644 app/application/app/Events/CreatedCaptchaLog.php create mode 100644 app/application/app/Http/Controllers/Private/WebsocketsController.php create mode 100644 app/application/app/Http/Resources/Private/Dashboard/ChartCaptchaActivity.php create mode 100644 app/application/app/Http/Resources/Private/Websockets/Setting.php create mode 100644 app/application/app/ServiceResults/Private/Dashboard/ChartCaptchaActivity.php create mode 100644 app/application/app/ServiceResults/Private/Websocket/Setting.php create mode 100644 app/application/app/Services/Private/DashboardService.php create mode 100644 app/application/app/Services/Private/WebsocketService.php create mode 100644 app/application/config/reverb.php create mode 100644 app/application/lang/en/captcha_log_type.php create mode 100644 app/application/lang/ru/captcha_log_type.php create mode 100644 app/application/resources/volt/js/dashboard.js create mode 100644 app/application/resources/volt/js/echo.js create mode 100755 app/docker/start_dev.sh create mode 100755 app/docker/start_prod.sh diff --git a/.env.example b/.env.example index bbe856a..3189c76 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,5 @@ DOCKER_NGINX_PORT=8080 +DOCKER_WEBSOCKET_PORT=8081 DOCKER_DB_PORT=3306 MYSQL_ROOT_PASSWORD=root_pass DB_DATABASE=captcha diff --git a/app/application/.env.example b/app/application/.env.example index 78bdd22..278c1d2 100644 --- a/app/application/.env.example +++ b/app/application/.env.example @@ -72,3 +72,21 @@ 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/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/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/application/app/Enums/CaptchaLogType.php b/app/application/app/Enums/CaptchaLogType.php index 8d9147d..3e4c678 100644 --- a/app/application/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/application/app/Events/CreatedCaptchaLog.php b/app/application/app/Events/CreatedCaptchaLog.php new file mode 100644 index 0000000..3a99380 --- /dev/null +++ b/app/application/app/Events/CreatedCaptchaLog.php @@ -0,0 +1,47 @@ +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; + } + $this->captchaLog = [ + 'created_at' => $captchaLog->created_at->format("d.m.Y H:i:s"), + 'link' => $link, + 'title' => $title, + 'type' => $captchaLog->type->getTitle(), + 'ip' => $captchaLog->ip, + 'user_agent' => $captchaLog->user_agent, + 'referer' => $captchaLog->referer, + ]; + } + + public function broadcastOn(): Channel + { + return new PrivateChannel('chart-captcha-activity'); + } +} diff --git a/app/application/app/Http/Controllers/Private/DashboardController.php b/app/application/app/Http/Controllers/Private/DashboardController.php index 8d1cade..508a25c 100644 --- a/app/application/app/Http/Controllers/Private/DashboardController.php +++ b/app/application/app/Http/Controllers/Private/DashboardController.php @@ -2,12 +2,42 @@ namespace App\Http\Controllers\Private; +use App\Http\Resources\Private\Dashboard\ChartCaptchaActivity; +use App\Services\Private\DashboardService; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; +use Illuminate\Support\Carbon; use Illuminate\View\View; final class DashboardController extends Controller { - public function index(): View + public function __construct( + private readonly DashboardService $dashboardService, + ) { } + + public function index(Request $request): View { - return view('private/dashboard/index'); + $user = $request->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/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/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/application/app/Models/Captcha.php b/app/application/app/Models/Captcha.php index 37ed7a9..f173e4b 100644 --- a/app/application/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/application/app/Models/CaptchaLog.php b/app/application/app/Models/CaptchaLog.php index ce5df82..86cd5bb 100644 --- a/app/application/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 { @@ -44,4 +45,9 @@ 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/application/app/Repositories/CaptchaLogRepository.php b/app/application/app/Repositories/CaptchaLogRepository.php index a778315..cc5d03e 100644 --- a/app/application/app/Repositories/CaptchaLogRepository.php +++ b/app/application/app/Repositories/CaptchaLogRepository.php @@ -2,13 +2,30 @@ namespace App\Repositories; +use App\Dto\Repository\CaptchaLogRepository\QuantityByDays; use App\Enums\CaptchaLogType; use App\Models\CaptchaLog; +use App\Services\Search\CreateSearchInstanceCommand; +use App\Services\Search\Search; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; +use Illuminate\Support\Carbon; final class CaptchaLogRepository { + public function __construct( + private CreateSearchInstanceCommand $createSearchInstanceCommand, + ) { } + + public function getCaptchaLogs(array $with = []): Search + { + $query = CaptchaLog::query() + ->with($with) + ->latest(); + + return $this->createSearchInstanceCommand->execute($query); + } + public function countByType(CaptchaLogType $type, ?int $captchaId = null): int { return CaptchaLog::query() @@ -32,4 +49,22 @@ public function getCaptchaLogsByTypes(array $types, ?int $captchaId = null, ?int ->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/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/application/app/Services/CaptchaLog/CaptchaLogHandler.php b/app/application/app/Services/CaptchaLog/CaptchaLogHandler.php index bba2f51..871cc7a 100644 --- a/app/application/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/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/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.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", "version": "v3.0.2", @@ -501,6 +617,53 @@ ], "time": "2023-10-06T06:47:41+00:00" }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "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", @@ -1357,6 +1520,88 @@ }, "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", @@ -2441,6 +2686,142 @@ ], "time": "2024-03-06T16:17:14+00:00" }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "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", @@ -3007,6 +3388,67 @@ }, "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", "version": "3.0.3", @@ -3232,6 +3674,593 @@ ], "time": "2023-11-08T05:53:05+00:00" }, + { + "name": "ratchet/rfc6455", + "version": "v0.3.1", + "source": { + "type": "git", + "url": "https://github.com/ratchetphp/RFC6455.git", + "reference": "7c964514e93456a52a99a20fcfa0de242a43ccdb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ratchetphp/RFC6455/zipball/7c964514e93456a52a99a20fcfa0de242a43ccdb", + "reference": "7c964514e93456a52a99a20fcfa0de242a43ccdb", + "shasum": "" + }, + "require": { + "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", @@ -9069,7 +10098,9 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "laravel/reverb": 10 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/app/application/config/app.php b/app/application/config/app.php index c9dcca0..4d51dad 100644 --- a/app/application/config/app.php +++ b/app/application/config/app.php @@ -215,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/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/app/application/lang/en.json b/app/application/lang/en.json index b1013aa..f90d423 100644 --- a/app/application/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/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/app/application/lang/ru.json b/app/application/lang/ru.json index 04d4e89..b4be525 100644 --- a/app/application/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/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/app/application/package-lock.json b/app/application/package-lock.json index 02fc257..7ebded0 100644 --- a/app/application/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/app/application/package.json b/app/application/package.json index 612ecc5..c446ebb 100644 --- a/app/application/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/app/application/resources/views/private/dashboard/index.blade.php b/app/application/resources/views/private/dashboard/index.blade.php index 057ac8b..7624168 100644 --- a/app/application/resources/views/private/dashboard/index.blade.php +++ b/app/application/resources/views/private/dashboard/index.blade.php @@ -1,5 +1,40 @@ @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: {{ $item->ip }}

+

User Agent: {{ $item->user_agent }}

+

referer: {{ $item->referer }}

+
+
+ @endcan +
+
diff --git a/app/application/resources/volt/js/app.js b/app/application/resources/volt/js/app.js index daaea29..6e6246c 100644 --- a/app/application/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/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/app/application/resources/volt/js/volt.js b/app/application/resources/volt/js/volt.js index 6a9ba93..483167e 100644 --- a/app/application/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/app/application/routes/channels.php b/app/application/routes/channels.php index 409c335..f76d0ab 100644 --- a/app/application/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/app/application/routes/web.php b/app/application/routes/web.php index a2afbc3..3a7c842 100644 --- a/app/application/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/app/docker/Dockerfile b/app/docker/Dockerfile index e0c8fc1..72772c5 100644 --- a/app/docker/Dockerfile +++ b/app/docker/Dockerfile @@ -73,7 +73,8 @@ 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 @@ -91,9 +92,9 @@ RUN chmod 755 /home/unit/docker-entrypoint.sh \ 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 diff --git a/app/docker/start_dev.sh b/app/docker/start_dev.sh new file mode 100755 index 0000000..007ea47 --- /dev/null +++ b/app/docker/start_dev.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 +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/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-compose-prod.yml b/docker-compose-prod.yml index 7814104..a4bb96c 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -26,9 +26,52 @@ services: 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: + - ./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: @@ -36,6 +79,7 @@ services: BASE_URL: /api-docs redis: image: redis:3.0-alpine + # restart: always db: image: docker.io/mysql:8.0.33 command: --default-authentication-plugin=mysql_native_password diff --git a/docker-compose-prod_docker-hub.yml b/docker-compose-prod_docker-hub.yml index 0524d65..003bbf7 100644 --- a/docker-compose-prod_docker-hub.yml +++ b/docker-compose-prod_docker-hub.yml @@ -11,11 +11,41 @@ services: ports: - ${DOCKER_NGINX_PORT}:80 app: - image: korelf/service-captcha:0.7.1 + 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 diff --git a/docker-compose.yml b/docker-compose.yml index ca45a50..b098d3c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,11 +10,54 @@ services: - db - redis - app + - reverb app: build: context: app dockerfile: docker/Dockerfile target: DEVELOP + depends_on: + - db + - redis + - reverb + volumes: + - ./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: -- 2.45.2 From 1532cecedcf9f67b09b6cd71395dc0ed25308a71 Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sun, 28 Apr 2024 02:12:09 +0500 Subject: [PATCH 7/8] For demo mode, I hid the display of IP and UserAgent. --- app/application/app/Events/CreatedCaptchaLog.php | 12 ++++++++++-- .../views/private/dashboard/index.blade.php | 16 ++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/application/app/Events/CreatedCaptchaLog.php b/app/application/app/Events/CreatedCaptchaLog.php index 3a99380..cbdc7e6 100644 --- a/app/application/app/Events/CreatedCaptchaLog.php +++ b/app/application/app/Events/CreatedCaptchaLog.php @@ -29,13 +29,21 @@ public function __construct(CaptchaLog $captchaLog) { $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' => $captchaLog->ip, - 'user_agent' => $captchaLog->user_agent, + 'ip' => $ip, + 'user_agent' => $userAgent, 'referer' => $captchaLog->referer, ]; } diff --git a/app/application/resources/views/private/dashboard/index.blade.php b/app/application/resources/views/private/dashboard/index.blade.php index 7624168..39cde16 100644 --- a/app/application/resources/views/private/dashboard/index.blade.php +++ b/app/application/resources/views/private/dashboard/index.blade.php @@ -25,8 +25,20 @@

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

-

IP: {{ $item->ip }}

-

User Agent: {{ $item->user_agent }}

+

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

+

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

referer: {{ $item->referer }}

-- 2.45.2 From bd91cdef0c43dafb68edefcf116bb23a07e3b49a Mon Sep 17 00:00:00 2001 From: Leonid Nikitin Date: Sun, 28 Apr 2024 13:13:27 +0500 Subject: [PATCH 8/8] BROADCAST_DRIVER changed to reverb. --- app/application/.env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/application/.env.example b/app/application/.env.example index 278c1d2..161d775 100644 --- a/app/application/.env.example +++ b/app/application/.env.example @@ -31,7 +31,7 @@ DB_DATABASE=captcha DB_USERNAME=captcha DB_PASSWORD=captcha_pass -BROADCAST_DRIVER=log +BROADCAST_DRIVER=reverb CACHE_DRIVER=redis FILESYSTEM_DISK=local QUEUE_CONNECTION=redis -- 2.45.2