From 717de5f532cd19a3ce86e766936cfed794c57351 Mon Sep 17 00:00:00 2001 From: alexni09 <137412803+alexni09@users.noreply.github.com> Date: Wed, 11 Oct 2023 08:33:43 -0300 Subject: [PATCH 1/2] main commit --- .editorconfig | 18 + .env.example | 75 + .gitattributes | 11 + .gitignore | 24 + README.md | 93 +- app/Console/Commands/GenerateGarbageFiles.php | 34 + app/Console/Commands/PurgeGarbageImages.php | 55 + app/Console/Kernel.php | 27 + app/Exceptions/Handler.php | 30 + app/Helpers/FilesystemHelper.php | 8 + app/Helpers/StringTrimmerHelper.php | 11 + app/Helpers/TimestampHelper.php | 11 + .../Controllers/Admin/ArticleController.php | 97 + .../Controllers/Admin/CategoryController.php | 55 + app/Http/Controllers/Admin/TagController.php | 55 + .../Auth/AuthenticatedSessionController.php | 48 + app/Http/Controllers/Controller.php | 12 + app/Http/Controllers/Main/HomeController.php | 16 + .../Main/ShowArticleController.php | 16 + app/Http/Kernel.php | 68 + app/Http/Middleware/Authenticate.php | 17 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 30 + app/Http/Middleware/TrimStrings.php | 19 + app/Http/Middleware/TrustHosts.php | 20 + app/Http/Middleware/TrustProxies.php | 28 + app/Http/Middleware/ValidateSignature.php | 22 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Http/Requests/Admin/CategoryRequest.php | 27 + .../Requests/Admin/CreateArticleRequest.php | 40 + .../Requests/Admin/EditArticleRequest.php | 25 + app/Http/Requests/Admin/TagRequest.php | 27 + app/Http/Requests/Auth/LoginRequest.php | 85 + app/Models/Article.php | 36 + app/Models/Category.php | 15 + app/Models/Tag.php | 15 + app/Models/User.php | 47 + app/Providers/AppServiceProvider.php | 24 + app/Providers/AuthServiceProvider.php | 26 + app/Providers/BroadcastServiceProvider.php | 19 + app/Providers/EventServiceProvider.php | 38 + app/Providers/RouteServiceProvider.php | 39 + app/Services/RandomImage.php | 16 + app/Services/TagsForArticle.php | 21 + app/View/Components/AppLayout.php | 17 + app/View/Components/GuestLayout.php | 17 + artisan | 53 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 68 + composer.lock | 8288 +++++++++++++++++ config/app.php | 188 + config/auth.php | 115 + config/broadcasting.php | 71 + config/cache.php | 111 + config/cors.php | 34 + config/database.php | 151 + config/filesystems.php | 92 + config/hashing.php | 52 + config/logging.php | 131 + config/mail.php | 125 + config/queue.php | 109 + config/sanctum.php | 67 + config/services.php | 34 + config/session.php | 201 + config/view.php | 36 + database/.gitignore | 1 + database/factories/ArticleFactory.php | 27 + database/factories/CategoryFactory.php | 21 + database/factories/TagFactory.php | 21 + database/factories/UserFactory.php | 38 + .../2014_10_12_000000_create_users_table.php | 32 + ...000_create_password_reset_tokens_table.php | 28 + ..._08_19_000000_create_failed_jobs_table.php | 32 + ...01_create_personal_access_tokens_table.php | 33 + ...3_09_30_142130_create_categories_table.php | 26 + .../2023_09_30_145327_create_tags_table.php | 26 + ...023_09_30_151223_create_articles_table.php | 32 + ..._09_30_174547_create_article_tag_table.php | 26 + database/seeders/ArticleSeeder.php | 18 + database/seeders/ArticleTagSeeder.php | 19 + database/seeders/CategorySeeder.php | 13 + database/seeders/DatabaseSeeder.php | 16 + database/seeders/TagSeeder.php | 13 + database/seeders/UserSeeder.php | 18 + gitimages/image01.png | Bin 0 -> 162274 bytes gitimages/image02.png | Bin 0 -> 120071 bytes package-lock.json | 1783 ++++ package.json | 18 + phpunit.xml | 31 + postcss.config.js | 6 + public/.htaccess | 21 + public/avatar.png | Bin 0 -> 13037 bytes public/build/assets/app-71d69702.css | 1 + public/build/assets/app-7c0572f8.js | 9 + public/build/manifest.json | 12 + public/favicon.ico | 0 public/index.php | 55 + public/legacy_images/IMG20220204120442.jpg | Bin 0 -> 67422 bytes public/legacy_images/IMG20220204120456.jpg | Bin 0 -> 41485 bytes public/legacy_images/IMG20220204121758.jpg | Bin 0 -> 64556 bytes public/legacy_images/IMG20220204122047.jpg | Bin 0 -> 62309 bytes public/robots.txt | 2 + resources/css/app.css | 4 + resources/js/app.js | 7 + resources/js/bootstrap.js | 32 + resources/views/about.blade.php | 27 + .../views/admin/articles/create.blade.php | 67 + resources/views/admin/articles/edit.blade.php | 92 + .../views/admin/categories/create.blade.php | 28 + .../views/admin/categories/edit.blade.php | 29 + .../views/admin/categories/index.blade.php | 49 + resources/views/admin/tags/create.blade.php | 28 + resources/views/admin/tags/edit.blade.php | 29 + resources/views/admin/tags/index.blade.php | 49 + resources/views/auth/login.blade.php | 47 + .../components/application-logo.blade.php | 3 + .../components/auth-session-status.blade.php | 7 + resources/views/components/button.blade.php | 3 + .../views/components/danger-button.blade.php | 3 + .../views/components/dropdown-link.blade.php | 1 + resources/views/components/dropdown.blade.php | 43 + .../views/components/emeraldlink.blade.php | 3 + .../views/components/input-error.blade.php | 9 + .../views/components/input-label.blade.php | 5 + resources/views/components/input.blade.php | 3 + resources/views/components/label.blade.php | 5 + resources/views/components/link.blade.php | 3 + resources/views/components/modal.blade.php | 77 + resources/views/components/nav-link.blade.php | 11 + .../views/components/primary-button.blade.php | 3 + .../views/components/redbutton.blade.php | 3 + .../components/responsive-nav-link.blade.php | 11 + .../components/secondary-button.blade.php | 3 + .../views/components/text-input.blade.php | 3 + resources/views/index.blade.php | 59 + resources/views/layouts/app.blade.php | 32 + resources/views/layouts/guest.blade.php | 26 + resources/views/layouts/navigation.blade.php | 131 + resources/views/show.blade.php | 39 + routes/api.php | 19 + routes/channels.php | 18 + routes/console.php | 19 + routes/web.php | 30 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/debugbar/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + tailwind.config.js | 22 + tests/CreatesApplication.php | 21 + tests/TestCase.php | 10 + vite.config.js | 14 + 159 files changed, 14928 insertions(+), 74 deletions(-) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 app/Console/Commands/GenerateGarbageFiles.php create mode 100644 app/Console/Commands/PurgeGarbageImages.php create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Helpers/FilesystemHelper.php create mode 100644 app/Helpers/StringTrimmerHelper.php create mode 100644 app/Helpers/TimestampHelper.php create mode 100644 app/Http/Controllers/Admin/ArticleController.php create mode 100644 app/Http/Controllers/Admin/CategoryController.php create mode 100644 app/Http/Controllers/Admin/TagController.php create mode 100644 app/Http/Controllers/Auth/AuthenticatedSessionController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/Main/HomeController.php create mode 100644 app/Http/Controllers/Main/ShowArticleController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/Authenticate.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustHosts.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Http/Middleware/ValidateSignature.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Http/Requests/Admin/CategoryRequest.php create mode 100644 app/Http/Requests/Admin/CreateArticleRequest.php create mode 100644 app/Http/Requests/Admin/EditArticleRequest.php create mode 100644 app/Http/Requests/Admin/TagRequest.php create mode 100644 app/Http/Requests/Auth/LoginRequest.php create mode 100644 app/Models/Article.php create mode 100644 app/Models/Category.php create mode 100644 app/Models/Tag.php create mode 100644 app/Models/User.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/Services/RandomImage.php create mode 100644 app/Services/TagsForArticle.php create mode 100644 app/View/Components/AppLayout.php create mode 100644 app/View/Components/GuestLayout.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/filesystems.php create mode 100644 config/hashing.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/queue.php create mode 100644 config/sanctum.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/factories/ArticleFactory.php create mode 100644 database/factories/CategoryFactory.php create mode 100644 database/factories/TagFactory.php create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php create mode 100644 database/migrations/2023_09_30_142130_create_categories_table.php create mode 100644 database/migrations/2023_09_30_145327_create_tags_table.php create mode 100644 database/migrations/2023_09_30_151223_create_articles_table.php create mode 100644 database/migrations/2023_09_30_174547_create_article_tag_table.php create mode 100644 database/seeders/ArticleSeeder.php create mode 100644 database/seeders/ArticleTagSeeder.php create mode 100644 database/seeders/CategorySeeder.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 database/seeders/TagSeeder.php create mode 100644 database/seeders/UserSeeder.php create mode 100644 gitimages/image01.png create mode 100644 gitimages/image02.png create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 postcss.config.js create mode 100644 public/.htaccess create mode 100644 public/avatar.png create mode 100644 public/build/assets/app-71d69702.css create mode 100644 public/build/assets/app-7c0572f8.js create mode 100644 public/build/manifest.json create mode 100644 public/favicon.ico create mode 100644 public/index.php create mode 100644 public/legacy_images/IMG20220204120442.jpg create mode 100644 public/legacy_images/IMG20220204120456.jpg create mode 100644 public/legacy_images/IMG20220204121758.jpg create mode 100644 public/legacy_images/IMG20220204122047.jpg create mode 100644 public/robots.txt create mode 100644 resources/css/app.css create mode 100644 resources/js/app.js create mode 100644 resources/js/bootstrap.js create mode 100644 resources/views/about.blade.php create mode 100644 resources/views/admin/articles/create.blade.php create mode 100644 resources/views/admin/articles/edit.blade.php create mode 100644 resources/views/admin/categories/create.blade.php create mode 100644 resources/views/admin/categories/edit.blade.php create mode 100644 resources/views/admin/categories/index.blade.php create mode 100644 resources/views/admin/tags/create.blade.php create mode 100644 resources/views/admin/tags/edit.blade.php create mode 100644 resources/views/admin/tags/index.blade.php create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/components/application-logo.blade.php create mode 100644 resources/views/components/auth-session-status.blade.php create mode 100644 resources/views/components/button.blade.php create mode 100644 resources/views/components/danger-button.blade.php create mode 100644 resources/views/components/dropdown-link.blade.php create mode 100644 resources/views/components/dropdown.blade.php create mode 100644 resources/views/components/emeraldlink.blade.php create mode 100644 resources/views/components/input-error.blade.php create mode 100644 resources/views/components/input-label.blade.php create mode 100644 resources/views/components/input.blade.php create mode 100644 resources/views/components/label.blade.php create mode 100644 resources/views/components/link.blade.php create mode 100644 resources/views/components/modal.blade.php create mode 100644 resources/views/components/nav-link.blade.php create mode 100644 resources/views/components/primary-button.blade.php create mode 100644 resources/views/components/redbutton.blade.php create mode 100644 resources/views/components/responsive-nav-link.blade.php create mode 100644 resources/views/components/secondary-button.blade.php create mode 100644 resources/views/components/text-input.blade.php create mode 100644 resources/views/index.blade.php create mode 100644 resources/views/layouts/app.blade.php create mode 100644 resources/views/layouts/guest.blade.php create mode 100644 resources/views/layouts/navigation.blade.php create mode 100644 resources/views/show.blade.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/debugbar/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 tailwind.config.js create mode 100644 tests/CreatesApplication.php create mode 100644 tests/TestCase.php create mode 100644 vite.config.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000..8f0de65c --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 4 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 + +[docker-compose.yml] +indent_size = 4 diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..cfcd04c9 --- /dev/null +++ b/.env.example @@ -0,0 +1,75 @@ +APP_NAME="Article Crud" +APP_ENV=local +APP_KEY=base64:UfXqKchu5dj4hrHMQX7NA554kgxYYoZQ+mFbL2pKXtM= +APP_DEBUG=true +APP_URL=http://localhost + +LOG_CHANNEL=stack +LOG_DEPRECATIONS_CHANNEL=null +LOG_LEVEL=debug + +DB_CONNECTION=mysql +DB_HOST=127.0.0.1 +DB_PORT=3306 +DB_DATABASE=article_crud +DB_USERNAME=root +DB_PASSWORD=your_password_here + +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_APP_NAME="${APP_NAME}" +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}" + +DEBUGBAR_ENABLED=true + +DEFAULT_USER_NAME="Blogger" +DEFAULT_USER_EMAIL="blogger@blogger.website" +DEFAULT_USER_PASSWORD="123456789" +CATEGORIES_TO_SEED=12 +TAGS_TO_SEED=18 +ARTICLES_TO_SEED=40 +MIN_TAGS_PER_ARTICLE_TO_SEED=0 +MAX_TAGS_PER_ARTICLE_TO_SEED=7 +PERCENTAGE_OF_ARTICLES_WITH_IMAGES=40 +CATEGORIES_PER_PAGE=10 +TAGS_PER_PAGE=7 +ARTICLES_PER_PAGE=8 +MAX_CHARS_ARTICLE_TEXT=300 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..fcb21d39 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +* text=auto eol=lf + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.md diff=markdown +*.php diff=php + +/.github export-ignore +CHANGELOG.md export-ignore +.styleci.yml export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..463cfb0a --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +/.phpunit.cache +/node_modules +/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 +/gitignore +app/Http/Requests/Admin/*.txt +/resources/views/admin/articles/*.txt +/routes/web_dev.php +/tests0 +leiame.txt diff --git a/README.md b/README.md index e24f3eaa..cbf3e2f0 100644 --- a/README.md +++ b/README.md @@ -1,87 +1,32 @@ -# Laravel Roadmap: Beginner Level Challenge +# Blogger's Home Page -This is a task for the [Beginner Level of the Laravel Roadmap](https://github.com/LaravelDaily/Laravel-Roadmap-Learning-Path#beginner-level), with the goal to implement as many of its topics as possible. +![Laravel](https://img.shields.io/badge/laravel-%23FF2D20.svg?style=for-the-badge&logo=laravel&logoColor=white) +![PHP](https://img.shields.io/badge/php-%23777BB4.svg?style=for-the-badge&logo=php&logoColor=white) +![MySQL](https://img.shields.io/badge/mysql-%2300f.svg?style=for-the-badge&logo=mysql&logoColor=white) +![TailwindCSS](https://img.shields.io/badge/tailwindcss-%2338B2AC.svg?style=for-the-badge&logo=tailwind-css&logoColor=white) +![HTML5](https://img.shields.io/badge/html5-%23E34F26.svg?style=for-the-badge&logo=html5&logoColor=white) +![DigitalOcean](https://img.shields.io/badge/DigitalOcean-%230167ff.svg?style=for-the-badge&logo=digitalOcean&logoColor=white) -This repository is intentionally empty, with only a Readme file. Your task if to submit a Pull Request with your version of implementing the task, and your PR may be reviewed by someone on our team, or other volunteers. +This is a blogger web app for only one registered user who is both the blogger and admin. Public users can read the articles posted, and select which article he/she wishes to read by navigating on the main page. The admin and blogger can manage categories, tags as well as the articles themselves. -## The Task: Simple Personal Blog +This project is an answer to the **[Laravel Roadmap: Beginner Level Challenge](https://github.com/LaravelDaily/Laravel-Roadmap-Beginner-Challenge)**. -You need to create a personal blog with just three pages: +This project is currently on-line **[here](http://164.92.151.30)**. [![Forge](https://img.shields.io/endpoint?url=https%3A%2F%2Fforge.laravel.com%2Fsite-badges%2F5c4984a9-45f6-43b8-a956-8e1521d2f41e&style=plastic)](https://forge.laravel.com/servers/723372/sites/2121842). The server is minimal: 10GB SSD, 0.5GB RAM. Yet the queries are performant. Images below: -- Homepage: List of articles -- Article page -- Some static text page like "About me" +![main page](/gitimages/image01.png) +![article editing page](/gitimages/image02.png) -Also, there should be a Login mechanism (but no Register) for the author to write articles: +## Instalation -- Manage (meaning, create/update/delete) categories -- Manage tags -- Manage articles -- For Auth Starter Kit, use [Laravel Breeze](https://github.com/laravel/breeze) (Tailwind) or [Laravel UI](https://github.com/laravel/ui) (Bootstrap) - that starter kit will have some design, which is enough: the design is irrelevant for accomplishing the task +### Forge Install +Deploy the server and the code. Run the command `php artisan db:seed`. Schedule the unused image cleansing job with this command (or similar): `php /home/forge/default/artisan app:purge-garbage-images` to run every minute or whenever. -**DB Structure:** +### Local Install -- Article has title (required), full text (required) and image to upload (optional) -- Article may have only one category, but may have multiple tags +Create a new MySQL schema. Name it according to your .env file. Run the command `php artisan migrate --seed`. Optional: Schedule the unused image cleansing command with `php artisan app:purge-garbage-files` to run every minute or whenever. Run this app as usual. +*It is crucial to run at least the UserSeeder, to seed the database with the only user.* That user is described in the `.env` / `.env.example` file. ------ - -## Features to implement - -Here's the [list of Roadmap features](https://github.com/LaravelDaily/Laravel-Roadmap-Learning-Path#beginner-level) you need to try to implement in your code: - -**Routing and Controllers: Basics** - -- Callback Functions and Route::view() -- Routing to a Single Controller Method -- Route Parameters -- Route Naming -- Route Groups - - -**Blade Basics** - -- Displaying Variables in Blade -- Blade If-Else and Loop Structures -- Blade Loops -- Layout: @include, @extends, @section, @yield -- Blade Components - - -**Auth Basics** - -- Default Auth Model and Access its Fields from Anywhere -- Check Auth in Controller / Blade -- Auth Middleware - - -**Database Basics** - -- Database Migrations -- Basic Eloquent Model and MVC: Controller -> Model -> View -- Eloquent Relationships: belongsTo / hasMany / belongsToMany -- Eager Loading and N+1 Query Problem - - -**Full Simple CRUD** - -- Route Resource and Resourceful Controllers -- Forms, Validation and Form Requests -- File Uploads and Storage Folder Basics -- Table Pagination - - ------ - -## Example Solutions - -If you need help, or you want to compare your version with our simple version, here are two public repositories with the solution: - -- [Laravel Roadmap Beginner: Breeze](https://github.com/LaravelDaily/Laravel-Roadmap-Beginner-Roadmap-Breeze) -- [Laravel Roadmap Beginner: UI](https://github.com/LaravelDaily/Laravel-Roadmap-Beginner-Blog-UI) - - -**Notice**: please look at those repositories only AFTER you've accomplished the task yourself, or if you're confident about your Laravel beginner skills and you think you don't need to practice this task. +*It is not necessary to run the command* `php artisan storage:link`*.* \ No newline at end of file diff --git a/app/Console/Commands/GenerateGarbageFiles.php b/app/Console/Commands/GenerateGarbageFiles.php new file mode 100644 index 00000000..4e42fb20 --- /dev/null +++ b/app/Console/Commands/GenerateGarbageFiles.php @@ -0,0 +1,34 @@ +put('garbage' . strval($i) . '.txt', fake()->text(80)); + } + $this->info(strval($n) . ' garbage files successfully generated.'); + } +} \ No newline at end of file diff --git a/app/Console/Commands/PurgeGarbageImages.php b/app/Console/Commands/PurgeGarbageImages.php new file mode 100644 index 00000000..3413cdac --- /dev/null +++ b/app/Console/Commands/PurgeGarbageImages.php @@ -0,0 +1,55 @@ +files()); + $filesystemImages->transform(function (string $item, int $key) { + return FilesystemHelper::DISK_FOR_UPLOADS . '/' . $item; + }); + //var_dump($filesystemImages); + $dbImages = DB::table('articles') + ->select('image') + ->whereNotNull('image') + ->whereRaw("image like '" . FilesystemHelper::DISK_FOR_UPLOADS . "%'") + ->distinct() + ->get() + ->pluck('image'); + //var_dump($dbImages); + $diffImages = $filesystemImages->diff($dbImages); + //var_dump($diffImages); + $diffImages->transform(function (string $item, int $key) { + return substr($item, strlen(FilesystemHelper::DISK_FOR_UPLOADS) + 1); + }); + //var_dump($diffImages); + $diffImages->each(function (string $item, int $key) { + Storage::disk(FilesystemHelper::DISK_FOR_UPLOADS)->delete($item); + }); + $this->info(strval($diffImages->count()) . ' undesirable image(s) removed.'); + } +} \ No newline at end of file diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 00000000..e6b9960e --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,27 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + protected function commands(): void + { + $this->load(__DIR__.'/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 00000000..56af2640 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,30 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/app/Helpers/FilesystemHelper.php b/app/Helpers/FilesystemHelper.php new file mode 100644 index 00000000..b7b192bf --- /dev/null +++ b/app/Helpers/FilesystemHelper.php @@ -0,0 +1,8 @@ +format('Y-m-d-H-i-s-u'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/ArticleController.php b/app/Http/Controllers/Admin/ArticleController.php new file mode 100644 index 00000000..7873ffa4 --- /dev/null +++ b/app/Http/Controllers/Admin/ArticleController.php @@ -0,0 +1,97 @@ +get(); + $allTags = Tag::select('id','name')->get(); + return view('admin.articles.create', compact('categories','allTags')); + } + + /** + * Store a newly created resource in storage. + */ + public function store(CreateArticleRequest $request) { + $tags = TagsForArticle::fetchTagsFromRequest(); + if ($request->has('image')) { + $filename = TimestampHelper::getFileTimestamp() . '_' . $request->file('image')->getClientOriginalName(); + $request->file('image')->storeAs('', $filename, FilesystemHelper::DISK_FOR_UPLOADS); + } + DB::beginTransaction(); + $article = Article::create([ + 'user_id' => auth()->id(), + 'category_id' => $request->category_id, + 'title' => $request->title, + 'fulltext' => $request->fulltext, + 'image' => $request->has('image') ? FilesystemHelper::DISK_FOR_UPLOADS . '/' . $filename : null + ]); + $article->tags()->sync($tags); + DB::commit(); + return redirect()->route('home'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Article $article) { + $categories = Category::select('id','name')->get(); + $allTags = Tag::select('id','name')->get(); + $tagIds = $article->tags()->get()->pluck('id')->toArray(); + return view('admin.articles.edit', compact('article', 'categories', 'allTags', 'tagIds')); + } + + /** + * Update the specified resource in storage. + */ + public function update(EditArticleRequest $request, Article $article) { + $tags = TagsForArticle::fetchTagsFromRequest(); + if ($request->image_confirmation && $request->has('image')) { + $filename = TimestampHelper::getFileTimestamp() . '_' . $request->file('image')->getClientOriginalName(); + $request->file('image')->storeAs('', $filename, FilesystemHelper::DISK_FOR_UPLOADS); + } + DB::beginTransaction(); + $fields = [ + 'user_id' => auth()->id(), + 'category_id' => $request->category_id, + 'title' => $request->title, + 'fulltext' => $request->fulltext + ]; + if ($request->image_confirmation) { + $fields['image'] = $request->has('image') ? FilesystemHelper::DISK_FOR_UPLOADS . '/' . $filename : null; + } + $article->update($fields); + $article->tags()->sync($tags); + DB::commit(); + return redirect()->route('home'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Article $article) { + $article->delete(); + return redirect()->route('home'); + } + + /* + Dear Reader: + You might be wondering how the unused images are actually discarded. + So.. for this answer -- + Please check: App\Console\Commands\PurgeGarbageImages.php + */ +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/CategoryController.php b/app/Http/Controllers/Admin/CategoryController.php new file mode 100644 index 00000000..fef96ed7 --- /dev/null +++ b/app/Http/Controllers/Admin/CategoryController.php @@ -0,0 +1,55 @@ +withCount('articles')->paginate(env('CATEGORIES_PER_PAGE',6)); + return view('admin.categories.index', compact('categories')); + } + + /** + * Show the form for creating a new resource. + */ + public function create() { + return view('admin.categories.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(CategoryRequest $request) { + Category::create($request->validated()); + return redirect()->route('admin.categories.index'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Category $category) { + return view('admin.categories.edit', compact('category')); + } + + /** + * Update the specified resource in storage. + */ + public function update(CategoryRequest $request, Category $category) { + $category->update($request->validated()); + return redirect()->route('admin.categories.index'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Category $category) { + $category->delete(); + return redirect()->route('admin.categories.index'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Admin/TagController.php b/app/Http/Controllers/Admin/TagController.php new file mode 100644 index 00000000..8f87879a --- /dev/null +++ b/app/Http/Controllers/Admin/TagController.php @@ -0,0 +1,55 @@ +withCount('articles')->paginate(env('TAGS_PER_PAGE',6)); + return view('admin.tags.index', compact('tags')); + } + + /** + * Show the form for creating a new resource. + */ + public function create() { + return view('admin.tags.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(TagRequest $request) { + Tag::create($request->validated()); + return redirect()->route('admin.tags.index'); + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(Tag $tag) { + return view('admin.tags.edit', compact('tag')); + } + + /** + * Update the specified resource in storage. + */ + public function update(TagRequest $request, Tag $tag) { + $tag->update($request->validated()); + return redirect()->route('admin.tags.index'); + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(Tag $tag) { + $tag->delete(); + return redirect()->route('admin.tags.index'); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php new file mode 100644 index 00000000..494a1064 --- /dev/null +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -0,0 +1,48 @@ +authenticate(); + + $request->session()->regenerate(); + + return redirect()->intended(RouteServiceProvider::HOME); + } + + /** + * Destroy an authenticated session. + */ + public function destroy(Request $request): RedirectResponse + { + Auth::guard('web')->logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 00000000..77ec359a --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ +with('category:id,name','tags:id,name') + ->latest() + ->paginate(env('ARTICLES_PER_PAGE',10)); + return view('index', compact('articles')); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Main/ShowArticleController.php b/app/Http/Controllers/Main/ShowArticleController.php new file mode 100644 index 00000000..4c9536b6 --- /dev/null +++ b/app/Http/Controllers/Main/ShowArticleController.php @@ -0,0 +1,16 @@ +with('category:id,name','tags:id,name') + ->find($article_id); + if (!isset($article)) abort(404); + return view('show', compact('article')); + } +} \ No newline at end of file diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 00000000..494c0501 --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,68 @@ + + */ + protected $middleware = [ + // \App\Http\Middleware\TrustHosts::class, + \App\Http\Middleware\TrustProxies::class, + \Illuminate\Http\Middleware\HandleCors::class, + \App\Http\Middleware\PreventRequestsDuringMaintenance::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array> + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class, + \Illuminate\Routing\Middleware\ThrottleRequests::class.':api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's middleware aliases. + * + * Aliases may be used instead of class names to conveniently assign middleware to routes and groups. + * + * @var array + */ + protected $middlewareAliases = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'precognitive' => \Illuminate\Foundation\Http\Middleware\HandlePrecognitiveRequests::class, + 'signed' => \App\Http\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 00000000..d4ef6447 --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,17 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 00000000..867695bd --- /dev/null +++ b/app/Http/Middleware/EncryptCookies.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/app/Http/Middleware/PreventRequestsDuringMaintenance.php new file mode 100644 index 00000000..74cbd9a9 --- /dev/null +++ b/app/Http/Middleware/PreventRequestsDuringMaintenance.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php new file mode 100644 index 00000000..afc78c4e --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,30 @@ +check()) { + return redirect(RouteServiceProvider::HOME); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 00000000..88cadcaa --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,19 @@ + + */ + protected $except = [ + 'current_password', + 'password', + 'password_confirmation', + ]; +} diff --git a/app/Http/Middleware/TrustHosts.php b/app/Http/Middleware/TrustHosts.php new file mode 100644 index 00000000..c9c58bdd --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,20 @@ + + */ + public function hosts(): array + { + return [ + $this->allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 00000000..3391630e --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ +|string|null + */ + protected $proxies; + + /** + * The headers that should be used to detect proxies. + * + * @var int + */ + protected $headers = + Request::HEADER_X_FORWARDED_FOR | + Request::HEADER_X_FORWARDED_HOST | + Request::HEADER_X_FORWARDED_PORT | + Request::HEADER_X_FORWARDED_PROTO | + Request::HEADER_X_FORWARDED_AWS_ELB; +} diff --git a/app/Http/Middleware/ValidateSignature.php b/app/Http/Middleware/ValidateSignature.php new file mode 100644 index 00000000..093bf64a --- /dev/null +++ b/app/Http/Middleware/ValidateSignature.php @@ -0,0 +1,22 @@ + + */ + protected $except = [ + // 'fbclid', + // 'utm_campaign', + // 'utm_content', + // 'utm_medium', + // 'utm_source', + // 'utm_term', + ]; +} diff --git a/app/Http/Middleware/VerifyCsrfToken.php b/app/Http/Middleware/VerifyCsrfToken.php new file mode 100644 index 00000000..9e865217 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Http/Requests/Admin/CategoryRequest.php b/app/Http/Requests/Admin/CategoryRequest.php new file mode 100644 index 00000000..086d3fe1 --- /dev/null +++ b/app/Http/Requests/Admin/CategoryRequest.php @@ -0,0 +1,27 @@ + 'required' + ]; + } +} \ No newline at end of file diff --git a/app/Http/Requests/Admin/CreateArticleRequest.php b/app/Http/Requests/Admin/CreateArticleRequest.php new file mode 100644 index 00000000..ccff3348 --- /dev/null +++ b/app/Http/Requests/Admin/CreateArticleRequest.php @@ -0,0 +1,40 @@ +|string> + */ + public function rules(): array { + $tagIds = Tag::selectRaw("concat('tag',id) as tag_number")->addSelect('id')->get(); + $tagIdsWithPrefix = $tagIds->pluck('tag_number')->toArray(); + $tagIdsFormatted = $tagIds->pluck('id')->implode(','); + $rules = array_fill_keys($tagIdsWithPrefix, ['nullable','integer','min:1','in:[,' . $tagIdsFormatted . ',]']); + $rules['category_id'] = ['required','integer','min:1','exists:categories,id']; + $rules['title'] = ['required','string']; + $rules['fulltext'] = ['required','string']; + $rules['image'] = ['nullable','image']; + return $rules; + } + /* + This generates an array whose tag-related key/value pairs are: + 'tag#' => ['nullable','integer','min:1','in:[all_tag_ids_list]'] + Where # is the tag id#, and the primary key of the table tags. + # also matches the value of the checkbox field from the blade template. + Each key 'tag#' matches the name field of the checkbox from the blade template. + There will be one such rule for each tag (*not* for each checked tag). + */ +} \ No newline at end of file diff --git a/app/Http/Requests/Admin/EditArticleRequest.php b/app/Http/Requests/Admin/EditArticleRequest.php new file mode 100644 index 00000000..91a1c9ba --- /dev/null +++ b/app/Http/Requests/Admin/EditArticleRequest.php @@ -0,0 +1,25 @@ +|string> + */ + public function rules(): array { + $rules = (new CreateArticleRequest)->rules(); + $rules['image_confirmation'] = ['nullable','boolean']; + return $rules; + } +} \ No newline at end of file diff --git a/app/Http/Requests/Admin/TagRequest.php b/app/Http/Requests/Admin/TagRequest.php new file mode 100644 index 00000000..1439199e --- /dev/null +++ b/app/Http/Requests/Admin/TagRequest.php @@ -0,0 +1,27 @@ + 'required' + ]; + } +} \ No newline at end of file diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php new file mode 100644 index 00000000..7a19bc02 --- /dev/null +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -0,0 +1,85 @@ + + */ + public function rules(): array + { + return [ + 'email' => ['required', 'string', 'email'], + 'password' => ['required', 'string'], + ]; + } + + /** + * Attempt to authenticate the request's credentials. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function authenticate(): void + { + $this->ensureIsNotRateLimited(); + + if (! Auth::attempt($this->only('email', 'password'), $this->boolean('remember'))) { + RateLimiter::hit($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => trans('auth.failed'), + ]); + } + + RateLimiter::clear($this->throttleKey()); + } + + /** + * Ensure the login request is not rate limited. + * + * @throws \Illuminate\Validation\ValidationException + */ + public function ensureIsNotRateLimited(): void + { + if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { + return; + } + + event(new Lockout($this)); + + $seconds = RateLimiter::availableIn($this->throttleKey()); + + throw ValidationException::withMessages([ + 'email' => trans('auth.throttle', [ + 'seconds' => $seconds, + 'minutes' => ceil($seconds / 60), + ]), + ]); + } + + /** + * Get the rate limiting throttle key for the request. + */ + public function throttleKey(): string + { + return Str::transliterate(Str::lower($this->input('email')).'|'.$this->ip()); + } +} diff --git a/app/Models/Article.php b/app/Models/Article.php new file mode 100644 index 00000000..ba6b54ee --- /dev/null +++ b/app/Models/Article.php @@ -0,0 +1,36 @@ +belongsTo(User::class); } + public function category() { return $this->belongsTo(Category::class); } + public function tags() { return $this->belongsToMany(Tag::class); } + + /* Accessors */ + protected function readWhat(): Attribute { + return Attribute::make( + get: fn () => strlen($this->fulltext) > env('MAX_CHARS_ARTICLE_TEXT',200) + ? 'Read more...' + : 'Read article.' + ); + } + + protected function startFulltext(): Attribute { + return Attribute::make( + get: fn () => strlen($this->fulltext) > env('MAX_CHARS_ARTICLE_TEXT',200) + ? StringTrimmerHelper::rightTrimOnSpace($this->fulltext, env('MAX_CHARS_ARTICLE_TEXT',200)) . '...' + : $this->fulltext + ); + } +} \ No newline at end of file diff --git a/app/Models/Category.php b/app/Models/Category.php new file mode 100644 index 00000000..b2d006c2 --- /dev/null +++ b/app/Models/Category.php @@ -0,0 +1,15 @@ +hasMany(Article::class); } +} \ No newline at end of file diff --git a/app/Models/Tag.php b/app/Models/Tag.php new file mode 100644 index 00000000..ca0a38b2 --- /dev/null +++ b/app/Models/Tag.php @@ -0,0 +1,15 @@ +belongsToMany(Article::class); } +} \ No newline at end of file diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 00000000..2ac151c2 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,47 @@ + + */ + protected $fillable = [ + 'name', + 'email', + 'password', + ]; + + /** + * The attributes that should be hidden for serialization. + * + * @var array + */ + protected $hidden = [ + 'password', + 'remember_token', + ]; + + /** + * The attributes that should be cast. + * + * @var array + */ + protected $casts = [ + 'email_verified_at' => 'datetime', + 'password' => 'hashed', + ]; + + /* Relationships */ + public function articles() { return $this->hasMany(Article::class); } +} \ No newline at end of file diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 00000000..452e6b65 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,24 @@ + + */ + protected $policies = [ + // + ]; + + /** + * Register any authentication / authorization services. + */ + public function boot(): void + { + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 00000000..2be04f5d --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 00000000..4d4f7d28 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,39 @@ +by($request->user()?->id ?: $request->ip()); + }); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->group(base_path('routes/web.php')); + }); + } +} \ No newline at end of file diff --git a/app/Services/RandomImage.php b/app/Services/RandomImage.php new file mode 100644 index 00000000..9a9fc5b0 --- /dev/null +++ b/app/Services/RandomImage.php @@ -0,0 +1,16 @@ +files(); + return FilesystemHelper::LEGACY_DISK . '/' . $ar[array_rand($ar)]; + } else return null; + } +} \ No newline at end of file diff --git a/app/Services/TagsForArticle.php b/app/Services/TagsForArticle.php new file mode 100644 index 00000000..dfca3665 --- /dev/null +++ b/app/Services/TagsForArticle.php @@ -0,0 +1,21 @@ +collect(); + $tagCollection->pull('_token'); + $tagCollection->pull('_method'); + $tagCollection->pull('category_id'); + $tagCollection->pull('title'); + $tagCollection->pull('fulltext'); + $tagCollection->pull('image'); + $tagCollection->pull('image_confirmation'); + return $tagCollection->values()->toArray(); + } +} \ No newline at end of file diff --git a/app/View/Components/AppLayout.php b/app/View/Components/AppLayout.php new file mode 100644 index 00000000..de0d46f5 --- /dev/null +++ b/app/View/Components/AppLayout.php @@ -0,0 +1,17 @@ +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 00000000..037e17df --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 00000000..d6b7ef32 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 00000000..ce38f69f --- /dev/null +++ b/composer.json @@ -0,0 +1,68 @@ +{ + "name": "laravel/laravel", + "type": "project", + "description": "The skeleton application for the Laravel framework.", + "keywords": ["laravel", "framework"], + "license": "MIT", + "require": { + "php": "^8.1", + "barryvdh/laravel-debugbar": "^3.9", + "fakerphp/faker": "^1.23", + "guzzlehttp/guzzle": "^7.2", + "laravel/breeze": "^1.24", + "laravel/framework": "^10.10", + "laravel/sanctum": "^3.2", + "laravel/tinker": "^2.8" + }, + "require-dev": { + "laravel/pint": "^1.0", + "laravel/sail": "^1.18", + "mockery/mockery": "^1.4.4", + "nunomaduro/collision": "^7.0", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ignition": "^2.0" + }, + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-update-cmd": [ + "@php artisan vendor:publish --tag=laravel-assets --ansi --force" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ] + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "pestphp/pest-plugin": true, + "php-http/discovery": true + } + }, + "minimum-stability": "stable", + "prefer-stable": true +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 00000000..982a8a99 --- /dev/null +++ b/composer.lock @@ -0,0 +1,8288 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", + "This file is @generated automatically" + ], + "content-hash": "6e65ef035ef6580a7853581ad69a8367", + "packages": [ + { + "name": "barryvdh/laravel-debugbar", + "version": "v3.9.2", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-debugbar.git", + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/bfd0131c146973cab164e50f5cdd8a67cc60cab1", + "reference": "bfd0131c146973cab164e50f5cdd8a67cc60cab1", + "shasum": "" + }, + "require": { + "illuminate/routing": "^9|^10", + "illuminate/session": "^9|^10", + "illuminate/support": "^9|^10", + "maximebf/debugbar": "^1.18.2", + "php": "^8.0", + "symfony/finder": "^6" + }, + "require-dev": { + "mockery/mockery": "^1.3.3", + "orchestra/testbench-dusk": "^5|^6|^7|^8", + "phpunit/phpunit": "^8.5.30|^9.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.8-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\Debugbar\\ServiceProvider" + ], + "aliases": { + "Debugbar": "Barryvdh\\Debugbar\\Facades\\Debugbar" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Barryvdh\\Debugbar\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "PHP Debugbar integration for Laravel", + "keywords": [ + "debug", + "debugbar", + "laravel", + "profiler", + "webprofiler" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-debugbar/issues", + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.9.2" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-08-25T18:43:57+00:00" + }, + { + "name": "brick/math", + "version": "0.11.0", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "support": { + "issues": "https://github.com/brick/math/issues", + "source": "https://github.com/brick/math/tree/0.11.0" + }, + "funding": [ + { + "url": "https://github.com/BenMorel", + "type": "github" + } + ], + "time": "2023-01-15T23:15:59+00:00" + }, + { + "name": "dflydev/dot-access-data", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/dflydev/dflydev-dot-access-data.git", + "reference": "f41715465d65213d644d3141a6a93081be5d3549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dflydev/dflydev-dot-access-data/zipball/f41715465d65213d644d3141a6a93081be5d3549", + "reference": "f41715465d65213d644d3141a6a93081be5d3549", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", + "scrutinizer/ocular": "1.6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Dflydev\\DotAccessData\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Dragonfly Development Inc.", + "email": "info@dflydev.com", + "homepage": "http://dflydev.com" + }, + { + "name": "Beau Simensen", + "email": "beau@dflydev.com", + "homepage": "http://beausimensen.com" + }, + { + "name": "Carlos Frutos", + "email": "carlos@kiwing.it", + "homepage": "https://github.com/cfrutos" + }, + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com" + } + ], + "description": "Given a deep data structure, access data by dot notation.", + "homepage": "https://github.com/dflydev/dflydev-dot-access-data", + "keywords": [ + "access", + "data", + "dot", + "notation" + ], + "support": { + "issues": "https://github.com/dflydev/dflydev-dot-access-data/issues", + "source": "https://github.com/dflydev/dflydev-dot-access-data/tree/v3.0.2" + }, + "time": "2022-10-27T11:44:00+00:00" + }, + { + "name": "doctrine/inflector", + "version": "2.0.8", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "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 || ^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", + "keywords": [ + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" + ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.8" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finflector", + "type": "tidelift" + } + ], + "time": "2023-06-16T13:40:37+00:00" + }, + { + "name": "doctrine/lexer", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/lexer.git", + "reference": "84a527db05647743d50373e0ec53a152f2cde568" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", + "reference": "84a527db05647743d50373e0ec53a152f2cde568", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.9", + "phpunit/phpunit": "^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^5.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Lexer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "keywords": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/3.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", + "type": "tidelift" + } + ], + "time": "2022-12-15T16:57:16+00:00" + }, + { + "name": "dragonmantank/cron-expression", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" + }, + "require-dev": { + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-webmozart-assert": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Cron\\": "src/Cron/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "support": { + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + }, + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2023-08-10T19:36:49+00:00" + }, + { + "name": "egulias/email-validator", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "reference": "3a85486b709bc384dae8eb78fb2eec649bdb64ff", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^4.30" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Egulias\\EmailValidator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eduardo Gulias Davis" + } + ], + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "support": { + "issues": "https://github.com/egulias/EmailValidator/issues", + "source": "https://github.com/egulias/EmailValidator/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-01-14T14:17:03+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.23.0", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "conflict": { + "fzaninotto/faker": "*" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", + "ext-intl": "*", + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" + }, + "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", + "ext-curl": "Required by Faker\\Provider\\Image to download images.", + "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", + "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", + "ext-mbstring": "Required for multibyte Unicode string functionality." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "v1.21-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "support": { + "issues": "https://github.com/FakerPHP/Faker/issues", + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" + }, + "time": "2023-06-12T08:44:38+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e", + "reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Fruitcake\\Cors\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fruitcake", + "homepage": "https://fruitcake.nl" + }, + { + "name": "Barryvdh", + "email": "barryvdh@gmail.com" + } + ], + "description": "Cross-origin resource sharing library for the Symfony HttpFoundation", + "homepage": "https://github.com/fruitcake/php-cors", + "keywords": [ + "cors", + "laravel", + "symfony" + ], + "support": { + "issues": "https://github.com/fruitcake/php-cors/issues", + "source": "https://github.com/fruitcake/php-cors/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2022-02-20T15:07:15+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.1" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "GrahamCampbell\\ResultType\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "An Implementation Of The Result Type", + "keywords": [ + "Graham Campbell", + "GrahamCampbell", + "Result Type", + "Result-Type", + "result" + ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-02-25T20:23:15+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "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" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:20:53+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-08-03T15:11:55+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.6.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:13:57+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/61bf437fc2197f587f6857d3ff903a24f1731b5d", + "reference": "61bf437fc2197f587f6857d3ff903a24f1731b5d", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.17" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.19 || ^9.5.8", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "GuzzleHttp\\UriTemplate\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + } + ], + "description": "A polyfill class for uri_template of PHP", + "keywords": [ + "guzzlehttp", + "uri-template" + ], + "support": { + "issues": "https://github.com/guzzle/uri-template/issues", + "source": "https://github.com/guzzle/uri-template/tree/v1.0.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/uri-template", + "type": "tidelift" + } + ], + "time": "2023-08-27T10:19:19+00:00" + }, + { + "name": "laravel/breeze", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/breeze.git", + "reference": "d3979dc75f78c1c6b0b035f52e3f4ea2dacab615" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/breeze/zipball/d3979dc75f78c1c6b0b035f52e3f4ea2dacab615", + "reference": "d3979dc75f78c1c6b0b035f52e3f4ea2dacab615", + "shasum": "" + }, + "require": { + "illuminate/console": "^10.17", + "illuminate/filesystem": "^10.17", + "illuminate/support": "^10.17", + "illuminate/validation": "^10.17", + "php": "^8.1.0" + }, + "require-dev": { + "orchestra/testbench": "^8.0", + "phpstan/phpstan": "^1.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Breeze\\BreezeServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Breeze\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Minimal Laravel authentication scaffolding with Blade and Tailwind.", + "keywords": [ + "auth", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/breeze/issues", + "source": "https://github.com/laravel/breeze" + }, + "time": "2023-09-20T18:37:37+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.25.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "6014dd456b414b305fb0b408404efdcec18e64bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/6014dd456b414b305fb0b408404efdcec18e64bc", + "reference": "6014dd456b414b305fb0b408404efdcec18e64bc", + "shasum": "" + }, + "require": { + "brick/math": "^0.9.3|^0.10.2|^0.11", + "composer-runtime-api": "^2.2", + "doctrine/inflector": "^2.0.5", + "dragonmantank/cron-expression": "^3.3.2", + "egulias/email-validator": "^3.2.1|^4.0", + "ext-ctype": "*", + "ext-filter": "*", + "ext-hash": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "ext-session": "*", + "ext-tokenizer": "*", + "fruitcake/php-cors": "^1.2", + "guzzlehttp/uri-template": "^1.0", + "laravel/prompts": "^0.1.9", + "laravel/serializable-closure": "^1.3", + "league/commonmark": "^2.2.1", + "league/flysystem": "^3.8.0", + "monolog/monolog": "^3.0", + "nesbot/carbon": "^2.67", + "nunomaduro/termwind": "^1.13", + "php": "^8.1", + "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", + "tijsverkoyen/css-to-inline-styles": "^2.2.5", + "vlucas/phpdotenv": "^5.4.1", + "voku/portable-ascii": "^2.0" + }, + "conflict": { + "tightenco/collect": "<5.5.33" + }, + "provide": { + "psr/container-implementation": "1.1|2.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0" + }, + "replace": { + "illuminate/auth": "self.version", + "illuminate/broadcasting": "self.version", + "illuminate/bus": "self.version", + "illuminate/cache": "self.version", + "illuminate/collections": "self.version", + "illuminate/conditionable": "self.version", + "illuminate/config": "self.version", + "illuminate/console": "self.version", + "illuminate/container": "self.version", + "illuminate/contracts": "self.version", + "illuminate/cookie": "self.version", + "illuminate/database": "self.version", + "illuminate/encryption": "self.version", + "illuminate/events": "self.version", + "illuminate/filesystem": "self.version", + "illuminate/hashing": "self.version", + "illuminate/http": "self.version", + "illuminate/log": "self.version", + "illuminate/macroable": "self.version", + "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", + "illuminate/pagination": "self.version", + "illuminate/pipeline": "self.version", + "illuminate/process": "self.version", + "illuminate/queue": "self.version", + "illuminate/redis": "self.version", + "illuminate/routing": "self.version", + "illuminate/session": "self.version", + "illuminate/support": "self.version", + "illuminate/testing": "self.version", + "illuminate/translation": "self.version", + "illuminate/validation": "self.version", + "illuminate/view": "self.version" + }, + "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", + "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.12", + "pda/pheanstalk": "^4.0", + "phpstan/phpstan": "^1.4.7", + "phpunit/phpunit": "^10.0.7", + "predis/predis": "^2.0.2", + "symfony/cache": "^6.2", + "symfony/http-client": "^6.2.4" + }, + "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).", + "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.", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", + "ext-pcntl": "Required to use all features of the queue worker and console signal trapping.", + "ext-pdo": "Required to use all database features.", + "ext-posix": "Required to use all features of the queue worker.", + "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).", + "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).", + "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)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "10.x-dev" + } + }, + "autoload": { + "files": [ + "src/Illuminate/Collections/helpers.php", + "src/Illuminate/Events/functions.php", + "src/Illuminate/Foundation/helpers.php", + "src/Illuminate/Support/helpers.php" + ], + "psr-4": { + "Illuminate\\": "src/Illuminate/", + "Illuminate\\Support\\": [ + "src/Illuminate/Macroable/", + "src/Illuminate/Collections/", + "src/Illuminate/Conditionable/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Laravel Framework.", + "homepage": "https://laravel.com", + "keywords": [ + "framework", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2023-09-28T14:08:59+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.10", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "37ed55f6950d921a87d5beeab16d03f8de26b060" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/37ed55f6950d921a87d5beeab16d03f8de26b060", + "reference": "37ed55f6950d921a87d5beeab16d03f8de26b060", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "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.10" + }, + "time": "2023-09-29T07:26:07+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "338f633e6487e76b255470d3373fbc29228aa971" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/338f633e6487e76b255470d3373fbc29228aa971", + "reference": "338f633e6487e76b255470d3373fbc29228aa971", + "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" + }, + "require-dev": { + "mockery/mockery": "^1.0", + "orchestra/testbench": "^7.28.2|^8.8.3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sanctum\\SanctumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sanctum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel Sanctum provides a featherweight authentication system for SPAs and simple APIs.", + "keywords": [ + "auth", + "laravel", + "sanctum" + ], + "support": { + "issues": "https://github.com/laravel/sanctum/issues", + "source": "https://github.com/laravel/sanctum" + }, + "time": "2023-09-07T15:46:33+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Laravel\\SerializableClosure\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Nuno Maduro", + "email": "nuno@laravel.com" + } + ], + "description": "Laravel Serializable Closure provides an easy and secure way to serialize closures in PHP.", + "keywords": [ + "closure", + "laravel", + "serializable" + ], + "support": { + "issues": "https://github.com/laravel/serializable-closure/issues", + "source": "https://github.com/laravel/serializable-closure" + }, + "time": "2023-07-14T13:56:28+00:00" + }, + { + "name": "laravel/tinker", + "version": "v2.8.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/tinker.git", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/tinker/zipball/b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "reference": "b936d415b252b499e8c3b1f795cd4fc20f57e1f3", + "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", + "php": "^7.2.5|^8.0", + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.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)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Tinker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "support": { + "issues": "https://github.com/laravel/tinker/issues", + "source": "https://github.com/laravel/tinker/tree/v2.8.2" + }, + "time": "2023-08-15T14:27:00+00:00" + }, + { + "name": "league/commonmark", + "version": "2.4.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "reference": "3669d6d5f7a47a93c08ddff335e6d945481a1dd5", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "league/config": "^1.1.1", + "php": "^7.4 || ^8.0", + "psr/event-dispatcher": "^1.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/polyfill-php80": "^1.16" + }, + "require-dev": { + "cebe/markdown": "^1.0", + "commonmark/cmark": "0.30.0", + "commonmark/commonmark.js": "0.30.0", + "composer/package-versions-deprecated": "^1.8", + "embed/embed": "^4.4", + "erusev/parsedown": "^1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "^1.4 || ^2.0", + "nyholm/psr7": "^1.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", + "scrutinizer/ocular": "^1.8.1", + "symfony/finder": "^5.3 | ^6.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0 || ^5.0.0" + }, + "suggest": { + "symfony/yaml": "v2.3+ required if using the Front Matter extension" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and GitHub-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "support": { + "docs": "https://commonmark.thephpleague.com/", + "forum": "https://github.com/thephpleague/commonmark/discussions", + "issues": "https://github.com/thephpleague/commonmark/issues", + "rss": "https://github.com/thephpleague/commonmark/releases.atom", + "source": "https://github.com/thephpleague/commonmark" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/commonmark", + "type": "tidelift" + } + ], + "time": "2023-08-30T16:55:00+00:00" + }, + { + "name": "league/config", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/config.git", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "shasum": "" + }, + "require": { + "dflydev/dot-access-data": "^3.0.1", + "nette/schema": "^1.2", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Config\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Define configuration arrays with strict schemas and access values with dot notation", + "homepage": "https://config.thephpleague.com", + "keywords": [ + "array", + "config", + "configuration", + "dot", + "dot-access", + "nested", + "schema" + ], + "support": { + "docs": "https://config.thephpleague.com/", + "issues": "https://github.com/thephpleague/config/issues", + "rss": "https://github.com/thephpleague/config/releases.atom", + "source": "https://github.com/thephpleague/config" + }, + "funding": [ + { + "url": "https://www.colinodell.com/sponsor", + "type": "custom" + }, + { + "url": "https://www.paypal.me/colinpodell/10.00", + "type": "custom" + }, + { + "url": "https://github.com/colinodell", + "type": "github" + } + ], + "time": "2022-12-11T20:36:23+00:00" + }, + { + "name": "league/flysystem", + "version": "3.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", + "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", + "phpseclib/phpseclib": "3.0.15", + "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", + "composer/semver": "^3.0", + "ext-fileinfo": "*", + "ext-ftp": "*", + "ext-zip": "*", + "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|^10.0", + "sabre/dav": "^4.3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "description": "File storage abstraction for PHP", + "keywords": [ + "WebDAV", + "aws", + "cloud", + "file", + "files", + "filesystem", + "filesystems", + "ftp", + "s3", + "sftp", + "storage" + ], + "support": { + "issues": "https://github.com/thephpleague/flysystem/issues", + "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-09-07T19:22:17+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.16.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "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": { + "issues": "https://github.com/thephpleague/flysystem-local/issues", + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-08-30T10:23:59+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.13.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96", + "reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96", + "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 || ^10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\MimeTypeDetection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frankdejonge.nl" + } + ], + "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.13.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-08-05T12:09:49+00:00" + }, + { + "name": "maximebf/debugbar", + "version": "v1.18.2", + "source": { + "type": "git", + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/17dcf3f6ed112bb85a37cf13538fd8de49f5c274", + "reference": "17dcf3f6ed112bb85a37cf13538fd8de49f5c274", + "shasum": "" + }, + "require": { + "php": "^7.1|^8", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^4|^5|^6" + }, + "require-dev": { + "phpunit/phpunit": ">=7.5.20 <10.0", + "twig/twig": "^1.38|^2.7|^3.0" + }, + "suggest": { + "kriswallsmith/assetic": "The best way to manage assets", + "monolog/monolog": "Log using Monolog", + "predis/predis": "Redis storage" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.18-dev" + } + }, + "autoload": { + "psr-4": { + "DebugBar\\": "src/DebugBar/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Maxime Bouroumeau-Fuseau", + "email": "maxime.bouroumeau@gmail.com", + "homepage": "http://maximebf.com" + }, + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Debug bar in the browser for php application", + "homepage": "https://github.com/maximebf/php-debugbar", + "keywords": [ + "debug", + "debugbar" + ], + "support": { + "issues": "https://github.com/maximebf/php-debugbar/issues", + "source": "https://github.com/maximebf/php-debugbar/tree/v1.18.2" + }, + "time": "2023-02-04T15:27:00+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^2.0 || ^3.0" + }, + "provide": { + "psr/log-implementation": "3.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^3.0", + "doctrine/couchdb": "~1.0@dev", + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", + "ruflin/elastica": "^7", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "https://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "support": { + "issues": "https://github.com/Seldaek/monolog/issues", + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-06-21T08:46:11+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.71.0", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "98276233188583f2ff845a0f992a235472d9466a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", + "reference": "98276233188583f2ff845a0f992a235472d9466a", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.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" + }, + "bin": [ + "bin/carbon" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-3.x": "3.x-dev", + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Carbon\\": "src/Carbon/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "https://markido.com" + }, + { + "name": "kylekatarnls", + "homepage": "https://github.com/kylekatarnls" + } + ], + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "https://carbon.nesbot.com", + "keywords": [ + "date", + "datetime", + "time" + ], + "support": { + "docs": "https://carbon.nesbot.com/docs", + "issues": "https://github.com/briannesbitt/Carbon/issues", + "source": "https://github.com/briannesbitt/Carbon" + }, + "funding": [ + { + "url": "https://github.com/sponsors/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon#sponsor", + "type": "opencollective" + }, + { + "url": "https://tidelift.com/subscription/pkg/packagist-nesbot-carbon?utm_source=packagist-nesbot-carbon&utm_medium=referral&utm_campaign=readme", + "type": "tidelift" + } + ], + "time": "2023-09-25T11:31:05+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.4", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "reference": "c9ff517a53903b3d4e29ec547fb20feecb05b8ab", + "shasum": "" + }, + "require": { + "nette/utils": "^2.5.7 || ^3.1.5 || ^4.0", + "php": "7.1 - 8.3" + }, + "require-dev": { + "nette/tester": "^2.3 || ^2.4", + "phpstan/phpstan-nette": "^1.0", + "tracy/tracy": "^2.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "📐 Nette Schema: validating data structures against a given Schema.", + "homepage": "https://nette.org", + "keywords": [ + "config", + "nette" + ], + "support": { + "issues": "https://github.com/nette/schema/issues", + "source": "https://github.com/nette/schema/tree/v1.2.4" + }, + "time": "2023-08-05T18:56:25+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.2", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "cead6637226456b35e1175cc53797dd585d85545" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/cead6637226456b35e1175cc53797dd585d85545", + "reference": "cead6637226456b35e1175cc53797dd585d85545", + "shasum": "" + }, + "require": { + "php": ">=8.0 <8.4" + }, + "conflict": { + "nette/finder": "<3", + "nette/schema": "<1.2.2" + }, + "require-dev": { + "jetbrains/phpstorm-attributes": "dev-master", + "nette/tester": "^2.5", + "phpstan/phpstan": "^1.0", + "tracy/tracy": "^2.9" + }, + "suggest": { + "ext-gd": "to use Image", + "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "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()" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause", + "GPL-2.0-only", + "GPL-3.0-only" + ], + "authors": [ + { + "name": "David Grudl", + "homepage": "https://davidgrudl.com" + }, + { + "name": "Nette Community", + "homepage": "https://nette.org/contributors" + } + ], + "description": "🛠 Nette Utils: lightweight utilities for string & array manipulation, image handling, safe JSON encoding/decoding, validation, slug or strong password generating etc.", + "homepage": "https://nette.org", + "keywords": [ + "array", + "core", + "datetime", + "images", + "json", + "nette", + "paginator", + "password", + "slugify", + "string", + "unicode", + "utf-8", + "utility", + "validation" + ], + "support": { + "issues": "https://github.com/nette/utils/issues", + "source": "https://github.com/nette/utils/tree/v4.0.2" + }, + "time": "2023-09-19T11:58:07+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.17.1", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + }, + "time": "2023-08-13T19:53:39+00:00" + }, + { + "name": "nunomaduro/termwind", + "version": "v1.15.1", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/termwind.git", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^8.0", + "symfony/console": "^5.3.0|^6.0.0" + }, + "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", + "thecodingmachine/phpstan-strict-rules": "^1.0.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Termwind\\Laravel\\TermwindServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php" + ], + "psr-4": { + "Termwind\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Its like Tailwind CSS, but for the console.", + "keywords": [ + "cli", + "console", + "css", + "package", + "php", + "style" + ], + "support": { + "issues": "https://github.com/nunomaduro/termwind/issues", + "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://github.com/xiCO2k", + "type": "github" + } + ], + "time": "2023-02-08T01:06:31+00:00" + }, + { + "name": "phpoption/phpoption", + "version": "1.9.1", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" + }, + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-02-25T19:38:58+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", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "shasum": "" + }, + "require": { + "php": ">=7.4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "support": { + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/2.0.2" + }, + "time": "2021-11-05T16:47:00+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "e616d01114759c4c489f93b099585439f795fe35" + }, + "dist": { + "type": "zip", + "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 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" + }, + "time": "2023-04-10T20:10:41+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "psr/log", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" + }, + { + "name": "psr/simple-cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + }, + "time": "2021-10-29T13:26:27+00:00" + }, + { + "name": "psy/psysh", + "version": "v0.11.21", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540", + "reference": "bcb22101107f3bf770523b65630c9d547f60c540", + "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" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "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." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.11.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.11.21" + }, + "time": "2023-09-17T21:15:54+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "support": { + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-31T21:50:55+00:00" + }, + { + "name": "ramsey/uuid", + "version": "4.7.4", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "60a4c63ab724854332900504274f6150ff26d286" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", + "shasum": "" + }, + "require": { + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", + "ext-json": "*", + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", + "paragonie/random-lib": "^2", + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^8.5 || ^9", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" + }, + "suggest": { + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", + "keywords": [ + "guid", + "identifier", + "uuid" + ], + "support": { + "issues": "https://github.com/ramsey/uuid/issues", + "source": "https://github.com/ramsey/uuid/tree/4.7.4" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-04-15T23:01:58+00:00" + }, + { + "name": "symfony/console", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], + "support": { + "source": "https://github.com/symfony/console/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T10:10:12+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\CssSelector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Converts CSS selectors to XPath expressions", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-12T16:00:22+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "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": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "1f69476b64fb47105c06beef757766c376b548c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/1f69476b64fb47105c06beef757766c376b548c4", + "reference": "1f69476b64fb47105c06beef757766c376b548c4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to manage errors and ease debugging PHP code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/error-handler/tree/v6.3.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": "2023-09-12T06:57:20+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v6.3.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "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/error-handler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/http-foundation": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides 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.3.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-06T06:56:43+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/finder", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Finds files and directories via an intuitive fluent interface", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/finder/tree/v6.3.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": "2023-09-26T12:56:25+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", + "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.2" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.3.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": "2023-09-04T21:33:54+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", + "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.3.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "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/clock": "^6.2", + "symfony/config": "^6.1", + "symfony/console": "^5.4|^6.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dependency-injection": "^6.3.4", + "symfony/dom-crawler": "^5.4|^6.0", + "symfony/expression-language": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/translation": "^5.4|^6.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", + "twig/twig": "^2.13|^3.0.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a structured process for converting a Request into a Response", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-kernel/tree/v6.3.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": "2023-09-30T06:37:04+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/d89611a7830d51b5e118bca38e390dea92f9ea06", + "reference": "d89611a7830d51b5e118bca38e390dea92f9ea06", + "shasum": "" + }, + "require": { + "egulias/email-validator": "^2.1.10|^3|^4", + "php": ">=8.1", + "psr/event-dispatcher": "^1", + "psr/log": "^1|^2|^3", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/mime": "^6.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/messenger": "^6.2", + "symfony/twig-bridge": "^6.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps sending emails", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/mailer/tree/v6.3.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": "2023-09-06T09:47:15+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "reference": "d5179eedf1cb2946dbd760475ebf05c251ef6a6e", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "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.13|>=6.3,<6.3.2" + }, + "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.13|^6.3.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Allows manipulating MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "support": { + "source": "https://github.com/symfony/mime/tree/v6.3.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": "2023-09-29T06:59:36+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "875e90aeea2777b6f135677f618529449334a612" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:30:37+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "42292d99c55abe617799667f454222c54c60e229" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-28T09:04:16+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "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 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php83", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\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.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-16T06:22:46+00:00" + }, + { + "name": "symfony/polyfill-uuid", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-uuid.git", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "reference": "9c44518a5aff8da565c8a55dbe85d2769e6f630e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-uuid": "*" + }, + "suggest": { + "ext-uuid": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Uuid\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for uuid functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/process", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v6.3.4" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-08-07T10:39:22+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/82616e59acd3e3d9c916bba798326cb7796d7d31", + "reference": "82616e59acd3e3d9c916bba798326cb7796d7d31", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "doctrine/annotations": "<1.12", + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.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" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps an HTTP request to a set of configuration variables", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "support": { + "source": "https://github.com/symfony/routing/tree/v6.3.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": "2023-09-20T16:05:51+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^2.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/string", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", + "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "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.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.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "support": { + "source": "https://github.com/symfony/string/tree/v6.3.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": "2023-09-18T10:38:32+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "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": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/functions.php" + ], + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides tools to internationalize your application", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/translation/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-05-30T17:17:10+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/01b0f20b1351d997711c56f1638f7a8c3061e384", + "reference": "01b0f20b1351d997711c56f1638f7a8c3061e384", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Uid\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Grégoire Pineau", + "email": "lyrixx@lyrixx.info" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides an object-oriented API to generate and represent UIDs", + "homepage": "https://symfony.com", + "keywords": [ + "UID", + "ulid", + "uuid" + ], + "support": { + "source": "https://github.com/symfony/uid/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-08T07:25:02+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.3.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/uid": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], + "type": "library", + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "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": "Provides mechanisms for walking through any arbitrary PHP variable", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "support": { + "source": "https://github.com/symfony/var-dumper/tree/v6.3.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": "2023-09-12T10:11:35+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.6", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "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" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "support": { + "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" + }, + "time": "2023-01-03T09:29:04+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.5.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "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" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", + "ext-filter": "*", + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "https://github.com/vlucas" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2022-10-16T01:01:54+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "b56450eed252f6801410d810c8e1727224ae0743" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", + "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0 || ~9.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "support": { + "issues": "https://github.com/voku/portable-ascii/issues", + "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.me/moelleken", + "type": "custom" + }, + { + "url": "https://github.com/voku", + "type": "github" + }, + { + "url": "https://opencollective.com/portable-ascii", + "type": "open_collective" + }, + { + "url": "https://www.patreon.com/voku", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/voku/portable-ascii", + "type": "tidelift" + } + ], + "time": "2022-03-08T17:03:00+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" + } + ], + "packages-dev": [ + { + "name": "filp/whoops", + "version": "2.15.3", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0 || ^8.0", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" + }, + "require-dev": { + "mockery/mockery": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + }, + "suggest": { + "symfony/var-dumper": "Pretty print complex values better with var-dumper available", + "whoops/soap": "Formats errors as SOAP responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Whoops\\": "src/Whoops/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Filipe Dobreira", + "homepage": "https://github.com/filp", + "role": "Developer" + } + ], + "description": "php error handling for cool kids", + "homepage": "https://filp.github.io/whoops/", + "keywords": [ + "error", + "exception", + "handling", + "library", + "throwable", + "whoops" + ], + "support": { + "issues": "https://github.com/filp/whoops/issues", + "source": "https://github.com/filp/whoops/tree/2.15.3" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-07-13T12:00:00+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0|^8.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "^1.4 || ^2.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "support": { + "issues": "https://github.com/hamcrest/hamcrest-php/issues", + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + }, + "time": "2020-07-09T08:09:16+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.13.2", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "reference": "bbb13460d7f8c5c0cd9a58109beedd79cd7331ff", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.26.1", + "illuminate/view": "^10.23.1", + "laravel-zero/framework": "^10.1.2", + "mockery/mockery": "^1.6.6", + "nunomaduro/larastan": "^2.6.4", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.18.2" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2023-09-19T15:55:02+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.25.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "reference": "e81a7bd7ac1a745ccb25572830fecf74a89bb48a", + "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": "^8.0", + "symfony/yaml": "^6.0" + }, + "require-dev": { + "orchestra/testbench": "^6.0|^7.0|^8.0", + "phpstan/phpstan": "^1.10" + }, + "bin": [ + "bin/sail" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Sail\\SailServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Laravel\\Sail\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Docker files for running a basic Laravel application.", + "keywords": [ + "docker", + "laravel" + ], + "support": { + "issues": "https://github.com/laravel/sail/issues", + "source": "https://github.com/laravel/sail" + }, + "time": "2023-09-11T17:37:09+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.6", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "^2.0.1", + "lib-pcre": ">=7.0", + "php": ">=7.3" + }, + "conflict": { + "phpunit/phpunit": "<8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" + }, + "type": "library", + "autoload": { + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "https://github.com/padraic", + "role": "Author" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.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", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "support": { + "docs": "https://docs.mockery.io/", + "issues": "https://github.com/mockery/mockery/issues", + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" + }, + "time": "2023-08-09T00:03:52+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.11.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, + "require-dev": { + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" + }, + "type": "library", + "autoload": { + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2023-03-08T13:26:56+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.9.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/296d0cf9fe462837ac0da8a568b56fc026b132da", + "reference": "296d0cf9fe462837ac0da8a568b56fc026b132da", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "require-dev": { + "brianium/paratest": "^7.2.7", + "laravel/framework": "^10.23.1", + "laravel/pint": "^1.13.1", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.11.0", + "pestphp/pest": "^2.19.1", + "phpunit/phpunit": "^10.3.5", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "./src/Adapters/Phpunit/Autoload.php" + ], + "psr-4": { + "NunoMaduro\\Collision\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Cli error handling for console/command-line PHP applications.", + "keywords": [ + "artisan", + "cli", + "command-line", + "console", + "error", + "handling", + "laravel", + "laravel-zero", + "php", + "symfony" + ], + "support": { + "issues": "https://github.com/nunomaduro/collision/issues", + "source": "https://github.com/nunomaduro/collision" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-09-19T10:45:09+00:00" + }, + { + "name": "phar-io/manifest", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "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" + }, + "time": "2021-07-20T11:28:43+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "56f33548fe522c8d82da7ff3824b42829d324364" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/56f33548fe522c8d82da7ff3824b42829d324364", + "reference": "56f33548fe522c8d82da7ff3824b42829d324364", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.15", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.1" + }, + "suggest": { + "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.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-19T04:59:03+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T06:24:48+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:56:09+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "3.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T14:07:24+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "6.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:57:52+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "10.3.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/747c3b2038f1139e3dcd9886a3f5a948648b7503", + "reference": "747c3b2038f1139e3dcd9886a3f5a948648b7503", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^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": "To be able to generate mocks based on WSDL files" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "10.3-dev" + } + }, + "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.5" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2023-09-19T05:42:37+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "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" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:15+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:58:43+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:59:15+00:00" + }, + { + "name": "sebastian/comparator", + "version": "5.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" + } + ], + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", + "keywords": [ + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-14T13:18:12+00:00" + }, + { + "name": "sebastian/complexity", + "version": "3.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-28T11:50:59+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" + } + ], + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", + "keywords": [ + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-05-01T07:48:21+00:00" + }, + { + "name": "sebastian/environment", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-04-11T05:39:26+00:00" + }, + { + "name": "sebastian/exporter", + "version": "5.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-09-24T13:22:09+00:00" + }, + { + "name": "sebastian/global-state", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-07-19T07:19:23+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.10", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for counting the lines of code in PHP source code", + "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-08-31T09:25:50+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:08:32+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:06:18+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "5.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" + } + ], + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:05:40+00:00" + }, + { + "name": "sebastian/type", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T07:10:45+00:00" + }, + { + "name": "sebastian/version", + "version": "4.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-07T11:34:05+00:00" + }, + { + "name": "spatie/backtrace", + "version": "1.5.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/backtrace.git", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/backtrace/zipball/483f76a82964a0431aa836b6ed0edde0c248e3ab", + "reference": "483f76a82964a0431aa836b6ed0edde0c248e3ab", + "shasum": "" + }, + "require": { + "php": "^7.3|^8.0" + }, + "require-dev": { + "ext-json": "*", + "phpunit/phpunit": "^9.3", + "spatie/phpunit-snapshot-assertions": "^4.2", + "symfony/var-dumper": "^5.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Backtrace\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van de Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A better backtrace", + "homepage": "https://github.com/spatie/backtrace", + "keywords": [ + "Backtrace", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/backtrace/tree/1.5.3" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-06-28T12:59:17+00:00" + }, + { + "name": "spatie/flare-client-php", + "version": "1.4.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.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" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.3.0", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.3.x-dev" + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\FlareClient\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Send PHP errors to Flare", + "homepage": "https://github.com/spatie/flare-client-php", + "keywords": [ + "exception", + "flare", + "reporting", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/flare-client-php/issues", + "source": "https://github.com/spatie/flare-client-php/tree/1.4.2" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-28T08:07:24+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.11.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "php": "^8.0", + "spatie/backtrace": "^1.5.3", + "spatie/flare-client-php": "^1.4.0", + "symfony/console": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" + }, + "require-dev": { + "illuminate/cache": "^9.52", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^6.0", + "symfony/process": "^5.4|^6.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.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Spatie\\Ignition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for PHP applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/ignition/issues", + "source": "https://github.com/spatie/ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-09-19T15:29:52+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0", + "reference": "4ed813d16edb5a1ab0d7f4b1d116c37ee8cdf3c0", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "ext-mbstring": "*", + "illuminate/support": "^10.0", + "php": "^8.1", + "spatie/flare-client-php": "^1.3.5", + "spatie/ignition": "^1.9", + "symfony/console": "^6.2.3", + "symfony/var-dumper": "^6.2.3" + }, + "require-dev": { + "livewire/livewire": "^2.11", + "mockery/mockery": "^1.5.1", + "openai-php/client": "^0.3.4", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.22.3", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.1.1", + "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": { + "laravel": { + "providers": [ + "Spatie\\LaravelIgnition\\IgnitionServiceProvider" + ], + "aliases": { + "Flare": "Spatie\\LaravelIgnition\\Facades\\Flare" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\LaravelIgnition\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Spatie", + "email": "info@spatie.be", + "role": "Developer" + } + ], + "description": "A beautiful error page for Laravel applications.", + "homepage": "https://flareapp.io/ignition", + "keywords": [ + "error", + "flare", + "laravel", + "page" + ], + "support": { + "docs": "https://flareapp.io/docs/ignition-for-laravel/introduction", + "forum": "https://twitter.com/flareappio", + "issues": "https://github.com/spatie/laravel-ignition/issues", + "source": "https://github.com/spatie/laravel-ignition" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-08-23T06:24:34+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.3.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.3.3" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-07-31T07:08:24+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "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" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2021-07-28T10:34:58+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^8.1" + }, + "platform-dev": [], + "plugin-api-version": "2.3.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 00000000..4c231b47 --- /dev/null +++ b/config/app.php @@ -0,0 +1,188 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL'), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => 'UTC', + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Maintenance Mode Driver + |-------------------------------------------------------------------------- + | + | These configuration options determine the driver used to determine and + | manage Laravel's "maintenance mode" status. The "cache" driver will + | allow maintenance mode to be controlled across multiple machines. + | + | Supported drivers: "file", "cache" + | + */ + + 'maintenance' => [ + 'driver' => 'file', + // 'store' => 'redis', + ], + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => ServiceProvider::defaultProviders()->merge([ + /* + * Package Service Providers... + */ + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\RouteServiceProvider::class, + ])->toArray(), + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => Facade::defaultAliases()->merge([ + // 'Example' => App\Facades\Example::class, + ])->toArray(), + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 00000000..9548c15d --- /dev/null +++ b/config/auth.php @@ -0,0 +1,115 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expiry time is the number of minutes that each reset token will be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + | The throttle setting is the number of seconds a user must wait before + | generating more password reset tokens. This prevents the user from + | quickly generating a very large amount of password reset tokens. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_reset_tokens', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 00000000..24104853 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,71 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'host' => env('PUSHER_HOST') ?: 'api-'.env('PUSHER_APP_CLUSTER', 'mt1').'.pusher.com', + 'port' => env('PUSHER_PORT', 443), + 'scheme' => env('PUSHER_SCHEME', 'https'), + 'encrypted' => true, + 'useTLS' => env('PUSHER_SCHEME', 'https') === 'https', + ], + 'client_options' => [ + // Guzzle client options: https://docs.guzzlephp.org/en/stable/request-options.html + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 00000000..d4171e22 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,111 @@ + env('CACHE_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Cache Stores + |-------------------------------------------------------------------------- + | + | Here you may define all of the cache "stores" for your application as + | well as their drivers. You may even define multiple stores for the + | same cache driver to group types of items stored in your caches. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "octane", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + 'lock_path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + 'octane' => [ + 'driver' => 'octane', + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing the APC, database, memcached, Redis, or DynamoDB cache + | stores there might be other applications using the same cache. For + | that reason, you may prefix every cache key to avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_cache_'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 00000000..8a39e6da --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 00000000..137ad18c --- /dev/null +++ b/config/database.php @@ -0,0 +1,151 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => null, + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'search_path' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + // 'encrypt' => env('DB_ENCRYPT', 'yes'), + // 'trust_server_certificate' => env('DB_TRUST_SERVER_CERTIFICATE', 'false'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'username' => env('REDIS_USERNAME'), + 'password' => env('REDIS_PASSWORD'), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 00000000..299850ea --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,92 @@ + env('FILESYSTEM_DISK', 'article_images'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been set up for each driver as an example of the required values. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + 'throw' => false, + ], + /* + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL').'/storage', + 'visibility' => 'public', + 'throw' => false, + ], + */ + 'article_images' => [ + 'driver' => 'local', + 'root' => storage_path('../public/article_images'), + 'url' => env('APP_URL').'/article_images', + 'visibility' => 'public', + 'throw' => false, + ], + + 'legacy_images' => [ + 'driver' => 'local', + 'root' => storage_path('../public/legacy_images'), + 'url' => env('APP_URL').'/legacy_images', + 'visibility' => 'public', + 'throw' => false, + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), + 'throw' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 00000000..bcd3be4c --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 65536, + 'threads' => 1, + 'time' => 4, + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 00000000..c44d2763 --- /dev/null +++ b/config/logging.php @@ -0,0 +1,131 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Deprecations Log Channel + |-------------------------------------------------------------------------- + | + | This option controls the log channel that should be used to log warnings + | regarding deprecated PHP and library features. This allows you to get + | your application ready for upcoming major versions of dependencies. + | + */ + + 'deprecations' => [ + 'channel' => env('LOG_DEPRECATIONS_CHANNEL', 'null'), + 'trace' => false, + ], + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + 'replace_placeholders' => true, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + 'replace_placeholders' => true, + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => env('LOG_PAPERTRAIL_HANDLER', SyslogUdpHandler::class), + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + 'connectionString' => 'tls://'.env('PAPERTRAIL_URL').':'.env('PAPERTRAIL_PORT'), + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + 'processors' => [PsrLogMessageProcessor::class], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + 'facility' => LOG_USER, + 'replace_placeholders' => true, + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + 'replace_placeholders' => true, + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 00000000..e652bd02 --- /dev/null +++ b/config/mail.php @@ -0,0 +1,125 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", "ses-v2", + | "postmark", "log", "array", "failover" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'url' => env('MAIL_URL'), + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'local_domain' => env('MAIL_EHLO_DOMAIN'), + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'postmark' => [ + 'transport' => 'postmark', + // 'client' => [ + // 'timeout' => 5, + // ], + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => env('MAIL_SENDMAIL_PATH', '/usr/sbin/sendmail -bs -i'), + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + + 'failover' => [ + 'transport' => 'failover', + 'mailers' => [ + 'smtp', + 'log', + ], + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 00000000..01c6b054 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,109 @@ + env('QUEUE_CONNECTION', 'sync'), + + /* + |-------------------------------------------------------------------------- + | Queue Connections + |-------------------------------------------------------------------------- + | + | Here you may configure the connection information for each server that + | is used by your application. A default configuration has been added + | for each back-end shipped with Laravel. You are free to add more. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + 'after_commit' => false, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + 'after_commit' => false, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'default'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'after_commit' => false, + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + 'after_commit' => false, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Job Batching + |-------------------------------------------------------------------------- + | + | The following options configure the database and table that store job + | batching information. These options can be updated to any database + | connection and table which has been defined by your application. + | + */ + + 'batching' => [ + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'job_batches', + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/sanctum.php b/config/sanctum.php new file mode 100644 index 00000000..529cfdc9 --- /dev/null +++ b/config/sanctum.php @@ -0,0 +1,67 @@ + explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( + '%s%s', + 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', + Sanctum::currentApplicationUrlWithPort() + ))), + + /* + |-------------------------------------------------------------------------- + | Sanctum Guards + |-------------------------------------------------------------------------- + | + | This array contains the authentication guards that will be checked when + | Sanctum is trying to authenticate a request. If none of these guards + | are able to authenticate the request, Sanctum will use the bearer + | token that's present on an incoming request for authentication. + | + */ + + 'guard' => ['web'], + + /* + |-------------------------------------------------------------------------- + | Expiration Minutes + |-------------------------------------------------------------------------- + | + | This value controls the number of minutes until an issued token will be + | considered expired. If this value is null, personal access tokens do + | not expire. This won't tweak the lifetime of first-party sessions. + | + */ + + 'expiration' => null, + + /* + |-------------------------------------------------------------------------- + | Sanctum Middleware + |-------------------------------------------------------------------------- + | + | When authenticating your first-party SPA with Sanctum you may need to + | customize some of the middleware Sanctum uses while processing the + | request. You may change the middleware listed below as required. + | + */ + + 'middleware' => [ + 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, + 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, + ], + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 00000000..0ace530e --- /dev/null +++ b/config/services.php @@ -0,0 +1,34 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + 'scheme' => 'https', + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 00000000..8fed97c0 --- /dev/null +++ b/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION'), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE'), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN'), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you when it can't be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 00000000..22b8a18d --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + resource_path('views'), + ], + + /* + |-------------------------------------------------------------------------- + | Compiled View Path + |-------------------------------------------------------------------------- + | + | This option determines where all the compiled Blade templates will be + | stored for your application. Typically, this is within the storage + | directory. However, as usual, you are free to change this value. + | + */ + + 'compiled' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 00000000..9b19b93c --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/ArticleFactory.php b/database/factories/ArticleFactory.php new file mode 100644 index 00000000..c46cb9e0 --- /dev/null +++ b/database/factories/ArticleFactory.php @@ -0,0 +1,27 @@ + + */ +class ArticleFactory extends Factory { + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array { + return [ + 'title' => $this->faker->text(rand(25,50)), + 'fulltext' => $this->faker->text(rand(300,1000)), + 'image' => RandomImage::getLegacyImageUri(env('PERCENTAGE_OF_ARTICLES_WITH_IMAGES',100)), + 'category_id' => Category::orderByRaw('rand()')->first()->id, + 'user_id' => null + ]; + } +} \ No newline at end of file diff --git a/database/factories/CategoryFactory.php b/database/factories/CategoryFactory.php new file mode 100644 index 00000000..92e415db --- /dev/null +++ b/database/factories/CategoryFactory.php @@ -0,0 +1,21 @@ + + */ +class CategoryFactory extends Factory { + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array { + return [ + 'name' => $this->faker->text(30) + ]; + } +} \ No newline at end of file diff --git a/database/factories/TagFactory.php b/database/factories/TagFactory.php new file mode 100644 index 00000000..b0ac5257 --- /dev/null +++ b/database/factories/TagFactory.php @@ -0,0 +1,21 @@ + + */ +class TagFactory extends Factory { + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array { + return [ + 'name' => $this->faker->text(15) + ]; + } +} \ No newline at end of file diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 00000000..a6ecc0af --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,38 @@ + + */ +class UserFactory extends Factory +{ + /** + * Define the model's default state. + * + * @return array + */ + public function definition(): array + { + return [ + 'name' => fake()->name(), + 'email' => fake()->unique()->safeEmail(), + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } + + /** + * Indicate that the model's email address should be unverified. + */ + public function unverified(): static + { + return $this->state(fn (array $attributes) => [ + 'email_verified_at' => null, + ]); + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 00000000..444fafb7 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('name'); + $table->string('email')->unique(); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password'); + $table->rememberToken(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php new file mode 100644 index 00000000..81a7229b --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php @@ -0,0 +1,28 @@ +string('email')->primary(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('password_reset_tokens'); + } +}; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 00000000..249da817 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php new file mode 100644 index 00000000..e828ad81 --- /dev/null +++ b/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php @@ -0,0 +1,33 @@ +id(); + $table->morphs('tokenable'); + $table->string('name'); + $table->string('token', 64)->unique(); + $table->text('abilities')->nullable(); + $table->timestamp('last_used_at')->nullable(); + $table->timestamp('expires_at')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('personal_access_tokens'); + } +}; diff --git a/database/migrations/2023_09_30_142130_create_categories_table.php b/database/migrations/2023_09_30_142130_create_categories_table.php new file mode 100644 index 00000000..3db6b98b --- /dev/null +++ b/database/migrations/2023_09_30_142130_create_categories_table.php @@ -0,0 +1,26 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('categories'); + } +}; \ No newline at end of file diff --git a/database/migrations/2023_09_30_145327_create_tags_table.php b/database/migrations/2023_09_30_145327_create_tags_table.php new file mode 100644 index 00000000..92d1269c --- /dev/null +++ b/database/migrations/2023_09_30_145327_create_tags_table.php @@ -0,0 +1,26 @@ +id(); + $table->string('name'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('tags'); + } +}; \ No newline at end of file diff --git a/database/migrations/2023_09_30_151223_create_articles_table.php b/database/migrations/2023_09_30_151223_create_articles_table.php new file mode 100644 index 00000000..7304a83e --- /dev/null +++ b/database/migrations/2023_09_30_151223_create_articles_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('title'); + $table->text('fulltext'); + $table->string('image')->nullable()->index(); + $table->foreignId('category_id')->constrained()->cascadeOnUpdate()->cascadeOnDelete(); + $table->foreignId('user_id')->nullable()->constrained()->cascadeOnUpdate()->nullOnDelete(); + $table->timestamps(); + $table->unique(['category_id', 'id']); + $table->unique(['user_id', 'id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('articles'); + } +}; \ No newline at end of file diff --git a/database/migrations/2023_09_30_174547_create_article_tag_table.php b/database/migrations/2023_09_30_174547_create_article_tag_table.php new file mode 100644 index 00000000..e50a850b --- /dev/null +++ b/database/migrations/2023_09_30_174547_create_article_tag_table.php @@ -0,0 +1,26 @@ +foreignId('article_id')->constrained()->cascadeOnUpdate()->cascadeOnDelete(); + $table->foreignId('tag_id')->constrained()->cascadeOnUpdate()->cascadeOnDelete(); + $table->primary(['article_id', 'tag_id']); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('article_tag'); + } +}; \ No newline at end of file diff --git a/database/seeders/ArticleSeeder.php b/database/seeders/ArticleSeeder.php new file mode 100644 index 00000000..31f70876 --- /dev/null +++ b/database/seeders/ArticleSeeder.php @@ -0,0 +1,18 @@ + 0) Article::factory(env('ARTICLES_TO_SEED'), [ + 'user_id' => User::first()->id + ])->create(); + } +} \ No newline at end of file diff --git a/database/seeders/ArticleTagSeeder.php b/database/seeders/ArticleTagSeeder.php new file mode 100644 index 00000000..7d9c8456 --- /dev/null +++ b/database/seeders/ArticleTagSeeder.php @@ -0,0 +1,19 @@ + 0) $article->tags()->attach(Tag::orderByRaw('rand()')->limit($qty)->get()->pluck('id')); + } + } +} \ No newline at end of file diff --git a/database/seeders/CategorySeeder.php b/database/seeders/CategorySeeder.php new file mode 100644 index 00000000..3efb17d5 --- /dev/null +++ b/database/seeders/CategorySeeder.php @@ -0,0 +1,13 @@ + 0) Category::factory(env('CATEGORIES_TO_SEED'))->create(); + } +} \ No newline at end of file diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 00000000..4e1c4852 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,16 @@ +call([ UserSeeder::class ]); + $this->call([ CategorySeeder::class ]); + $this->call([ TagSeeder::class ]); + $this->call([ ArticleSeeder::class ]); + $this->call([ ArticleTagSeeder::class ]); + } +} \ No newline at end of file diff --git a/database/seeders/TagSeeder.php b/database/seeders/TagSeeder.php new file mode 100644 index 00000000..9b501296 --- /dev/null +++ b/database/seeders/TagSeeder.php @@ -0,0 +1,13 @@ + 0) Tag::factory(env('TAGS_TO_SEED'))->create(); + } +} \ No newline at end of file diff --git a/database/seeders/UserSeeder.php b/database/seeders/UserSeeder.php new file mode 100644 index 00000000..afbe54ae --- /dev/null +++ b/database/seeders/UserSeeder.php @@ -0,0 +1,18 @@ + env('DEFAULT_USER_NAME'), + 'email' => env('DEFAULT_USER_EMAIL'), + 'password' => Hash::make(env('DEFAULT_USER_PASSWORD')) + ]); + } +} \ No newline at end of file diff --git a/gitimages/image01.png b/gitimages/image01.png new file mode 100644 index 0000000000000000000000000000000000000000..be54cd09a0cf8113e9354d1c10d84fc7210a0c84 GIT binary patch literal 162274 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%0DgkY@V9YMZj#f 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%0D9YxzNGzjPSr;v)ATtSW*G<=L4?T;e_;jHN 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∓Z_V<5h?oC40rlURQEd)d*Ty67C$p(%UXz7u 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 literal 0 HcmV?d00001 diff --git a/gitimages/image02.png b/gitimages/image02.png new file mode 100644 index 0000000000000000000000000000000000000000..b509a1e728b21276995602b975fe04dc4b08992f GIT binary patch literal 120071 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�du46E;>SC#KXS+7<>^o}5JJvKqSmU|3A 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 VBU_%zxa^m!t7!jPa_9cz{{snM?c4wW literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..eb4986f9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1783 @@ +{ + "name": "article_crud", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "@tailwindcss/forms": "^0.5.2", + "alpinejs": "^3.4.2", + "autoprefixer": "^10.4.2", + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "postcss": "^8.4.6", + "tailwindcss": "^3.1.0", + "vite": "^4.0.0" + } + }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", + "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@tailwindcss/forms": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.6.tgz", + "integrity": "sha512-Fw+2BJ0tmAwK/w01tEFL5TiaJBX1NLT1/YbWgvm7ws3Qcn11kiXxzNTEQDMs5V3mQemhB56l3u0i9dwdzSQldA==", + "dev": true, + "dependencies": { + "mini-svg-data-uri": "^1.2.3" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "dev": true, + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "dev": true + }, + "node_modules/alpinejs": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.13.0.tgz", + "integrity": "sha512-7FYR1Yz3evIjlJD1mZ3SYWSw+jlOmQGeQ1QiSufSQ6J84XMQFkzxm6OobiZ928SfqhGdoIp2SsABNsS4rXMMJw==", + "dev": true, + "dependencies": { + "@vue/reactivity": "~3.1.1" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/axios": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz", + "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/camelcase-css": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001541", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001541.tgz", + "integrity": "sha512-bLOsqxDgTqUBkzxbNlSBt8annkDpQB9NdzdTbO2ooJ+eC/IQcvDspDc058g84ejCelF7vHUx57KIOjEecOHXaw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", + "dev": true + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.537", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.537.tgz", + "integrity": "sha512-W1+g9qs9hviII0HAwOdehGYkr+zt7KKdmCcJcjH0mYg6oL8+ioT3Skjmt7BLoAQqXhjf40AXd+HlR4oAWMlXjA==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fastq": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/jiti": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.20.0.tgz", + "integrity": "sha512-3TV69ZbrvV6U5DfQimop50jE9Dl6J8O1ja1dvBbMba/sZ3YBEQqJ2VZRoQPVnhlzjNtU1vaXRZVrVjU4qtm8yA==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", + "integrity": "sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "dev": true, + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dev": true, + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "bin": { + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tailwindcss": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.3.tgz", + "integrity": "sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==", + "dev": true, + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.2.12", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.18.2", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "dependencies": { + "any-promise": "^1.0.0" + } + }, + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/vite": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", + "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.0.5.tgz", + "integrity": "sha512-kVZFDFWr0DxiHn6MuDVTQf7gnWIdETGlZh0hvTiMXzRN80vgF4PKbONSq8U1d0WtHsKaFODTQgJeakLacoPZEQ==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + }, + "peerDependencies": { + "vite": "^2 || ^3 || ^4" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", + "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", + "dev": true, + "engines": { + "node": ">= 14" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..37c91af0 --- /dev/null +++ b/package.json @@ -0,0 +1,18 @@ +{ + "private": true, + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.2", + "alpinejs": "^3.4.2", + "autoprefixer": "^10.4.2", + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "postcss": "^8.4.6", + "tailwindcss": "^3.1.0", + "vite": "^4.0.0" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 00000000..f112c0c8 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + tests/Unit + + + tests/Feature + + + + + app + + + + + + + + + + + + + + diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 00000000..49c0612d --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +export default { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 00000000..3aec5e27 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/avatar.png b/public/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..95a2e612f1ab6e56df7fee9d4a9c3a62e4446325 GIT binary patch literal 13037 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:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(2rem * var(--tw-space-x-reverse));margin-left:calc(2rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-4{border-left-width:4px}.border-t{border-top-width:1px}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity))}.border-indigo-400{--tw-border-opacity: 1;border-color:rgb(129 140 248 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-cyan-700{--tw-bg-opacity: 1;background-color:rgb(14 116 144 / var(--tw-bg-opacity))}.bg-emerald-700{--tw-bg-opacity: 1;background-color:rgb(4 120 87 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity: 1;background-color:rgb(238 242 255 / var(--tw-bg-opacity))}.bg-red-600{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.bg-red-900{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.bg-slate-50{--tw-bg-opacity: 1;background-color:rgb(248 250 252 / var(--tw-bg-opacity))}.bg-teal-700{--tw-bg-opacity: 1;background-color:rgb(15 118 110 / var(--tw-bg-opacity))}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.fill-current{fill:currentColor}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.pb-1{padding-bottom:.25rem}.pb-1\.5{padding-bottom:.375rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pr-4{padding-right:1rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.font-martianmono{font-family:Martian Mono}.font-sans{font-family:Kanit,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-extralight{font-weight:200}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-tight{line-height:1.25}.tracking-widest{letter-spacing:.1em}.text-cyan-800{--tw-text-opacity: 1;color:rgb(21 94 117 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-50{--tw-text-opacity: 1;color:rgb(249 250 251 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-gray-950{--tw-text-opacity: 1;color:rgb(3 7 18 / var(--tw-text-opacity))}.text-green-600{--tw-text-opacity: 1;color:rgb(22 163 74 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity: 1;color:rgb(67 56 202 / var(--tw-text-opacity))}.text-pink-950{--tw-text-opacity: 1;color:rgb(80 7 36 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-gray-300{--tw-ring-opacity: 1;--tw-ring-color: rgb(209 213 219 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.hover\:border-gray-300:hover{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-50:hover{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.hover\:bg-red-500:hover{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.hover\:text-gray-400:hover{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:z-10:focus{z-index:10}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-gray-300:focus{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.focus\:border-gray-900:focus{--tw-border-opacity: 1;border-color:rgb(17 24 39 / var(--tw-border-opacity))}.focus\:border-indigo-300:focus{--tw-border-opacity: 1;border-color:rgb(165 180 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-indigo-700:focus{--tw-border-opacity: 1;border-color:rgb(67 56 202 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-50:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.focus\:bg-gray-700:focus{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.focus\:bg-indigo-100:focus{--tw-bg-opacity: 1;background-color:rgb(224 231 255 / var(--tw-bg-opacity))}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-700:focus{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.focus\:text-gray-800:focus{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.focus\:text-indigo-800:focus{--tw-text-opacity: 1;color:rgb(55 48 163 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-indigo-200:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px}.active\:bg-gray-100:active{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.active\:bg-gray-900:active{--tw-bg-opacity: 1;background-color:rgb(17 24 39 / var(--tw-bg-opacity))}.active\:bg-red-700:active{--tw-bg-opacity: 1;background-color:rgb(185 28 28 / var(--tw-bg-opacity))}.active\:text-gray-500:active{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.active\:text-gray-700:active{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.disabled\:opacity-25:disabled{opacity:.25}@media (min-width: 640px){.sm\:-my-px{margin-top:-1px;margin-bottom:-1px}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:ml-0{margin-left:0}.sm\:ml-10{margin-left:2.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:w-full{width:100%}.sm\:max-w-2xl{max-width:42rem}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-md{max-width:28rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-xl{max-width:36rem}.sm\:flex-1{flex:1 1 0%}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:rounded-lg{border-radius:.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}}@media (min-width: 768px){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width: 1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width: 1280px){.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}@media (min-width: 1536px){.\32xl\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}} diff --git a/public/build/assets/app-7c0572f8.js b/public/build/assets/app-7c0572f8.js new file mode 100644 index 00000000..d3a4ebbe --- /dev/null +++ b/public/build/assets/app-7c0572f8.js @@ -0,0 +1,9 @@ +function xn(e,t){return function(){return e.apply(t,arguments)}}const{toString:Qr}=Object.prototype,{getPrototypeOf:wt}=Object,Ne=(e=>t=>{const n=Qr.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),F=e=>(e=e.toLowerCase(),t=>Ne(t)===e),Me=e=>t=>typeof t===e,{isArray:Q}=Array,le=Me("undefined");function Zr(e){return e!==null&&!le(e)&&e.constructor!==null&&!le(e.constructor)&&C(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const wn=F("ArrayBuffer");function ei(e){let t;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&wn(e.buffer),t}const ti=Me("string"),C=Me("function"),En=Me("number"),Fe=e=>e!==null&&typeof e=="object",ni=e=>e===!0||e===!1,Se=e=>{if(Ne(e)!=="object")return!1;const t=wt(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},ri=F("Date"),ii=F("File"),si=F("Blob"),oi=F("FileList"),ai=e=>Fe(e)&&C(e.pipe),ci=e=>{let t;return e&&(typeof FormData=="function"&&e instanceof FormData||C(e.append)&&((t=Ne(e))==="formdata"||t==="object"&&C(e.toString)&&e.toString()==="[object FormData]"))},ui=F("URLSearchParams"),li=e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function de(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>"u")return;let r,i;if(typeof e!="object"&&(e=[e]),Q(e))for(r=0,i=e.length;r0;)if(i=n[r],t===i.toLowerCase())return i;return null}const An=(()=>typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global)(),vn=e=>!le(e)&&e!==An;function Qe(){const{caseless:e}=vn(this)&&this||{},t={},n=(r,i)=>{const s=e&&Sn(t,i)||i;Se(t[s])&&Se(r)?t[s]=Qe(t[s],r):Se(r)?t[s]=Qe({},r):Q(r)?t[s]=r.slice():t[s]=r};for(let r=0,i=arguments.length;r(de(t,(i,s)=>{n&&C(i)?e[s]=xn(i,n):e[s]=i},{allOwnKeys:r}),e),di=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),pi=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),n&&Object.assign(e.prototype,n)},hi=(e,t,n,r)=>{let i,s,o;const a={};if(t=t||{},e==null)return t;do{for(i=Object.getOwnPropertyNames(e),s=i.length;s-- >0;)o=i[s],(!r||r(o,e,t))&&!a[o]&&(t[o]=e[o],a[o]=!0);e=n!==!1&&wt(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},_i=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},mi=e=>{if(!e)return null;if(Q(e))return e;let t=e.length;if(!En(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},yi=(e=>t=>e&&t instanceof e)(typeof Uint8Array<"u"&&wt(Uint8Array)),gi=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let i;for(;(i=r.next())&&!i.done;){const s=i.value;t.call(e,s[0],s[1])}},bi=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},xi=F("HTMLFormElement"),wi=e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(n,r,i){return r.toUpperCase()+i}),Gt=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),Ei=F("RegExp"),On=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};de(n,(i,s)=>{let o;(o=t(i,s,e))!==!1&&(r[s]=o||i)}),Object.defineProperties(e,r)},Si=e=>{On(e,(t,n)=>{if(C(e)&&["arguments","caller","callee"].indexOf(n)!==-1)return!1;const r=e[n];if(C(r)){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+n+"'")})}})},Ai=(e,t)=>{const n={},r=i=>{i.forEach(s=>{n[s]=!0})};return Q(e)?r(e):r(String(e).split(t)),n},vi=()=>{},Oi=(e,t)=>(e=+e,Number.isFinite(e)?e:t),ze="abcdefghijklmnopqrstuvwxyz",Xt="0123456789",Rn={DIGIT:Xt,ALPHA:ze,ALPHA_DIGIT:ze+ze.toUpperCase()+Xt},Ri=(e=16,t=Rn.ALPHA_DIGIT)=>{let n="";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function Ci(e){return!!(e&&C(e.append)&&e[Symbol.toStringTag]==="FormData"&&e[Symbol.iterator])}const Ti=e=>{const t=new Array(10),n=(r,i)=>{if(Fe(r)){if(t.indexOf(r)>=0)return;if(!("toJSON"in r)){t[i]=r;const s=Q(r)?[]:{};return de(r,(o,a)=>{const u=n(o,i+1);!le(u)&&(s[a]=u)}),t[i]=void 0,s}}return r};return n(e,0)},Pi=F("AsyncFunction"),Ni=e=>e&&(Fe(e)||C(e))&&C(e.then)&&C(e.catch),f={isArray:Q,isArrayBuffer:wn,isBuffer:Zr,isFormData:ci,isArrayBufferView:ei,isString:ti,isNumber:En,isBoolean:ni,isObject:Fe,isPlainObject:Se,isUndefined:le,isDate:ri,isFile:ii,isBlob:si,isRegExp:Ei,isFunction:C,isStream:ai,isURLSearchParams:ui,isTypedArray:yi,isFileList:oi,forEach:de,merge:Qe,extend:fi,trim:li,stripBOM:di,inherits:pi,toFlatObject:hi,kindOf:Ne,kindOfTest:F,endsWith:_i,toArray:mi,forEachEntry:gi,matchAll:bi,isHTMLForm:xi,hasOwnProperty:Gt,hasOwnProp:Gt,reduceDescriptors:On,freezeMethods:Si,toObjectSet:Ai,toCamelCase:wi,noop:vi,toFiniteNumber:Oi,findKey:Sn,global:An,isContextDefined:vn,ALPHABET:Rn,generateString:Ri,isSpecCompliantForm:Ci,toJSONObject:Ti,isAsyncFn:Pi,isThenable:Ni};function g(e,t,n,r,i){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),i&&(this.response=i)}f.inherits(g,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:f.toJSONObject(this.config),code:this.code,status:this.response&&this.response.status?this.response.status:null}}});const Cn=g.prototype,Tn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{Tn[e]={value:e}});Object.defineProperties(g,Tn);Object.defineProperty(Cn,"isAxiosError",{value:!0});g.from=(e,t,n,r,i,s)=>{const o=Object.create(Cn);return f.toFlatObject(e,o,function(u){return u!==Error.prototype},a=>a!=="isAxiosError"),g.call(o,e.message,t,n,r,i),o.cause=e,o.name=e.name,s&&Object.assign(o,s),o};const Mi=null;function Ze(e){return f.isPlainObject(e)||f.isArray(e)}function Pn(e){return f.endsWith(e,"[]")?e.slice(0,-2):e}function Yt(e,t,n){return e?e.concat(t).map(function(i,s){return i=Pn(i),!n&&s?"["+i+"]":i}).join(n?".":""):t}function Fi(e){return f.isArray(e)&&!e.some(Ze)}const Li=f.toFlatObject(f,{},null,function(t){return/^is[A-Z]/.test(t)});function Le(e,t,n){if(!f.isObject(e))throw new TypeError("target must be an object");t=t||new FormData,n=f.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,h){return!f.isUndefined(h[m])});const r=n.metaTokens,i=n.visitor||c,s=n.dots,o=n.indexes,u=(n.Blob||typeof Blob<"u"&&Blob)&&f.isSpecCompliantForm(t);if(!f.isFunction(i))throw new TypeError("visitor must be a function");function l(p){if(p===null)return"";if(f.isDate(p))return p.toISOString();if(!u&&f.isBlob(p))throw new g("Blob is not supported. Use a Buffer instead.");return f.isArrayBuffer(p)||f.isTypedArray(p)?u&&typeof Blob=="function"?new Blob([p]):Buffer.from(p):p}function c(p,m,h){let y=p;if(p&&!h&&typeof p=="object"){if(f.endsWith(m,"{}"))m=r?m:m.slice(0,-2),p=JSON.stringify(p);else if(f.isArray(p)&&Fi(p)||(f.isFileList(p)||f.endsWith(m,"[]"))&&(y=f.toArray(p)))return m=Pn(m),y.forEach(function(E,R){!(f.isUndefined(E)||E===null)&&t.append(o===!0?Yt([m],R,s):o===null?m:m+"[]",l(E))}),!1}return Ze(p)?!0:(t.append(Yt(h,m,s),l(p)),!1)}const d=[],_=Object.assign(Li,{defaultVisitor:c,convertValue:l,isVisitable:Ze});function b(p,m){if(!f.isUndefined(p)){if(d.indexOf(p)!==-1)throw Error("Circular reference detected in "+m.join("."));d.push(p),f.forEach(p,function(y,x){(!(f.isUndefined(y)||y===null)&&i.call(t,y,f.isString(x)?x.trim():x,m,_))===!0&&b(y,m?m.concat(x):[x])}),d.pop()}}if(!f.isObject(e))throw new TypeError("data must be an object");return b(e),t}function Qt(e){const t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function Et(e,t){this._pairs=[],e&&Le(e,this,t)}const Nn=Et.prototype;Nn.append=function(t,n){this._pairs.push([t,n])};Nn.toString=function(t){const n=t?function(r){return t.call(this,r,Qt)}:Qt;return this._pairs.map(function(i){return n(i[0])+"="+n(i[1])},"").join("&")};function Ii(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Mn(e,t,n){if(!t)return e;const r=n&&n.encode||Ii,i=n&&n.serialize;let s;if(i?s=i(t,n):s=f.isURLSearchParams(t)?t.toString():new Et(t,n).toString(r),s){const o=e.indexOf("#");o!==-1&&(e=e.slice(0,o)),e+=(e.indexOf("?")===-1?"?":"&")+s}return e}class Bi{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){f.forEach(this.handlers,function(r){r!==null&&t(r)})}}const Zt=Bi,Fn={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ji=typeof URLSearchParams<"u"?URLSearchParams:Et,Di=typeof FormData<"u"?FormData:null,$i=typeof Blob<"u"?Blob:null,Ui=(()=>{let e;return typeof navigator<"u"&&((e=navigator.product)==="ReactNative"||e==="NativeScript"||e==="NS")?!1:typeof window<"u"&&typeof document<"u"})(),ki=(()=>typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function")(),M={isBrowser:!0,classes:{URLSearchParams:ji,FormData:Di,Blob:$i},isStandardBrowserEnv:Ui,isStandardBrowserWebWorkerEnv:ki,protocols:["http","https","file","blob","url","data"]};function Hi(e,t){return Le(e,new M.classes.URLSearchParams,Object.assign({visitor:function(n,r,i,s){return M.isNode&&f.isBuffer(n)?(this.append(r,n.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},t))}function qi(e){return f.matchAll(/\w+|\[(\w*)]/g,e).map(t=>t[0]==="[]"?"":t[1]||t[0])}function zi(e){const t={},n=Object.keys(e);let r;const i=n.length;let s;for(r=0;r=n.length;return o=!o&&f.isArray(i)?i.length:o,u?(f.hasOwnProp(i,o)?i[o]=[i[o],r]:i[o]=r,!a):((!i[o]||!f.isObject(i[o]))&&(i[o]=[]),t(n,r,i[o],s)&&f.isArray(i[o])&&(i[o]=zi(i[o])),!a)}if(f.isFormData(e)&&f.isFunction(e.entries)){const n={};return f.forEachEntry(e,(r,i)=>{t(qi(r),i,n,0)}),n}return null}function Ki(e,t,n){if(f.isString(e))try{return(t||JSON.parse)(e),f.trim(e)}catch(r){if(r.name!=="SyntaxError")throw r}return(n||JSON.stringify)(e)}const St={transitional:Fn,adapter:["xhr","http"],transformRequest:[function(t,n){const r=n.getContentType()||"",i=r.indexOf("application/json")>-1,s=f.isObject(t);if(s&&f.isHTMLForm(t)&&(t=new FormData(t)),f.isFormData(t))return i&&i?JSON.stringify(Ln(t)):t;if(f.isArrayBuffer(t)||f.isBuffer(t)||f.isStream(t)||f.isFile(t)||f.isBlob(t))return t;if(f.isArrayBufferView(t))return t.buffer;if(f.isURLSearchParams(t))return n.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),t.toString();let a;if(s){if(r.indexOf("application/x-www-form-urlencoded")>-1)return Hi(t,this.formSerializer).toString();if((a=f.isFileList(t))||r.indexOf("multipart/form-data")>-1){const u=this.env&&this.env.FormData;return Le(a?{"files[]":t}:t,u&&new u,this.formSerializer)}}return s||i?(n.setContentType("application/json",!1),Ki(t)):t}],transformResponse:[function(t){const n=this.transitional||St.transitional,r=n&&n.forcedJSONParsing,i=this.responseType==="json";if(t&&f.isString(t)&&(r&&!this.responseType||i)){const o=!(n&&n.silentJSONParsing)&&i;try{return JSON.parse(t)}catch(a){if(o)throw a.name==="SyntaxError"?g.from(a,g.ERR_BAD_RESPONSE,this,null,this.response):a}}return t}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:M.classes.FormData,Blob:M.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};f.forEach(["delete","get","head","post","put","patch"],e=>{St.headers[e]={}});const At=St,Ji=f.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Wi=e=>{const t={};let n,r,i;return e&&e.split(` +`).forEach(function(o){i=o.indexOf(":"),n=o.substring(0,i).trim().toLowerCase(),r=o.substring(i+1).trim(),!(!n||t[n]&&Ji[n])&&(n==="set-cookie"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+", "+r:r)}),t},en=Symbol("internals");function re(e){return e&&String(e).trim().toLowerCase()}function Ae(e){return e===!1||e==null?e:f.isArray(e)?e.map(Ae):String(e)}function Vi(e){const t=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const Gi=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function Ke(e,t,n,r,i){if(f.isFunction(r))return r.call(this,t,n);if(i&&(t=n),!!f.isString(t)){if(f.isString(r))return t.indexOf(r)!==-1;if(f.isRegExp(r))return r.test(t)}}function Xi(e){return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function Yi(e,t){const n=f.toCamelCase(" "+t);["get","set","has"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(i,s,o){return this[r].call(this,t,i,s,o)},configurable:!0})})}class Ie{constructor(t){t&&this.set(t)}set(t,n,r){const i=this;function s(a,u,l){const c=re(u);if(!c)throw new Error("header name must be a non-empty string");const d=f.findKey(i,c);(!d||i[d]===void 0||l===!0||l===void 0&&i[d]!==!1)&&(i[d||u]=Ae(a))}const o=(a,u)=>f.forEach(a,(l,c)=>s(l,c,u));return f.isPlainObject(t)||t instanceof this.constructor?o(t,n):f.isString(t)&&(t=t.trim())&&!Gi(t)?o(Wi(t),n):t!=null&&s(n,t,r),this}get(t,n){if(t=re(t),t){const r=f.findKey(this,t);if(r){const i=this[r];if(!n)return i;if(n===!0)return Vi(i);if(f.isFunction(n))return n.call(this,i,r);if(f.isRegExp(n))return n.exec(i);throw new TypeError("parser must be boolean|regexp|function")}}}has(t,n){if(t=re(t),t){const r=f.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||Ke(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let i=!1;function s(o){if(o=re(o),o){const a=f.findKey(r,o);a&&(!n||Ke(r,r[a],a,n))&&(delete r[a],i=!0)}}return f.isArray(t)?t.forEach(s):s(t),i}clear(t){const n=Object.keys(this);let r=n.length,i=!1;for(;r--;){const s=n[r];(!t||Ke(this,this[s],s,t,!0))&&(delete this[s],i=!0)}return i}normalize(t){const n=this,r={};return f.forEach(this,(i,s)=>{const o=f.findKey(r,s);if(o){n[o]=Ae(i),delete n[s];return}const a=t?Xi(s):String(s).trim();a!==s&&delete n[s],n[a]=Ae(i),r[a]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return f.forEach(this,(r,i)=>{r!=null&&r!==!1&&(n[i]=t&&f.isArray(r)?r.join(", "):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+": "+n).join(` +`)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(i=>r.set(i)),r}static accessor(t){const r=(this[en]=this[en]={accessors:{}}).accessors,i=this.prototype;function s(o){const a=re(o);r[a]||(Yi(i,o),r[a]=!0)}return f.isArray(t)?t.forEach(s):s(t),this}}Ie.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);f.reduceDescriptors(Ie.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});f.freezeMethods(Ie);const L=Ie;function Je(e,t){const n=this||At,r=t||n,i=L.from(r.headers);let s=r.data;return f.forEach(e,function(a){s=a.call(n,s,i.normalize(),t?t.status:void 0)}),i.normalize(),s}function In(e){return!!(e&&e.__CANCEL__)}function pe(e,t,n){g.call(this,e??"canceled",g.ERR_CANCELED,t,n),this.name="CanceledError"}f.inherits(pe,g,{__CANCEL__:!0});function Qi(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new g("Request failed with status code "+n.status,[g.ERR_BAD_REQUEST,g.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}const Zi=M.isStandardBrowserEnv?function(){return{write:function(n,r,i,s,o,a){const u=[];u.push(n+"="+encodeURIComponent(r)),f.isNumber(i)&&u.push("expires="+new Date(i).toGMTString()),f.isString(s)&&u.push("path="+s),f.isString(o)&&u.push("domain="+o),a===!0&&u.push("secure"),document.cookie=u.join("; ")},read:function(n){const r=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return r?decodeURIComponent(r[3]):null},remove:function(n){this.write(n,"",Date.now()-864e5)}}}():function(){return{write:function(){},read:function(){return null},remove:function(){}}}();function es(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function ts(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}function Bn(e,t){return e&&!es(t)?ts(e,t):t}const ns=M.isStandardBrowserEnv?function(){const t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");let r;function i(s){let o=s;return t&&(n.setAttribute("href",o),o=n.href),n.setAttribute("href",o),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=i(window.location.href),function(o){const a=f.isString(o)?i(o):o;return a.protocol===r.protocol&&a.host===r.host}}():function(){return function(){return!0}}();function rs(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function is(e,t){e=e||10;const n=new Array(e),r=new Array(e);let i=0,s=0,o;return t=t!==void 0?t:1e3,function(u){const l=Date.now(),c=r[s];o||(o=l),n[i]=u,r[i]=l;let d=s,_=0;for(;d!==i;)_+=n[d++],d=d%e;if(i=(i+1)%e,i===s&&(s=(s+1)%e),l-o{const s=i.loaded,o=i.lengthComputable?i.total:void 0,a=s-n,u=r(a),l=s<=o;n=s;const c={loaded:s,total:o,progress:o?s/o:void 0,bytes:a,rate:u||void 0,estimated:u&&o&&l?(o-s)/u:void 0,event:i};c[t?"download":"upload"]=!0,e(c)}}const ss=typeof XMLHttpRequest<"u",os=ss&&function(e){return new Promise(function(n,r){let i=e.data;const s=L.from(e.headers).normalize(),o=e.responseType;let a;function u(){e.cancelToken&&e.cancelToken.unsubscribe(a),e.signal&&e.signal.removeEventListener("abort",a)}let l;f.isFormData(i)&&(M.isStandardBrowserEnv||M.isStandardBrowserWebWorkerEnv?s.setContentType(!1):s.getContentType(/^\s*multipart\/form-data/)?f.isString(l=s.getContentType())&&s.setContentType(l.replace(/^\s*(multipart\/form-data);+/,"$1")):s.setContentType("multipart/form-data"));let c=new XMLHttpRequest;if(e.auth){const p=e.auth.username||"",m=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.set("Authorization","Basic "+btoa(p+":"+m))}const d=Bn(e.baseURL,e.url);c.open(e.method.toUpperCase(),Mn(d,e.params,e.paramsSerializer),!0),c.timeout=e.timeout;function _(){if(!c)return;const p=L.from("getAllResponseHeaders"in c&&c.getAllResponseHeaders()),h={data:!o||o==="text"||o==="json"?c.responseText:c.response,status:c.status,statusText:c.statusText,headers:p,config:e,request:c};Qi(function(x){n(x),u()},function(x){r(x),u()},h),c=null}if("onloadend"in c?c.onloadend=_:c.onreadystatechange=function(){!c||c.readyState!==4||c.status===0&&!(c.responseURL&&c.responseURL.indexOf("file:")===0)||setTimeout(_)},c.onabort=function(){c&&(r(new g("Request aborted",g.ECONNABORTED,e,c)),c=null)},c.onerror=function(){r(new g("Network Error",g.ERR_NETWORK,e,c)),c=null},c.ontimeout=function(){let m=e.timeout?"timeout of "+e.timeout+"ms exceeded":"timeout exceeded";const h=e.transitional||Fn;e.timeoutErrorMessage&&(m=e.timeoutErrorMessage),r(new g(m,h.clarifyTimeoutError?g.ETIMEDOUT:g.ECONNABORTED,e,c)),c=null},M.isStandardBrowserEnv){const p=(e.withCredentials||ns(d))&&e.xsrfCookieName&&Zi.read(e.xsrfCookieName);p&&s.set(e.xsrfHeaderName,p)}i===void 0&&s.setContentType(null),"setRequestHeader"in c&&f.forEach(s.toJSON(),function(m,h){c.setRequestHeader(h,m)}),f.isUndefined(e.withCredentials)||(c.withCredentials=!!e.withCredentials),o&&o!=="json"&&(c.responseType=e.responseType),typeof e.onDownloadProgress=="function"&&c.addEventListener("progress",tn(e.onDownloadProgress,!0)),typeof e.onUploadProgress=="function"&&c.upload&&c.upload.addEventListener("progress",tn(e.onUploadProgress)),(e.cancelToken||e.signal)&&(a=p=>{c&&(r(!p||p.type?new pe(null,e,c):p),c.abort(),c=null)},e.cancelToken&&e.cancelToken.subscribe(a),e.signal&&(e.signal.aborted?a():e.signal.addEventListener("abort",a)));const b=rs(d);if(b&&M.protocols.indexOf(b)===-1){r(new g("Unsupported protocol "+b+":",g.ERR_BAD_REQUEST,e));return}c.send(i||null)})},et={http:Mi,xhr:os};f.forEach(et,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const nn=e=>`- ${e}`,as=e=>f.isFunction(e)||e===null||e===!1,jn={getAdapter:e=>{e=f.isArray(e)?e:[e];const{length:t}=e;let n,r;const i={};for(let s=0;s`adapter ${a} `+(u===!1?"is not supported by the environment":"is not available in the build"));let o=t?s.length>1?`since : +`+s.map(nn).join(` +`):" "+nn(s[0]):"as no adapter specified";throw new g("There is no suitable adapter to dispatch the request "+o,"ERR_NOT_SUPPORT")}return r},adapters:et};function We(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new pe(null,e)}function rn(e){return We(e),e.headers=L.from(e.headers),e.data=Je.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),jn.getAdapter(e.adapter||At.adapter)(e).then(function(r){return We(e),r.data=Je.call(e,e.transformResponse,r),r.headers=L.from(r.headers),r},function(r){return In(r)||(We(e),r&&r.response&&(r.response.data=Je.call(e,e.transformResponse,r.response),r.response.headers=L.from(r.response.headers))),Promise.reject(r)})}const sn=e=>e instanceof L?e.toJSON():e;function G(e,t){t=t||{};const n={};function r(l,c,d){return f.isPlainObject(l)&&f.isPlainObject(c)?f.merge.call({caseless:d},l,c):f.isPlainObject(c)?f.merge({},c):f.isArray(c)?c.slice():c}function i(l,c,d){if(f.isUndefined(c)){if(!f.isUndefined(l))return r(void 0,l,d)}else return r(l,c,d)}function s(l,c){if(!f.isUndefined(c))return r(void 0,c)}function o(l,c){if(f.isUndefined(c)){if(!f.isUndefined(l))return r(void 0,l)}else return r(void 0,c)}function a(l,c,d){if(d in t)return r(l,c);if(d in e)return r(void 0,l)}const u={url:s,method:s,data:s,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:a,headers:(l,c)=>i(sn(l),sn(c),!0)};return f.forEach(Object.keys(Object.assign({},e,t)),function(c){const d=u[c]||i,_=d(e[c],t[c],c);f.isUndefined(_)&&d!==a||(n[c]=_)}),n}const Dn="1.5.1",vt={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{vt[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const on={};vt.transitional=function(t,n,r){function i(s,o){return"[Axios v"+Dn+"] Transitional option '"+s+"'"+o+(r?". "+r:"")}return(s,o,a)=>{if(t===!1)throw new g(i(o," has been removed"+(n?" in "+n:"")),g.ERR_DEPRECATED);return n&&!on[o]&&(on[o]=!0,console.warn(i(o," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(s,o,a):!0}};function cs(e,t,n){if(typeof e!="object")throw new g("options must be an object",g.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let i=r.length;for(;i-- >0;){const s=r[i],o=t[s];if(o){const a=e[s],u=a===void 0||o(a,s,e);if(u!==!0)throw new g("option "+s+" must be "+u,g.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new g("Unknown option "+s,g.ERR_BAD_OPTION)}}const tt={assertOptions:cs,validators:vt},B=tt.validators;class Re{constructor(t){this.defaults=t,this.interceptors={request:new Zt,response:new Zt}}request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=G(this.defaults,n);const{transitional:r,paramsSerializer:i,headers:s}=n;r!==void 0&&tt.assertOptions(r,{silentJSONParsing:B.transitional(B.boolean),forcedJSONParsing:B.transitional(B.boolean),clarifyTimeoutError:B.transitional(B.boolean)},!1),i!=null&&(f.isFunction(i)?n.paramsSerializer={serialize:i}:tt.assertOptions(i,{encode:B.function,serialize:B.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let o=s&&f.merge(s.common,s[n.method]);s&&f.forEach(["delete","get","head","post","put","patch","common"],p=>{delete s[p]}),n.headers=L.concat(o,s);const a=[];let u=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(n)===!1||(u=u&&m.synchronous,a.unshift(m.fulfilled,m.rejected))});const l=[];this.interceptors.response.forEach(function(m){l.push(m.fulfilled,m.rejected)});let c,d=0,_;if(!u){const p=[rn.bind(this),void 0];for(p.unshift.apply(p,a),p.push.apply(p,l),_=p.length,c=Promise.resolve(n);d<_;)c=c.then(p[d++],p[d++]);return c}_=a.length;let b=n;for(d=0;d<_;){const p=a[d++],m=a[d++];try{b=p(b)}catch(h){m.call(this,h);break}}try{c=rn.call(this,b)}catch(p){return Promise.reject(p)}for(d=0,_=l.length;d<_;)c=c.then(l[d++],l[d++]);return c}getUri(t){t=G(this.defaults,t);const n=Bn(t.baseURL,t.url);return Mn(n,t.params,t.paramsSerializer)}}f.forEach(["delete","get","head","options"],function(t){Re.prototype[t]=function(n,r){return this.request(G(r||{},{method:t,url:n,data:(r||{}).data}))}});f.forEach(["post","put","patch"],function(t){function n(r){return function(s,o,a){return this.request(G(a||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:s,data:o}))}}Re.prototype[t]=n(),Re.prototype[t+"Form"]=n(!0)});const ve=Re;class Ot{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(s){n=s});const r=this;this.promise.then(i=>{if(!r._listeners)return;let s=r._listeners.length;for(;s-- >0;)r._listeners[s](i);r._listeners=null}),this.promise.then=i=>{let s;const o=new Promise(a=>{r.subscribe(a),s=a}).then(i);return o.cancel=function(){r.unsubscribe(s)},o},t(function(s,o,a){r.reason||(r.reason=new pe(s,o,a),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}static source(){let t;return{token:new Ot(function(i){t=i}),cancel:t}}}const us=Ot;function ls(e){return function(n){return e.apply(null,n)}}function fs(e){return f.isObject(e)&&e.isAxiosError===!0}const nt={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nt).forEach(([e,t])=>{nt[t]=e});const ds=nt;function $n(e){const t=new ve(e),n=xn(ve.prototype.request,t);return f.extend(n,ve.prototype,t,{allOwnKeys:!0}),f.extend(n,t,null,{allOwnKeys:!0}),n.create=function(i){return $n(G(e,i))},n}const S=$n(At);S.Axios=ve;S.CanceledError=pe;S.CancelToken=us;S.isCancel=In;S.VERSION=Dn;S.toFormData=Le;S.AxiosError=g;S.Cancel=S.CanceledError;S.all=function(t){return Promise.all(t)};S.spread=ls;S.isAxiosError=fs;S.mergeConfig=G;S.AxiosHeaders=L;S.formToJSON=e=>Ln(f.isHTMLForm(e)?new FormData(e):e);S.getAdapter=jn.getAdapter;S.HttpStatusCode=ds;S.default=S;const ps=S;window.axios=ps;window.axios.defaults.headers.common["X-Requested-With"]="XMLHttpRequest";var rt=!1,it=!1,z=[],st=-1;function hs(e){_s(e)}function _s(e){z.includes(e)||z.push(e),ms()}function Un(e){let t=z.indexOf(e);t!==-1&&t>st&&z.splice(t,1)}function ms(){!it&&!rt&&(rt=!0,queueMicrotask(ys))}function ys(){rt=!1,it=!0;for(let e=0;ee.effect(t,{scheduler:n=>{ot?hs(n):n()}}),kn=e.raw}function an(e){ee=e}function xs(e){let t=()=>{};return[r=>{let i=ee(r);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(s=>s())}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),he(i))},i},()=>{t()}]}function ae(e,t,n={}){e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0,cancelable:!0}))}function D(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>D(i,t));return}let n=!1;if(t(e,()=>n=!0),n)return;let r=e.firstElementChild;for(;r;)D(r,t),r=r.nextElementSibling}function $(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var cn=!1;function ws(){cn&&$("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),cn=!0,document.body||$("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `