From 3988bbe0c09b893b45871266ec3b9bebf8d1b3dd Mon Sep 17 00:00:00 2001 From: bahamasangare <126417285+bahamasangare@users.noreply.github.com> Date: Sun, 4 Feb 2024 19:53:47 +0100 Subject: [PATCH] Initial commit --- .editorconfig | 22 + .env.example | 73 + .gitattributes | 15 + .github/workflows/Tests.yml | 119 + .gitignore | 60 + .htaccess | 65 + CHANGELOG.md | 25 + LICENSE.md | 21 + README.md | 251 + app/Console/Kernel.php | 29 + app/Exceptions/Handler.php | 31 + app/Http/Controllers/Controller.php | 12 + app/Http/Kernel.php | 68 + app/Http/Middleware/Authenticate.php | 18 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 31 + app/Http/Middleware/TrimStrings.php | 19 + app/Http/Middleware/TrustHosts.php | 21 + app/Http/Middleware/TrustProxies.php | 28 + app/Http/Middleware/ValidateSignature.php | 22 + app/Http/Middleware/VerifyCsrfToken.php | 17 + app/Models/User.php | 45 + app/Providers/AppServiceProvider.php | 38 + app/Providers/AuthServiceProvider.php | 26 + app/Providers/BroadcastServiceProvider.php | 19 + app/Providers/EventServiceProvider.php | 39 + app/Providers/RouteServiceProvider.php | 39 + app/View/Components/AppBrand.php | 27 + app/View/Widgets/.gitkeep | 0 artisan | 15 + biome.json | 26 + bootstrap/app.php | 69 + bootstrap/cache/.gitignore | 2 + bun.lockb | Bin 0 -> 124448 bytes bunfig.toml | 3 + composer.json | 105 + composer.lock | 15294 ++++++++++++++++ config/app.php | 191 + config/auth.php | 115 + config/broadcasting.php | 71 + config/cache.php | 111 + config/cors.php | 34 + config/database.php | 151 + config/filesystems.php | 76 + config/hashing.php | 52 + config/livewire.php | 158 + 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 | 37 + database/.gitignore | 1 + 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 + database/seeders/DatabaseSeeder.php | 22 + e2e/home.spec.ts | 7 + main.php | 5 + package.json | 70 + phpstan.neon.dist | 11 + phpunit.xml.dist | 21 + playwright.config.ts | 107 + postcss.config.cjs | 9 + public/.htaccess | 21 + public/favicon.ico | Bin 0 -> 877 bytes public/favicon.png | Bin 0 -> 877 bytes public/index.php | 29 + public/mark.png | Bin 0 -> 64617 bytes public/robots.txt | 7 + rector.php | 24 + resources/assets/images/logo.svg | 1 + resources/designs/scripts/app.ts | 3 + resources/designs/scripts/vendor.ts | 37 + resources/designs/styles/app.css | 11 + resources/designs/styles/vendor.css | 3 + resources/designs/types/index.d.ts | 11 + resources/i18n/en.json | 1 + resources/i18n/en/auth.php | 20 + resources/i18n/en/pagination.php | 19 + resources/i18n/en/passwords.php | 22 + resources/i18n/en/validation.php | 162 + resources/i18n/fr.json | 1 + resources/i18n/fr/auth.php | 20 + resources/i18n/fr/pagination.php | 19 + resources/i18n/fr/passwords.php | 22 + resources/i18n/fr/validation.php | 161 + routes/api.php | 19 + routes/app.php | 18 + routes/channels.php | 18 + routes/console.php | 42 + run | 21 + specs/example.spec.ts | 5 + src/.gitkeep | 0 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.ts | 31 + templates/components/app-brand.blade.php | 3 + templates/components/link.blade.php | 3 + templates/contents/home.blade.php | 4 + templates/errors/404.blade.php | 9 + templates/layouts/app.blade.php | 9 + templates/layouts/base.blade.php | 26 + templates/layouts/error.blade.php | 14 + templates/partials/footer.blade.php | 12 + templates/partials/header.blade.php | 5 + templates/welcome.blade.php | 5 + templates/widgets/.gitkeep | 0 tests/ArchTest.php | 21 + tests/CreatesApplication.php | 21 + tests/Feat/ExampleTest.php | 9 + tests/Pest.php | 46 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 7 + tsconfig.json | 81 + vite.config.ts | 81 + 128 files changed, 19950 insertions(+) create mode 100644 .editorconfig create mode 100644 .env.example create mode 100644 .gitattributes create mode 100644 .github/workflows/Tests.yml create mode 100644 .gitignore create mode 100644 .htaccess create mode 100644 CHANGELOG.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 app/Console/Kernel.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Http/Controllers/Controller.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/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/View/Components/AppBrand.php create mode 100644 app/View/Widgets/.gitkeep create mode 100755 artisan create mode 100644 biome.json create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100755 bun.lockb create mode 100644 bunfig.toml 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/livewire.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/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/seeders/DatabaseSeeder.php create mode 100644 e2e/home.spec.ts create mode 100644 main.php create mode 100644 package.json create mode 100644 phpstan.neon.dist create mode 100644 phpunit.xml.dist create mode 100644 playwright.config.ts create mode 100644 postcss.config.cjs create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/favicon.png create mode 100644 public/index.php create mode 100644 public/mark.png create mode 100644 public/robots.txt create mode 100644 rector.php create mode 100644 resources/assets/images/logo.svg create mode 100644 resources/designs/scripts/app.ts create mode 100644 resources/designs/scripts/vendor.ts create mode 100644 resources/designs/styles/app.css create mode 100644 resources/designs/styles/vendor.css create mode 100644 resources/designs/types/index.d.ts create mode 100644 resources/i18n/en.json create mode 100644 resources/i18n/en/auth.php create mode 100644 resources/i18n/en/pagination.php create mode 100644 resources/i18n/en/passwords.php create mode 100644 resources/i18n/en/validation.php create mode 100644 resources/i18n/fr.json create mode 100644 resources/i18n/fr/auth.php create mode 100644 resources/i18n/fr/pagination.php create mode 100644 resources/i18n/fr/passwords.php create mode 100644 resources/i18n/fr/validation.php create mode 100644 routes/api.php create mode 100644 routes/app.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100755 run create mode 100644 specs/example.spec.ts create mode 100644 src/.gitkeep 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.ts create mode 100644 templates/components/app-brand.blade.php create mode 100644 templates/components/link.blade.php create mode 100644 templates/contents/home.blade.php create mode 100644 templates/errors/404.blade.php create mode 100644 templates/layouts/app.blade.php create mode 100644 templates/layouts/base.blade.php create mode 100644 templates/layouts/error.blade.php create mode 100644 templates/partials/footer.blade.php create mode 100644 templates/partials/header.blade.php create mode 100644 templates/welcome.blade.php create mode 100644 templates/widgets/.gitkeep create mode 100644 tests/ArchTest.php create mode 100644 tests/CreatesApplication.php create mode 100644 tests/Feat/ExampleTest.php create mode 100644 tests/Pest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 tsconfig.json create mode 100644 vite.config.ts diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..77451c7 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,22 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true +quote_type = single + +[*.json] +insert_final_newline = ignore + +[*.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 0000000..cc8e756 --- /dev/null +++ b/.env.example @@ -0,0 +1,73 @@ +APP_NAME=Sikessem +APP_TITLE="Sikessem starter template" +APP_DESCRIPTION="Welcome to Sikessem's starter application template." +APP_ENV=local +APP_KEY= +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=sikessem +DB_USERNAME=root +DB_PASSWORD= + +FTP_HOST=ftp.sikessem.com +FTP_PORT=21 +FTP_ROOT=./ +FTP_USERNAME=sikessem +FTP_PASSWORD= + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +FILESYSTEM_DISK=local +QUEUE_CONNECTION=sync +SESSION_DRIVER=file +SESSION_LIFETIME=120 + +MEMCACHED_HOST=127.0.0.1 + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_MAILER=smtp +MAIL_HOST=mailpit +MAIL_PORT=1025 +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null +MAIL_FROM_ADDRESS="contact@sigui.ci" +MAIL_FROM_NAME="${APP_NAME}" + +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +AWS_DEFAULT_REGION=us-east-1 +AWS_BUCKET= +AWS_USE_PATH_STYLE_ENDPOINT=false + +PUSHER_APP_ID= +PUSHER_APP_KEY= +PUSHER_APP_SECRET= +PUSHER_HOST= +PUSHER_PORT=443 +PUSHER_SCHEME=https +PUSHER_APP_CLUSTER=mt1 + +VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" +VITE_PUSHER_HOST="${PUSHER_HOST}" +VITE_PUSHER_PORT="${PUSHER_PORT}" +VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" +VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" + +VITE_CONFIG_SERVER_PROTOCOL='http' +VITE_CONFIG_SERVER_HOST='localhost' +VITE_CONFIG_SERVER_PORT=4000 +VITE_CONFIG_SERVER_BASE= +VITE_CONFIG_SERVER_ROOT= +VITE_CONFIG_BUILD_DIRECTORY='static' diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1b30d1f --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +* text=auto + +*.blade.php diff=html +*.css diff=css +*.html diff=html +*.php diff=php +*.md diff=markdown +*.mdx diff=markdown +*.js diff=javascript +*.jsx diff=javascript +*.ts diff=typescript +*.tsx diff=typescript + +/.github export-ignore +CHANGELOG.md export-ignore diff --git a/.github/workflows/Tests.yml b/.github/workflows/Tests.yml new file mode 100644 index 0000000..24a7169 --- /dev/null +++ b/.github/workflows/Tests.yml @@ -0,0 +1,119 @@ +name: Tests + +permissions: + contents: read + +on: ['push', 'pull_request'] + +jobs: + tests: + runs-on: ${{ matrix.os }} + continue-on-error: ${{ matrix.experimental }} + strategy: + fail-fast: true + matrix: + os: [ubuntu-latest] + bun: [1.0] + php: [8.2, 8.3] + dependencies: [lowest, highest] + experimental: [false] + name: 👷 Test on PHP-${{ matrix.php }} ${{ matrix.dependencies }} and Bun-${{ matrix.bun }} under ${{ matrix.os }} + + steps: + - name: 🚚 Get latest code + uses: actions/checkout@v4 + + - name: 🎉 Setup Bun + uses: oven-sh/setup-bun@v1 + with: + bun-version: ${{ matrix.bun }} + + - name: ✨ Install JavaScript dependencies + run: | + bun install + bun run e2e.install + + - name: ⚡️ Cache dependencies + id: composer-cache + run: | + echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT + - uses: actions/cache@v3 + with: + path: ${{ steps.composer-cache.outputs.dir }} + key: ${{ runner.os }}-dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} + restore-keys: | + ${{ runner.os }}-dependencies-php-${{ matrix.php }}-composer- + + - name: 🔨 Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + extensions: curl, dom, gd, intl, mbstring, openssl, pdo, pdo_mysql, tokenizer, zip + ini-values: error_reporting=E_ALL + tools: composer:v2, php-cs-fixer, phpunit, vimeo/psalm + coverage: pcov + + - name: 🔧 Install PHP dependencies + run: | + composer install -q --no-ansi --no-cache --no-interaction --no-scripts --no-progress --prefer-dist + composer update --${{ matrix.dependency-version }} --no-interaction --prefer-dist + + - name: 🧑‍💻 Configure environment + run: | + cp .env.example .env.test + set -e + sed -i "s|^\(APP_ENV=\s*\).*$|\1test|" .env.test + printf "The complete `.env.test` ... \n\n" + cat .env.test + + - name: 📦️ Allow executables + run: | + set -e + chmod +x ./run + chmod +x ./artisan + + - name: 🔒️ Generate Key + run: | + set -e + ./run key:generate --env=test + ./run queue:restart --env=test + + - name: 🔐 Directory Permissions + run: | + chmod -R 777 storage bootstrap/cache + chmod -R 777 storage/ + + - name: 🧹 Clear Caches + run: set -e && ./run optimize:clear --env=test + + - name: ✅ Check code style + run: bun check + + - name: 🧪 Test components + run: bun run test + + - name: 🍱 Compile assets + run: bun run build + + - name: 📂 List distribution folder + run: ls public/static + + - name: ⚡️ Optimize Stuffs + run: set -e && ./run optimize --env=test + + - name: ✅ Check code lint + run: composer check + + - name: ⚗️ Run static analysis + run: composer analyse + + - name: 🧪 Test features + run: | + set -e && ./run serve --env=test > /dev/null 2>&1 & + composer test + + - name: 💚 Test the whole application + run: composer debug + + - name: 🚀 Execute end-to-end testing + run: bun e2e diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6f83baa --- /dev/null +++ b/.gitignore @@ -0,0 +1,60 @@ +# Build +/lib/ +/lib-types/ +/server/ +/public/hot +/public/storage +/public/static/ +/storage/*.key + +# Development +/node_modules/ +/vendor/ +Homestead.json +Homestead.yaml + +# Environment +.env +.env.backup +/pg.load + +# Cache +*.cache +.mf +.vscode/ +.rollup.cache +tsconfig.tsbuildinfo + +# Logs +logs/ +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* +error_log* + +# Backups +*.backup +backup_* + +# Editor +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# Yarn +.yarn/* +!.yarn/releases + +# Tests +/test-results/ +/playwright-report/ +/playwright/.cache/ +/coverage \ No newline at end of file diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..88c0e33 --- /dev/null +++ b/.htaccess @@ -0,0 +1,65 @@ + + Options -Indexes + + + + # Configure rewrite rules + Options +FollowSymLinks + RewriteEngine On + RewriteBase / + + # Force the domain to serve securely + #RewriteCond %{HTTP:X-Forwarded-Proto} !https + #RewriteCond %{SERVER_PORT} 80 + #RewriteCond %{HTTPS} off + #RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + #Header always set Content-Security-Policy "upgrade-insecure-requests;" + + # Force www in the URL + RewriteCond %{HTTP_HOST} ^[^.]+.[^.]+$ + RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + + # Remove www in the URL + #RewriteCond %{HTTP_HOST} ^www.((?:[^.]+.)+[^.]+)$ + #RewriteRule .* https://%1 [L,R=301] + + # Redirect to the public directory + RewriteRule (.*) /public/$1 [L] + + +# BEGIN cPanel-generated php ini directives, do not edit +# Manual editing of this file may result in unexpected behavior. +# To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor) +# For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI) + + php_flag display_errors On + php_value max_execution_time 300 + php_value max_input_time 300 + php_value max_input_vars 1000 + php_value memory_limit 1024M + php_value post_max_size 256M + php_value session.gc_maxlifetime 1440 + php_value session.save_path "/var/cpanel/php/sessions/ea-php81" + php_value upload_max_filesize 256M + php_flag zlib.output_compression Off + + + php_flag display_errors On + php_value max_execution_time 300 + php_value max_input_time 300 + php_value max_input_vars 1000 + php_value memory_limit 1024M + php_value post_max_size 256M + php_value session.gc_maxlifetime 1440 + php_value session.save_path "/var/cpanel/php/sessions/ea-php81" + php_value upload_max_filesize 256M + php_flag zlib.output_compression Off + +# END cPanel-generated php ini directives, do not edit + +# php -- BEGIN cPanel-generated handler, do not edit +# Set the “ea-php81” package as the default “PHP” programming language. + + AddHandler application/x-httpd-ea-php81___lsphp .php .php8 .phtml + +# php -- END cPanel-generated handler, do not edit diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..bb7b338 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,25 @@ +# Release Notes for the Sikessem Starter + +All notable changes to [Starter](https://github.com/sikessem/starter) will be documented in this file. + +## [Unreleased](https://github.com/sikessem/starter/compare/v0.2.0...HEAD) + +**Full Changelog:** [v0.1.0...v0.2.0](https://github.com/sikessem/starter/compare/v0.1.0...v0.2.0) + +## [v0.2.0](https://github.com/sikessem/starter/releases/tag/v0.2.0) - 2023-11-21 + +- Improved documentation +- Improved the tests workflow + +## [v0.1.0](https://github.com/sikessem/starter/releases/tag/v0.1.0) - 2023-11-19 + +- Improved the structure of the `resources` directory + +## [v0.0.1](https://github.com/sikessem/starter/releases/tag/v0.0.1) - 2023-11-07 + +- Updated the [sikessem/framework](https://github.com/sikessem/framework) to the latest version. +- Fixed and improved README by @szepeviktor in https://github.com/sikessem/starter/pull/1. +- Fixed #2: Renamed the `app/res/views/` and `app/res/` directories to `templates/` and `resources/` respectively. +- Moved files from the `app/src/` directory to the `app/` directory to respect the Laravel project structure. +- Added a new directory `src/` with the namespace `My\` for developing application-independent packages. +- Fixed #3: Improved workflows by separating assets building and app serving into jobs and added a workflow for end-to-end testing. diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..c9ac60a --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +# MIT License + +Copyright (c) 2022 [Sigui Kessé Emmanuel](https://sigui.ci/) <[contact@sigui.ci](mailto:contact@sigui.ci)> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..f901ea3 --- /dev/null +++ b/README.md @@ -0,0 +1,251 @@ +
+ +[![sikessem-logo]][sikessem-link] + +
+ +[![php-icon]][php-link] +[![typescript-icon]][typescript-link] +[![javascript-icon]][javascript-link] +[![packagist-version-icon]][packagist-version-link] +[![packagist-download-icon]][packagist-download-link] +[![license-icon]][license-link] +[![actions-icon]][actions-link] +[![pr-icon]][pr-link] +[![twitter-icon]][twitter-link] + +
+ +# Sikessem Starter + +Start [PHP][php-home] applications using [Laravel][laravel-home] preconfigured with [TypeScript][typescript-home], [Livewire][livewire-home], [Alpine.js][alpinejs-home], [TailwindCSS][tailwindcss-home] and many others such as [Bun][bun-home], [Vite.js][vitejs-home], [Biome][biome-home], [Pint][pint-home], [PHPStan][phpstan-home], [Larastan][larastan-home], [Rector][rector-home]. + +## 🔖 Contents + +- [Sikessem Starter](#sikessem-starter) + - [🔖 Contents](#-contents) + - [🎉 Getting Started](#-getting-started) + - [⚡️ Installation](#️-installation) + - [🗃️ Manage Database](#️-manage-database) + - [🌐 Starting server](#-starting-server) + - [🧪 Testing and debugging](#-testing-and-debugging) + - [🧹 Keep a modern codebase](#-keep-a-modern-codebase) + - [⚗️ Run static analysis](#️-run-static-analysis) + - [✅ Run unit tests](#-run-unit-tests) + - [🐛 Check all code bugs](#-check-all-code-bugs) + - [📋 Requirements](#-requirements) + - [📖 Documentation](#-documentation) + - [👏 Contribution](#-contribution) + - [👷 Code of Conduct](#-code-of-conduct) + - [👥 Contributing Guide](#-contributing-guide) + - [🔒️ Good First Issues](#️-good-first-issues) + - [💬 Discussions](#-discussions) + - [🔐 Security Reports](#-security-reports) + - [📄 License](#-license) + +## 🎉 Getting Started + +### ⚡️ Installation + +[Use this template](https://github.com/sikessem/starter/generate) or create a new [Sikessem project](https://packagist.org/packages/sikessem/starter) via the [Composer](https://getcomposer.org/) `create-project` command (recommended): + +```shell +composer create-project sikessem/starter my-app +``` + +Where ***my-app*** is the name of your app. + +Access the working directory: + +```shell +cd my-app +``` + +Install PHP dependencies: + +```shell +composer install +``` + +Install JS / TS dependencies: + +```shell +bun install +``` + +🍱 Build assets + +The production build will generate client and server modules by running both client and server build commands: + +```shell +bun run build +``` + +### 🗃️ Manage Database + +Install migrations: + +```shell +php artisan migrate:install && php artisan migrate +``` + +### 🌐 Starting server + +Run the server in development mode: + +```shell +php artisan serve --host=my-app.local --port=8000 +``` + +Then visit [http://my-app.local:8000/](http://my-app.local:8000/) + +### 🧪 Testing and debugging + +#### 🧹 Keep a modern codebase + +- with **Biome**: + +```shell +bun check +``` + +- with **Pint**: + +```shell +composer check +``` + +#### ⚗️ Run static analysis + +- Using **PHPStan**: + +```shell +composer analyse +``` + +#### ✅ Run unit tests + +- using **Bun**: + +```shell +bun run test +``` + +- using **PEST**: + +```shell +composer test +``` + +🚀 Execute end-to-end testing with **Playwright**: + +```shell +bun e2e +``` + +#### 🐛 Check all code bugs + +- Frontend: + +```shell +bun debug +``` + +- Backend: + +```shell +composer debug +``` + +## 📋 Requirements + +- **Requires [PHP 8.2+](https://php.net/releases/)** (at least 8.2.14 recommended to avoid potential bugs). +- **Requires [Bun 1.0+](https://bun.sh/)** (at least 1.0.21 recommended to avoid potential bugs). +- **Requires [Composer >=2.6.6](https://getcomposer.org/)** to manage [PHP][php-link] dependencies. +- **Requires [Git ~2.42.0](https://git-scm.com/)** to manage source code. + +## 📖 Documentation + +The full documentation for the Sikessem Starter can be found on [this address][docs-link]. + +## 👏 Contribution + +The main purpose of this repository is to continue evolving Sikessem. We want to make contributing to this project as easy and transparent as possible, and we are grateful to the community for contributing bug fixes and improvements. Read below to learn how you can take part in improving Sikessem. + +### [👷 Code of Conduct][conduct-link] + +Sikessem has adopted a Code of Conduct that we expect project participants to adhere to. +Please read the [full text][conduct-link] so that you can understand what actions will and will not be tolerated. + +### 👥 [Contributing Guide][pr-link] + +Read our [**Contributing Guide**][pr-link] to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Sikessem. + +### 🔒️ Good First Issues + +We have a list of [good first issues][gfi] that contain bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process. + +### 💬 Discussions + +Larger discussions and proposals are discussed in [**Sikessem's GitHub discussions**][discuss-link]. + +## 🔐 Security Reports + +If you discover a security vulnerability within [Sikessem](https://sikessem.com), please email [SIGUI Kessé Emmanuel](https://github.com/siguici) at [contact@sigui.ci](mailto:contact@sigui.ci). All security vulnerabilities will be promptly addressed. + +## 📄 License + +The Sikessem Starter is open-sourced software licensed under the [MIT License](https://opensource.org/licenses/MIT) - see the [LICENSE][license-link] file for details. + +--- + +
Made with ❤︎ by @siguici.
+ +[sikessem-logo]: https://github.com/sikessem/art/blob/HEAD/images/sikessem.svg +[sikessem-link]: https://github.com/sikessem "Sikessem" + +[php-icon]: https://img.shields.io/badge/PHP-ccc.svg?style=flat&logo=php +[php-link]: https://github.com/sikessem/starter/search?l=php "PHP code" + +[typescript-icon]: https://img.shields.io/badge/TypeScript-294E80.svg?logo=typescript +[typescript-link]: https://github.com/sikessem/starter/search?l=typescript "TypeScript code" + +[javascript-icon]: https://img.shields.io/badge/JavaScript-yellow.svg?logo=javascript +[javascript-link]: https://github.com/sikessem/starter/search?l=javascript "JavaScript code" + +[packagist-version-icon]: https://img.shields.io/packagist/v/sikessem/starter +[packagist-version-link]: https://packagist.org/packages/sikessem/starter "Starter Releases" + +[packagist-download-icon]: https://img.shields.io/packagist/dt/sikessem/starter +[packagist-download-link]: https://packagist.org/packages/sikessem/starter "Starter Downloads" + +[actions-icon]: https://github.com/sikessem/starter/workflows/Tests/badge.svg +[actions-link]: https://github.com/sikessem/starter/actions "Starter status" + +[pr-icon]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?color=brightgreen +[pr-link]: https://github.com/sikessem/.github/blob/HEAD/CONTRIBUTING.md "PRs welcome!" + +[twitter-icon]: https://img.shields.io/twitter/follow/sikessem_tweets.svg?label=@sikessem_tweets +[twitter-link]: https://twitter.com/intent/follow?screen_name=sikessem_tweets "Ping Sikessem" + +[license-icon]: https://img.shields.io/badge/license-MIT-blue.svg +[license-link]: https://github.com/sikessem/starter/blob/HEAD/LICENSE "Starter License" +[conduct-link]: https://github.com/sikessem/starter/blob/HEAD/CODE_OF_CONDUCT.md +[discuss-link]: https://github.com/orgs/sikessem/discussions +[docs-link]: https://github.com/sikessem/starter#readme "Starter Documentation" + +[gfi]: https://github.com/sikessem/starter/labels/good%20first%20issue + +[php-home]: https://php.net +[laravel-home]: https://laravel.com "Laravel" +[livewire-home]: https://laravel-livewire.com "Laravel Livewire" +[typescript-home]: https://www.typescriptlang.org "TypeScript" +[alpinejs-home]: https://alpinejs.dev "Alpine.js" +[tailwindcss-home]: https://tailwindcss.com "TailwindCSS" +[vitejs-home]: https://vitejs.dev "Vite.js" +[biome-home]: https://biomejs.dev "Biome" +[bun-home]: https://bun.sh "Bun" +[pint-home]: https://github.com/laravel/pint "Laravel Pint" +[phpstan-home]: https://phpstan.org "PHPStan" +[larastan-home]: https://github.com/nunomaduro/larastan "Larastan" +[rector-home]: https://getrector.com "Rector" diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..14f9a0c --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,29 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + */ + #[\Override] + 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 0000000..9c603d1 --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,31 @@ + + */ + protected $dontFlash = [ + 'current_password', + 'password', + 'password_confirmation', + ]; + + /** + * Register the exception handling callbacks for the application. + */ + #[\Override] + public function register(): void + { + $this->reportable(function (Throwable $e) { + // + }); + } +} diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php new file mode 100644 index 0000000..77ec359 --- /dev/null +++ b/app/Http/Controllers/Controller.php @@ -0,0 +1,12 @@ + + */ + 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 = [ + 'app' => [ + \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 0000000..28d3ce1 --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,18 @@ +expectsJson() ? null : route('login'); + } +} diff --git a/app/Http/Middleware/EncryptCookies.php b/app/Http/Middleware/EncryptCookies.php new file mode 100644 index 0000000..867695b --- /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 0000000..74cbd9a --- /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 0000000..3e5250f --- /dev/null +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -0,0 +1,31 @@ +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 0000000..88cadca --- /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 0000000..398aaca --- /dev/null +++ b/app/Http/Middleware/TrustHosts.php @@ -0,0 +1,21 @@ + + */ + #[\Override] + 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 0000000..3391630 --- /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 0000000..093bf64 --- /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 0000000..9e86521 --- /dev/null +++ b/app/Http/Middleware/VerifyCsrfToken.php @@ -0,0 +1,17 @@ + + */ + protected $except = [ + // + ]; +} diff --git a/app/Models/User.php b/app/Models/User.php new file mode 100644 index 0000000..6c58f62 --- /dev/null +++ b/app/Models/User.php @@ -0,0 +1,45 @@ + + */ + 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', + ]; +} diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php new file mode 100644 index 0000000..67b0a03 --- /dev/null +++ b/app/Providers/AppServiceProvider.php @@ -0,0 +1,38 @@ +app; + /** @var string $buildDirectory */ + $buildDirectory = config('assets.buildDirectory', 'static'); + Model::shouldBeStrict(! $app->isProduction()); + Route::model('user', User::class); + Paginator::useTailwind(); + Vite::useBuildDirectory($buildDirectory); + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..54756cd --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,26 @@ + + */ + 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 0000000..2be04f5 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,19 @@ +> + */ + protected $listen = [ + Registered::class => [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + */ + #[\Override] + public function boot(): void + { + // + } + + /** + * Determine if events and listeners should be automatically discovered. + */ + #[\Override] + public function shouldDiscoverEvents(): bool + { + return false; + } +} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php new file mode 100644 index 0000000..f448d16 --- /dev/null +++ b/app/Providers/RouteServiceProvider.php @@ -0,0 +1,39 @@ + Limit::perMinute(60)->by($request->user()?->id ?: $request->ip())); + + $this->routes(function () { + Route::middleware('api') + ->prefix('api') + ->group(base_path('routes/api.php')); + + Route::middleware('app') + ->group(base_path('routes/app.php')); + }); + } +} diff --git a/app/View/Components/AppBrand.php b/app/View/Components/AppBrand.php new file mode 100644 index 0000000..b7a3a91 --- /dev/null +++ b/app/View/Components/AppBrand.php @@ -0,0 +1,27 @@ +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 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..6fa36661877d1ea4527848e6d091c4ebb40d71f6 GIT binary patch literal 124448 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.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+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.2", + "source": { + "type": "git", + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "shasum": "" + }, + "require": { + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" + }, + "require-dev": { + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" + }, + "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.2" + }, + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2023-10-06T06:47:41+00:00" + }, + { + "name": "fruitcake/php-cors", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/fruitcake/php-cors.git", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", + "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0", + "symfony/http-foundation": "^4.4|^5.4|^6|^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^9", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-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.3.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-10-12T05:21:21+00:00" + }, + { + "name": "graham-campbell/result-type", + "version": "v1.1.2", + "source": { + "type": "git", + "url": "https://github.com/GrahamCampbell/Result-Type.git", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/fbd48bce38f73f8a4ec8583362e732e4095e5862", + "reference": "fbd48bce38f73f8a4ec8583362e732e4095e5862", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "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.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:16:48+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.8.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "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.2", + "ext-curl": "*", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "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.1" + }, + "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-12-03T20:35:24+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "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.2" + }, + "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-12-03T20:19:20+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.6.2", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.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.2", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" + }, + "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.2" + }, + "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-12-03T20:05:35+00:00" + }, + { + "name": "guzzlehttp/uri-template", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/uri-template.git", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/uri-template/zipball/ecea8feef63bd4fef1f037ecb288386999ecc11c", + "reference": "ecea8feef63bd4fef1f037ecb288386999ecc11c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "uri-template/tests": "1.0.0" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "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.3" + }, + "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-12-03T19:50:20+00:00" + }, + { + "name": "intervention/image", + "version": "2.7.2", + "source": { + "type": "git", + "url": "https://github.com/Intervention/image.git", + "reference": "04be355f8d6734c826045d02a1079ad658322dad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Intervention/image/zipball/04be355f8d6734c826045d02a1079ad658322dad", + "reference": "04be355f8d6734c826045d02a1079ad658322dad", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "guzzlehttp/psr7": "~1.1 || ^2.0", + "php": ">=5.4.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.2", + "phpunit/phpunit": "^4.8 || ^5.7 || ^7.5.15" + }, + "suggest": { + "ext-gd": "to use GD library based image processing.", + "ext-imagick": "to use Imagick based image processing.", + "intervention/imagecache": "Caching extension for the Intervention Image library" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.4-dev" + }, + "laravel": { + "providers": [ + "Intervention\\Image\\ImageServiceProvider" + ], + "aliases": { + "Image": "Intervention\\Image\\Facades\\Image" + } + } + }, + "autoload": { + "psr-4": { + "Intervention\\Image\\": "src/Intervention/Image" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Oliver Vogel", + "email": "oliver@intervention.io", + "homepage": "https://intervention.io/" + } + ], + "description": "Image handling and manipulation library with support for Laravel integration", + "homepage": "http://image.intervention.io/", + "keywords": [ + "gd", + "image", + "imagick", + "laravel", + "thumbnail", + "watermark" + ], + "support": { + "issues": "https://github.com/Intervention/image/issues", + "source": "https://github.com/Intervention/image/tree/2.7.2" + }, + "funding": [ + { + "url": "https://paypal.me/interventionio", + "type": "custom" + }, + { + "url": "https://github.com/Intervention", + "type": "github" + } + ], + "time": "2022-05-21T17:30:32+00:00" + }, + { + "name": "laravel/framework", + "version": "v10.39.0", + "source": { + "type": "git", + "url": "https://github.com/laravel/framework.git", + "reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/framework/zipball/114926b07bfb5fbf2545c03aa2ce5c8c37be650c", + "reference": "114926b07bfb5fbf2545c03aa2ce5c8c37be650c", + "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.4", + "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": { + "carbonphp/carbon-doctrine-types": ">=3.0", + "doctrine/dbal": ">=4.0", + "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", + "nyholm/psr7": "^1.2", + "orchestra/testbench-core": "^8.18", + "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", + "symfony/psr-http-message-bridge": "^2.0" + }, + "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage, and SES mail driver (^3.235.5).", + "brianium/paratest": "Required to run tests in parallel (^6.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^3.5.1).", + "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/Filesystem/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-12-27T14:26:28+00:00" + }, + { + "name": "laravel/prompts", + "version": "v0.1.14", + "source": { + "type": "git", + "url": "https://github.com/laravel/prompts.git", + "reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/prompts/zipball/2219fa9c4b944add1e825c3bdb8ecae8bc503bc6", + "reference": "2219fa9c4b944add1e825c3bdb8ecae8bc503bc6", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "illuminate/collections": "^10.0|^11.0", + "php": "^8.1", + "symfony/console": "^6.2|^7.0" + }, + "conflict": { + "illuminate/console": ">=10.17.0 <10.25.0", + "laravel/framework": ">=10.17.0 <10.25.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.3", + "phpstan/phpstan": "^1.11", + "phpstan/phpstan-mockery": "^1.1" + }, + "suggest": { + "ext-pcntl": "Required for the spinner to be animated." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-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.14" + }, + "time": "2023-12-27T04:18:09+00:00" + }, + { + "name": "laravel/sanctum", + "version": "v3.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sanctum.git", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sanctum/zipball/8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "reference": "8c104366459739f3ada0e994bcd3e6fd681ce3d5", + "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-12-19T18:44:48+00:00" + }, + { + "name": "laravel/serializable-closure", + "version": "v1.3.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/serializable-closure.git", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", + "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "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-11-08T14:08:06+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.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "reference": "d4ad81e2b67396e33dc9d7e54ec74ccf73151dcc", + "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 || ^2.0", + "async-aws/simple-s3": "^1.1 || ^2.0", + "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.34", + "phpstan/phpstan": "^1.10", + "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.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:16:17+00:00" + }, + { + "name": "league/flysystem-local", + "version": "3.23.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem-local.git", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/5cf046ba5f059460e86a997c504dd781a39a109b", + "reference": "5cf046ba5f059460e86a997c504dd781a39a109b", + "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.23.0" + }, + "funding": [ + { + "url": "https://ecologi.com/frankdejonge", + "type": "custom" + }, + { + "url": "https://github.com/frankdejonge", + "type": "github" + } + ], + "time": "2023-12-04T10:14:46+00:00" + }, + { + "name": "league/glide", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/glide.git", + "reference": "2ff92c8f1edc80b74e2d3c5efccfc7223f74d407" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/glide/zipball/2ff92c8f1edc80b74e2d3c5efccfc7223f74d407", + "reference": "2ff92c8f1edc80b74e2d3c5efccfc7223f74d407", + "shasum": "" + }, + "require": { + "intervention/image": "^2.7", + "league/flysystem": "^2.0|^3.0", + "php": "^7.2|^8.0", + "psr/http-message": "^1.0|^2.0" + }, + "require-dev": { + "mockery/mockery": "^1.3.3", + "phpunit/php-token-stream": "^3.1|^4.0", + "phpunit/phpunit": "^8.5|^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\Glide\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Reinink", + "email": "jonathan@reinink.ca", + "homepage": "http://reinink.ca" + }, + { + "name": "Titouan Galopin", + "email": "galopintitouan@gmail.com", + "homepage": "https://titouangalopin.com" + } + ], + "description": "Wonderfully easy on-demand image manipulation library with an HTTP based API.", + "homepage": "http://glide.thephpleague.com", + "keywords": [ + "ImageMagick", + "editing", + "gd", + "image", + "imagick", + "league", + "manipulation", + "processing" + ], + "support": { + "issues": "https://github.com/thephpleague/glide/issues", + "source": "https://github.com/thephpleague/glide/tree/2.3.0" + }, + "time": "2023-07-08T06:26:07+00:00" + }, + { + "name": "league/mime-type-detection", + "version": "1.14.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/mime-type-detection.git", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e", + "reference": "b6a5854368533df0295c5761a0253656a2e52d9e", + "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.14.0" + }, + "funding": [ + { + "url": "https://github.com/frankdejonge", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/league/flysystem", + "type": "tidelift" + } + ], + "time": "2023-10-17T14:13:20+00:00" + }, + { + "name": "livewire/livewire", + "version": "v3.3.5", + "source": { + "type": "git", + "url": "https://github.com/livewire/livewire.git", + "reference": "1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/livewire/livewire/zipball/1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a", + "reference": "1ef880fbcdc7b6e5e405cc9135a62cd5fdbcd06a", + "shasum": "" + }, + "require": { + "illuminate/database": "^10.0|^11.0", + "illuminate/support": "^10.0|^11.0", + "illuminate/validation": "^10.0|^11.0", + "league/mime-type-detection": "^1.9", + "php": "^8.1", + "symfony/http-kernel": "^6.2|^7.0" + }, + "require-dev": { + "calebporzio/sushi": "^2.1", + "laravel/framework": "^10.0|^11.0", + "laravel/prompts": "^0.1.6", + "mockery/mockery": "^1.3.1", + "orchestra/testbench": "^8.0|^9.0", + "orchestra/testbench-dusk": "^8.0|^9.0", + "phpunit/phpunit": "^10.4", + "psy/psysh": "^0.11.22|^0.12" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Livewire\\LivewireServiceProvider" + ], + "aliases": { + "Livewire": "Livewire\\Livewire" + } + } + }, + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caleb Porzio", + "email": "calebporzio@gmail.com" + } + ], + "description": "A front-end framework for Laravel.", + "support": { + "issues": "https://github.com/livewire/livewire/issues", + "source": "https://github.com/livewire/livewire/tree/v3.3.5" + }, + "funding": [ + { + "url": "https://github.com/livewire", + "type": "github" + } + ], + "time": "2024-01-02T14:29:17+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" + }, + "time": "2023-05-10T11:58:31+00:00" + }, + { + "name": "monolog/monolog", + "version": "3.5.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "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.5.0" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2023-10-27T15:32:31+00:00" + }, + { + "name": "nesbot/carbon", + "version": "2.72.1", + "source": { + "type": "git", + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "shasum": "" + }, + "require": { + "carbonphp/carbon-doctrine-types": "*", + "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 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", + "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-12-08T23:47:49+00:00" + }, + { + "name": "nette/schema", + "version": "v1.2.5", + "source": { + "type": "git", + "url": "https://github.com/nette/schema.git", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/schema/zipball/0462f0166e823aad657c9224d0f849ecac1ba10a", + "reference": "0462f0166e823aad657c9224d0f849ecac1ba10a", + "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.5" + }, + "time": "2023-10-05T20:37:59+00:00" + }, + { + "name": "nette/utils", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/nette/utils.git", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nette/utils/zipball/a9d127dd6a203ce6d255b2e2db49759f7506e015", + "reference": "a9d127dd6a203ce6d255b2e2db49759f7506e015", + "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.3" + }, + "time": "2023-10-29T21:02:13+00:00" + }, + { + "name": "nicmart/tree", + "version": "0.3.1", + "source": { + "type": "git", + "url": "https://github.com/nicmart/Tree.git", + "reference": "c55ba47c64a3cb7454c22e6d630729fc2aab23ff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nicmart/Tree/zipball/c55ba47c64a3cb7454c22e6d630729fc2aab23ff", + "reference": "c55ba47c64a3cb7454c22e6d630729fc2aab23ff", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "ergebnis/composer-normalize": "^2.8.0", + "ergebnis/license": "^1.0.0", + "ergebnis/php-cs-fixer-config": "^2.2.1", + "phpunit/phpunit": "^7.5.20" + }, + "type": "library", + "autoload": { + "psr-4": { + "Tree\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolò Martini", + "email": "nicmartnic@gmail.com" + } + ], + "description": "A basic but flexible php tree data structure and a fluent tree builder implementation.", + "support": { + "issues": "https://github.com/nicmart/Tree/issues", + "source": "https://github.com/nicmart/Tree/tree/0.3.1" + }, + "time": "2020-11-27T09:02:17+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.18.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "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.18.0" + }, + "time": "2023-12-10T21:03:43+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.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/80735db690fe4fc5c76dfa7f9b770634285fa820", + "reference": "80735db690fe4fc5c76dfa7f9b770634285fa820", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "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.2" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", + "type": "tidelift" + } + ], + "time": "2023-11-12T21:59:55+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "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.22", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", + "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "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-0.11": "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.22" + }, + "time": "2023-10-14T21:56:36+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.5", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "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.5" + }, + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "type": "tidelift" + } + ], + "time": "2023-11-08T05:53:05+00:00" + }, + { + "name": "sikessem/debugger", + "version": "v0.0.0", + "source": { + "type": "git", + "url": "https://github.com/sikessem/debugger.git", + "reference": "53b479960d595f0cc753a413f4101f477c1d8683" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sikessem/debugger/zipball/53b479960d595f0cc753a413f4101f477c1d8683", + "reference": "53b479960d595f0cc753a413f4101f477c1d8683", + "shasum": "" + }, + "require": { + "php": "^8.1|^8.2" + }, + "require-dev": { + "sikessem/devtools": "^0.0" + }, + "type": "project", + "extra": { + "branch-alias": { + "dev-main": "0.x-dev" + } + }, + "autoload": { + "files": [ + "helper/debugger.php" + ], + "psr-4": { + "Sikessem\\Debugger\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "SIGUI Kessé Emmanuel", + "email": "contact@sigui.ci", + "homepage": "https://sigui.ci" + } + ], + "description": "🐛 Debug a PHP script easily by following its backtrace.", + "homepage": "https://packagist.com/packages/sikessem/debugger", + "keywords": [ + "Backtrace", + "debug", + "php", + "sikessem" + ], + "support": { + "chat": "https://github.com/orgs/sikessem/discussions", + "issues": "https://github.com/sikessem/debugger/issues", + "source": "https://github.com/sikessem/debugger" + }, + "time": "2023-07-15T13:36:33+00:00" + }, + { + "name": "sikessem/framework", + "version": "v0.4.0", + "source": { + "type": "git", + "url": "https://github.com/sikessem/framework.git", + "reference": "1fdc7b6c934b00074fecf0c000c95733a7d94f08" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sikessem/framework/zipball/1fdc7b6c934b00074fecf0c000c95733a7d94f08", + "reference": "1fdc7b6c934b00074fecf0c000c95733a7d94f08", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.32", + "php": "^8.1||^8.2", + "sikessem/debugger": "^0.0.0" + }, + "require-dev": { + "sikessem/laravel-devtools": "^0.8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sikessem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "SIGUI Kessé Emmanuel", + "email": "contact@sigui.ci", + "homepage": "https://sigui.ci" + } + ], + "description": "The Sikessem Framework.", + "homepage": "https://packagist.org/packages/sikessem/framework", + "keywords": [ + "framework", + "laravel", + "php", + "sikessem" + ], + "support": { + "chat": "https://github.com/orgs/sikessem/discussions", + "email": "support@sikessem.com", + "issues": "https://github.com/sikessem/framework/issues", + "source": "https://github.com/sikessem/framework" + }, + "time": "2023-11-19T02:12:14+00:00" + }, + { + "name": "sikessem/ui", + "version": "v0.7.0", + "source": { + "type": "git", + "url": "https://github.com/sikessem/ui.git", + "reference": "d13d6a5d592389a70825e21269d7e535b59db952" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sikessem/ui/zipball/d13d6a5d592389a70825e21269d7e535b59db952", + "reference": "d13d6a5d592389a70825e21269d7e535b59db952", + "shasum": "" + }, + "require": { + "illuminate/view": "^10.19", + "php": "^8.1||^8.2" + }, + "require-dev": { + "sikessem/framework": "^0.1.0", + "sikessem/laravel-devtools": "^0.4.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Sikessem\\UI\\ServiceProvider" + ], + "aliases": { + "UI": "Sikessem\\UI\\Facade" + }, + "dont-discover": [] + }, + "branch-alias": { + "dev-main": "0.x-dev" + } + }, + "autoload": { + "files": [ + "src/ui.php" + ], + "psr-4": { + "Sikessem\\UI\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Sigui Kessé Emmanuel", + "email": "contact@sigui.ci", + "homepage": "https://github.com/siguici" + } + ], + "description": "Blade and TailwindCSS components to design faster.", + "homepage": "https://sikessem.github.io/packages/ui", + "keywords": [ + "blade", + "components", + "css", + "laravel", + "php", + "sikessem", + "tailwindcss", + "typescript", + "widgets" + ], + "support": { + "chat": "https://github.com/orgs/sikessem/discussions", + "issues": "https://github.com/sikessem/ui/issues", + "source": "https://github.com/sikessem/ui" + }, + "time": "2023-08-29T12:50:01+00:00" + }, + { + "name": "spatie/browsershot", + "version": "3.61.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/browsershot.git", + "reference": "14d75679390b8b84a71b3a17dc5905928deeb887" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/browsershot/zipball/14d75679390b8b84a71b3a17dc5905928deeb887", + "reference": "14d75679390b8b84a71b3a17dc5905928deeb887", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^8.0", + "spatie/image": "^1.5.3|^2.0", + "spatie/temporary-directory": "^1.1|^2.0", + "symfony/process": "^4.2|^5.0|^6.0|^7.0" + }, + "require-dev": { + "pestphp/pest": "^1.20", + "spatie/phpunit-snapshot-assertions": "^4.2.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Browsershot\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://github.com/freekmurze", + "role": "Developer" + } + ], + "description": "Convert a webpage to an image or pdf using headless Chrome", + "homepage": "https://github.com/spatie/browsershot", + "keywords": [ + "chrome", + "convert", + "headless", + "image", + "pdf", + "puppeteer", + "screenshot", + "webpage" + ], + "support": { + "source": "https://github.com/spatie/browsershot/tree/3.61.0" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-12-21T10:00:28+00:00" + }, + { + "name": "spatie/crawler", + "version": "7.1.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/crawler.git", + "reference": "f0f73947fdfaf68efdc68b73c4dbb28dfc785113" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/crawler/zipball/f0f73947fdfaf68efdc68b73c4dbb28dfc785113", + "reference": "f0f73947fdfaf68efdc68b73c4dbb28dfc785113", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^7.3", + "guzzlehttp/psr7": "^2.0", + "illuminate/collections": "^8.38|^9.0|^10.0", + "nicmart/tree": "^0.3.0", + "php": "^8.0", + "spatie/browsershot": "^3.45", + "spatie/robots-txt": "^2.0", + "symfony/dom-crawler": "^5.2|^6.0" + }, + "require-dev": { + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Crawler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be" + } + ], + "description": "Crawl all internal links found on a website", + "homepage": "https://github.com/spatie/crawler", + "keywords": [ + "crawler", + "link", + "spatie", + "website" + ], + "support": { + "issues": "https://github.com/spatie/crawler/issues", + "source": "https://github.com/spatie/crawler/tree/7.1.3" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-01-24T07:47:06+00:00" + }, + { + "name": "spatie/image", + "version": "2.2.7", + "source": { + "type": "git", + "url": "https://github.com/spatie/image.git", + "reference": "2f802853aab017aa615224daae1588054b5ab20e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/image/zipball/2f802853aab017aa615224daae1588054b5ab20e", + "reference": "2f802853aab017aa615224daae1588054b5ab20e", + "shasum": "" + }, + "require": { + "ext-exif": "*", + "ext-json": "*", + "ext-mbstring": "*", + "league/glide": "^2.2.2", + "php": "^8.0", + "spatie/image-optimizer": "^1.7", + "spatie/temporary-directory": "^1.0|^2.0", + "symfony/process": "^3.0|^4.0|^5.0|^6.0" + }, + "require-dev": { + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5", + "symfony/var-dumper": "^4.0|^5.0|^6.0", + "vimeo/psalm": "^4.6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Image\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Manipulate images with an expressive API", + "homepage": "https://github.com/spatie/image", + "keywords": [ + "image", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/image/tree/2.2.7" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-07-24T13:54:13+00:00" + }, + { + "name": "spatie/image-optimizer", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/image-optimizer.git", + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/62f7463483d1bd975f6f06025d89d42a29608fe1", + "reference": "62f7463483d1bd975f6f06025d89d42a29608fe1", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": "^7.3|^8.0", + "psr/log": "^1.0 | ^2.0 | ^3.0", + "symfony/process": "^4.2|^5.0|^6.0|^7.0" + }, + "require-dev": { + "pestphp/pest": "^1.21", + "phpunit/phpunit": "^8.5.21|^9.4.4", + "symfony/var-dumper": "^4.2|^5.0|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ImageOptimizer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily optimize images using PHP", + "homepage": "https://github.com/spatie/image-optimizer", + "keywords": [ + "image-optimizer", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/image-optimizer/issues", + "source": "https://github.com/spatie/image-optimizer/tree/1.7.2" + }, + "time": "2023-11-03T10:08:02+00:00" + }, + { + "name": "spatie/laravel-package-tools", + "version": "1.16.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-package-tools.git", + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/cc7c991555a37f9fa6b814aa03af73f88026a83d", + "reference": "cc7c991555a37f9fa6b814aa03af73f88026a83d", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^9.28|^10.0", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.5", + "orchestra/testbench": "^7.7|^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5.24", + "spatie/pest-plugin-test-time": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\LaravelPackageTools\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "role": "Developer" + } + ], + "description": "Tools for creating Laravel packages", + "homepage": "https://github.com/spatie/laravel-package-tools", + "keywords": [ + "laravel-package-tools", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-package-tools/issues", + "source": "https://github.com/spatie/laravel-package-tools/tree/1.16.1" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-08-23T09:04:39+00:00" + }, + { + "name": "spatie/laravel-sitemap", + "version": "6.4.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-sitemap.git", + "reference": "d5115b430de517aaa29a6410f4cd6f1561766579" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-sitemap/zipball/d5115b430de517aaa29a6410f4cd6f1561766579", + "reference": "d5115b430de517aaa29a6410f4cd6f1561766579", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^7.2", + "illuminate/support": "^8.0|^9.0|^10.0", + "nesbot/carbon": "^2.63", + "php": "^8.0", + "spatie/crawler": "^7.0", + "spatie/laravel-package-tools": "^1.5", + "symfony/dom-crawler": "^5.1.14|^6.0" + }, + "require-dev": { + "mockery/mockery": "^1.4", + "orchestra/testbench": "^6.23|^7.0|^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5", + "spatie/pest-plugin-snapshots": "^1.1", + "spatie/phpunit-snapshot-assertions": "^4.0", + "spatie/temporary-directory": "^2.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Spatie\\Sitemap\\SitemapServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\Sitemap\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Create and generate sitemaps with ease", + "homepage": "https://github.com/spatie/laravel-sitemap", + "keywords": [ + "laravel-sitemap", + "spatie" + ], + "support": { + "source": "https://github.com/spatie/laravel-sitemap/tree/6.4.0" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2023-10-18T14:38:11+00:00" + }, + { + "name": "spatie/robots-txt", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/robots-txt.git", + "reference": "dacba2ba159364987392aa1b0002e196c5923970" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/robots-txt/zipball/dacba2ba159364987392aa1b0002e196c5923970", + "reference": "dacba2ba159364987392aa1b0002e196c5923970", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "larapack/dd": "^1.0", + "phpunit/phpunit": "^8.0 || ^9.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Robots\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brent Roose", + "email": "brent@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Determine if a page may be crawled from robots.txt and robots meta tags", + "homepage": "https://github.com/spatie/robots-txt", + "keywords": [ + "robots-txt", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/robots-txt/issues", + "source": "https://github.com/spatie/robots-txt/tree/2.0.3" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-11-22T12:57:35+00:00" + }, + { + "name": "spatie/temporary-directory", + "version": "2.2.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "reference": "76949fa18f8e1a7f663fd2eaa1d00e0bcea0752a", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\TemporaryDirectory\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Vanderbist", + "email": "alex@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", + "keywords": [ + "php", + "spatie", + "temporary-directory" + ], + "support": { + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.2.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-12-25T11:46:58+00:00" + }, + { + "name": "symfony/console", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "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|^7.0" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.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.4.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-12-10T16:15:48+00:00" + }, + { + "name": "symfony/css-selector", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/css-selector.git", + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/bb51d46e53ef8d50d523f0c5faedba056a27943e", + "reference": "bb51d46e53ef8d50d523f0c5faedba056a27943e", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "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/v7.0.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-10-31T17:59:56+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.4.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.4.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/dom-crawler", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "shasum": "" + }, + "require": { + "masterminds/html5": "^2.6", + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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 DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.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-11-20T16:41:16+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" + }, + "require-dev": { + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.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.4.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-10-18T09:43:34+00:00" + }, + { + "name": "symfony/event-dispatcher", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", + "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<6.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": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/expression-language": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "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/v7.0.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-12-27T22:24:19+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.4.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.4.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.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.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.4.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-10-31T17:30:12+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", + "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.3" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.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.4.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-12-27T22:16:42+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.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": "<6.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|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", + "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.4.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-12-30T15:31:44+00:00" + }, + { + "name": "symfony/mailer", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/mailer.git", + "reference": "6da89e5c9202f129717a770a03183fb140720168" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6da89e5c9202f129717a770a03183fb140720168", + "reference": "6da89e5c9202f129717a770a03183fb140720168", + "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|^7.0", + "symfony/mime": "^6.2|^7.0", + "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|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" + }, + "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.4.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-12-19T09:12:31+00:00" + }, + { + "name": "symfony/mime", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "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.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|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" + }, + "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.4.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-10-17T11:49:05+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.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", + "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.4.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-12-22T16:42:54+00:00" + }, + { + "name": "symfony/routing", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", + "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|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.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.4.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-12-29T15:34:34+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/container": "^1.1|^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.4.1" + }, + "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-12-26T14:02:43+00:00" + }, + { + "name": "symfony/string", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", + "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "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/v7.0.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-12-10T16:54:46+00:00" + }, + { + "name": "symfony/translation", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "reference": "a2ab2ec1a462e53016de8e8d5e8912bfd62ea681", + "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|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.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.4.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-12-18T09:25:29+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v3.4.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "06450585bf65e978026bda220cdebca3f867fde7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "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.4.1" + }, + "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-12-26T14:02:43+00:00" + }, + { + "name": "symfony/uid", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/uid.git", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/uid/zipball/8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "reference": "8092dd1b1a41372110d06374f99ee62f7f0b9a92", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/polyfill-uuid": "^1.15" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0|^7.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.4.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-10-31T08:18:17+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "v6.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "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|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.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.4.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-12-28T19:16:56+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "v2.2.7", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", + "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0 || ^8.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.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/v2.2.7" + }, + "time": "2023-12-08T13:03:43+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "v5.6.0", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "reference": "2cf9fb6054c2bb1d59d1f3817706ecdb9d2934c4", + "shasum": "" + }, + "require": { + "ext-pcre": "*", + "graham-campbell/result-type": "^1.1.2", + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9.2", + "symfony/polyfill-ctype": "^1.24", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-php80": "^1.24" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-filter": "*", + "phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, + "branch-alias": { + "dev-master": "5.6-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.6.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", + "type": "tidelift" + } + ], + "time": "2023-11-12T22:43:29+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": "amphp/amp", + "version": "v2.6.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^7 | ^8 | ^9", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ], + "psr-4": { + "Amp\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "https://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.6.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2022-02-20T17:52:18+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.8.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "files": [ + "lib/functions.php" + ], + "psr-4": { + "Amp\\ByteStream\\": "lib" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-03-30T17:13:30+00:00" + }, + { + "name": "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": "barryvdh/laravel-ide-helper", + "version": "v2.13.0", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/laravel-ide-helper.git", + "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/81d5b223ff067a1f38e14c100997e153b837fe4a", + "reference": "81d5b223ff067a1f38e14c100997e153b837fe4a", + "shasum": "" + }, + "require": { + "barryvdh/reflection-docblock": "^2.0.6", + "composer/class-map-generator": "^1.0", + "doctrine/dbal": "^2.6 || ^3", + "ext-json": "*", + "illuminate/console": "^8 || ^9 || ^10", + "illuminate/filesystem": "^8 || ^9 || ^10", + "illuminate/support": "^8 || ^9 || ^10", + "nikic/php-parser": "^4.7", + "php": "^7.3 || ^8.0", + "phpdocumentor/type-resolver": "^1.1.0" + }, + "require-dev": { + "ext-pdo_sqlite": "*", + "friendsofphp/php-cs-fixer": "^2", + "illuminate/config": "^8 || ^9 || ^10", + "illuminate/view": "^8 || ^9 || ^10", + "mockery/mockery": "^1.4", + "orchestra/testbench": "^6 || ^7 || ^8", + "phpunit/phpunit": "^8.5 || ^9", + "spatie/phpunit-snapshot-assertions": "^3 || ^4", + "vimeo/psalm": "^3.12" + }, + "suggest": { + "illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.12-dev" + }, + "laravel": { + "providers": [ + "Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Barryvdh\\LaravelIdeHelper\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Barry vd. Heuvel", + "email": "barryvdh@gmail.com" + } + ], + "description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.", + "keywords": [ + "autocomplete", + "codeintel", + "helper", + "ide", + "laravel", + "netbeans", + "phpdoc", + "phpstorm", + "sublime" + ], + "support": { + "issues": "https://github.com/barryvdh/laravel-ide-helper/issues", + "source": "https://github.com/barryvdh/laravel-ide-helper/tree/v2.13.0" + }, + "funding": [ + { + "url": "https://fruitcake.nl", + "type": "custom" + }, + { + "url": "https://github.com/barryvdh", + "type": "github" + } + ], + "time": "2023-02-04T13:56:40+00:00" + }, + { + "name": "barryvdh/reflection-docblock", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/barryvdh/ReflectionDocBlock.git", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/e6811e927f0ecc37cc4deaa6627033150343e597", + "reference": "e6811e927f0ecc37cc4deaa6627033150343e597", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.14|^9" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Barryvdh": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "support": { + "source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.1.1" + }, + "time": "2023-06-14T05:06:27+00:00" + }, + { + "name": "brianium/paratest", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/551f46f52a93177d873f3be08a1649ae886b4a30", + "reference": "551f46f52a93177d873f3be08a1649ae886b4a30", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^0.5.1 || ^1.0.0", + "jean85/pretty-package-versions": "^2.0.5", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", + "phpunit/php-code-coverage": "^10.1.7", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0", + "phpunit/phpunit": "^10.4.2", + "sebastian/environment": "^6.0.1", + "symfony/console": "^6.3.4 || ^7.0.0", + "symfony/process": "^6.3.4 || ^7.0.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "infection/infection": "^0.27.6", + "phpstan/phpstan": "^1.10.40", + "phpstan/phpstan-deprecation-rules": "^1.1.4", + "phpstan/phpstan-phpunit": "^1.3.15", + "phpstan/phpstan-strict-rules": "^1.5.2", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/filesystem": "^6.3.1 || ^7.0.0" + }, + "bin": [ + "bin/paratest", + "bin/paratest.bat", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.3.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2023-10-31T09:24:17+00:00" + }, + { + "name": "cmgmyr/phploc", + "version": "8.0.3", + "source": { + "type": "git", + "url": "https://github.com/cmgmyr/phploc.git", + "reference": "e61d4729df46c5920ab61973bfa3f70f81a70b5f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cmgmyr/phploc/zipball/e61d4729df46c5920ab61973bfa3f70f81a70b5f", + "reference": "e61d4729df46c5920ab61973bfa3f70f81a70b5f", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-json": "*", + "php": "^7.4 || ^8.0", + "phpunit/php-file-iterator": "^3.0|^4.0", + "sebastian/cli-parser": "^1.0|^2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.2", + "phpunit/phpunit": "^9.0|^10.0", + "vimeo/psalm": "^5.7" + }, + "bin": [ + "phploc" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "8.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Chris Gmyr", + "email": "cmgmyr@gmail.com", + "role": "lead" + } + ], + "description": "A tool for quickly measuring the size of a PHP project.", + "homepage": "https://github.com/cmgmyr/phploc", + "support": { + "issues": "https://github.com/cmgmyr/phploc/issues", + "source": "https://github.com/cmgmyr/phploc/tree/8.0.3" + }, + "funding": [ + { + "url": "https://github.com/cmgmyr", + "type": "github" + } + ], + "time": "2023-08-05T16:49:39+00:00" + }, + { + "name": "composer/class-map-generator", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/composer/class-map-generator.git", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/953cc4ea32e0c31f2185549c7d216d7921f03da9", + "reference": "953cc4ea32e0c31f2185549c7d216d7921f03da9", + "shasum": "" + }, + "require": { + "composer/pcre": "^2.1 || ^3.1", + "php": "^7.2 || ^8.0", + "symfony/finder": "^4.4 || ^5.3 || ^6 || ^7" + }, + "require-dev": { + "phpstan/phpstan": "^1.6", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/filesystem": "^5.4 || ^6", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\ClassMapGenerator\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Utilities to scan PHP code and generate class maps.", + "keywords": [ + "classmap" + ], + "support": { + "issues": "https://github.com/composer/class-map-generator/issues", + "source": "https://github.com/composer/class-map-generator/tree/1.1.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-06-30T13:58:57+00:00" + }, + { + "name": "composer/pcre", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-10-11T07:11:09+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.0", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2023-08-31T09:50:34+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "shasum": "" + }, + "require": { + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-02-25T21:32:43+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/cache", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/cache.git", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", + "shasum": "" + }, + "require": { + "php": "~7.1 || ^8.0" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" + } + }, + "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 Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", + "homepage": "https://www.doctrine-project.org/projects/cache.html", + "keywords": [ + "abstraction", + "apcu", + "cache", + "caching", + "couchdb", + "memcached", + "php", + "redis", + "xcache" + ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.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%2Fcache", + "type": "tidelift" + } + ], + "time": "2022-05-20T20:07:39+00:00" + }, + { + "name": "doctrine/dbal", + "version": "3.7.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "require-dev": { + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.42", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" + }, + "suggest": { + "symfony/console": "For helpful console commands such as SQL execution and import of files." + }, + "bin": [ + "bin/doctrine-dbal" + ], + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\DBAL\\": "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": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", + "homepage": "https://www.doctrine-project.org/projects/dbal.html", + "keywords": [ + "abstraction", + "database", + "db2", + "dbal", + "mariadb", + "mssql", + "mysql", + "oci8", + "oracle", + "pdo", + "pgsql", + "postgresql", + "queryobject", + "sasql", + "sql", + "sqlite", + "sqlserver", + "sqlsrv" + ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.7.2" + }, + "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%2Fdbal", + "type": "tidelift" + } + ], + "time": "2023-11-19T08:06:58+00:00" + }, + { + "name": "doctrine/deprecations", + "version": "1.1.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + }, + "time": "2023-09-27T20:04:15+00:00" + }, + { + "name": "doctrine/event-manager", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/event-manager.git", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "conflict": { + "doctrine/common": "<2.9" + }, + "require-dev": { + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "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": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", + "homepage": "https://www.doctrine-project.org/projects/event-manager.html", + "keywords": [ + "event", + "event dispatcher", + "event manager", + "event system", + "events" + ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/2.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%2Fevent-manager", + "type": "tidelift" + } + ], + "time": "2022-10-12T20:59:15+00:00" + }, + { + "name": "evenement/evenement", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", + "shasum": "" + }, + "require": { + "php": ">=7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9 || ^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Evenement\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fakerphp/faker", + "version": "v1.23.1", + "source": { + "type": "git", + "url": "https://github.com/FakerPHP/Faker.git", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "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", + "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.1" + }, + "time": "2024-01-02T13:46:09+00:00" + }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.1", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0", + "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "support": { + "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", + "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" + }, + "time": "2021-06-11T22:34:44+00:00" + }, + { + "name": "felixfbecker/language-server-protocol", + "version": "v1.5.2", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "require-dev": { + "phpstan/phpstan": "*", + "squizlabs/php_codesniffer": "^3.1", + "vimeo/psalm": "^4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "LanguageServerProtocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "support": { + "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + }, + "time": "2022-03-02T22:36:06+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", + "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2023-09-17T21:38:23+00:00" + }, + { + "name": "filp/whoops", + "version": "2.15.4", + "source": { + "type": "git", + "url": "https://github.com/filp/whoops.git", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", + "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "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.4" + }, + "funding": [ + { + "url": "https://github.com/denis-sokolov", + "type": "github" + } + ], + "time": "2023-11-03T12:00:00+00:00" + }, + { + "name": "friendsofphp/php-cs-fixer", + "version": "v3.45.0", + "source": { + "type": "git", + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", + "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", + "shasum": "" + }, + "require": { + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-json": "*", + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0", + "sebastian/diff": "^4.0 || ^5.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" + }, + "require-dev": { + "facile-it/paraunit": "^1.3 || ^2.0", + "justinrainbow/json-schema": "^5.2", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.11", + "php-coveralls/php-coveralls": "^2.7", + "php-cs-fixer/accessible-object": "^1.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6 || ^10.5.5", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-dom": "For handling output formats in XML", + "ext-mbstring": "For handling non-UTF8 characters." + }, + "bin": [ + "php-cs-fixer" + ], + "type": "application", + "autoload": { + "psr-4": { + "PhpCsFixer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Dariusz Rumiński", + "email": "dariusz.ruminski@gmail.com" + } + ], + "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.45.0" + }, + "funding": [ + { + "url": "https://github.com/keradus", + "type": "github" + } + ], + "time": "2023-12-30T02:07:07+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": "jean85/pretty-package-versions", + "version": "2.0.5", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.0.0", + "php": "^7.1|^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.17", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^0.12.66", + "phpunit/phpunit": "^7.5|^8.5|^9.4", + "vimeo/psalm": "^4.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "support": { + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + }, + "time": "2021-10-08T21:21:46+00:00" + }, + { + "name": "justinrainbow/json-schema", + "version": "v5.2.13", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + }, + "time": "2023-09-26T02:20:38+00:00" + }, + { + "name": "larastan/larastan", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "d60c1a6d49fcbb54b78922a955a55820abdbe3c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/d60c1a6d49fcbb54b78922a955a55820abdbe3c7", + "reference": "d60c1a6d49fcbb54b78922a955a55820abdbe3c7", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/console": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/container": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/contracts": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/database": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/http": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/pipeline": "^9.52.16 || ^10.28.0 || ^11.0", + "illuminate/support": "^9.52.16 || ^10.28.0 || ^11.0", + "php": "^8.0.2", + "phpmyadmin/sql-parser": "^5.8.2", + "phpstan/phpstan": "^1.10.50" + }, + "require-dev": { + "nikic/php-parser": "^4.17.1", + "orchestra/canvas": "^7.11.1 || ^8.11.0 || ^9.0.0", + "orchestra/testbench": "^7.33.0 || ^8.13.0 || ^9.0.0", + "phpunit/phpunit": "^9.6.13 || ^10.5" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v2.8.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2024-01-02T22:09:07+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.13.7", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/4157768980dbd977f1c4b4cc94997416d8b30ece", + "reference": "4157768980dbd977f1c4b4cc94997416d8b30ece", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.38.0", + "illuminate/view": "^10.30.1", + "laravel-zero/framework": "^10.3.0", + "mockery/mockery": "^1.6.6", + "nunomaduro/larastan": "^2.6.4", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.24.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-12-05T19:43:12+00:00" + }, + { + "name": "laravel/sail", + "version": "v1.26.3", + "source": { + "type": "git", + "url": "https://github.com/laravel/sail.git", + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/sail/zipball/fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "reference": "fa1ad5fbb03686dfc752bfd1861d86091cc1c32d", + "shasum": "" + }, + "require": { + "illuminate/console": "^9.0|^10.0|^11.0", + "illuminate/contracts": "^9.0|^10.0|^11.0", + "illuminate/support": "^9.0|^10.0|^11.0", + "php": "^8.0", + "symfony/yaml": "^6.0|^7.0" + }, + "require-dev": { + "orchestra/testbench": "^7.0|^8.0|^9.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-12-02T18:26:39+00:00" + }, + { + "name": "league/container", + "version": "4.2.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/container.git", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/container/zipball/375d13cb828649599ef5d48a339c4af7a26cd0ab", + "reference": "375d13cb828649599ef5d48a339c4af7a26cd0ab", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "psr/container": "^1.1 || ^2.0" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "orno/di": "~2.0" + }, + "require-dev": { + "nette/php-generator": "^3.4", + "nikic/php-parser": "^4.10", + "phpstan/phpstan": "^0.12.47", + "phpunit/phpunit": "^8.5.17", + "roave/security-advisories": "dev-latest", + "scrutinizer/ocular": "^1.8", + "squizlabs/php_codesniffer": "^3.6" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Container\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Phil Bennett", + "email": "mail@philbennett.co.uk", + "role": "Developer" + } + ], + "description": "A fast and intuitive dependency injection container.", + "homepage": "https://github.com/thephpleague/container", + "keywords": [ + "container", + "dependency", + "di", + "injection", + "league", + "provider", + "service" + ], + "support": { + "issues": "https://github.com/thephpleague/container/issues", + "source": "https://github.com/thephpleague/container/tree/4.2.0" + }, + "funding": [ + { + "url": "https://github.com/philipobenito", + "type": "github" + } + ], + "time": "2021-11-16T10:29:06+00:00" + }, + { + "name": "lorisleiva/laravel-actions", + "version": "v2.7.1", + "source": { + "type": "git", + "url": "https://github.com/lorisleiva/laravel-actions.git", + "reference": "5250614fd6b77e8e2780be0206174e069e94661d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lorisleiva/laravel-actions/zipball/5250614fd6b77e8e2780be0206174e069e94661d", + "reference": "5250614fd6b77e8e2780be0206174e069e94661d", + "shasum": "" + }, + "require": { + "illuminate/contracts": "9.0 - 9.34 || ^9.36 || ^10.0", + "lorisleiva/lody": "^0.4", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^8.5", + "pestphp/pest": "^1.23", + "phpunit/phpunit": "^9.6" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Lorisleiva\\Actions\\ActionServiceProvider" + ], + "aliases": { + "Action": "Lorisleiva\\Actions\\Facades\\Actions" + } + } + }, + "autoload": { + "psr-4": { + "Lorisleiva\\Actions\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Loris Leiva", + "email": "loris.leiva@gmail.com", + "homepage": "https://lorisleiva.com", + "role": "Developer" + } + ], + "description": "Laravel components that take care of one specific task", + "homepage": "https://github.com/lorisleiva/laravel-actions", + "keywords": [ + "action", + "command", + "component", + "controller", + "job", + "laravel", + "object" + ], + "support": { + "issues": "https://github.com/lorisleiva/laravel-actions/issues", + "source": "https://github.com/lorisleiva/laravel-actions/tree/v2.7.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/lorisleiva", + "type": "github" + } + ], + "time": "2023-08-24T10:20:57+00:00" + }, + { + "name": "lorisleiva/lody", + "version": "v0.4.0", + "source": { + "type": "git", + "url": "https://github.com/lorisleiva/lody.git", + "reference": "1a43e8e423f3b2b64119542bc44a2071208fae16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lorisleiva/lody/zipball/1a43e8e423f3b2b64119542bc44a2071208fae16", + "reference": "1a43e8e423f3b2b64119542bc44a2071208fae16", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^8.0|^9.0|^10.0", + "php": "^8.0" + }, + "require-dev": { + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.20.0", + "phpunit/phpunit": "^9.5.10" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Lorisleiva\\Lody\\LodyServiceProvider" + ], + "aliases": { + "Lody": "Lorisleiva\\Lody\\Lody" + } + } + }, + "autoload": { + "psr-4": { + "Lorisleiva\\Lody\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Loris Leiva", + "email": "loris.leiva@gmail.com", + "homepage": "https://lorisleiva.com", + "role": "Developer" + } + ], + "description": "Load files and classes as lazy collections in Laravel.", + "homepage": "https://github.com/lorisleiva/lody", + "keywords": [ + "classes", + "collection", + "files", + "laravel", + "load" + ], + "support": { + "issues": "https://github.com/lorisleiva/lody/issues", + "source": "https://github.com/lorisleiva/lody/tree/v0.4.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/lorisleiva", + "type": "github" + } + ], + "time": "2023-02-05T15:03:45+00:00" + }, + { + "name": "maximebf/debugbar", + "version": "v1.19.1", + "source": { + "type": "git", + "url": "https://github.com/maximebf/php-debugbar.git", + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/03dd40a1826f4d585ef93ef83afa2a9874a00523", + "reference": "03dd40a1826f4d585ef93ef83afa2a9874a00523", + "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.19.1" + }, + "time": "2023-10-12T08:10:52+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.6.7", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "reference": "0cc058854b3195ba21dc6b1f7b1f60f4ef3a9c06", + "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", + "symplify/easy-coding-standard": "^12.0.8" + }, + "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-12-10T02:24:34+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": "netresearch/jsonmapper", + "version": "v4.2.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=7.1" + }, + "require-dev": { + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "squizlabs/php_codesniffer": "~3.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "support": { + "email": "cweiske@cweiske.de", + "issues": "https://github.com/cweiske/jsonmapper/issues", + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + }, + "time": "2023-04-09T17:37:40+00:00" + }, + { + "name": "nunomaduro/collision", + "version": "v7.10.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/collision.git", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", + "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "shasum": "" + }, + "require": { + "filp/whoops": "^2.15.3", + "nunomaduro/termwind": "^1.15.1", + "php": "^8.1.0", + "symfony/console": "^6.3.4" + }, + "conflict": { + "laravel/framework": ">=11.0.0" + }, + "require-dev": { + "brianium/paratest": "^7.3.0", + "laravel/framework": "^10.28.0", + "laravel/pint": "^1.13.3", + "laravel/sail": "^1.25.0", + "laravel/sanctum": "^3.3.1", + "laravel/tinker": "^2.8.2", + "nunomaduro/larastan": "^2.6.4", + "orchestra/testbench-core": "^8.13.0", + "pestphp/pest": "^2.23.2", + "phpunit/phpunit": "^10.4.1", + "sebastian/environment": "^6.0.1", + "spatie/laravel-ignition": "^2.3.1" + }, + "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-10-11T15:45:01+00:00" + }, + { + "name": "nunomaduro/phpinsights", + "version": "v2.11.0", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/phpinsights.git", + "reference": "f476219759a61aad988641476259465c77203383" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/phpinsights/zipball/f476219759a61aad988641476259465c77203383", + "reference": "f476219759a61aad988641476259465c77203383", + "shasum": "" + }, + "require": { + "cmgmyr/phploc": "^8.0.3", + "composer/semver": "^3.4", + "ext-iconv": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "friendsofphp/php-cs-fixer": "^3.40.0", + "justinrainbow/json-schema": "^5.2.13", + "league/container": "^3.2|^4.2", + "php": "^7.4|^8.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "psr/container": "^1.0|^2.0.2", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "sebastian/diff": "^4.0|^5.0.3", + "slevomat/coding-standard": "^8.14.1", + "squizlabs/php_codesniffer": "^3.7.2", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.4|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.4|^7.0" + }, + "require-dev": { + "ergebnis/phpstan-rules": "^0.15.3", + "illuminate/console": "^5.8|^6.0|^7.0|^8.0|^9.20|^10.0", + "illuminate/support": "^5.8|^6.0|^7.0|^8.0|^9.52.16|^10.0", + "mockery/mockery": "^1.6.6", + "phpstan/phpstan-strict-rules": "^0.12.11", + "phpunit/phpunit": "^8.0|^9.0|^10.4.2", + "rector/rector": "0.11.56", + "symfony/var-dumper": "^5.4|^6.0|^7.0", + "thecodingmachine/phpstan-strict-rules": "^0.12.2" + }, + "suggest": { + "ext-simplexml": "It is needed for the checkstyle formatter" + }, + "bin": [ + "bin/phpinsights" + ], + "type": "library", + "extra": { + "laravel": { + "providers": [ + "NunoMaduro\\PhpInsights\\Application\\Adapters\\Laravel\\InsightsServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\PhpInsights\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Instant PHP quality checks from your console.", + "keywords": [ + "Insights", + "code", + "console", + "php", + "quality", + "source" + ], + "support": { + "issues": "https://github.com/nunomaduro/phpinsights/issues", + "source": "https://github.com/nunomaduro/phpinsights/tree/v2.11.0" + }, + "funding": [ + { + "url": "https://github.com/JustSteveKing", + "type": "github" + }, + { + "url": "https://github.com/cmgmyr", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-11-30T10:54:50+00:00" + }, + { + "name": "orchestra/canvas", + "version": "v8.11.6", + "source": { + "type": "git", + "url": "https://github.com/orchestral/canvas.git", + "reference": "6ab236c7a190f7f53ce2e9c65fd9ee781e5aeb6c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/canvas/zipball/6ab236c7a190f7f53ce2e9c65fd9ee781e5aeb6c", + "reference": "6ab236c7a190f7f53ce2e9c65fd9ee781e5aeb6c", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^10.39", + "illuminate/database": "^10.39", + "illuminate/filesystem": "^10.39", + "illuminate/support": "^10.39", + "orchestra/canvas-core": "^8.10.2", + "orchestra/testbench-core": "^8.19", + "php": "^8.1", + "symfony/polyfill-php83": "^1.28", + "symfony/yaml": "^6.2" + }, + "require-dev": { + "laravel/framework": "^10.39", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.5.1", + "phpstan/phpstan": "^1.10.5", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ray": "^1.32.4" + }, + "bin": [ + "canvas" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Orchestra\\Canvas\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Canvas\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Code Generators for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas/tree/v8.11.6" + }, + "time": "2023-12-28T15:08:19+00:00" + }, + { + "name": "orchestra/canvas-core", + "version": "v8.10.2", + "source": { + "type": "git", + "url": "https://github.com/orchestral/canvas-core.git", + "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/canvas-core/zipball/3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", + "reference": "3af8fb6b1ebd85903ba5d0e6df1c81aedacfedfc", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "composer/semver": "^3.0", + "illuminate/console": "^10.38.1", + "illuminate/filesystem": "^10.38.1", + "php": "^8.1", + "symfony/polyfill-php83": "^1.28" + }, + "conflict": { + "orchestra/canvas": "<8.11.0", + "orchestra/testbench-core": "<8.2.0" + }, + "require-dev": { + "laravel/framework": "^10.38.1", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.19", + "phpstan/phpstan": "^1.10.6", + "phpunit/phpunit": "^10.1", + "symfony/yaml": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.0-dev" + }, + "laravel": { + "providers": [ + "Orchestra\\Canvas\\Core\\LaravelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Canvas\\Core\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + }, + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Code Generators Builder for Laravel Applications and Packages", + "support": { + "issues": "https://github.com/orchestral/canvas/issues", + "source": "https://github.com/orchestral/canvas-core/tree/v8.10.2" + }, + "time": "2023-12-28T01:27:59+00:00" + }, + { + "name": "orchestra/testbench", + "version": "v8.19.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench.git", + "reference": "a3c7b35102f76135962451324703738f5551d46b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/a3c7b35102f76135962451324703738f5551d46b", + "reference": "a3c7b35102f76135962451324703738f5551d46b", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.39", + "mockery/mockery": "^1.5.1", + "orchestra/testbench-core": "^8.19", + "orchestra/workbench": "^1.2 || ^8.2", + "php": "^8.1", + "phpunit/phpunit": "^9.6 || ^10.1", + "symfony/process": "^6.2", + "symfony/yaml": "^6.2", + "vlucas/phpdotenv": "^5.4.1" + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Laravel Testing Helper for Packages Development", + "homepage": "https://packages.tools/testbench/", + "keywords": [ + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench/tree/v8.19.0" + }, + "time": "2023-12-28T14:58:57+00:00" + }, + { + "name": "orchestra/testbench-core", + "version": "v8.19.0", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "15645dd792968f48a27a26fc4f542c16d9f07e0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/15645dd792968f48a27a26fc4f542c16d9f07e0d", + "reference": "15645dd792968f48a27a26fc4f542c16d9f07e0d", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "php": "^8.1", + "symfony/polyfill-php83": "^1.28" + }, + "conflict": { + "brianium/paratest": "<6.4.0 || >=7.0.0 <7.1.4 || >=8.0.0", + "laravel/framework": "<10.39 || >=11.0.0", + "nunomaduro/collision": "<6.4.0 || >=7.0.0 <7.4.0 || >=8.0.0", + "orchestra/workbench": "<1.0.0", + "phpunit/phpunit": "<9.6.0 || 10.5.4 || >=10.6.0" + }, + "require-dev": { + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.39", + "laravel/pint": "^1.6", + "mockery/mockery": "^1.5.1", + "phpstan/phpstan": "^1.10.7", + "phpunit/phpunit": "^10.1", + "spatie/laravel-ray": "^1.32.4", + "symfony/process": "^6.2", + "symfony/yaml": "^6.2", + "vlucas/phpdotenv": "^5.4.1" + }, + "suggest": { + "brianium/paratest": "Allow using parallel testing (^6.4 || ^7.1.4).", + "ext-pcntl": "Required to use all features of the console signal trapping.", + "fakerphp/faker": "Allow using Faker for testing (^1.21).", + "laravel/framework": "Required for testing (^10.39).", + "mockery/mockery": "Allow using Mockery for testing (^1.5.1).", + "nunomaduro/collision": "Allow using Laravel style tests output and parallel testing (^6.4 || ^7.4).", + "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^8.0).", + "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^8.0).", + "phpunit/phpunit": "Allow using PHPUnit for testing (^9.6 || ^10.1).", + "symfony/yaml": "Required for CLI Commander (^6.2).", + "vlucas/phpdotenv": "Required for CLI Commander (^5.4.1)." + }, + "bin": [ + "testbench" + ], + "type": "library", + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "https://packages.tools/testbench", + "keywords": [ + "BDD", + "TDD", + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/testbench/issues", + "source": "https://github.com/orchestral/testbench-core" + }, + "time": "2023-12-28T14:44:29+00:00" + }, + { + "name": "orchestra/workbench", + "version": "v8.2.1", + "source": { + "type": "git", + "url": "https://github.com/orchestral/workbench.git", + "reference": "e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/workbench/zipball/e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea", + "reference": "e8e6e4dcf6fb26ea1924c3581e49aa347691a8ea", + "shasum": "" + }, + "require": { + "composer-runtime-api": "^2.2", + "fakerphp/faker": "^1.21", + "laravel/framework": "^10.38.1", + "laravel/tinker": "^2.8.2", + "orchestra/canvas": "^8.11.4", + "orchestra/testbench-core": "^8.17", + "php": "^8.1", + "spatie/laravel-ray": "^1.32.4", + "symfony/polyfill-php83": "^1.28", + "symfony/yaml": "^6.2" + }, + "require-dev": { + "laravel/pint": "^1.4", + "mockery/mockery": "^1.5.1", + "phpstan/phpstan": "^1.10.7", + "phpunit/phpunit": "^10.1", + "symfony/process": "^6.2" + }, + "suggest": { + "ext-pcntl": "Required to use all features of the console signal trapping." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.5.x-dev" + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Workbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com" + } + ], + "description": "Workbench Companion for Laravel Packages Development", + "keywords": [ + "dev", + "laravel", + "laravel-packages", + "testing" + ], + "support": { + "issues": "https://github.com/orchestral/workbench/issues", + "source": "https://github.com/orchestral/workbench/tree/v8.2.1" + }, + "time": "2023-12-28T15:15:44+00:00" + }, + { + "name": "pestphp/pest", + "version": "v2.30.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "97dc32f9d24b84dd071d9e89438a19e43c833f6f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/97dc32f9d24b84dd071d9e89438a19e43c833f6f", + "reference": "97dc32f9d24b84dd071d9e89438a19e43c833f6f", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.10.0|^8.0.1", + "nunomaduro/termwind": "^1.15.1|^2.0.0", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.5.0", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.5" + }, + "conflict": { + "phpunit/phpunit": ">10.5.5", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^2.16.0", + "pestphp/pest-plugin-type-coverage": "^2.6.0", + "symfony/process": "^6.4.0|^7.0.0" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v2.30.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-12-28T10:36:40+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" + }, + "conflict": { + "pestphp/pest": "<2.2.3" + }, + "require-dev": { + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-08-22T08:40:06+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v2.5.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/8d850753f0192c3fa1ed6c6cac6f76b718d131db", + "reference": "8d850753f0192c3fa1ed6c6cac6f76b718d131db", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^7.10.0|^8.0.0", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.7.5" + }, + "require-dev": { + "pestphp/pest": "^2.27.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.5.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-12-05T19:01:10+00:00" + }, + { + "name": "pestphp/pest-plugin-faker", + "version": "v2.0.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-faker.git", + "reference": "39fa2bd69d95024783ccf40ff48e3680aea1ba4a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-faker/zipball/39fa2bd69d95024783ccf40ff48e3680aea1ba4a", + "reference": "39fa2bd69d95024783ccf40ff48e3680aea1ba4a", + "shasum": "" + }, + "require": { + "fakerphp/faker": "^1.21.0", + "pestphp/pest": "^2.0.0", + "php": "^8.1" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^2.5.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Faker.php" + ], + "psr-4": { + "Pest\\Faker\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Faker Plugin", + "keywords": [ + "faker", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-faker/tree/v2.0.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-03-20T10:06:05+00:00" + }, + { + "name": "pestphp/pest-plugin-laravel", + "version": "v2.2.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-laravel.git", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-laravel/zipball/77a2838c1d3b09d147211e76a48987ba9a758279", + "reference": "77a2838c1d3b09d147211e76a48987ba9a758279", + "shasum": "" + }, + "require": { + "laravel/framework": "^10.18.0|^11.0", + "pestphp/pest": "^2.13.0", + "php": "^8.1.0" + }, + "require-dev": { + "laravel/dusk": "^7.9.3", + "orchestra/testbench": "^8.6.3", + "pestphp/pest-dev-tools": "^2.14.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Pest\\Laravel\\PestServiceProvider" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Laravel\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Laravel Plugin", + "keywords": [ + "framework", + "laravel", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-laravel/tree/v2.2.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-08-10T15:37:09+00:00" + }, + { + "name": "pestphp/pest-plugin-livewire", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-livewire.git", + "reference": "e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-livewire/zipball/e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97", + "reference": "e72a2f850f727dfdb6bfa6e2ee6ff478ccc93f97", + "shasum": "" + }, + "require": { + "livewire/livewire": "^2.12.3|^3.0", + "pestphp/pest": "^2.9.1", + "php": "^8.1" + }, + "require-dev": { + "orchestra/testbench": "^8.5.10", + "pestphp/pest-dev-tools": "^2.12.0" + }, + "type": "library", + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Livewire\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest Livewire Plugin", + "keywords": [ + "framework", + "livewire", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-livewire/tree/v2.1.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-07-20T16:28:21+00:00" + }, + { + "name": "pestphp/pest-plugin-watch", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-watch.git", + "reference": "6386f683ea95d7e0abce2004cf52ea1cf97546a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-watch/zipball/6386f683ea95d7e0abce2004cf52ea1cf97546a9", + "reference": "6386f683ea95d7e0abce2004cf52ea1cf97546a9", + "shasum": "" + }, + "require": { + "pestphp/pest-plugin": "^2.0.1", + "php": "^8.1.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.4.0" + }, + "conflict": { + "evenement/evenement": "^1.0", + "pestphp/pest": "<1.0" + }, + "require-dev": { + "pestphp/pest": "^2.12.1", + "pestphp/pest-dev-tools": "^2.14.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "pest": { + "plugins": [ + "Pest\\Watch\\Plugin" + ] + } + }, + "autoload": { + "psr-4": { + "Pest\\Watch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Caneco", + "email": "caneco@me.com" + } + ], + "description": "The Pest Watch Plugin", + "keywords": [ + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit", + "watch" + ], + "support": { + "issues": "https://github.com/pestphp/pest-plugin-watch/issues", + "source": "https://github.com/pestphp/pest-plugin-watch/tree/v2.0.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2023-08-04T10:52:49+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": "php-parallel-lint/php-parallel-lint", + "version": "v1.3.2", + "source": { + "type": "git", + "url": "https://github.com/php-parallel-lint/PHP-Parallel-Lint.git", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-parallel-lint/PHP-Parallel-Lint/zipball/6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "reference": "6483c9832e71973ed29cf71bd6b3f4fde438a9de", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": ">=5.3.0" + }, + "replace": { + "grogy/php-parallel-lint": "*", + "jakub-onderka/php-parallel-lint": "*" + }, + "require-dev": { + "nette/tester": "^1.3 || ^2.0", + "php-parallel-lint/php-console-highlighter": "0.* || ^1.0", + "squizlabs/php_codesniffer": "^3.6" + }, + "suggest": { + "php-parallel-lint/php-console-highlighter": "Highlight syntax in code snippet" + }, + "bin": [ + "parallel-lint" + ], + "type": "library", + "autoload": { + "classmap": [ + "./src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "ahoj@jakubonderka.cz" + } + ], + "description": "This tool check syntax of PHP files about 20x faster than serial check.", + "homepage": "https://github.com/php-parallel-lint/PHP-Parallel-Lint", + "support": { + "issues": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/issues", + "source": "https://github.com/php-parallel-lint/PHP-Parallel-Lint/tree/v1.3.2" + }, + "time": "2022-02-21T12:50:22+00:00" + }, + { + "name": "phpdocumentor/reflection", + "version": "5.3.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/Reflection.git", + "reference": "99926d699634bb16acd5bbf21b4b3b543690304a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/99926d699634bb16acd5bbf21b4b3b543690304a", + "reference": "99926d699634bb16acd5bbf21b4b3b543690304a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "~4.14", + "php": "^7.4|8.0.*|8.1.*|8.2.*|8.3.*", + "phpdocumentor/reflection-common": "^2.1", + "phpdocumentor/reflection-docblock": "^5", + "phpdocumentor/type-resolver": "^1.2", + "symfony/polyfill-php80": "^1.28", + "webmozart/assert": "^1.7" + }, + "require-dev": { + "mikey179/vfsstream": "~1.2", + "mockery/mockery": "~1.6.0", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-php-parser": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.18.0", + "vimeo/psalm": "^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-5.x": "5.3.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\": "src/phpDocumentor" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Reflection library to do Static Analysis for PHP Projects", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/Reflection/issues", + "source": "https://github.com/phpDocumentor/Reflection/tree/5.3.3" + }, + "time": "2023-10-09T18:24:07+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.3.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "php": "^7.2 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.3", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + } + ], + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" + }, + "time": "2023-08-12T11:01:26+00:00" + }, + { + "name": "phpmyadmin/sql-parser", + "version": "5.8.2", + "source": { + "type": "git", + "url": "https://github.com/phpmyadmin/sql-parser.git", + "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "reference": "f1720ae19abe6294cb5599594a8a57bc3c8cc287", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "phpmyadmin/motranslator": "<3.0" + }, + "require-dev": { + "phpbench/phpbench": "^1.1", + "phpmyadmin/coding-standard": "^3.0", + "phpmyadmin/motranslator": "^4.0 || ^5.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.9.12", + "phpstan/phpstan-phpunit": "^1.3.3", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.11", + "zumba/json-serializer": "~3.0.2" + }, + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" + }, + "bin": [ + "bin/highlight-query", + "bin/lint-query", + "bin/tokenize-query" + ], + "type": "library", + "autoload": { + "psr-4": { + "PhpMyAdmin\\SqlParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" + } + ], + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "homepage": "https://github.com/phpmyadmin/sql-parser", + "keywords": [ + "analysis", + "lexer", + "parser", + "query linter", + "sql", + "sql lexer", + "sql linter", + "sql parser", + "sql syntax highlighter", + "sql tokenizer" + ], + "support": { + "issues": "https://github.com/phpmyadmin/sql-parser/issues", + "source": "https://github.com/phpmyadmin/sql-parser" + }, + "funding": [ + { + "url": "https://www.phpmyadmin.net/donate/", + "type": "other" + } + ], + "time": "2023-09-19T12:34:29+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.24.5", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" + }, + "time": "2023-12-16T09:33:33+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.10.50", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-12-13T10:59:42+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "10.1.11", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.18 || ^5.0", + "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.11" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T15:38:30+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.5.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ed21115d505b4b4f7dc7b5651464e19a2c7f7856", + "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856", + "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.5-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.5.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-12-27T15:13:52+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "reference": "a94b3a4db7fb774b3d78dad2315ddc07629e1bed", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/container": "^1.1 || ^2.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^5.4@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "https://pimple.symfony.com", + "keywords": [ + "container", + "dependency injection" + ], + "support": { + "source": "https://github.com/silexphp/Pimple/tree/v3.5.0" + }, + "time": "2021-10-28T11:13:42+00:00" + }, + { + "name": "psalm/plugin-laravel", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/psalm/psalm-plugin-laravel.git", + "reference": "0b42a51f977d216e0b5d649f68346e2f324f4a55" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/psalm-plugin-laravel/zipball/0b42a51f977d216e0b5d649f68346e2f324f4a55", + "reference": "0b42a51f977d216e0b5d649f68346e2f324f4a55", + "shasum": "" + }, + "require": { + "barryvdh/laravel-ide-helper": "^2.13", + "ext-simplexml": "*", + "illuminate/config": "^9.48 || ^10.0", + "illuminate/container": "^9.48 || ^10.0", + "illuminate/contracts": "^9.48 || ^10.0", + "illuminate/database": "^9.48 || ^10.0", + "illuminate/events": "^9.48 || ^10.0", + "illuminate/http": "^9.48 || ^10.0", + "illuminate/routing": "^9.48 || ^10.0", + "illuminate/support": "^9.48 || ^10.0", + "illuminate/view": "^9.48 || ^10.0", + "nikic/php-parser": "^4.13", + "orchestra/testbench": "^7.19 || ^8.0", + "php": "^8.0.2", + "symfony/console": "^6.0", + "vimeo/psalm": "^4.30 || ^5.1" + }, + "require-dev": { + "codeception/codeception": "^5.0", + "codeception/module-asserts": "^3.0", + "codeception/module-cli": "^2.0", + "codeception/module-filesystem": "^3.0", + "codeception/module-phpbrowser": "^3.0", + "phpunit/phpunit": "^9.6 || ^10.0", + "ramsey/collection": "^1.3", + "slevomat/coding-standard": "^8.8", + "squizlabs/php_codesniffer": "*", + "symfony/http-foundation": "^6.0" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Psalm\\LaravelPlugin\\Plugin" + } + }, + "autoload": { + "psr-4": { + "Psalm\\LaravelPlugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown", + "email": "github@muglug.com" + } + ], + "description": "A Laravel plugin for Psalm", + "homepage": "https://github.com/psalm/psalm-plugin-laravel", + "support": { + "issues": "https://github.com/psalm/psalm-plugin-laravel/issues", + "source": "https://github.com/psalm/psalm-plugin-laravel/tree/v2.8.0" + }, + "time": "2023-02-26T18:23:48+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.5", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "reference": "e71eb1aa55f057c7a4a0d08d06b0b0a484bead43", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.2" + }, + "require-dev": { + "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", + "react/socket": "^1.8", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.5" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-09-16T13:41:56+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/stream", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.3.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-06-16T10:52:11+00:00" + }, + { + "name": "rector/rector", + "version": "0.18.13", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/f8011a76d36aa4f839f60f3b4f97707d97176618", + "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.35" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.18.13" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2023-12-20T16:08:01+00:00" + }, + { + "name": "riimu/kit-pathjoin", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Riimu/Kit-PathJoin.git", + "reference": "8ad2656c79527dba9f7f20e1229dcd38abfe8cee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Riimu/Kit-PathJoin/zipball/8ad2656c79527dba9f7f20e1229dcd38abfe8cee", + "reference": "8ad2656c79527dba9f7f20e1229dcd38abfe8cee", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.3", + "phpunit/phpunit": "^5.7 || ^6.2", + "squizlabs/php_codesniffer": "^3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Riimu\\Kit\\PathJoin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Riikka Kalliomäki", + "email": "riikka.kalliomaki@gmail.com", + "homepage": "http://riimu.net" + } + ], + "description": "Cross-platform library for normalizing and joining file system paths", + "homepage": "http://kit.riimu.net", + "keywords": [ + "file", + "join", + "normalize", + "path", + "system" + ], + "support": { + "issues": "https://github.com/Riimu/Kit-PathJoin/issues", + "source": "https://github.com/Riimu/Kit-PathJoin/tree/master" + }, + "time": "2017-07-09T14:41:04+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.2.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "68ff824baeae169ec9f2137158ee529584553799" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.2-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.2.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:37:17+00:00" + }, + { + "name": "sebastian/diff", + "version": "5.1.0", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "require-dev": { + "phpunit/phpunit": "^10.0", + "symfony/process": "^4.2 || ^5" + }, + "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": "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.1.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T10:55:06+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.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-21T08:38:20+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": "sikessem/devtools", + "version": "v0.4.0", + "source": { + "type": "git", + "url": "https://github.com/sikessem/devtools.git", + "reference": "2f7a0973d9443586000ea7c593e47176ff30c752" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sikessem/devtools/zipball/2f7a0973d9443586000ea7c593e47176ff30c752", + "reference": "2f7a0973d9443586000ea7c593e47176ff30c752", + "shasum": "" + }, + "require": { + "fakerphp/faker": "^1.23", + "laravel/pint": "^1.13", + "mockery/mockery": "^1.6", + "nunomaduro/collision": "^7.10", + "nunomaduro/phpinsights": "^2.9", + "pestphp/pest": "^2.23", + "php": "^8.1||^8.2", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.4", + "rector/rector": "^0.18.5", + "spatie/ignition": "^1.11", + "spatie/ray": "^1.39", + "symfony/var-dumper": "^6.3", + "vimeo/psalm": "^5.15" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "SIGUI Kessé Emmanuel", + "email": "contact@sigui.ci", + "homepage": "https://sigui.ci" + } + ], + "description": "🧪 Sikessem development and automation tools.", + "homepage": "https://packagist.org/packages/sikessem/devtools", + "keywords": [ + "Devtools", + "PHPStan", + "Pint", + "analyze-code", + "code-analyzer", + "code-inpector", + "collision", + "dd", + "debug", + "debugger", + "dev", + "dev-tools", + "die-dump", + "dump", + "fake", + "faker", + "ignition", + "inspect-code", + "lint", + "mock", + "mockery", + "pest", + "php", + "phpunit", + "psalm", + "ray", + "rector", + "refactor", + "sikessem", + "test", + "test-automation", + "test-tools", + "testing", + "testing-tools", + "var-dump", + "var-dumper", + "web-tools", + "webtools" + ], + "support": { + "chat": "https://github.com/orgs/sikessem/discussions", + "issues": "https://github.com/sikessem/devtools/issues", + "source": "https://github.com/sikessem/devtools" + }, + "time": "2023-10-22T16:47:22+00:00" + }, + { + "name": "sikessem/laravel-devtools", + "version": "v0.9.0", + "source": { + "type": "git", + "url": "https://github.com/sikessem/laravel-devtools.git", + "reference": "d0882ab1ce392d4b8a754dff4e88dea02fe567b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sikessem/laravel-devtools/zipball/d0882ab1ce392d4b8a754dff4e88dea02fe567b9", + "reference": "d0882ab1ce392d4b8a754dff4e88dea02fe567b9", + "shasum": "" + }, + "require": { + "barryvdh/laravel-debugbar": "^3.9", + "barryvdh/laravel-ide-helper": "^2.13", + "larastan/larastan": "^2.8", + "laravel/sail": "^1.26", + "orchestra/testbench": "^8.19", + "pestphp/pest-plugin-faker": "^2.0", + "pestphp/pest-plugin-laravel": "^2.2", + "pestphp/pest-plugin-livewire": "^2.1", + "pestphp/pest-plugin-watch": "^2.0", + "php": ">=8.2", + "psalm/plugin-laravel": "^2.8", + "sikessem/devtools": "^0.4.0", + "spatie/laravel-ignition": "^2.3", + "spatie/laravel-ray": "^1.33", + "wulfheart/laravel-actions-ide-helper": "^0.6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "SIGUI Kessé Emmanuel", + "email": "contact@sigui.ci", + "homepage": "https://sigui.ci" + } + ], + "description": "🧪 Sikessem development tools for Laravel applications.", + "homepage": "https://packagist.org/packages/sikessem/laravel-devtools", + "keywords": [ + "Devtools", + "PHPStan", + "Pint", + "actions", + "analyze-code", + "automated-testing ", + "code-analyzer", + "code-inpector", + "collision", + "dd", + "debug", + "debugbar", + "debugger", + "dev", + "dev-tools", + "die-dump", + "dump", + "fake", + "faker", + "ide-helper", + "ignition", + "inspect-code", + "laravel", + "laravel-debugbar", + "laravel-devtools", + "laravel-test-tools", + "laravel-testing-tools", + "laravel-tools", + "lint", + "mock", + "mockery", + "pest", + "php", + "phpunit", + "psalm", + "ray", + "rector", + "refactor", + "sikessem", + "test", + "test-automation", + "test-tools", + "testing", + "testing-tools", + "var-dump", + "var-dumper", + "web-tools", + "webtools" + ], + "support": { + "chat": "https://github.com/orgs/sikessem/discussions", + "email": "support@sikessem.com", + "issues": "https://github.com/sikessem/laravel-devtools/issues", + "source": "https://github.com/sikessem/laravel-devtools" + }, + "time": "2024-01-02T22:50:23+00:00" + }, + { + "name": "slevomat/coding-standard", + "version": "8.14.1", + "source": { + "type": "git", + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.7.1" + }, + "require-dev": { + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.37", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.14", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "8.5.21|9.6.8|10.3.5" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "8.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" + ], + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.14.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2023-10-08T07:28:08+00:00" + }, + { + "name": "spatie/array-to-xml", + "version": "3.2.2", + "source": { + "type": "git", + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8", + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": "^8.0" + }, + "require-dev": { + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\ArrayToXml\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" + } + ], + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], + "support": { + "source": "https://github.com/spatie/array-to-xml/tree/3.2.2" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-11-14T14:08:51+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.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/flare-client-php.git", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec", + "shasum": "" + }, + "require": { + "illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.62.1", + "php": "^8.0", + "spatie/backtrace": "^1.5.2", + "symfony/http-foundation": "^5.2|^6.0|^7.0", + "symfony/mime": "^5.2|^6.0|^7.0", + "symfony/process": "^5.2|^6.0|^7.0", + "symfony/var-dumper": "^5.2|^6.0|^7.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.5.0", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "spatie/phpunit-snapshot-assertions": "^4.0|^5.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.3" + }, + "funding": [ + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "time": "2023-10-17T15:54:07+00:00" + }, + { + "name": "spatie/ignition", + "version": "1.11.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/ignition.git", + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044", + "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|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "require-dev": { + "illuminate/cache": "^9.52|^10.0|^11.0", + "mockery/mockery": "^1.4", + "pestphp/pest": "^1.20|^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "psr/simple-cache-implementation": "*", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "vlucas/phpdotenv": "^5.5" + }, + "suggest": { + "openai-php/client": "Require get solutions from OpenAI", + "simple-cache-implementation": "To cache solutions from OpenAI" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.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-10-18T14:09:40+00:00" + }, + { + "name": "spatie/laravel-ignition", + "version": "2.3.3", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ignition.git", + "reference": "66499cd3c858642ded56dafb8fa0352057ca20dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ignition/zipball/66499cd3c858642ded56dafb8fa0352057ca20dd", + "reference": "66499cd3c858642ded56dafb8fa0352057ca20dd", + "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-12-21T09:43:05+00:00" + }, + { + "name": "spatie/laravel-ray", + "version": "1.33.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/laravel-ray.git", + "reference": "5028ae44a09451b26eb44490e3471998650788e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/laravel-ray/zipball/5028ae44a09451b26eb44490e3471998650788e3", + "reference": "5028ae44a09451b26eb44490e3471998650788e3", + "shasum": "" + }, + "require": { + "ext-json": "*", + "illuminate/contracts": "^7.20|^8.19|^9.0|^10.0", + "illuminate/database": "^7.20|^8.19|^9.0|^10.0", + "illuminate/queue": "^7.20|^8.19|^9.0|^10.0", + "illuminate/support": "^7.20|^8.19|^9.0|^10.0", + "php": "^7.4|^8.0", + "spatie/backtrace": "^1.0", + "spatie/ray": "^1.37", + "symfony/stopwatch": "4.2|^5.1|^6.0", + "zbateson/mail-mime-parser": "^1.3.1|^2.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^7.3", + "laravel/framework": "^7.20|^8.19|^9.0|^10.0", + "orchestra/testbench-core": "^5.0|^6.0|^7.0|^8.0", + "pestphp/pest": "^1.22", + "phpstan/phpstan": "^0.12.93", + "phpunit/phpunit": "^9.3", + "spatie/pest-plugin-snapshots": "^1.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.29.x-dev" + }, + "laravel": { + "providers": [ + "Spatie\\LaravelRay\\RayServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Spatie\\LaravelRay\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Easily debug Laravel apps", + "homepage": "https://github.com/spatie/laravel-ray", + "keywords": [ + "laravel-ray", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/laravel-ray/issues", + "source": "https://github.com/spatie/laravel-ray/tree/1.33.0" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-09-04T10:16:53+00:00" + }, + { + "name": "spatie/macroable", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/spatie/macroable.git", + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/macroable/zipball/ec2c320f932e730607aff8052c44183cf3ecb072", + "reference": "ec2c320f932e730607aff8052c44183cf3ecb072", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\Macroable\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "A trait to dynamically add methods to a class", + "homepage": "https://github.com/spatie/macroable", + "keywords": [ + "macroable", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/macroable/issues", + "source": "https://github.com/spatie/macroable/tree/2.0.0" + }, + "time": "2021-03-26T22:39:02+00:00" + }, + { + "name": "spatie/ray", + "version": "1.40.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/ray.git", + "reference": "8e6547ff47aae2e4f615a5dcea1e5e4911b1dc9f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/ray/zipball/8e6547ff47aae2e4f615a5dcea1e5e4911b1dc9f", + "reference": "8e6547ff47aae2e4f615a5dcea1e5e4911b1dc9f", + "shasum": "" + }, + "require": { + "ext-curl": "*", + "ext-json": "*", + "php": "^7.3|^8.0", + "ramsey/uuid": "^3.0|^4.1", + "spatie/backtrace": "^1.1", + "spatie/macroable": "^1.0|^2.0", + "symfony/stopwatch": "^4.0|^5.1|^6.0", + "symfony/var-dumper": "^4.2|^5.1|^6.0" + }, + "require-dev": { + "illuminate/support": "6.x|^8.18|^9.0", + "nesbot/carbon": "^2.63", + "pestphp/pest": "^1.22", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.5", + "spatie/phpunit-snapshot-assertions": "^4.2", + "spatie/test-time": "^1.2" + }, + "type": "library", + "autoload": { + "files": [ + "src/helpers.php" + ], + "psr-4": { + "Spatie\\Ray\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Debug with Ray to fix problems faster", + "homepage": "https://github.com/spatie/ray", + "keywords": [ + "ray", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/ray/issues", + "source": "https://github.com/spatie/ray/tree/1.40.1" + }, + "funding": [ + { + "url": "https://github.com/sponsors/spatie", + "type": "github" + }, + { + "url": "https://spatie.be/open-source/support-us", + "type": "other" + } + ], + "time": "2023-11-20T08:20:15+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.8.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "shasum": "" + }, + "require": { + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2023-12-08T12:32:31+00:00" + }, + { + "name": "symfony/cache", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "378e30a864c868d635353f103a5a5e7569f029ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/378e30a864c868d635353f103a5a5e7569f029ec", + "reference": "378e30a864c868d635353f103a5a5e7569f029ec", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.4|^7.0" + }, + "conflict": { + "doctrine/dbal": "<3.6", + "symfony/dependency-injection": "<6.4", + "symfony/http-kernel": "<6.4", + "symfony/var-dumper": "<6.4" + }, + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/dbal": "^3.6|^4", + "predis/predis": "^1.1|^2.0", + "psr/simple-cache": "^1.0|^2.0|^3.0", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/filesystem": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "classmap": [ + "Traits/ValueWrapper.php" + ], + "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 extended PSR-6, PSR-16 (and tags) implementations", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "support": { + "source": "https://github.com/symfony/cache/tree/v7.0.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-12-29T15:37:40+00:00" + }, + { + "name": "symfony/cache-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0" + }, + "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\\Cache\\": "" + } + }, + "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 caching", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.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-09-25T12:52:38+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.0.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-27T06:33:22+00:00" + }, + { + "name": "symfony/http-client", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "db714986d3b84330bb6196fdb201c9f79b3a8853" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/db714986d3b84330bb6196fdb201c9f79b3a8853", + "reference": "db714986d3b84330bb6196fdb201c9f79b3a8853", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "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 powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.0.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-12-02T12:51:19+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "1ee70e699b41909c209a0c930f11034b93578654" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", + "reference": "1ee70e699b41909c209a0c930f11034b93578654", + "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\\HttpClient\\": "" + }, + "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 HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.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-30T20:28:31+00:00" + }, + { + "name": "symfony/options-resolver", + "version": "v7.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/options-resolver.git", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", + "reference": "700ff4096e346f54cb628ea650767c8130f1001f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\OptionsResolver\\": "" + }, + "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 an improved replacement for the array_replace PHP function", + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" + ], + "support": { + "source": "https://github.com/symfony/options-resolver/tree/v7.0.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-08T10:20:21+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/6de50471469b8c9afc38164452ab2b6170ee71c1", + "reference": "6de50471469b8c9afc38164452ab2b6170ee71c1", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.28.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-01-26T09:26:14+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.28.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "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\\Php81\\": "" + }, + "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.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/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/stopwatch", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v6.4.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-02-16T10:14:28+00:00" + }, + { + "name": "symfony/var-exporter", + "version": "v7.0.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-exporter.git", + "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/345c62fefe92243c3a06fc0cc65f2ec1a47e0764", + "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "symfony/var-dumper": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\VarExporter\\": "" + }, + "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": "Allows exporting any serializable PHP data structure to plain PHP code", + "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], + "support": { + "source": "https://github.com/symfony/var-exporter/tree/v7.0.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-12-27T08:42:13+00:00" + }, + { + "name": "symfony/yaml", + "version": "v6.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", + "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|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v6.4.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-11-06T11:00:25+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.7.6", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "a252cd9488fd62f3c8c6cafa303b1b96e9df24e0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/a252cd9488fd62f3c8c6cafa303b1b96e9df24e0", + "reference": "a252cd9488fd62f3c8c6cafa303b1b96e9df24e0", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.50" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.7.6" + }, + "time": "2023-12-29T13:14:58+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "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.2" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2023-11-20T00:12:19+00:00" + }, + { + "name": "vimeo/psalm", + "version": "5.18.0", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/b113f3ed0259fd6e212d87c3df80eec95a6abf19", + "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.4.2", + "amphp/byte-stream": "^1.5", + "composer-runtime-api": "^2", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", + "dnoegel/php-xdg-base-dir": "^0.1.1", + "ext-ctype": "*", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "ext-tokenizer": "*", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0", + "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", + "nikic/php-parser": "^4.16", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sebastian/diff": "^4.0 || ^5.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" + }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, + "provide": { + "psalm/psalm": "self.version" + }, + "require-dev": { + "amphp/phpunit-util": "^2.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.9", + "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.6", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-curl": "In order to send data to shepherd", + "ext-igbinary": "^2.0.5 is required, used to serialize caching data" + }, + "bin": [ + "psalm", + "psalm-language-server", + "psalm-plugin", + "psalm-refactor", + "psalter" + ], + "type": "project", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", + "dev-3.x": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psalm\\": "src/Psalm/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matthew Brown" + } + ], + "description": "A static analysis tool for finding errors in PHP applications", + "keywords": [ + "code", + "inspection", + "php", + "static analysis" + ], + "support": { + "docs": "https://psalm.dev/docs", + "issues": "https://github.com/vimeo/psalm/issues", + "source": "https://github.com/vimeo/psalm" + }, + "time": "2023-12-16T09:37:35+00:00" + }, + { + "name": "wulfheart/laravel-actions-ide-helper", + "version": "v0.6.0", + "source": { + "type": "git", + "url": "https://github.com/Wulfheart/laravel-actions-ide-helper.git", + "reference": "9013d511d98bea34c14abd7199a417dda311134a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Wulfheart/laravel-actions-ide-helper/zipball/9013d511d98bea34c14abd7199a417dda311134a", + "reference": "9013d511d98bea34c14abd7199a417dda311134a", + "shasum": "" + }, + "require": { + "illuminate/contracts": "^10.0", + "lorisleiva/laravel-actions": "^2.3", + "lorisleiva/lody": "^0.4.0", + "php": "^8.1|^8.2", + "phpdocumentor/reflection": "^5.1", + "riimu/kit-pathjoin": "^1.2", + "spatie/laravel-package-tools": "^1.14" + }, + "require-dev": { + "brianium/paratest": "^6.8", + "nunomaduro/collision": "^6.1", + "orchestra/testbench": "^8.0", + "pestphp/pest": "^1.22", + "phpunit/phpunit": "^9.5.10", + "spatie/invade": "^1.1", + "spatie/laravel-ray": "^1.32", + "spatie/pest-plugin-snapshots": "^1.1", + "vimeo/psalm": "^5.6" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Wulfheart\\LaravelActionsIdeHelper\\LaravelActionsIdeHelperServiceProvider" + ], + "aliases": { + "LaravelActionsIdeHelper": "Wulfheart\\LaravelActionsIdeHelper\\LaravelActionsIdeHelperFacade" + } + } + }, + "autoload": { + "psr-4": { + "Wulfheart\\LaravelActionsIdeHelper\\": "src", + "Wulfheart\\LaravelActionsIdeHelper\\Database\\Factories\\": "database/factories" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alexander Wulf", + "email": "dev@alexfwulf.de", + "role": "Developer" + } + ], + "description": "Generate a new IDE Helper file for Laravel Actions.", + "homepage": "https://github.com/wulfheart/laravel-actions-ide-helper", + "keywords": [ + "laravel", + "laravel-actions-ide-helper", + "wulfheart" + ], + "support": { + "issues": "https://github.com/Wulfheart/laravel-actions-ide-helper/issues", + "source": "https://github.com/Wulfheart/laravel-actions-ide-helper/tree/v0.6.0" + }, + "time": "2023-10-28T09:00:46+00:00" + }, + { + "name": "zbateson/mail-mime-parser", + "version": "2.4.0", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mail-mime-parser.git", + "reference": "20b3e48eb799537683780bc8782fbbe9bc25934a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mail-mime-parser/zipball/20b3e48eb799537683780bc8782fbbe9bc25934a", + "reference": "20b3e48eb799537683780bc8782fbbe9bc25934a", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.7.0|^2.0", + "php": ">=7.1", + "pimple/pimple": "^3.0", + "zbateson/mb-wrapper": "^1.0.1", + "zbateson/stream-decorators": "^1.0.6" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "mikey179/vfsstream": "^1.6.0", + "phpstan/phpstan": "*", + "phpunit/phpunit": "<10" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MailMimeParser\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + }, + { + "name": "Contributors", + "homepage": "https://github.com/zbateson/mail-mime-parser/graphs/contributors" + } + ], + "description": "MIME email message parser", + "homepage": "https://mail-mime-parser.org", + "keywords": [ + "MimeMailParser", + "email", + "mail", + "mailparse", + "mime", + "mimeparse", + "parser", + "php-imap" + ], + "support": { + "docs": "https://mail-mime-parser.org/#usage-guide", + "issues": "https://github.com/zbateson/mail-mime-parser/issues", + "source": "https://github.com/zbateson/mail-mime-parser" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2023-02-14T22:58:03+00:00" + }, + { + "name": "zbateson/mb-wrapper", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/zbateson/mb-wrapper.git", + "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/mb-wrapper/zipball/faf35dddfacfc5d4d5f9210143eafd7a7fe74334", + "reference": "faf35dddfacfc5d4d5f9210143eafd7a7fe74334", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-iconv": "^1.9", + "symfony/polyfill-mbstring": "^1.9" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": "<=9.0" + }, + "suggest": { + "ext-iconv": "For best support/performance", + "ext-mbstring": "For best support/performance" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\MbWrapper\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "Wrapper for mbstring with fallback to iconv for encoding conversion and string manipulation", + "keywords": [ + "charset", + "encoding", + "http", + "iconv", + "mail", + "mb", + "mb_convert_encoding", + "mbstring", + "mime", + "multibyte", + "string" + ], + "support": { + "issues": "https://github.com/zbateson/mb-wrapper/issues", + "source": "https://github.com/zbateson/mb-wrapper/tree/1.2.0" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2023-01-11T23:05:44+00:00" + }, + { + "name": "zbateson/stream-decorators", + "version": "1.2.1", + "source": { + "type": "git", + "url": "https://github.com/zbateson/stream-decorators.git", + "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zbateson/stream-decorators/zipball/783b034024fda8eafa19675fb2552f8654d3a3e9", + "reference": "783b034024fda8eafa19675fb2552f8654d3a3e9", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.9 | ^2.0", + "php": ">=7.2", + "zbateson/mb-wrapper": "^1.0.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "*", + "phpstan/phpstan": "*", + "phpunit/phpunit": "<10.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "ZBateson\\StreamDecorators\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Zaahid Bateson" + } + ], + "description": "PHP psr7 stream decorators for mime message part streams", + "keywords": [ + "base64", + "charset", + "decorators", + "mail", + "mime", + "psr7", + "quoted-printable", + "stream", + "uuencode" + ], + "support": { + "issues": "https://github.com/zbateson/stream-decorators/issues", + "source": "https://github.com/zbateson/stream-decorators/tree/1.2.1" + }, + "funding": [ + { + "url": "https://github.com/zbateson", + "type": "github" + } + ], + "time": "2023-05-30T22:51:52+00:00" + } + ], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "*" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" +} diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..4d23e22 --- /dev/null +++ b/config/app.php @@ -0,0 +1,191 @@ + env('APP_NAME', 'Sikessem'), + + 'title' => env('APP_TITLE'), + 'description' => env('APP_DESCRIPTION'), + + /* + |-------------------------------------------------------------------------- + | 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 0000000..9548c15 --- /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 0000000..2410485 --- /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 0000000..d4171e2 --- /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 0000000..8a39e6d --- /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 0000000..dc5eeae --- /dev/null +++ b/config/database.php @@ -0,0 +1,151 @@ + env('PG_CONNECTION', 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', 'ahlabik'), + 'username' => env('DB_USERNAME', 'sikessem'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8', + 'collation' => 'utf8_general_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' => env('PG_CONNECTION', 'pgsql'), + 'url' => env('PG_URL', env('DATABASE_URL')), + 'host' => env('PG_HOST', env('DB_HOST', '127.0.0.1')), + 'port' => env('PG_PORT', '5432'), + 'database' => env('PG_DATABASE', env('DB_DATABASE', 'ahlabik')), + 'username' => env('PG_USERNAME', env('DB_USERNAME', 'sikessem')), + 'password' => env('PG_PASSWORD', env('DB_PASSWORD', '')), + 'search_path' => env('PG_SCHEMA', 'public'), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + '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 0000000..e9d9dbd --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,76 @@ + env('FILESYSTEM_DISK', 'local'), + + /* + |-------------------------------------------------------------------------- + | 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, + ], + + '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 0000000..bcd3be4 --- /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/livewire.php b/config/livewire.php new file mode 100644 index 0000000..17deaae --- /dev/null +++ b/config/livewire.php @@ -0,0 +1,158 @@ + 'App\\View\\Widgets', + + /* + |-------------------------------------------------------------------------- + | View Path + |-------------------------------------------------------------------------- + | + | This value sets the path for Livewire component views. This affects + | file manipulation helper commands like `artisan make:livewire`. + | + */ + + 'view_path' => app()->templatePath('widgets'), + + /* + |-------------------------------------------------------------------------- + | Layout + |-------------------------------------------------------------------------- + | The default layout view that will be used when rendering a component via + | Route::get('/some-endpoint', SomeComponent::class);. In this case the + | the view returned by SomeComponent will be wrapped in "layouts.app" + | + */ + + 'layout' => 'layouts.app', + + /* + |-------------------------------------------------------------------------- + | Livewire Assets URL + |-------------------------------------------------------------------------- + | + | This value sets the path to Livewire JavaScript assets, for cases where + | your app's domain root is not the correct path. By default, Livewire + | will load its JavaScript assets from the app's "relative root". + | + | Examples: "/assets", "myurl.com/app". + | + */ + + 'asset_url' => null, + + /* + |-------------------------------------------------------------------------- + | Livewire App URL + |-------------------------------------------------------------------------- + | + | This value should be used if livewire assets are served from CDN. + | Livewire will communicate with an app through this url. + | + | Examples: "https://my-app.com", "myurl.com/app". + | + */ + + 'app_url' => env('APP_URL'), + + /* + |-------------------------------------------------------------------------- + | Livewire Endpoint Middleware Group + |-------------------------------------------------------------------------- + | + | This value sets the middleware group that will be applied to the main + | Livewire "message" endpoint (the endpoint that gets hit everytime + | a Livewire component updates). It is set to "web" by default. + | + */ + + 'middleware_group' => 'app', + + /* + |-------------------------------------------------------------------------- + | Livewire Temporary File Uploads Endpoint Configuration + |-------------------------------------------------------------------------- + | + | Livewire handles file uploads by storing uploads in a temporary directory + | before the file is validated and stored permanently. All file uploads + | are directed to a global endpoint for temporary storage. The config + | items below are used for customizing the way the endpoint works. + | + */ + + 'temporary_file_upload' => [ + 'disk' => null, // Example: 'local', 's3' Default: 'default' + 'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB) + 'directory' => null, // Example: 'tmp' Default 'livewire-tmp' + 'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1' + 'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs. + 'png', 'gif', 'bmp', 'svg', 'wav', 'mp4', + 'mov', 'avi', 'wmv', 'mp3', 'm4a', + 'jpg', 'jpeg', 'mpga', 'webp', 'wma', + ], + 'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated. + ], + + /* + |-------------------------------------------------------------------------- + | Manifest File Path + |-------------------------------------------------------------------------- + | + | This value sets the path to the Livewire manifest file. + | The default should work for most cases (which is + | "/bootstrap/cache/livewire-components.php"), but for specific + | cases like when hosting on Laravel Vapor, it could be set to a different value. + | + | Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php". + | + */ + + 'manifest_path' => null, + + /* + |-------------------------------------------------------------------------- + | Back Button Cache + |-------------------------------------------------------------------------- + | + | This value determines whether the back button cache will be used on pages + | that contain Livewire. By disabling back button cache, it ensures that + | the back button shows the correct state of components, instead of + | potentially stale, cached data. + | + | Setting it to "false" (default) will disable back button cache. + | + */ + + 'back_button_cache' => false, + + /* + |-------------------------------------------------------------------------- + | Render On Redirect + |-------------------------------------------------------------------------- + | + | This value determines whether Livewire will render before it's redirected + | or not. Setting it to "false" (default) will mean the render method is + | skipped when redirecting. And "true" will mean the render method is + | run before redirecting. Browsers bfcache can store a potentially + | stale view if render is skipped on redirect. + | + */ + + 'render_on_redirect' => false, + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..c44d276 --- /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 0000000..e652bd0 --- /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 0000000..01c6b05 --- /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 0000000..529cfdc --- /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 0000000..0ace530 --- /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 0000000..8fed97c --- /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 0000000..c1988fe --- /dev/null +++ b/config/view.php @@ -0,0 +1,37 @@ + [ + app()->templatePath(), + 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 0000000..9b19b93 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1 @@ +*.sqlite* diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..a6ecc0a --- /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 0000000..444fafb --- /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 0000000..81a7229 --- /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 0000000..249da81 --- /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 0000000..e828ad8 --- /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/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..a9f4519 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +create(); + + // \App\Models\User::factory()->create([ + // 'name' => 'Test User', + // 'email' => 'test@example.com', + // ]); + } +} diff --git a/e2e/home.spec.ts b/e2e/home.spec.ts new file mode 100644 index 0000000..e613110 --- /dev/null +++ b/e2e/home.spec.ts @@ -0,0 +1,7 @@ +import { expect, test } from "@playwright/test"; + +test('has "Sikessem" in title', async ({ page }) => { + await page.goto("/"); + + await expect(page).toHaveTitle(/Sikessem/); +}); diff --git a/main.php b/main.php new file mode 100644 index 0000000..f36650d --- /dev/null +++ b/main.php @@ -0,0 +1,5 @@ +run(); diff --git a/package.json b/package.json new file mode 100644 index 0000000..9ff269f --- /dev/null +++ b/package.json @@ -0,0 +1,70 @@ +{ + "private": true, + "type": "module", + "engines": { + "bun": ">=1.0.0", + "npm": "prefer using bun", + "pnpm": "prefer using bun", + "yarn": "prefer using bun" + }, + "packageManager": "bun@1.0.21", + "publishConfig": { + "access": "public" + }, + "homepage": "https://sikessem.com", + "author": { + "name": "SIGUI Kessé Emmanuel", + "email": "contact@sigui.ci", + "url": "https://sigui.ci" + }, + "scripts": { + "build": "vite build", + "check": "biome ci .", + "check.format": "biome format .", + "check.lint": "biome check .", + "debug": "bun run check && bun run test && bun run e2e", + "dev": "vite", + "e2e": "playwright test", + "e2e.install": "playwright install --with-deps", + "e2e.report": "playwright show-report", + "e2e.ui": "playwright test --ui", + "fix": "bun run lint && bun run format", + "format": "biome format --write .", + "inspect": "bun --inspect-brk ./node_modules/vite/bin/vite.js --force", + "lint": "biome check --apply-unsafe .", + "test": "bun test", + "test.cov": "bun test --coverage", + "test.hot": "bun test --hot", + "test.watch": "bun test --watch", + "start": "vite --open" + }, + "devDependencies": { + "@alpinejs/focus": "^3.13.3", + "@biomejs/biome": "1.4.1", + "@playwright/test": "^1.40.1", + "@tailwindcss/forms": "^0.5.7", + "@tailwindcss/nesting": "0.0.0-insiders.565cd3e", + "@tailwindcss/typography": "^0.5.10", + "@types/alpinejs": "^3.13.5", + "@types/alpinejs__focus": "^3.13.3", + "@types/node": "^20.10.6", + "@types/node-fetch": "^2.6.10", + "alpinejs": "^3.13.3", + "autoprefixer": "^10.4.16", + "axios": "^1.6.3", + "bun-types": "^1.0.21", + "concurrently": "^8.2.2", + "cssnano": "^6.0.2", + "laravel-vite-plugin": "^1.0.1", + "node-fetch": "3.3.2", + "postcss": "^8.4.32", + "postcss-import": "^15.1.0", + "postcss-load-config": "^5.0.2", + "postcss-nested": "^6.0.1", + "tailwindcss": "^3.4.0", + "tslib": "^2.6.2", + "typescript": "^5.3.3", + "vite": "^5.0.10", + "vite-tsconfig-paths": "4.2.3" + } +} diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..bf50655 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,11 @@ +includes: + - ./vendor/larastan/larastan/extension.neon + +parameters: + level: max + paths: + - app + - src + + reportUnmatchedIgnoredErrors: true + checkMissingIterableValueType: false diff --git a/phpunit.xml.dist b/phpunit.xml.dist new file mode 100644 index 0000000..3154b9c --- /dev/null +++ b/phpunit.xml.dist @@ -0,0 +1,21 @@ + + + + + ./tests/Unit + + + ./tests/Feat + + + + + + + + + ./app + ./src + + + diff --git a/playwright.config.ts b/playwright.config.ts new file mode 100644 index 0000000..f65211e --- /dev/null +++ b/playwright.config.ts @@ -0,0 +1,107 @@ +import { type PlaywrightTestConfig, devices } from "@playwright/test"; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// require('dotenv').config(); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +const config: PlaywrightTestConfig = { + testDir: "./e2e", + /* Maximum time one test can run for. */ + timeout: 30 * 1000, + expect: { + /** + * Maximum time expect() should wait for the condition to be met. + * For example in `await expect(locator).toHaveText();` + */ + timeout: 5000, + }, + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: "html", + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Maximum time each action such as `click()` can take. Defaults to 0 (no limit). */ + actionTimeout: 0, + /* Base URL to use in actions like `await page.goto('/')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: "on-first-retry", + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: "chromium", + use: { + ...devices["Desktop Chrome"], + }, + }, + + { + name: "firefox", + use: { + ...devices["Desktop Firefox"], + }, + }, + + // { + // name: "webkit", + // use: { + // ...devices["Desktop Safari"], + // }, + // }, + + /* Test against mobile viewports. */ + { + name: "Mobile Chrome", + use: { + ...devices["Pixel 5"], + }, + }, + // { + // name: 'Mobile Safari', + // use: { + // ...devices['iPhone 12'], + // }, + // }, + + /* Test against branded browsers. */ + { + name: "Microsoft Edge", + use: { + channel: "msedge", + }, + }, + { + name: "Google Chrome", + use: { + channel: "chrome", + }, + }, + ], + + /* Folder for test artifacts such as screenshots, videos, traces, etc. */ + // outputDir: 'test-results/', + + /* Run your local dev server before starting the tests */ + webServer: { + command: "./run serve --port=4321", + port: 4321, + reuseExistingServer: !process.env.CI, + }, +}; + +export default config; diff --git a/postcss.config.cjs b/postcss.config.cjs new file mode 100644 index 0000000..9cdd9bd --- /dev/null +++ b/postcss.config.cjs @@ -0,0 +1,9 @@ +module.exports = { + plugins: { + "postcss-import": {}, + "tailwindcss/nesting": {}, + tailwindcss: {}, + autoprefixer: {}, + ...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {}), + }, +}; diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /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/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..f053857a118d7f0c42cf9227341763c9a0bcbddf GIT binary patch literal 877 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⩔ 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[ + __DIR__.'/app', + __DIR__.'/src', + __DIR__.'/tests', + ]); + + // register a single rule + $rectorConfig->rule(InlineConstructorDefaultToPropertyRector::class); + + // define sets of rules + $rectorConfig->sets([ + LevelSetList::UP_TO_PHP_82, + LevelSetList::UP_TO_PHP_83, + ]); +}; diff --git a/resources/assets/images/logo.svg b/resources/assets/images/logo.svg new file mode 100644 index 0000000..df43ccc --- /dev/null +++ b/resources/assets/images/logo.svg @@ -0,0 +1 @@ + diff --git a/resources/designs/scripts/app.ts b/resources/designs/scripts/app.ts new file mode 100644 index 0000000..86b90c2 --- /dev/null +++ b/resources/designs/scripts/app.ts @@ -0,0 +1,3 @@ +import "./vendor"; + +import.meta.glob(["../../assets/**"]); diff --git a/resources/designs/scripts/vendor.ts b/resources/designs/scripts/vendor.ts new file mode 100644 index 0000000..16e5e6a --- /dev/null +++ b/resources/designs/scripts/vendor.ts @@ -0,0 +1,37 @@ +import axios from "axios"; + +import focus from "@alpinejs/focus"; +import Alpine from "alpinejs"; + +/** + * We'll load the axios HTTP library which allows us to easily issue requests + * to our Laravel back-end. This library automatically handles sending the + * CSRF token as a header based on the value of the "XSRF" token cookie. + */ +window.axios = axios; +window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest"; + +window.Alpine = Alpine; +Alpine.plugin(focus); +Alpine.start(); + +/** + * Echo exposes an expressive API for subscribing to channels and listening + * for events that are broadcast by Laravel. Echo and event broadcasting + * allows your team to easily build robust real-time web applications. + */ + +// import Echo from 'laravel-echo'; + +// import Pusher from 'pusher-js'; +// window.Pusher = Pusher; + +// window.Echo = new Echo({ +// broadcaster: 'pusher', +// key: import.meta.env.VITE_PUSHER_APP_KEY, +// wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, +// wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, +// forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', +// enabledTransports: ['ws', 'wss'], +// }); diff --git a/resources/designs/styles/app.css b/resources/designs/styles/app.css new file mode 100644 index 0000000..11240cd --- /dev/null +++ b/resources/designs/styles/app.css @@ -0,0 +1,11 @@ +@import './vendor'; + +[cloak] { + @apply hidden; +} + +.app { + &-brand { + content: url('@images/logo.svg'); + } +} diff --git a/resources/designs/styles/vendor.css b/resources/designs/styles/vendor.css new file mode 100644 index 0000000..a31e444 --- /dev/null +++ b/resources/designs/styles/vendor.css @@ -0,0 +1,3 @@ +@import 'tailwindcss/base'; +@import 'tailwindcss/components'; +@import 'tailwindcss/utilities'; diff --git a/resources/designs/types/index.d.ts b/resources/designs/types/index.d.ts new file mode 100644 index 0000000..2a04a0c --- /dev/null +++ b/resources/designs/types/index.d.ts @@ -0,0 +1,11 @@ +import { type Alpine } from "alpinejs"; +import type Axios from "axios"; + +declare; +global; +{ + interface Window { + Alpine: Alpine; + axios: Axios; + } +} diff --git a/resources/i18n/en.json b/resources/i18n/en.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/resources/i18n/en.json @@ -0,0 +1 @@ +{} diff --git a/resources/i18n/en/auth.php b/resources/i18n/en/auth.php new file mode 100644 index 0000000..6598e2c --- /dev/null +++ b/resources/i18n/en/auth.php @@ -0,0 +1,20 @@ + 'These credentials do not match our records.', + 'password' => 'The provided password is incorrect.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + +]; diff --git a/resources/i18n/en/pagination.php b/resources/i18n/en/pagination.php new file mode 100644 index 0000000..d481411 --- /dev/null +++ b/resources/i18n/en/pagination.php @@ -0,0 +1,19 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/i18n/en/passwords.php b/resources/i18n/en/passwords.php new file mode 100644 index 0000000..2345a56 --- /dev/null +++ b/resources/i18n/en/passwords.php @@ -0,0 +1,22 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => "We can't find a user with that email address.", + +]; diff --git a/resources/i18n/en/validation.php b/resources/i18n/en/validation.php new file mode 100644 index 0000000..397f78e --- /dev/null +++ b/resources/i18n/en/validation.php @@ -0,0 +1,162 @@ + 'The :attribute must be accepted.', + 'accepted_if' => 'The :attribute must be accepted when :other is :value.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute must only contain letters.', + 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute must only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'array' => 'The :attribute must have between :min and :max items.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'numeric' => 'The :attribute must be between :min and :max.', + 'string' => 'The :attribute must be between :min and :max characters.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'current_password' => 'The password is incorrect.', + 'date' => 'The :attribute is not a valid date.', + 'date_equals' => 'The :attribute must be a date equal to :date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'declined' => 'The :attribute must be declined.', + 'declined_if' => 'The :attribute must be declined when :other is :value.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'enum' => 'The selected :attribute is invalid.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'array' => 'The :attribute must have more than :value items.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'numeric' => 'The :attribute must be greater than :value.', + 'string' => 'The :attribute must be greater than :value characters.', + ], + 'gte' => [ + 'array' => 'The :attribute must have :value items or more.', + 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be greater than or equal to :value.', + 'string' => 'The :attribute must be greater than or equal to :value characters.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'array' => 'The :attribute must have less than :value items.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'numeric' => 'The :attribute must be less than :value.', + 'string' => 'The :attribute must be less than :value characters.', + ], + 'lte' => [ + 'array' => 'The :attribute must not have more than :value items.', + 'file' => 'The :attribute must be less than or equal to :value kilobytes.', + 'numeric' => 'The :attribute must be less than or equal to :value.', + 'string' => 'The :attribute must be less than or equal to :value characters.', + ], + 'mac_address' => 'The :attribute must be a valid MAC address.', + 'max' => [ + 'array' => 'The :attribute must not have more than :max items.', + 'file' => 'The :attribute must not be greater than :max kilobytes.', + 'numeric' => 'The :attribute must not be greater than :max.', + 'string' => 'The :attribute must not be greater than :max characters.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'array' => 'The :attribute must have at least :min items.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'numeric' => 'The :attribute must be at least :min.', + 'string' => 'The :attribute must be at least :min characters.', + ], + 'multiple_of' => 'The :attribute must be a multiple of :value.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'present' => 'The :attribute field must be present.', + 'prohibited' => 'The :attribute field is prohibited.', + 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', + 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', + 'prohibits' => 'The :attribute field prohibits :other from being present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_array_keys' => 'The :attribute field must contain entries for: :values.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'array' => 'The :attribute must contain :size items.', + 'file' => 'The :attribute must be :size kilobytes.', + 'numeric' => 'The :attribute must be :size.', + 'string' => 'The :attribute must be :size characters.', + ], + 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid timezone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute must be a valid URL.', + 'uuid' => 'The :attribute must be a valid UUID.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap our attribute placeholder + | with something more reader friendly such as "E-Mail Address" instead + | of "email". This simply helps us make our message more expressive. + | + */ + + 'attributes' => [], + +]; diff --git a/resources/i18n/fr.json b/resources/i18n/fr.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/resources/i18n/fr.json @@ -0,0 +1 @@ +{} diff --git a/resources/i18n/fr/auth.php b/resources/i18n/fr/auth.php new file mode 100644 index 0000000..bf52081 --- /dev/null +++ b/resources/i18n/fr/auth.php @@ -0,0 +1,20 @@ + 'Ces informations d\'identification ne correspondent pas à nos enregistrements.', + 'password' => 'Le mot de passe fourni est incorrect.', + 'throttle' => 'Trop de tentatives de connexion. Veuillez réessayer dans :seconds secondes.', + +]; diff --git a/resources/i18n/fr/pagination.php b/resources/i18n/fr/pagination.php new file mode 100644 index 0000000..06afbe9 --- /dev/null +++ b/resources/i18n/fr/pagination.php @@ -0,0 +1,19 @@ + '« Précédent', + 'next' => 'Suivant »', + +]; diff --git a/resources/i18n/fr/passwords.php b/resources/i18n/fr/passwords.php new file mode 100644 index 0000000..10cc085 --- /dev/null +++ b/resources/i18n/fr/passwords.php @@ -0,0 +1,22 @@ + 'Votre mot de passe a été réinitialisé !', + 'sent' => 'Nous avons envoyé par email le lien de réinitialisation de votre mot de passe !', + 'throttled' => 'Veuillez patienter avant de réessayer.', + 'token' => 'Ce jeton de réinitialisation de mot de passe est invalide.', + 'user' => "Nous ne pouvons pas trouver d'utilisateur avec cette adresse e-mail.", + +]; diff --git a/resources/i18n/fr/validation.php b/resources/i18n/fr/validation.php new file mode 100644 index 0000000..2af437e --- /dev/null +++ b/resources/i18n/fr/validation.php @@ -0,0 +1,161 @@ + 'Le champ :attribute doit être accepté.', + 'accepted_if' => 'Le champ :attribute doit être accepté lorsque :other est :value.', + 'active_url' => 'Le champ :attribute n\'est pas une URL valide.', + 'after' => 'Le champ :attribute doit être une date postérieure à :date.', + 'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale à :date.', + 'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.', + 'alpha_dash' => 'Le champ :attribute ne doit contenir que des lettres, des chiffres, des tirets et des traits de soulignement.', + 'alpha_num' => 'Le champ :attribute doit contenir uniquement des lettres et des chiffres.', + 'array' => 'Le champ :attribute doit être un tableau.', + 'before' => 'Le champ :attribute doit être une date antérieure à :date.', + 'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale à :date.', + 'between' => [ + 'array' => 'Le champ :attribute doit avoir entre :min et :max éléments.', + 'file' => 'Le champ :attribute doit être compris entre :min et :max kilo-octets.', + 'numeric' => 'Le champ :attribute doit être compris entre :min et :max.', + 'string' => 'Le champ :attribute doit comporter entre :min et :max caractères.', + ], + 'boolean' => 'Le champ :attribute doit être vrai ou faux.', + 'confirmed' => 'La confirmation du champ :attribute ne correspond pas.', + 'current_password' => 'Le mot de passe est incorrect.', + 'date' => 'Le champ :attribute n\'est pas une date valide.', + 'date_equals' => 'Le champ :attribute doit être une date égale à :date.', + 'date_format' => 'Le champ :attribute ne correspond pas au format :format.', + 'declined' => 'Le champ :attribute doit être refusé.', + 'declined_if' => 'Le champ :attribute doit être refusé lorsque :other est :value.', + 'different' => 'Le champ :attribute et :other doivent être différents.', + 'digits' => 'Le champ :attribute doit contenir :digits chiffres.', + 'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.', + 'dimensions' => 'Le champ :attribute a des dimensions d\'image invalides.', + 'distinct' => 'Le champ :attribute a une valeur en double.', + 'email' => 'Le champ :attribute doit être une adresse e-mail valide.', + 'ends_with' => 'Le champ :attribute doit se terminer par l\'un des éléments suivants : :values.', + 'enum' => 'Le :attribute sélectionné est invalide.', + 'exists' => 'Le champ :attribute sélectionné est invalide.', + 'file' => 'Le champ :attribute doit être un fichier.', + 'filled' => 'Le champ :attribute est obligatoire.', + 'gt' => [ + 'array' => 'Le champ :attribute doit avoir plus de :value éléments.', + 'file' => 'Le champ :attribute doit être supérieur à :value kilooctets.', + 'numeric' => 'Le champ :attribute doit être supérieur à :value.', + 'string' => 'Le champ :attribute doit contenir plus de :value caractères.', + ], + 'gte' => [ + 'array' => 'Le champ :attribute doit avoir :value éléments ou plus.', + 'file' => 'Le champ :attribute doit être supérieur ou égal à :value kilooctets.', + 'numeric' => 'Le champ :attribute doit être supérieur ou égal à :value.', + 'string' => 'Le champ :attribute doit contenir au moins :value caractères.', + ], + 'image' => 'Le champ :attribute doit être une image.', + 'in' => 'Le champ :attribute sélectionné est invalide.', + 'in_array' => 'Le champ :attribute n\'existe pas dans :other.', + 'integer' => 'Le champ :attribute doit être un entier.', + 'ip' => 'Le champ :attribute doit être une adresse IP valide.', + 'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.', + 'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.', + 'json' => 'Le champ :attribute doit être une chaîne JSON valide.', + 'lt' => [ + 'array' => 'Le champ :attribute doit avoir moins de :value éléments.', + 'file' => 'Le champ :attribute doit être inférieur à :value kilooctets.', + 'numeric' => 'Le champ :attribute doit être inférieur à :value.', + 'string' => 'Le champ :attribute doit contenir moins de :value caractères.', + ], + 'lte' => [ + 'array' => 'Le champ :attribute ne doit pas avoir plus de :value éléments.', + 'file' => 'Le champ :attribute doit être inférieur ou égal à :value kilooctets.', + 'numeric' => 'Le champ :attribute doit être inférieur ou égal à :value.', + 'string' => 'Le champ :attribute doit contenir au maximum :value caractères.', + ], + 'mac_address' => 'Le champ :attribute doit être une adresse MAC valide.', + 'max' => [ + 'array' => 'Le champ :attribute ne doit pas avoir plus de :max éléments.', + 'file' => 'Le champ :attribute ne doit pas dépasser :max kilooctets.', + 'numeric' => 'Le champ :attribute ne doit pas être supérieur à :max.', + 'string' => 'Le champ :attribute ne doit pas contenir plus de :max caractères.', + ], + 'mimes' => 'Le champ :attribute doit être un fichier de type :values.', + 'mimetypes' => 'Le champ :attribute doit être un fichier de type :values.', + 'min' => [ + 'array' => 'Le champ :attribute doit avoir au moins :min éléments.', + 'file' => 'Le champ :attribute doit être d\'au moins :min kilo-octets.', + 'numeric' => 'Le champ :attribute doit être d\'au moins :min.', + 'string' => 'Le champ :attribute doit contenir au moins :min caractères.', + ], + 'multiple_of' => 'Le champ :attribute doit être un multiple de :value.', + 'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.', + 'not_regex' => 'Le format du champ :attribute n\'est pas valide.', + 'numeric' => 'Le champ :attribute doit être un nombre.', + 'present' => 'Le champ :attribute doit être présent.', + 'prohibited' => 'Le champ :attribute est interdit.', + 'prohibited_if' => 'Le champ :attribute est interdit lorsque :other est :value.', + 'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other soit dans :values.', + 'prohibits' => 'Le champ :attribute interdit que :other soit présent.', + 'regex' => 'Le format du champ :attribute n\'est pas valide.', + 'required' => 'Le champ :attribute est requis.', + 'required_array_keys' => 'Le champ :attribute doit contenir des entrées pour :values.', + 'required_if' => 'Le champ :attribute est requis lorsque :other est :value.', + 'required_unless' => 'Le champ :attribute est requis à moins que :other soit dans :values.', + 'required_with' => 'Le champ :attribute est requis lorsque :values est présent.', + 'required_with_all' => 'Le champ :attribute est requis lorsque :values sont présents.', + 'required_without' => 'Le champ :attribute est requis lorsque :values n\'est pas présent.', + 'required_without_all' => 'Le champ :attribute est requis lorsque aucun de :values n\'est présent.', + 'same' => 'Les champs :attribute et :other doivent correspondre.', + 'size' => [ + 'array' => 'Le champ :attribute doit contenir :size éléments.', + 'file' => 'Le champ :attribute doit être de :size kilo-octets.', + 'numeric' => 'Le champ :attribute doit être :size.', + 'string' => 'Le champ :attribute doit contenir :size caractères.', + ], + 'starts_with' => 'Le champ :attribute doit commencer par l\'un des éléments suivants :values.', + 'string' => 'Le champ :attribute doit être une chaîne de caractères.', + 'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.', + 'unique' => 'Le champ :attribute est déjà utilisé.', + 'uploaded' => 'Le champ :attribute n\'a pas pu être téléchargé.', + 'url' => 'Le champ :attribute doit être une URL valide.', + 'uuid' => 'Le champ :attribute doit être un UUID valide.', + + /* + |-------------------------------------------------------------------------- + | Personnalisation des messages d'erreur + |-------------------------------------------------------------------------- + | + | Ici, vous pouvez spécifier des messages de validation personnalisés pour les attributs en utilisant la + | convention "attribut.règle" pour nommer les lignes. Cela permet de + | spécifier rapidement une ligne de langue personnalisée spécifique pour une règle d'attribut donnée. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'message-personnalisé', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Attributs de validation personnalisés + |-------------------------------------------------------------------------- + | + | Les lignes de langue suivantes sont utilisées pour échanger notre espace réservé d'attribut + | avec quelque chose de plus convivial pour le lecteur, comme "Adresse e-mail" au lieu de "email". + | Cela nous aide simplement à rendre notre message plus expressif. + | + */ + + 'attributes' => [], +]; diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..889937e --- /dev/null +++ b/routes/api.php @@ -0,0 +1,19 @@ +get('/user', function (Request $request) { + return $request->user(); +}); diff --git a/routes/app.php b/routes/app.php new file mode 100644 index 0000000..54fa4e9 --- /dev/null +++ b/routes/app.php @@ -0,0 +1,18 @@ +name('home'); diff --git a/routes/channels.php b/routes/channels.php new file mode 100644 index 0000000..5d451e1 --- /dev/null +++ b/routes/channels.php @@ -0,0 +1,18 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..99b82f1 --- /dev/null +++ b/routes/console.php @@ -0,0 +1,42 @@ +comment(Inspiring::quote()); +})->purpose('Display an inspiring quote'); + +Artisan::command('make:sitemap', function () { + $this->info('Generating sitemap...'); + SitemapGenerator::create(config('app.url'))->writeToFile(public_path('sitemap.xml')); + $this->info('Sitemap generated'); +})->describe('Generate sitemap'); + +Artisan::command('sitemap:clear', function () { + $this->info('Clearing sitemap...'); + $path = public_path('sitemap.xml'); + if (file_exists($path)) { + is_file($path) ? unlink($path) : rmdir($path); + } + $this->info('Sitemap cleared'); +})->describe('Clear sitemap'); + +Artisan::command('sitemap:ping', function () { + $this->info('Pinging Google...'); + $response = Http::get('https://www.google.com/ping?sitemap='.config('app.url').'/sitemap.xml'); + $response->successful() ? $this->info('Pinged Google!') : $this->error('Could not ping Google.'); +})->describe('Ping search engines'); diff --git a/run b/run new file mode 100755 index 0000000..ecadb5d --- /dev/null +++ b/run @@ -0,0 +1,21 @@ +#!/usr/bin/env bun + +const args = process.argv.slice(2); + +const proc = Bun.spawn(["php", "artisan", ...args], { + cwd: process.cwd(), + env: process.env, + stdin: "inherit", + stdout: "inherit", + stderr: "inherit", + async onExit(proc, exitCode, signalCode, error) { + if (error) { + console.error(error); + process.exit(1); + } + + const result = await new Response(proc.stderr || proc.stdout).text(); + exitCode !== 0 ? console.error(result) : console.log(result); + process.exit(exitCode); + }, +}); diff --git a/specs/example.spec.ts b/specs/example.spec.ts new file mode 100644 index 0000000..abf86a5 --- /dev/null +++ b/specs/example.spec.ts @@ -0,0 +1,5 @@ +import { expect, it } from "bun:test"; + +it("should said hello", () => { + expect(1).toBe(1); +}); diff --git a/src/.gitkeep b/src/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/storage/app/.gitignore b/storage/app/.gitignore new file mode 100644 index 0000000..8f4803c --- /dev/null +++ b/storage/app/.gitignore @@ -0,0 +1,3 @@ +* +!public/ +!.gitignore diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/app/public/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/debugbar/.gitignore b/storage/debugbar/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/debugbar/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore new file mode 100644 index 0000000..05c4471 --- /dev/null +++ b/storage/framework/.gitignore @@ -0,0 +1,9 @@ +compiled.php +config.php +down +events.scanned.php +maintenance.php +routes.php +routes.scanned.php +schedule-* +services.json diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore new file mode 100644 index 0000000..01e4a6c --- /dev/null +++ b/storage/framework/cache/.gitignore @@ -0,0 +1,3 @@ +* +!data/ +!.gitignore diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/cache/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/sessions/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/testing/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/framework/views/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/storage/logs/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/tailwind.config.ts b/tailwind.config.ts new file mode 100644 index 0000000..68927b0 --- /dev/null +++ b/tailwind.config.ts @@ -0,0 +1,31 @@ +import defaultTheme from "tailwindcss/defaultTheme"; +import UIPlugin from "./vendor/sikessem/ui/plugin"; +import UIConfig from "./vendor/sikessem/ui/tailwind.config"; + +/** @type {import('tailwindcss').Config} */ +export default { + presets: [UIConfig], + + content: [ + "./vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php", + "./storage/framework/views/*.php", + "./resources/**/*.{js,jsx,ts,tsx,md,mdx}", + "./templates/**/*.blade.php", + "./app/View/**/*.php", + ], + + theme: { + extend: { + fontFamily: { + sans: ["Nunito", ...defaultTheme.fontFamily.sans], + }, + }, + }, + + plugins: [ + require("@tailwindcss/nesting"), + require("@tailwindcss/forms"), + require("@tailwindcss/typography"), + UIPlugin, + ], +}; diff --git a/templates/components/app-brand.blade.php b/templates/components/app-brand.blade.php new file mode 100644 index 0000000..95841e3 --- /dev/null +++ b/templates/components/app-brand.blade.php @@ -0,0 +1,3 @@ + + {{ config('app.name', 'Sikessem') }} + \ No newline at end of file diff --git a/templates/components/link.blade.php b/templates/components/link.blade.php new file mode 100644 index 0000000..555601d --- /dev/null +++ b/templates/components/link.blade.php @@ -0,0 +1,3 @@ +class(['no-underline text-slate-600 hover:underline hover:text-slate-700 dark:text-slate-400 dark:hover:text-slate-300']) }}> + {{ $slot }} + \ No newline at end of file diff --git a/templates/contents/home.blade.php b/templates/contents/home.blade.php new file mode 100644 index 0000000..c408b86 --- /dev/null +++ b/templates/contents/home.blade.php @@ -0,0 +1,4 @@ +

+

Start well with your TALL stack!

+

Your PHP applicationn has been successfully preconfigured with Laravel, Livewire, AlpineJS, TailwindCSS and many others tools.

+
diff --git a/templates/errors/404.blade.php b/templates/errors/404.blade.php new file mode 100644 index 0000000..2c90f64 --- /dev/null +++ b/templates/errors/404.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.error') + +@section('code', '404') + +@section('content') +

Page Not Found

+

It looks like you found a glitch in the matrix...

+← Back to Home +@endsection diff --git a/templates/layouts/app.blade.php b/templates/layouts/app.blade.php new file mode 100644 index 0000000..3a7480b --- /dev/null +++ b/templates/layouts/app.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.base') + +@section('wrapper') +
+ @include('partials.header') + @yield('content') + @include('partials.footer') +
+@endsection diff --git a/templates/layouts/base.blade.php b/templates/layouts/base.blade.php new file mode 100644 index 0000000..c405886 --- /dev/null +++ b/templates/layouts/base.blade.php @@ -0,0 +1,26 @@ + + + + @section('head') + + + + + {{ config('app.title') ?: config('app.name', 'Sikessem') }} @isset($title) $title @else @hasSection('title') | @yield('title') @endif @endisset + @isset($meta_tags) + @foreach($meta_tags as $meta_tag) + + @endforeach + @endisset + @vite(['resources/designs/styles/app.css', 'resources/designs/scripts/app.ts']) + @livewireStyles + @show + + + + @section('body') + @yield('wrapper') + @livewireScripts + @show + + diff --git a/templates/layouts/error.blade.php b/templates/layouts/error.blade.php new file mode 100644 index 0000000..2ce51cb --- /dev/null +++ b/templates/layouts/error.blade.php @@ -0,0 +1,14 @@ +@extends('layouts.base') + +@section('title') + Error @yield('code') +@endsection + +@section('wrapper') +
+

@yield('title')

+
+ @yield('content') +
+
+@endsection diff --git a/templates/partials/footer.blade.php b/templates/partials/footer.blade.php new file mode 100644 index 0000000..350b389 --- /dev/null +++ b/templates/partials/footer.blade.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/templates/partials/header.blade.php b/templates/partials/header.blade.php new file mode 100644 index 0000000..899d0bf --- /dev/null +++ b/templates/partials/header.blade.php @@ -0,0 +1,5 @@ +
+

+ +

+
\ No newline at end of file diff --git a/templates/welcome.blade.php b/templates/welcome.blade.php new file mode 100644 index 0000000..8685df0 --- /dev/null +++ b/templates/welcome.blade.php @@ -0,0 +1,5 @@ +@extends('layouts.app') + +@section('content') + @include('contents.home') +@endsection diff --git a/templates/widgets/.gitkeep b/templates/widgets/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/ArchTest.php b/tests/ArchTest.php new file mode 100644 index 0000000..4eff914 --- /dev/null +++ b/tests/ArchTest.php @@ -0,0 +1,21 @@ +expect(['dd', 'dump', 'ray']) + ->not->toBeUsed(); + +test('classes') + ->expect('My') + ->toUseStrictTypes(); + +test('contracts') + ->expect('My\Contracts') + ->interfaces() + ->toOnlyBeUsedIn('My', 'My\Contracts'); + +test('concerns') + ->expect('My\Concerns') + ->traits() + ->toOnlyBeUsedIn('My', 'My\Concerns'); diff --git a/tests/CreatesApplication.php b/tests/CreatesApplication.php new file mode 100644 index 0000000..cc68301 --- /dev/null +++ b/tests/CreatesApplication.php @@ -0,0 +1,21 @@ +make(Kernel::class)->bootstrap(); + + return $app; + } +} diff --git a/tests/Feat/ExampleTest.php b/tests/Feat/ExampleTest.php new file mode 100644 index 0000000..420dc1a --- /dev/null +++ b/tests/Feat/ExampleTest.php @@ -0,0 +1,9 @@ +get(route('home')); + + $response->assertStatus(200); +}); diff --git a/tests/Pest.php b/tests/Pest.php new file mode 100644 index 0000000..5d90d16 --- /dev/null +++ b/tests/Pest.php @@ -0,0 +1,46 @@ +in('Feat'); + +/* +|-------------------------------------------------------------------------- +| Expectations +|-------------------------------------------------------------------------- +| +| When you're writing tests, you often need to check that values meet certain conditions. The +| "expect()" function gives you access to a set of "expectations" methods that you can use +| to assert different things. Of course, you may extend the Expectation API at any time. +| +*/ + +expect()->extend('toBeOne', fn () => $this->toBe(1)); + +/* +|-------------------------------------------------------------------------- +| Functions +|-------------------------------------------------------------------------- +| +| While Pest is very powerful out-of-the-box, you may have some testing code specific to your +| project that you don't want to repeat in every file. Here you can also expose helpers as +| global functions to help you to reduce the number of lines of code in your test files. +| +*/ + +function something() +{ + // .. +} diff --git a/tests/TestCase.php b/tests/TestCase.php new file mode 100644 index 0000000..2932d4a --- /dev/null +++ b/tests/TestCase.php @@ -0,0 +1,10 @@ +toBeTrue(); +}); diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..5736035 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,81 @@ +{ + "include": [ + "resources/designs/types/**/*", + "resources/designs/scripts/**/*", + "resources/views/**/*", + ], + "exclude": [ + "node_modules", + ], + "compilerOptions": { + "allowJs": true, + "target": "ES2017", + "module": "ES2020", + "lib": [ + "es2020", + "DOM", + "WebWorker", + "DOM.Iterable" + ], + "strict": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "moduleResolution": "Node", + "esModuleInterop": true, + "skipLibCheck": true, + "incremental": true, + "isolatedModules": true, + "outDir": "tmp", + "noEmit": true, + "typeRoots": [ + "./resources/assets/types", + "./node_modules/@types", + "./node_modules", + ], + "types": [ + "node", + "vite/client", + ], + "baseUrl": ".", + "paths": { + "App/Assets/*": [ + "resources/assets/*", + ], + "App/Designs/*": [ + "resources/designs/*", + ], + "App/Images/*": [ + "resources/assets/images/*", + ], + "App/Styles/*": [ + "resources/designs/styles/*", + ], + "App/Scripts/*": [ + "resources/designs/scripts/*", + ], + "App/Types/*": [ + "resources/designs/types/*", + ], + }, + "noImplicitAny": true, + "strictNullChecks": true, + "sourceMap": true, + "allowSyntheticDefaultImports": true, + "allowUnreachableCode": false, + "allowUnusedLabels": false, + "declaration": true, + "declarationMap": true, + "noImplicitReturns": true, + "pretty": true, + "useDefineForClassFields": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": false, + "noFallthroughCasesInSwitch": true, + "downlevelIteration": true, + "experimentalDecorators": true, + "importHelpers": true, + }, + "files": ["biome.json"], +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..31ff8fd --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,81 @@ +import fs from "node:fs"; +import { homedir } from "node:os"; +import { resolve } from "node:path"; +import laravel, { refreshPaths } from "laravel-vite-plugin"; +import { type ConfigEnv, ServerOptions, defineConfig, loadEnv } from "vite"; +import tsconfigPaths from "vite-tsconfig-paths"; + +export default defineConfig(({ mode }: ConfigEnv) => { + const env = loadEnv(mode, process.cwd(), ""); + const host = env.VITE_CONFIG_SERVER_HOST ?? "localhost"; + const base = env.VITE_CONFIG_SERVER_BASE ?? "/"; + const port = Number(env.VITE_CONFIG_SERVER_PORT ?? 4000); + const root = env.VITE_CONFIG_SERVER_ROOT; + const buildDirectory = env.VITE_CONFIG_BUILD_DIRECTORY ?? "static"; + + return { + server: detectServerConfig({ host, port, base }), + base, + root, + build: { + manifest: "manifest.json", + }, + plugins: [ + laravel({ + input: [ + "resources/designs/styles/app.css", + "resources/designs/scripts/app.ts", + ], + refresh: [...refreshPaths, "templates/**", "app/Views/**"], + buildDirectory, + }), + tsconfigPaths(), + ], + preview: { + headers: { + "Cache-Control": "public, max-age=600", + }, + }, + resolve: { + alias: { + "@assets": "resources/assets", + "@designs": "resources/designs", + "@images": "resources/assets/images", + "@scripts": "resources/designs/scripts", + "@styles": "resources/designs/styles", + "@types": "resources/designs/types", + }, + }, + }; +}); + +function detectServerConfig(opts: { + host: string | undefined; + port: number | undefined; + base: string | undefined; +}): ServerOptions { + const keyPath = resolve( + homedir(), + `.config/valet/Certificates/${opts.host}.key`, + ); + const certificatePath = resolve( + homedir(), + `.config/valet/Certificates/${opts.host}.crt`, + ); + + if (!fs.existsSync(keyPath) || !fs.existsSync(certificatePath)) { + return opts; + } + + return { + hmr: { + host: opts.host, + port: opts.port, + }, + https: { + key: fs.readFileSync(keyPath), + cert: fs.readFileSync(certificatePath), + }, + ...opts, + }; +}